import { Maybe } from '@typed/maybe' ; import { StrMap } from '../types' ; export type Path = { < Z , A extends keyof Z = keyof Z > ( path , obj ) : Maybe < Z [ A ] > ; < Z , A extends keyof Z = keyof Z , B extends keyof Z [ A ] = keyof Z [ A ] > ( path , obj ) : Maybe < Z [ A ] [ B ] > ; < Z , A extends keyof Z = keyof Z , B extends keyof Z [ A ] = keyof Z [ A ] , C extends keyof Z [ A ] [ B ] = keyof Z [ A ] [ B ] > ( path , obj ) : Maybe < Z [ A ] [ B ] [ C ] > ; < Z , A extends keyof Z = keyof Z , B extends keyof Z [ A ] = keyof Z [ A ] , C extends keyof Z [ A ] [ B ] = keyof Z [ A ] [ B ] , D extends keyof Z [ A ] [ B ] [ C ] = keyof Z [ A ] [ B ] [ C ] > ( path , obj ) : Maybe < Z [ A ] [ B ] [ C ] [ D ] > ; < Z , A extends keyof Z = keyof Z , B extends keyof Z [ A ] = keyof Z [ A ] , C extends keyof Z [ A ] [ B ] = keyof Z [ A ] [ B ] , D extends keyof Z [ A ] [ B ] [ C ] = keyof Z [ A ] [ B ] [ C ] , E extends keyof Z [ A ] [ B ] [ C ] [ D ] = keyof Z [ A ] [ B ] [ C ] [ D ] > ( path , obj ) : Maybe < Z [ A ] [ B ] [ C ] [ D ] [ E ] > ; < A extends string > ( path ) : < R , Z extends StrMap < A , R > > ( obj : Z ) => R ; < A extends string , B extends string > ( path ) : < R , Z extends StrMap < A , StrMap < B , R > > > ( obj : Z ) => R ; < A extends string , B extends string , C extends string > ( path ) : < R , Z extends StrMap < A , StrMap < B , StrMap < C , R > > > > ( obj : Z ) => Maybe < R > ; < A extends string , B extends string , C extends string , D extends string > ( path ) : < R , Z extends StrMap < A , StrMap < B , StrMap < C , StrMap < D , R > > > > > ( obj : Z ) => Maybe < R > ; < A extends string , B extends string , C extends string , D extends string , E extends string > ( path ) : < R , Z extends StrMap < A , StrMap < B , StrMap < C , StrMap < D , StrMap < E , R > > > > > > ( obj : Z ) => Maybe < R > ; < A extends string , B extends string , C extends string , D extends string , E extends string , F extends string > ( path ) : < R , Z extends StrMap < A , StrMap < B , StrMap < C , StrMap < D , StrMap < E , StrMap < F , R > > > > > > > ( obj : Z ) => Maybe < R > ; < A extends string , B extends string , C extends string , D extends string , E extends string , F extends string , G extends string > ( path ) : < R , Z extends StrMap < A , StrMap < B , StrMap < C , StrMap < D , StrMap < E , StrMap < F , StrMap < G , R > > > > > > > > ( obj : Z ) => Maybe < R > ; < A extends string , B extends string , C extends string , D extends string , E extends string , F extends string , G extends string , H extends string > ( path ) : < R , Z extends StrMap < A , StrMap < B , StrMap < C , StrMap < D , StrMap < E , StrMap < F , StrMap < G , StrMap < H , R > > > > > > > > > ( obj : Z ) => Maybe < R > ; < Z , A > ( path , obj ) : Maybe < A > ; < Z , A > ( path ) : ( obj : Z ) => Maybe < A > ; } ;