import type { ReactiveController, ReactiveControllerHost } from 'lit';
/**
 * The controller host type.
 *
 * @public
 */
export type ControllerHost = ReactiveControllerHost & HTMLElement;
/**
 * The base class for all controllers.
 *
 * @public
 * @abstract
 */
export declare abstract class ControllerBase<THost extends ControllerHost = ControllerHost> implements ReactiveController {
    private readonly _host;
    private _isConnected;
    private _hasUpdated;
    /**
     * Constructs a new instance of the `ControllerBase` class.
     *
     * @public
     * @protected
     */
    protected constructor(host: THost);
    /**
     * Gets the host property.
     *
     * @protected
     * @readonly
     */
    protected get host(): THost;
    /**
     * Gets a value indicating whether the controller is connected.
     *
     * @protected
     * @readonly
     */
    protected get isConnected(): boolean;
    /**
     * @public
     * @virtual
     */
    hostConnected(): void;
    /**
     * @public
     * @virtual
     */
    hostDisconnected(): void;
    /**
     * @public
     * @virtual
     */
    hostUpdate(): void;
    /**
     * @public
     * @virtual
     */
    hostUpdated(): void;
    /**
     * @public
     * @virtual
     */
    hostFirstUpdated(): void;
}
//# sourceMappingURL=ControllerBase.d.ts.map