function random(): number
function random(opts: EmptyObject): number
function random(opts: { seed: number }): RandomNumberGenerator
interface RandomNumberGenerator {
next: () => number
fork: () => RandomNumberGenerator
}
type EmptyObject = Record<string, never>
I think it would be nice to overload Math.random