declare type Undefined<T> = T extends undefined ? undefined : never;
declare type UndefinedProperties<T> = {
    [K in keyof T]: Undefined<T[K]> extends never ? never : K;
}[keyof T];
declare type NotUndefinedProperties<T> = {
    [K in keyof T]: Undefined<T[K]> extends never ? K : never;
}[keyof T];
declare type Merge<T extends object> = {
    [K in keyof T]: T[K];
};
export declare type WithUndefinedPropertiesAsOptionals<T> = Merge<{
    [K in keyof T & UndefinedProperties<T>]?: Exclude<T[K], undefined>;
} & {
    [K in keyof T & NotUndefinedProperties<T>]: T[K];
}>;
export {};
