/** Get the Params type for a given Shape */ export type EndpointParam = E extends (first: infer A, ...rest: any) => any ? A : E extends { key: (first: infer A, ...rest: any) => any } ? A : never; /** What the function's promise resolves to */ export type ResolveType any> = ReturnType extends Promise ? R : never; export type PartialArray = A extends [] ? [] : A extends [infer F] ? [F] | [] : A extends [infer F, ...infer Rest] ? [F] | [F, ...PartialArray] : A extends (infer T)[] ? T[] : never; // workaround for https://github.com/microsoft/TypeScript/issues/29919 export type PartialParameters any> = T extends (...args: infer P) => any ? Partial

: never; export type EndpointToFunction Promise> = ( this: E, ...args: Parameters ) => ReturnType;