There aren’t really guidelines other than to aim for “cleanliness” if you can. At a bare minimum, it should at least make some sense to someone not familiar with your package.
I’d say if it is really really simple, just have a single file. It sounds like you are beyond that though. I would probably begin splitting files into whatever seems most natural, but keeping them at the top level (under src). It is common to split by types I think. Only the biggest and/or most complex packages really need subdirectories.
I think it is common to factor out utility functions into a toplevel file that is appropriately named.