/* a b c/:cid d/:did e?f g/:gid?h */ type RootOfGenRouterType = GenRouterTypes['a']['$types'] interface GenRouterTypes { a: { $types: { name: 'a', params: any, queries: any, next: GenRouterTypes['a']['b']['$type'] | GenRouterTypes['a']['c']['$type'] } b: { $type: { name: 'b', params: any, queries: any, next: any } } c: { $type: { name: 'c', params: { cid: string }, next: GenRouterTypes['a']['c']['d']['$type'] | GenRouterTypes['a']['c']['d']['$type'] | GenRouterTypes['a']['c']['g']['$type'] } d: { $type: { name: 'd', params: { cid: string, did: string } } }, e: { $type: { name: 'e', params: any, queries: { f: string } } }, g: { $type: { name: 'g', params: { cid: string, gid: string, }, queries: { h: string }, next: any } } } } }