export declare type ValueOf = T[keyof T]; export declare type LiteralUnion = T | (Pick & { _?: never; }); export interface ArrayLike { [index: number]: T; length: number; } export declare type Unique = Pick>; export declare type MergeObject = { [K in keyof T & keyof U]: T[K] extends Record ? U[K] extends Record ? Merged : T[K] : T[K]; }; export declare type Merged = Unique & Unique & MergeObject; declare type IfEquals = (() => T extends X ? 1 : 2) extends (() => T extends Y ? 1 : 2) ? A : B; declare type WritableKeysOf = { [P in keyof T]: IfEquals<{ [Q in P]: T[P]; }, { -readonly [Q in P]: T[P]; }, P, never>; }[keyof T]; declare type WritablePart = Pick>; export declare type NoFunctions = { [P in keyof T as T[P] extends Function ? never : P]: T[P]; }; export declare type Attributes = NoFunctions>; export {};