import type { IPortalElementProps } from '../../Primitives/Portal/IPortalElementProps';
import type { PortalProjectionElement } from '../../Primitives/Portal/PortalProjectionElement';
import { BottomSheetElement } from './BottomSheetElement';
import type { IBottomSheetElementProps } from './IBottomSheetElementProps';
import type { IBottomSheetServiceConfig } from './IBottomSheetServiceConfig';
/**
 * Function type for resolving bottom sheet results.
 *
 * @public
 */
export type BottomSheetResolveFunction = (result: unknown) => void;
/**
 * Represents the `IBottomSheetRef` interface.
 *
 * @public
 */
export interface IBottomSheetRef {
    bottomSheetId: string;
    bottomSheetElement: BottomSheetElement;
    portalProjectionElement: PortalProjectionElement;
    wrapperElement: HTMLElement;
    options?: IBottomSheetOptions;
    resolve?: BottomSheetResolveFunction;
}
/**
 * Bottom sheet options interface.
 *
 * @public
 */
export interface IBottomSheetOptions extends Partial<IBottomSheetElementProps>, Partial<IPortalElementProps> {
    navigateToClose?: boolean;
}
/**
 * Service for managing the display and behavior of bottom sheet elements.
 * Provides methods to open and close bottom sheets within a portal structure.
 *
 * Uses a singleton pattern with static configuration.
 *
 * @example
 * ```typescript
 * // Configure once at app startup
 * BottomSheetService.configure({
 *     closeOnNavigation: true,
 *     behaviors: []
 * });
 *
 * // Use throughout the app
 * const result = await BottomSheetService.instance.open('mySheet', MyBottomSheetWrapper);
 * ```
 *
 * @public
 */
export declare class BottomSheetService {
    private static _instance;
    private static _config;
    private static _isConfigured;
    private readonly _bottomSheetMap;
    private readonly _behaviors;
    private _portalElement?;
    /**
     * Constructs a new instance of the `BottomSheetService` class.
     * Use `BottomSheetService.configure()` and `BottomSheetService.instance` instead of direct instantiation.
     *
     * @private
     */
    private constructor();
    /**
     * Gets the singleton instance of `BottomSheetService`.
     * If not configured, uses default configuration.
     *
     * @public
     * @static
     */
    static get instance(): BottomSheetService;
    /**
     * Configures the `BottomSheetService` globally.
     * Must be called before accessing `instance` if custom configuration is needed.
     * Can only be called once; subsequent calls will throw an error.
     *
     * @public
     * @static
     * @param config - The configuration for the bottom sheet service.
     * @throws Error if already configured.
     *
     * @example
     * ```typescript
     * BottomSheetService.configure({
     *     closeOnNavigation: true,
     *     behaviors: [myCustomBehavior]
     * });
     * ```
     */
    static configure(config: Partial<IBottomSheetServiceConfig>): void;
    /**
     * Opens a custom wrapper component containing a bottom sheet 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 bottom sheet result.
     * @param bottomSheetId - Unique identifier for the bottom sheet instance.
     * @param wrapperClass - Class of the wrapper component containing the bottom sheet.
     * @param options - Properties for portal and bottom sheet.
     * @param data - Optional data passed to the wrapper component.
     * @returns A promise resolving with the bottom sheet result.
     */
    open<T extends HTMLElement, TData, TResult>(bottomSheetId: string, wrapperClass: new (args?: TData) => T, options?: IBottomSheetOptions, data?: TData): Promise<TResult>;
    /**
     * Closes the bottom sheet in the wrapper component and optionally removes the wrapper from the DOM.
     *
     * @public
     * @template TResult - Type of result returned when the bottom sheet is closed.
     * @param bottomSheetId - Unique identifier for the bottom sheet instance.
     * @param result - Optional result returned when closing the bottom sheet.
     * @returns A promise resolving once the bottom sheet is fully closed.
     */
    close<TResult>(bottomSheetId: string, result?: TResult): Promise<void>;
    /**
     * Disposes of the service and cleans up resources.
     *
     * @public
     */
    dispose(): void;
    /**
     * Extends the bottom sheet component by placing it within a portal structure.
     *
     * @private
     * @param element - The element to place within the portal.
     * @param props - Properties to set on the portal.
     * @returns The created PortalProjectionElement containing the bottom sheet.
     */
    private extendToPortal;
}
//# sourceMappingURL=BottomSheetService.d.ts.map