import { LanguageCode } from '@vendure/common/lib/generated-types'; import { UnwrappedArray } from '../../../common/types/common-types'; import { Translatable, Translated } from '../../../common/types/locale-types'; import { VendureEntity } from '../../../entity/base/base.entity'; export type TranslatableRelationsKeys = { [K in keyof T]: T[K] extends string ? never : T[K] extends number ? never : T[K] extends boolean ? never : T[K] extends undefined ? never : T[K] extends string[] ? never : T[K] extends number[] ? never : T[K] extends boolean[] ? never : K extends 'translations' ? never : K extends 'customFields' ? never : K; }[keyof T]; export type NestedTranslatableRelations = { [K in TranslatableRelationsKeys]: T[K] extends any[] ? [ K, TranslatableRelationsKeys> ] : [ K, TranslatableRelationsKeys ]; }; export type NestedTranslatableRelationKeys = NestedTranslatableRelations[keyof NestedTranslatableRelations]; export type DeepTranslatableRelations = Array | NestedTranslatableRelationKeys>; /** * Converts a Translatable entity into the public-facing entity by unwrapping * the translated strings from the matching Translation entity. */ export declare function translateEntity(translatable: T, languageCode: LanguageCode | [LanguageCode, ...LanguageCode[]]): Translated; /** * Translates an entity and its deeply-nested translatable properties. Supports up to 2 levels of nesting. */ export declare function translateDeep(translatable: T, languageCode: LanguageCode | [LanguageCode, ...LanguageCode[]], translatableRelations?: DeepTranslatableRelations): Translated; export type TreeNode = { children: TreeNode[]; } & Translatable & VendureEntity; /** * Translates a tree structure of Translatable entities */ export declare function translateTree(node: T, languageCode: LanguageCode | [LanguageCode, ...LanguageCode[]], translatableRelations?: DeepTranslatableRelations): Translated;