export type GetKeysOptions = {
omit: keyof A;
} | {
pick: keyof A;
};
export type GetKeys> = 'omit' extends keyof K ? Exclude : 'pick' extends keyof K ? Extract : never;
export type ExcludeTypesOptions = {
baseTypes?: boolean;
} & GetKeysOptions;
export type UndefinedToNever = T extends undefined ? never : T;
/** Used in `LiftInvalid`. */
export type Invalid = Error & {
__errorMessage: T;
};
/** Used in `AsUniqueArray`. */
export type LiftInvalid = IfExtends, Extract>, A>;
/** Used in `NonUnion`. */
export type UnionToIntersection = (U extends U ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
/** Used in `UnionToTuple`. */
export type LastOfUnion = UnionToIntersection T : never> extends () => infer R ? R : never;
export type IsType = Strict extends true ? IfExtends : T extends Type ? true : false;
export type Enumerate = Acc['length'] extends N ? Acc[number] : Enumerate;