import { Future } from './index.js'; type UnwrapFuture = T extends Future ? U : T extends readonly any[] ? { [K in keyof T]: UnwrapFuture; } : T; type FuturifyArgs = Params extends [infer Head, ...infer Tail] ? [Head | Future>, ...FuturifyArgs] : []; type FuturifiedInstance = PromiseLike & { [K in keyof T]: T[K] extends (...args: infer A) => infer R ? (...args: { [P in keyof A]: A[P] | Future; }) => FuturifiedInstance> : Future>; }; type FuturifyFunctionReturn any, R> = R extends InstanceType ? FuturifiedInstance> : Future>; type FuturifiedStatic any> = { [K in Exclude]: T[K] extends (...args: infer A) => infer R ? (...args: { [P in keyof A]: A[P] | Future; }) => FuturifyFunctionReturn : Future>; }; type FuturifiedClass any> = FuturifiedStatic & (new (...args: FuturifyArgs>) => FuturifiedInstance>); declare function futurifyClass any>(Class: T): FuturifiedClass; export { type FuturifiedClass, type FuturifiedInstance, futurifyClass };