import type { ReactiveController, ReactiveControllerHost } from 'lit';
import type { ElementIntlBase } from './Abstracts/ElementIntlBase';
/**
 * The config options for a IntlController.
 */
export interface IIntlControllerConfig<TIntl extends ElementIntlBase> {
    factory: () => TIntl;
}
/**
 * The `IntlController` class.
 *
 * @public
 */
export declare class IntlController<TIntl extends ElementIntlBase = ElementIntlBase> implements ReactiveController {
    private readonly _host;
    private readonly _translator;
    private _intl;
    private _subscription;
    /**
     * Constructs a new instance of the `IntlController` class.
     *
     * @public
     */
    constructor(host: ReactiveControllerHost & Element, config: IIntlControllerConfig<TIntl>);
    /**
     * Gets the intl.
     *
     * @public
     */
    get intl(): TIntl;
    /**
     * @public
     */
    hostConnected(): void;
    /**
     * @public
     */
    hostDisconnected(): void;
    /**
     * @public
     */
    setLocale(locale?: string): void;
    /**
     * Provides an external intl instance, replacing the internal one.
     *
     * @public
     * @param intl - The intl instance to provide.
     */
    provide(intl: TIntl): void;
}
/**
 * Adds an intl controller to the given host.
 *
 * @public
 * @param host The host element.
 * @param config The configuration options.
 * @returns The intl controller instance.
 */
export declare function addIntlController<T extends ElementIntlBase>(host: ReactiveControllerHost & Element, config: IIntlControllerConfig<T>): IntlController<T>;
//# sourceMappingURL=IntlController.d.ts.map