import type { IPortalElementProps } from '../../Primitives/Portal/IPortalElementProps';
import type { IDrawerElementProps } from './IDrawerElementProps';
import type { IOverlayElement } from '../Abstracts/OverlayElement';
/**
 * Interface for Drawer options.
 *
 * @public
 */
export interface IDrawerOptions extends Partial<IDrawerElementProps>, Partial<IPortalElementProps> {
    navigateToClose?: boolean;
}
/**
 * Service for managing the display and behavior of drawer elements.
 * Provides methods to open and close drawer elements within a portal structure.
 *
 * @public
 */
export declare class DrawerService {
    private readonly _drawerRefMap;
    private _portalElement?;
    /**
     * Constructs a new instance of the `DrawerService` class.
     *
     * @public
     */
    constructor();
    /**
     * Opens a custom wrapper component containing a drawer within a portal.
     *
     * @public
     * @template T - Type of the wrapper component extending HTMLElement.
     * @template TData - Type of data provided to the wrapper component.
     * @template TResult - Expected return type of the resolved drawer result.
     * @param {string} drawerId - Unique identifier for the drawer instance.
     * @param {new (args?: TData) => T} wrapperClass - Class of the wrapper component containing the drawer.
     * @param {IDrawerOptions} options - Properties for portal and drawer.
     * @param {TData} [data] - Optional data passed to the wrapper component.
     * @returns {Promise<TResult>} A promise resolving with the drawer result.
     */
    open<T extends HTMLElement, TData, TResult>(drawerId: string, wrapperClass: new (args?: TData) => T, options?: IDrawerOptions, data?: TData): Promise<TResult>;
    /**
     * Closes the drawer in the wrapper component and optionally removes the wrapper from the DOM.
     *
     * @public
     * @template TResult - Type of result returned when the drawer is closed.
     * @param {string} drawerId - Unique identifier for the drawer instance.
     * @param {TResult} [result] - Optional result returned when closing the drawer.
     * @returns {Promise<void>} A promise resolving once the drawer is fully closed.
     */
    close<TResult>(drawerId: string, result?: TResult): Promise<void>;
    /**
     * Returns the drawer element with the specified ID if it exists.
     * For example, all drawer elements will be automatically registered (by id) when its available in the DOM.
     * With this method, you can get the drawer element by its ID and call its methods directly.
     *
     * @public
     */
    tryGet(drawerId: string): IOverlayElement | undefined;
    /**
     * Extends the drawer component by placing it within a portal structure.
     *
     * @private
     * @param portalProps - Properties to set on the portal.
     * @param element - The element to place within the portal.
     * @returns The created PortalElement containing the drawer.
     */
    private extendToPortal;
}
/**
 * @public
 */
export declare class DrawerServiceLocator {
    private static _current;
    static get current(): DrawerService;
    static isSet(): boolean;
    static set(current: DrawerService): void;
}
//# sourceMappingURL=DrawerService.d.ts.map