export type TranslationFunction = { >>(key: K): HelperR, K>; >>(key: K, params: HelperP, K>): HelperR, K>; }; type HelperROrString = Key extends { R: any; } ? Key["R"] : string; type HelperR = Key extends { K: string; } ? Key extends { K: K; } ? HelperROrString : never : Key extends K ? string : never; type HelperExtractKey = Extract[1]; type HelperFlatKeyNoParams = Key extends { K: string; } ? Key extends { P: any; } ? never : Key["K"] : Key; type HelperFlatKeyWithParams = Key extends { K: string; } ? Key extends { P: any; } ? Key["K"] : never : never; type HelperPOrVoid = Key extends { P: any; } ? Key["P"] : void; type HelperP = Key extends { K: string; } ? Key extends { K: K; } ? HelperPOrVoid : never : Key extends K ? void : never; export {};