import { View } from "../view.js";
import { Riba } from "../riba.js";
import { BasicComponent } from "./basic-component.js";
import { Formatter } from "../types/index.js";
import { EventDispatcher } from "@ribajs/events";
import type { ComponentLifecycleEventData, ComponentLifecycleOptions } from "../types/index.js";
export declare abstract class Component extends BasicComponent {
    protected view?: View | null;
    protected riba?: Riba;
    protected _binds: boolean;
    protected _bound: boolean;
    protected _connected: boolean;
    protected _disconnected: boolean;
    protected lifecycleEvents: EventDispatcher;
    protected lifecycleOptions: ComponentLifecycleOptions;
    get binds(): boolean;
    get bound(): boolean;
    get connected(): boolean;
    get disconnected(): boolean;
    protected autobind: boolean;
    constructor();
    protected init(observedAttributes: string[]): Promise<void>;
    protected throw(error: any): void;
    protected bindIfReady(): Promise<void>;
    private _beforeBind;
    protected beforeBind(): Promise<any>;
    private _afterBind;
    protected afterBind(): Promise<any>;
    protected afterAllBind(): Promise<any>;
    protected getLifecycleEventData(): ComponentLifecycleEventData;
    protected disconnectedCallback(): void;
    protected connectedCallback(): void;
    protected attributeChangedCallback(attributeName: string, oldValue: any, newValue: any, namespace: string | null): Promise<void>;
    protected callFormatterHandler(self: this): any;
    protected argsFormatterHandler(self: this): Formatter;
    protected bind(): Promise<View | null | undefined>;
    protected getView(): View | null | undefined;
    unbind(): Promise<void>;
    protected build(): Promise<void>;
}
