@swaptoshi/dex-module
Version:
Klayr decentralized exchange (dex) on-chain module
11 lines (10 loc) • 889 B
TypeScript
export type ConfigPathKeys<T> = T extends object ? {
[K in keyof T]: K extends string ? T[K] extends any[] ? `${K}` | `${K}.${number}` | `${K}[${number}]` | `${K}.${number}.${ConfigPathKeys<T[K][number]>}` | `${K}[${number}].${ConfigPathKeys<T[K][number]>}` : T[K] extends object ? `${K}` | `${K}.${ConfigPathKeys<T[K]>}` : `${K}` : never;
}[keyof T] : never;
export type ConfigPathType<T, P extends string> = P extends `${infer K}.${infer Rest}` ? K extends keyof T ? Rest extends `${infer N}.${infer SubRest}` ? N extends `${number}` ? T[K] extends any[] ? ConfigPathType<T[K][number], SubRest> : never : ConfigPathType<T[K], Rest> : Rest extends `${number}` ? T[K] extends any[] ? T[K][number] : never : ConfigPathType<T[K], Rest> : never : P extends keyof T ? T[P] : never;
export interface UpdatedProperty {
path: string;
old: string;
new: string;
type: string;
}