import type { DevOverlayPlugin as DevOverlayPluginDefinition } from '../../../@types/astro.js';
import { type Icon } from './ui-library/icons.js';
export type DevOverlayPlugin = DevOverlayPluginDefinition & {
    builtIn: boolean;
    active: boolean;
    status: 'ready' | 'loading' | 'error';
    notification: {
        state: boolean;
    };
    eventTarget: EventTarget;
};
export declare class AstroDevOverlay extends HTMLElement {
    shadowRoot: ShadowRoot;
    delayedHideTimeout: number | undefined;
    devOverlay: HTMLDivElement | undefined;
    plugins: DevOverlayPlugin[];
    hasBeenInitialized: boolean;
    customPluginsToShow: number;
    constructor();
    /**
     * All one-time DOM setup runs through here. Only ever call this once,
     * in connectedCallback(), and protect it from being called again.
     */
    init(): void;
    connectedCallback(): void;
    attachEvents(): void;
    initPlugin(plugin: DevOverlayPlugin): Promise<void>;
    getPluginTemplate(plugin: DevOverlayPlugin): string;
    getPluginById(id: string): DevOverlayPlugin | undefined;
    getPluginCanvasById(id: string): HTMLElement | null;
    togglePluginStatus(plugin: DevOverlayPlugin): Promise<void>;
    setPluginStatus(plugin: DevOverlayPlugin, newStatus: boolean): Promise<boolean>;
    isHidden(): boolean;
    getActivePlugin(): DevOverlayPlugin | undefined;
    clearDelayedHide(): void;
    triggerDelayedHide(): void;
    setOverlayVisible(newStatus: boolean): void;
    setNotificationVisible(newStatus: boolean): void;
}
export declare class DevOverlayCanvas extends HTMLElement {
    shadowRoot: ShadowRoot;
    constructor();
    connectedCallback(): void;
}
export declare function getPluginIcon(icon: Icon): string;
