import { Type } from '@angular/core';
import { Color } from '@ionic/core';
/**
 * Modal size preset.
 */
export type ModalSize = 'small' | 'medium' | 'large' | 'full' | 'auto';
/**
 * Modal breakpoint configuration for sheet modals.
 */
export interface ModalBreakpoint {
    /** Initial breakpoint (0-1) */
    initialBreakpoint?: number;
    /** Available breakpoints */
    breakpoints?: number[];
    /** Can dismiss by dragging below threshold */
    canDismiss?: boolean | (() => boolean | Promise<boolean>);
    /** Handle element */
    handleBehavior?: 'cycle' | 'none';
    /** Show handle */
    showHandle?: boolean;
}
/**
 * Modal header configuration.
 */
export interface ModalHeader {
    /** Title text */
    title?: string;
    /** Subtitle text */
    subtitle?: string;
    /** Show close button */
    showCloseButton?: boolean;
    /** Close button icon */
    closeIcon?: string;
    /** Header color */
    color?: Color;
    /** Custom CSS class */
    cssClass?: string;
}
/**
 * Modal footer configuration.
 */
export interface ModalFooter {
    /** Footer buttons */
    buttons?: ModalButton[];
    /** Footer alignment */
    alignment?: 'start' | 'center' | 'end' | 'space-between';
    /** Custom CSS class */
    cssClass?: string;
}
/**
 * Modal button configuration.
 */
export interface ModalButton {
    /** Button text */
    text: string;
    /** Button role */
    role?: 'cancel' | 'confirm' | 'destructive' | string;
    /** Button color */
    color?: Color;
    /** Button fill */
    fill?: 'clear' | 'outline' | 'solid';
    /** Button size */
    size?: 'small' | 'default' | 'large';
    /** Custom CSS class */
    cssClass?: string;
    /** Disabled state */
    disabled?: boolean;
    /** Loading state */
    loading?: boolean;
    /** Handler function */
    handler?: (data?: any) => void | boolean | Promise<void | boolean>;
}
/**
 * Metadata for creating a modal with a component.
 */
export interface ModalMetadata<T = any> {
    /** Component to render in modal */
    component: Type<T>;
    /** Component inputs/props */
    componentProps?: Partial<T>;
    /** Unique identifier */
    id?: string;
    /** Modal header configuration */
    header?: ModalHeader;
    /** Modal footer configuration */
    footer?: ModalFooter;
    /** Modal size */
    size?: ModalSize;
    /** Custom width (overrides size) */
    width?: string;
    /** Custom height (overrides size) */
    height?: string;
    /** Show backdrop */
    showBackdrop?: boolean;
    /** Backdrop dismiss */
    backdropDismiss?: boolean;
    /** Enable keyboard close (ESC) */
    keyboardClose?: boolean;
    /** CSS class for modal */
    cssClass?: string;
    /** Animation mode */
    mode?: 'ios' | 'md';
    /** Enter animation */
    enterAnimation?: any;
    /** Leave animation */
    leaveAnimation?: any;
    /** Sheet modal breakpoints */
    breakpoints?: ModalBreakpoint;
    /** Presenting element for card modal */
    presentingElement?: HTMLElement;
    /** Can dismiss callback */
    canDismiss?: boolean | (() => boolean | Promise<boolean>);
    /** Animated */
    animated?: boolean;
}
/**
 * Metadata for creating a simple content modal.
 */
export interface SimpleModalMetadata {
    /** Modal title */
    title: string;
    /** Modal content (HTML or plain text) */
    content: string;
    /** Modal size */
    size?: ModalSize;
    /** Footer buttons */
    buttons?: ModalButton[];
    /** Show close button in header */
    showCloseButton?: boolean;
    /** Backdrop dismiss */
    backdropDismiss?: boolean;
    /** CSS class */
    cssClass?: string;
}
/**
 * Result from modal dismissal.
 */
export interface ModalResult<T = any> {
    /** Role of the dismissal (button role or 'backdrop') */
    role?: string;
    /** Data returned from modal */
    data?: T;
}
/**
 * Default modal sizes.
 */
export declare const MODAL_SIZES: Record<ModalSize, {
    width?: string;
    height?: string;
}>;
/**
 * Default modal buttons.
 */
export declare const DEFAULT_MODAL_CONFIRM_BUTTON: ModalButton;
export declare const DEFAULT_MODAL_CANCEL_BUTTON: ModalButton;
