import type { LogLevel } from '@coveo/headless';
import type { i18n } from 'i18next';
import type { LitElement, ReactiveController } from 'lit';
import type { AnyBindings, AnyEngineType } from './bindings';
import '../atomic-aria-live/atomic-aria-live';
type InitializeEventHandler = (bindings: AnyBindings) => void;
export type InitializeEvent = CustomEvent<InitializeEventHandler>;
export interface BaseAtomicInterface<EngineType extends AnyEngineType> {
    analytics: boolean;
    i18n: i18n;
    languageAssetsPath: string;
    iconAssetsPath: string;
    bindings: AnyBindings;
    updateIconAssetsPath(): void;
    error: Error;
    engine?: EngineType;
    logLevel?: LogLevel;
    language?: string;
    registerFieldsToInclude?: () => void;
}
export declare class InterfaceController<EngineType extends AnyEngineType> implements ReactiveController {
    private host;
    private i18nPromise;
    private hangingComponentsInitialization;
    constructor(host: LitElement & BaseAtomicInterface<EngineType>, globalVariableName: string, headlessVersion: string);
    hostConnected(): void;
    hostDisconnected(): void;
    onComponentInitializing(event: InitializeEvent): void;
    onInitialization(initEngine: () => void): Promise<void>;
    onAnalyticsChange(): void;
    onLanguageChange(newLanguage?: string): void;
    engineIsCreated(engine?: EngineType): engine is EngineType;
    private get interfaceTagname();
    private initComponents;
    private initAriaLive;
    private removeAriaLive;
}
export {};
