import type { IEventDetail } from '@breadstone/mosaik-elements';
/**
 * Represents the event detail for portal attached events.
 *
 * @public
 */
export interface IPortalAttachedEventDetail extends IEventDetail {
    /**
     * The attached element.
     */
    readonly element?: HTMLElement;
    /**
     * The destination element.
     */
    readonly destination: Element;
    /**
     * The projected element.
     */
    readonly projection: unknown;
    /**
     * The elements in the projection.
     */
    readonly elements?: ReadonlyArray<Node>;
}
/**
 * Event fired when an element is attached to a portal.
 *
 * @public
 */
export type PortalAttachedEvent = CustomEvent<IPortalAttachedEventDetail>;
/**
 * Represents the event detail for portal detached events.
 *
 * @public
 */
export interface IPortalDetachedEventDetail extends IEventDetail {
    /**
     * The detached element.
     */
    readonly element?: HTMLElement;
    /**
     * The destination element.
     */
    readonly destination: Element;
    /**
     * The projected element.
     */
    readonly projection: unknown;
}
/**
 * Event fired when an element is detached from a portal.
 *
 * @public
 */
export type PortalDetachedEvent = CustomEvent<IPortalDetachedEventDetail>;
declare global {
    interface HTMLElementEventMap {
        portalAttached: PortalAttachedEvent;
        portalDetached: PortalDetachedEvent;
    }
}
//# sourceMappingURL=PortalEvents.d.ts.map