import '../../assert/js/assert.js';
import '../../tandem/js/PhetioIDUtils.js';
import '../../globals.js';
import TProperty from '../../axon/js/TProperty.js';
import { Locale } from '../../joist/js/i18n/localeProperty.js';
import Tandem from '../../tandem/js/Tandem.js';
import { PhetioID } from '../../tandem/js/TandemConstants.js';
import LocalizedStringProperty from './LocalizedStringProperty.js';
type TranslationString = string;
export type LocalizedStringStateDelta = Partial<Record<Locale, TranslationString>>;
export type StringsStateStateObject = {
    data: Record<PhetioID, LocalizedStringStateDelta>;
};
declare class LocalizedString {
    readonly stringKey: string;
    private readonly localeToTranslationMap;
    readonly property: LocalizedStringProperty;
    private readonly localePropertyMap;
    private readonly initialValues;
    constructor(stringKey: string, localeToTranslationMap: LocalizedStringStateDelta, tandem: Tandem, metadata?: Record<string, unknown>);
    /**
     * Returns an object that shows the changes of strings from their initial values. This includes whether strings are
     * marked as "overridden"
     */
    getStateDelta(): LocalizedStringStateDelta;
    /**
     * Take a state from getStateDelta, and apply it.
     */
    setStateDelta(state: LocalizedStringStateDelta): void;
    private get usedLocales();
    /**
     * Returns the locale-specific Property for any locale (lazily creating it if necessary)
     */
    getLocaleSpecificProperty(locale: Locale): TProperty<string>;
    dispose(): void;
    /**
     * Reset to the initial value for the specified locale, used for testing.
     */
    restoreInitialValue(locale: Locale): void;
    static getLocaleFallbacks(locale?: Locale): Locale[];
}
export default LocalizedString;
//# sourceMappingURL=LocalizedString.d.ts.map