import { Type } from '@nestjs/common'; import { ClassProvider, ExistingProvider, FactoryProvider, ModuleMetadata, ValueProvider } from '@nestjs/common/interfaces'; import { I18nLoader } from '../loaders/i18n.loader'; import { I18nCustomContext } from './i18n-custom-context.interface'; import { I18nResolver } from './i18n-language-resolver.interface'; export interface OptionsProvider { options: any; } export declare type OptionProvider = Omit, 'provide'> | Omit, 'provide'> | Omit, 'provide'> | Omit, 'provide'> | OptionsProvider; export declare type ResolverWithOptions = { use: Type; } & OptionProvider; export declare type I18nOptionsWithoutResolvers = Omit; export declare type I18nOptionResolver = ResolverWithOptions | Type | I18nResolver; export declare type Formatter = (template: string, ...args: (string | Record)[]) => string; export interface I18nOptions { fallbackLanguage: string; fallbacks?: { [key: string]: string; }; resolvers?: I18nOptionResolver[]; contexts?: I18nCustomContext[]; loader?: Type; loaderOptions: any; formatter?: Formatter; logging?: boolean; viewEngine?: 'hbs' | 'pug' | 'ejs'; disableMiddleware?: boolean; } export interface I18nOptionsFactory { createI18nOptions(): Promise | I18nOptionsWithoutResolvers; } export interface I18nAsyncOptions extends Pick { name?: string; useExisting?: Type; useClass?: Type; useFactory?: (...args: any[]) => Promise | I18nOptionsWithoutResolvers; resolvers?: I18nOptionResolver[]; contexts?: I18nCustomContext[]; loader?: Type; inject?: any[]; logging?: boolean; }