export declare type Diff = ({ [P in T]: P; } & { [P in U]: never; } & { [x: string]: never; })[T]; export declare type Omit = { [P in Diff]: T[P]; }; export declare type RecursivePartial = { [P in keyof T]?: RecursivePartial; }; export declare type NonAbstract = { [P in keyof T]: T[P]; }; export declare type Constructor = new (...args: any[]) => T;