import { LocalizationBaseConfig, LocalizationConfig, NamespaceLocalizationConfig, TypeLocalizationConfig } from '../config'; import { MessageLocation } from '../validation'; import { ModelComponent, ValidationContext } from '../validation/validation-context'; import { EnumValue } from './enum-type'; import { Field } from './field'; import { Model } from './model'; import { TypeBase } from './type-base'; export declare class ModelI18n implements ModelComponent { private readonly model; private readonly languageLocalizationProvidersByLanguage; readonly configs: ReadonlyArray; constructor(input: ReadonlyArray, model: Model); validate(context: ValidationContext): void; getTypeLocalization(type: TypeBase, resolutionOrder: ReadonlyArray): TypeLocalization; getTypeI18n(type: TypeBase): Record; getFieldLocalization(field: Field, resolutionOrder: ReadonlyArray): FieldLocalization; getFieldI18n(field: Field): Record; getEnumValueLocalization(enumValue: EnumValue, resolutionOrder: ReadonlyArray): EnumValueLocalization; getEnumValueI18n(enumValue: EnumValue): Record; private getResolutionProviders; /** * Returns all available localization providers. * * The derived languages "I18N_GENERIC" and "I18N_LOCALE" are not included. */ private getAllLocalizationProviders; } export declare class NamespaceLocalization { private readonly config; readonly namespacePath: ReadonlyArray; constructor(config: NamespaceLocalizationConfig); getTypeLocalization(name: string): TypeLocalization | undefined; getFieldLocalization({ typeName, fieldName, }: { typeName: string; fieldName: string; }): FieldLocalization | undefined; getEnumValueLocalization({ typeName, enumValue, }: { typeName: string; enumValue: string; }): EnumValueLocalization | undefined; private getElementLocalization; /** * Gets a localization for a field name outside of a type declaration * * This should be used as fallback if no direct type-field localization is present */ getCommonFieldLocalization(name: string): FieldLocalization | undefined; get loc(): MessageLocation | undefined; get types(): { [name: string]: TypeLocalizationConfig; } | undefined; } export interface TypeLocalization extends LocalizationBaseConfig { readonly labelPlural?: string; } export interface FieldLocalization extends LocalizationBaseConfig { } export interface EnumValueLocalization extends LocalizationBaseConfig { }