import { ReactiveController } from 'lit';
import { AbstractOverlay } from './AbstractOverlay';

export declare enum InteractionTypes {
    Click = "click",
    Hover = "hover",
    LongPress = "longpress"
}
export type ControllerOptions = {
    handleOverlayReady?: (overlay: AbstractOverlay) => void;
    isPersistent?: boolean;
    overlay?: AbstractOverlay;
};
export declare class InteractionController implements ReactiveController {
    target: HTMLElement;
    abortController: AbortController;
    get activelyOpening(): boolean;
    private handleOverlayReady?;
    private isLazilyOpen;
    get open(): boolean;
    /**
     * Set `open` against the associated Overlay lazily.
     */
    set open(open: boolean);
    get overlay(): AbstractOverlay;
    set overlay(overlay: AbstractOverlay | undefined);
    private _overlay;
    protected isPersistent: boolean;
    type: InteractionTypes;
    constructor(target: HTMLElement, { handleOverlayReady, isPersistent, overlay }: ControllerOptions);
    prepareDescription(_: HTMLElement): void;
    releaseDescription(): void;
    shouldCompleteOpen(): void;
    init(): void;
    initOverlay(): void;
    abort(): void;
    hostConnected(): void;
    hostDisconnected(): void;
}
