How come random.initial_seed() return uint64, yet .manual_seed() requires int64

I was synchronizing seeds using initial_seed() and got a number
13776504114083561180

when I tried to use it to manually initialize I get an overflow when unpacking long,
this goes away when I turn it to a int64 -4670239959625990436
The values returned after the manual_seed after conversion are coherent with the previous.
Whats the reasoning?

Second question - is there a way to syncronize numpy seed and torch seed? numpy seed is uint32, or if i have a mixed pipleine i have to manage each separately?

thanks.