export declare type ExtractEqual = (A extends B ? Extract : never); export declare type ToUnknownIfAllFieldsNever = (T[keyof T] extends never ? unknown : T[keyof T]); export declare type Writable = { -readonly [k in keyof T]: Writable; }; export declare function isObjectWithKeys(raw: any, keys: Extract[]): raw is { [k in Extract]: any; }; export declare type MAX_SAFE_INTEGER = 9007199254740991; export declare const MAX_SAFE_INTEGER: MAX_SAFE_INTEGER; export declare type Omit = Pick>; export declare function isStringArray(raw: any): raw is string[]; export declare type PromiseResult

> = (P extends Promise ? R : never); export declare function lazyInit(key: K, instantiate: () => T): { [k in K]: T; }; export declare type UnionToIntersection = ((U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never); export declare type IsStrictSameType = (() => A extends A1 ? true : false) extends (() => A extends A2 ? true : false) ? true : false; export declare type ExtractStrictSameType = A1 extends any ? (IsStrictSameType extends true ? A1 : never) : never; /** * https://github.com/microsoft/TypeScript/issues/32707#issuecomment-521819804 * * @todo Support both `A1` and `A2` being union types * At the moment, it only works right if `A2` is not a union */ export declare type TryReuseExistingType = ExtractStrictSameType extends never ? A2 : ExtractStrictSameType;