import { IconNames } from '../Icon/IconNames';
import { ModalFooterAction, SubButtonProps } from './ModalFooter/ModalFooter';
import { ModalType } from './Modalheader/ModalHeader';
import { ModalTransition } from './ModalRoot/ModalTransition/ModalTransition';
import { TextReplacements } from '../Text/Text';
import { default as React, Dispatch, SetStateAction } from 'react';
import { MediaItemFile } from '../Gallery/Gallery/Gallery';
import { ModalResponse } from './ModalResponse';
export type ComponentWithId = any;
export type ModalOpts = {
    testId?: string;
    className?: string;
    padding?: string;
    fullscreen?: boolean;
    animation?: ModalTransition;
    modalPosition?: 'top' | 'center' | 'bottom';
    width?: string;
    minHeight?: string;
    maxWidth?: string;
    wrapInModal?: boolean;
    type?: ModalType;
    title?: string;
    message?: string | React.ReactNode;
    hideHeaderCloseBtn?: boolean;
    onContentClick?: (event: React.MouseEvent) => void;
    onOutsideClick?: (event: React.MouseEvent) => void;
    backgroundColor?: string;
};
export interface OpenConfirmModalOptions {
    closeFn: (e: ModalResponse<any>) => void;
    title?: string;
    message?: string | React.ReactNode;
    positiveCtaText?: string;
    negativeCtaText?: string;
    headerType?: ModalType;
    positiveIconLeft?: IconNames;
    replacements?: TextReplacements;
    hideHeaderCloseBtn?: boolean;
    customNegativeFn?: (change?: Dispatch<SetStateAction<number>>) => void;
    hideNegativeBtn?: boolean;
}
export interface OpenAcceptModalOptions {
    closeFn: (e: ModalResponse<any>) => void;
    title?: string;
    message?: string | React.ReactNode;
    headerType?: ModalType;
    positiveCtaText?: string;
    replacements?: TextReplacements;
    hideHeaderCloseBtn?: boolean;
}
export interface OpenLoadingModalOptions {
    title?: string;
    message?: string | React.ReactNode;
    loadingAnimation?: 'default' | 'rocket' | 'ai';
    headerTitle?: string;
}
/**
 * Modal Service Class
 * ---------------------------------------------------------------------------------------------------------------------
 */
declare class ModalServiceClass {
    private loadingModalId;
    private confirmModalId;
    private errorModalId;
    private modalCloseListeners;
    private modalComponents;
    constructor();
    on(event: any, callback: (details: any) => any): void;
    onModalClose<T = any, U = any>(id: string, cb?: (resp: ModalResponse<T>) => void, data?: U): void;
    cleanModalClose(id: string): void;
    getModalComponent(id: string): any;
    removeModalComponent(id: string): void;
    openConfirmModal(options: OpenConfirmModalOptions): string;
    /** @deprecated Use openConfirmModal({ ... }) instead. */
    openConfirmModal(closeFn: (e: ModalResponse<any>) => void, title?: string, message?: string | React.ReactNode, positiveCtaText?: string, negativeCtaText?: string, headerType?: ModalType, positiveIconLeft?: IconNames, replacements?: TextReplacements, hideHeaderCloseBtn?: boolean, customNegativeFn?: (change?: Dispatch<SetStateAction<number>>) => void, hideNegativeBtn?: boolean): string;
    openAcceptModal(options: OpenAcceptModalOptions): string;
    /** @deprecated Use openAcceptModal({ ... }) instead. */
    openAcceptModal(closeFn: (e: ModalResponse<any>) => void, title?: string, message?: string | React.ReactNode, headerType?: ModalType, positiveCtaText?: string, replacements?: TextReplacements, hideHeaderCloseBtn?: boolean): string;
    closeConfirmModal(): void;
    openLoadingModal(options?: OpenLoadingModalOptions): string;
    /** @deprecated Use openLoadingModal({ ... }) instead. */
    openLoadingModal(title?: string, message?: string | React.ReactNode, loadingAnimation?: 'default' | 'rocket' | 'ai', headerTitle?: string): string;
    closeLoadingModal(): void;
    openPhotoGalleryModal(gallery: MediaItemFile[], idx?: MediaItemFile): string;
    openSlide<ResponseModel>(component: ComponentWithId, opts?: ModalOpts): string;
    openErrorModal: ({ err, source, message, title, ctaPositive, onClose, }: {
        err?: any;
        source: string;
        message?: string;
        title?: string;
        ctaPositive?: (ModalFooterAction & SubButtonProps) | null;
        onClose?: () => void;
    }) => void;
    closeErrorModal(): void;
    closeAllModals(): void;
    /** Test-only: wipe internal state. Not for production code paths. */
    __resetForTests(): void;
    open<ResponseModel>(component: ComponentWithId, opts?: ModalOpts): string;
    closeEv<T = any>(modalId?: string | null, resp?: ModalResponse<T>): Promise<undefined | any>;
}
export declare const ModalService: ModalServiceClass;
export {};
