UNPKG

@react-native-localize-ext/core

Version:
26 lines (25 loc) 1.51 kB
import { I18nConfig, I18n } from './I18n'; declare type HasDefault<T> = { [key in keyof T]: T[key] extends undefined ? never : T[key] extends (...args: infer P) => any ? undefined extends P[0] ? key : never : key; }[keyof T]; declare type NoDefault<T> = { [key in keyof T]: T[key] extends undefined ? key : T[key] extends (...args: infer P) => any ? undefined extends P[0] ? never : key : never; }[keyof T]; declare type ParameterType<T> = T extends undefined ? string | number : T extends (...args: infer P) => any ? P[0] : T; export declare type Locale<U extends object> = { [key in keyof U]: U[key] extends Array<any> ? Extract<U[key][number], object> extends infer R ? NoDefault<R> extends never ? HasDefault<R> extends never ? () => string : (params?: { [p in HasDefault<R>]?: ParameterType<R[p]>; }) => string : HasDefault<R> extends never ? (params: { [p in NoDefault<R>]: ParameterType<R[p]>; }) => string : (params: { [p in NoDefault<R>]: ParameterType<R[p]>; } & { [p in HasDefault<R>]?: ParameterType<R[p]>; }) => string : never : U[key] extends object ? Locale<U[key]> : U[key]; }; export declare type I18nInstance<U extends object = object, T = object> = T & { _: Omit<I18n<U, T>, 'chain'>; }; export declare function createPolyfillI18n<U extends object, T = Locale<U>>(config: I18nConfig<U>): I18nInstance<U, T>; export declare function createI18n<U extends object, T = Locale<U>>(config: I18nConfig<U>): I18nInstance<U, T>; export {};