/** * Forked from ts-toolbelt * https://github.com/millsp/ts-toolbelt/blob/9c27a61b39eae7f2794c349973e78023894885c3/sources/Any/Compute.ts#L1 */ /** * @hidden */ export declare type ComputeRaw = A extends Function ? A : { [K in keyof A]: A[K]; } & unknown; /** * @hidden */ declare type ComputeFlat = A extends BuiltIn ? A : A extends Array ? A extends Array> ? Array<{ [K in keyof A[number]]: A[number][K]; } & unknown> : A : A extends ReadonlyArray ? A extends ReadonlyArray> ? ReadonlyArray<{ [K in keyof A[number]]: A[number][K]; } & unknown> : A : { [K in keyof A]: A[K]; } & unknown; /** * @hidden */ declare type ComputeDeep = A extends BuiltIn ? A : If, A, A extends Array ? A extends Array> ? Array<{ [K in keyof A[number]]: ComputeDeep; } & unknown> : A : A extends ReadonlyArray ? A extends ReadonlyArray> ? ReadonlyArray<{ [K in keyof A[number]]: ComputeDeep; } & unknown> : A : { [K in keyof A]: ComputeDeep; } & unknown>; /** * Force TS to load a type that has not been computed (to resolve composed * types that TS haven't fully resolved, for display purposes mostly). * @param A to compute * @returns `A` * @example */ export declare type Compute = { flat: ComputeFlat; deep: ComputeDeep; }[depth]; declare type Depth = 'flat' | 'deep'; export declare type Boolean = 0 | 1; declare type Key = string | number | symbol; /** * Check whether `U` contains `U1` * @param U to be inspected * @param U1 to check within * @returns [[Boolean]] * @example */ declare type Has = [U1] extends [U] ? 1 : 0; declare type BuiltIn = Function | Error | Date | { readonly [Symbol.toStringTag]: string; } | RegExp | Generator; export declare type If = { 0: Else; 1: Then; }[B]; export {}; //# sourceMappingURL=compute.d.ts.map