import { TemplateResult } from 'lit-html';
import { getTranslation } from '../../environment/langs';
export type Events = {
    [key: string]: (data?: any) => void;
};
export type HTMLElementID = string;
export type StateBase = (Record<string, any> & {
    translation?: ReturnType<typeof getTranslation>;
}) | Record<string, never>;
export declare abstract class ComponentLit<T extends StateBase> {
    protected mountElement: HTMLElement | HTMLElementID;
    events?: Events;
    state: T;
    protected initialState: T;
    protected componentWrapper: HTMLElement;
    protected templateFn: (state: T) => TemplateResult;
    protected constructor(mountElement: HTMLElement | HTMLElementID, state: T, templateFn: (state: any, handlers?: any) => TemplateResult, events?: Events);
    addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLDivElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
    backToInitialState(): void;
    unmount(): void;
    remount(): void;
    addClassForComponentWrapper(className: string): void;
    removeClassFromComponentWrapper(className: string): void;
    protected changeState(state: Record<string, any>): void;
    protected updateView(property?: any): void;
    protected replaceHTMLContent(className: string, newContent: string): void;
    private wrapStateToProxy;
    protected renderTemplate(): void;
    private mount;
}
