import type { BlockElement } from '@blockeditor/lit';
import { WidgetElement } from '@blockeditor/lit';
import { nothing, type TemplateResult } from 'lit';
type FormatBarCustomAction = {
    disable?: (formatBar: AffineFormatBarWidget) => boolean;
    icon(formatBar: AffineFormatBarWidget): string | undefined;
    onClick(formatBar: AffineFormatBarWidget): void;
};
type FormatBarCustomElement = {
    showWhen?(formatBar: AffineFormatBarWidget): boolean;
    init(formatBar: AffineFormatBarWidget): HTMLElement;
};
type FormatBarCustomRenderer = {
    render(formatBar: AffineFormatBarWidget): TemplateResult | undefined;
};
export declare const AFFINE_FORMAT_BAR_WIDGET = "affine-format-bar-widget";
export declare class AffineFormatBarWidget extends WidgetElement {
    static styles: import("lit").CSSResult;
    private static readonly _customElements;
    static registerCustomRenderer(render: FormatBarCustomRenderer): void;
    static registerCustomElement(element: FormatBarCustomElement): void;
    static registerCustomAction(action: FormatBarCustomAction): void;
    formatBarElement?: HTMLElement;
    private get _selectionManager();
    private _dragging;
    private _displayType;
    get displayType(): "block" | "text" | "none" | "native";
    private _selectedBlockElements;
    get selectedBlockElements(): BlockElement<import("@blockeditor/store").BlockModel<object>, import("@blockeditor/block-std").BlockService<import("@blockeditor/store").BlockModel<object>>, string>[];
    get nativeRange(): Range | null;
    private _abortController;
    private _placement;
    private _reset;
    private _shouldDisplay;
    connectedCallback(): void;
    private _floatDisposables;
    updated(): void;
    private _customRender;
    disconnectedCallback(): void;
    render(): typeof nothing | TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        [AFFINE_FORMAT_BAR_WIDGET]: AffineFormatBarWidget;
    }
}
export {};
//# sourceMappingURL=format-bar.d.ts.map