/**
* 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