, Tail>;
/**
* Utilities for replacing types of nested keys.
*/
export declare type Replace, V> = Without & {
[id in A]: V;
};
export declare type Replace2, B extends Keys1, V> = Without & {
[id in A]: Replace, B, V>;
};
export declare type Replace3, B extends Keys1, C extends Keys2, V> = Without & {
[id in A]: Replace2, B, C, V>;
};
export declare type Replace4, B extends Keys1, C extends Keys2, D extends Keys3, V> = Without & {
[id in A]: Replace3, B, C, D, V>;
};
export declare type Replace5, B extends Keys1, C extends Keys2, D extends Keys3, E extends Keys4, V> = Without & {
[id in A]: Replace4, B, C, D, E, V>;
};
export declare type Replace6, B extends Keys1, C extends Keys2, D extends Keys3, E extends Keys4, F extends Keys5, V> = Without & {
[id in A]: Replace5, B, C, D, E, F, V>;
};
export declare type Replace7, B extends Keys1, C extends Keys2, D extends Keys3, E extends Keys4, F extends Keys5, G extends Keys6, V> = Without & {
[id in A]: Replace6, B, C, D, E, F, G, V>;
};
export declare type Replace8, B extends Keys1, C extends Keys2, D extends Keys3, E extends Keys4, F extends Keys5, G extends Keys6, H extends Keys7, V> = Without & {
[id in A]: Replace7, B, C, D, E, F, G, H, V>;
};
/**
* Internal reducer used as a building block for ReduceN.
*
* @internal
*
* @param T - he structure to remove keys from.
* @param C - he current key.
* @param R - he remaining keys.
* @param V - he type to use for the replacement.
*/
declare type ReplaceNReducer = C extends keyof T ? {
0: Replace;
1: Without & Record, Tail, V>>;
}[R extends [] ? 0 : 1] : never;
/**
* Generalised version of Replace0-Replace8.
*/
export declare type ReplaceN = ReplaceNReducer, Tail, V>;
export {};
//# sourceMappingURL=keyval.d.ts.map