import { DisposableGroup } from '@blockeditor/global/utils';
import type { ReactiveController, ReactiveControllerHost } from 'lit';
import type { StyleInfo } from 'lit/directives/style-map.js';
import type { AdvancedPortalOptions } from '../portal.js';
import { whenHover, type WhenHoverOptions } from './when-hover.js';
type OptionsParams = Omit<ReturnType<typeof whenHover>, 'setFloating' | 'dispose'> & {
    abortController: AbortController;
};
type HoverPortalOptions = Omit<AdvancedPortalOptions, 'abortController'>;
type HoverOptions = {
    /**
     * Transition style when the portal is shown or hidden.
     */
    transition: {
        in: StyleInfo;
        out: StyleInfo;
    } | null;
    /**
     * Set the portal as hover element automatically.
     * @default true
     */
    setPortalAsFloating: boolean;
} & WhenHoverOptions;
export declare class HoverController implements ReactiveController {
    protected _disposables: DisposableGroup;
    host: ReactiveControllerHost;
    private _abortController?;
    private _setReference?;
    private _portal?;
    private readonly _onHover;
    private readonly _hoverOptions;
    get setReference(): (element?: Element | undefined) => void;
    get portal(): HTMLDivElement | undefined;
    constructor(host: ReactiveControllerHost, onHover: (options: OptionsParams) => HoverPortalOptions | null, hoverOptions?: Partial<HoverOptions>);
    hostConnected(): void;
    hostDisconnected(): void;
}
export {};
//# sourceMappingURL=controller.d.ts.map