export declare type ArgTypes = T extends (...args: infer A) => any ? A : never; export declare type ArgType = F extends (arg: infer A) => any ? A : Else; export declare type ReplaceReturnTypePromise = (...a: ArgTypes) => Promise; export declare type VariadicFunction = (...args: any[]) => any; export declare type Lookup = K extends keyof T ? T[K] : Default; export declare type Tail = ((...t: T) => void) extends ((x: any, ...u: infer U) => void) ? U : never; export declare type Head = T extends [infer U, ...any[]] ? U : never; export declare type UnpackPromise = T extends Promise> ? U[] : T extends Promise ? D : T; export declare type LastIndexOf = ((...x: T) => void) extends ((y: any, ...z: infer U) => void) ? U['length'] : never;