export interface Async<T> {
    value?: T;
    error?: any;
    loading?: boolean;
}
export declare abstract class BaseComponent<Data, Options> {
    readonly container: HTMLElement;
    protected data: Async<Data>;
    protected options: Options;
    constructor(container: HTMLElement, data: Async<Data>, options: Options);
    updateData(newData: Async<Data>): void;
    updateOptions(newOptions: Options): void;
    destroy(): void;
    protected abstract onCreate(): void;
    protected abstract onDataUpdated(oldData: Async<Data>): void;
    protected abstract onOptionsUpdated(oldOptions: Options): void;
    protected abstract onDestroy(): void;
}
