import { EntityManager, EntityTarget, ObjectLiteral } from 'typeorm';
import { TranslatableEntity } from './TranslatableEntity';
import { TranslationEntity } from './TranslationEntity';
import { IConfigurableTranslationConfig, ITranslationConfig, ITranslationMetaDataArgsStorage, TranslationEntityConstructor } from './types';
export declare class TranslationConfig implements ITranslationConfig {
    getLocale: () => string | undefined;
    private _shouldDelete;
    get shouldDelete(): boolean;
    private _shouldMutate;
    get shouldMutate(): boolean;
    private _entitySuffix;
    get entitySuffix(): string;
    private _translationMetadataArgsStorage;
    getTranslationMetadataArgsStorage(): ITranslationMetaDataArgsStorage;
    private _translationEntitiesMap;
    getTranslationEntities(): (new () => TranslationEntity<TranslatableEntity<ObjectLiteral>>)[];
    getEntityManager: () => EntityManager | undefined;
    /**
     * Use provided translation config
     * @param config Config to initialize
     * @throws {AlreadyGeneratedException} when trying to change entitySuffix after translation entities are already generated
     */
    static use(config: IConfigurableTranslationConfig): void;
    private static _instance;
    static getInstance(): TranslationConfig;
    /**
     * Whether or not translation entities are already generated
     */
    private hasGenerated;
    /**
     * Generate translation entities for usage with decorators
     * @throws {AlreadyGeneratedException} when trying to generate translation entities again
     * @returns generated translation entities
     * @experimental
     */
    static generate(): (new () => TranslationEntity<TranslatableEntity<ObjectLiteral>>)[];
    /**
     * Get respective translation entity repository for given entity
     * @param target entity to get translation entity for
     * @param manager entity manager to get translation entity repository, if not provided, will try to get from default config
     * @returns translation entity repository
     * @experimental
     */
    static getTranslationRepository<T extends ObjectLiteral>(target: EntityTarget<TranslatableEntity<TranslationEntity<T>>>, manager?: EntityManager): import("typeorm").Repository<TranslationEntity<TranslatableEntity<T>>>;
    /**
     * Get respective translation entity for given entity
     * @param target entity to get translation entity for
     * @param manager entity manager to get translation entity, if not provided, will try to get from default config
     * @returns translation entity
     * @experimental
     */
    static getTranslationEntity<P extends ObjectLiteral = ObjectLiteral, T extends ObjectLiteral = ObjectLiteral>(target: EntityTarget<TranslatableEntity<TranslationEntity<T>>>, manager?: EntityManager): TranslationEntityConstructor<P, T>;
    private static getResolvedManager;
}
