export declare global { namespace Based { namespace i18n { type Languages = | 'en' | 'pt' | 'nl' | 'es' | 'de' | 'fr' | 'it' | 'fi' | 'ch' type Translations = Record> = { default: keyof T languages: T } type ValidKey = string | number type RemoveSuffix = S extends | `${infer Base}_none` | `${infer Base}_one` | `${infer Base}_many` ? Base : S type KeyVariants = K extends string ? K extends | `${infer Base}_none` | `${infer Base}_one` | `${infer Base}_many` ? K | Base : K : K type Decrement = N extends 0 ? never : N extends infer _R ? [...Array]['length'] : never type IsPlainObject = T extends object ? T extends any[] ? false : T extends Function ? false : true : false type NestedKeys< T, Prefix extends string = '', Depth extends number = 10, > = [Depth] extends [never] ? never : { [K in keyof T & ValidKey]: IsPlainObject extends true ? | `${Prefix}${KeyVariants}` | NestedKeys< T[K], `${Prefix}${K & string}.`, Decrement > : `${Prefix}${KeyVariants}` }[keyof T & ValidKey] type Constructor = ( base: T, ) => ( key: Based.i18n.NestedKeys, ...params: any[] ) => any } } }