export declare type TypeKeys = { [P in keyof T]: U extends T[P] ? P : never; }[keyof T]; export declare type FunctionKeys = TypeKeys any>; export declare const constructPropertiesKey: unique symbol; export declare function constructWithProperties(this: new () => T, properties: Omit>): T; export declare function constructWithPropertiesPlus(this: (new () => T) & { [constructPropertiesKey]?: (exclude: E) => I; }, properties: Omit | E> & I): T; export declare function constructWithPropertiesInternalGuard(this: new (internalGuard: never) => T, properties: Omit>): T; export declare function constructWithPropertiesInternalGuardPlus(this: (new (internalGuard: never) => T) & { [constructPropertiesKey]?: (exclude: E) => I; }, properties: Omit | E> & I): T; export declare function constructWithPropertiesAndParameters(this: new (...params: U) => T, properties: Omit>, ...parameters: U): T; export declare function constructWithPropertiesAndParametersPlus(this: (new (...params: U) => T) & { [constructPropertiesKey]?: (exclude: E) => I; }, properties: Omit | E> & I, ...parameters: U): T;