/** Base callback */ export interface Callback { (...args: any[]): any; } /** Base debounce */ export interface Debounce { (func: T): T; } /** Size */ export interface Size { width: number; height: number; } type ArgumentTypes any> = F extends (...args: infer A) => any ? A : never; export type Promisify = { [K in keyof T]: T[K] extends (...args: any[]) => any ? (...args: ArgumentTypes) => Promise> : T[K] extends object ? Promisify : T[K]; }; export {};