export declare type FunctionPropertyNames<T> = {
    [K in keyof T]: T[K] extends Function ? K : never;
}[keyof T];
export declare type FunctionProperties<T> = Pick<T, FunctionPropertyNames<T>>;
export declare type AttributesOnly<T> = {
    [K in keyof T]: T[K] extends Function ? never : T[K];
};
export declare type PickWith<T, KT extends keyof T, V> = {
    [P in KT]: T[P] extends V ? V : never;
};
export declare type PickWithOpt<T, KT extends keyof T, V> = {
    [P in KT]?: T[P] extends V ? V : never;
};
export declare type DeepPartial<T> = {
    [P in keyof T]?: T[P] extends Array<infer U> ? Array<DeepPartial<U>> : T[P] extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : DeepPartial<T[P]>;
};
declare type Primitive = string | Function | number | boolean | Symbol | undefined | null;
export declare type DeepOmitHelper<T, K extends keyof T> = {
    [P in K]: T[P] extends infer TP ? TP extends Primitive ? TP : TP extends any[] ? DeepOmitArray<TP, K> : DeepOmit<TP, K> : never;
};
export declare type DeepOmit<T, K> = T extends Primitive ? T : DeepOmitHelper<T, Exclude<keyof T, K>>;
export declare type DeepOmitArray<T extends any[], K> = {
    [P in keyof T]: DeepOmit<T[P], K>;
};
export {};
//# sourceMappingURL=types.d.ts.map