import type { NonEmptyArray } from '../NonEmptyArray'; export declare type Primitive = string | number | boolean | null | symbol; export declare type Constructor = { new (...args: any[]): A; }; export declare type _A = [T] extends [{ ['_A']: () => infer A; }] ? A : never; export declare type _R = [T] extends [{ ['_R']: (_: infer R) => void; }] ? R : never; export declare type _E = [T] extends [{ ['_E']: () => infer E; }] ? E : never; export declare type UnionToIntersection = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never; export declare type UnionToTuple = UnionToIntersection T : never> extends (_: any) => infer W ? [...UnionToTuple>, W] : []; export declare type EnforceNonEmptyRecord = keyof R extends never ? never : R; export declare type Erase = R & K extends K & infer R1 ? R1 : R; /** * Excludes properties of type V from T */ export declare type ExcludeMatchingProperties = Pick; export declare type EnsureLiteral = string extends K ? never : [K] extends [UnionToIntersection] ? K : never; export declare type Mutable = T extends NonEmptyArray ? Array & { 0: A; } : T extends ReadonlyArray ? Array : T extends ReadonlySet ? Set : T extends ReadonlyMap ? Map : { -readonly [K in keyof T]: T[K]; }; //# sourceMappingURL=types.d.ts.map