import { default as React } from 'react';
import { Sheet, SheetContent } from '../components/sheet';
export interface ActionSheetItem {
    id: string | number;
    label?: React.ReactNode;
    subLabel?: React.ReactNode;
    icon?: React.ReactNode;
    variant?: "default" | "destructive" | "image";
    keepOpen?: boolean;
    imageSrc?: string;
    onClick?: () => void | Promise<void>;
    shape?: "full" | "minimal" | "sharp";
    size?: "sm" | "md" | "lg";
    className?: string;
    disabled?: boolean;
}
export interface ActionSheetSection {
    id?: string;
    title?: string;
    type: "list" | "grid" | "carousel" | "custom";
    items?: ActionSheetItem[];
    content?: React.ReactNode;
    gridColumns?: number;
}
export interface ActionSheetConfig {
    title?: React.ReactNode;
    description?: React.ReactNode;
    header?: React.ReactNode;
    sections: ActionSheetSection[];
    cancelLabel?: string;
    sheetProps?: Partial<React.ComponentProps<typeof Sheet>>;
    contentProps?: React.ComponentProps<typeof SheetContent>;
    variant?: React.ComponentProps<typeof Sheet>["variant"];
    /**
     * Optional callback to sync external state.
     * Called when the sheet opening state changes.
     */
    onOpenChange?: (isOpen: boolean) => void;
}
interface ActionSheetContextType {
    show: (config: ActionSheetConfig) => Promise<string | number | null>;
    registerSheet: (name: string, component: React.FC<any>) => void;
    openSheet: <T = any>(name: string, props?: T) => Promise<any>;
    close: (id?: string) => void;
    lock: () => void;
    unlock: () => void;
    isLocked: boolean;
}
export declare const useActionSheet: () => ActionSheetContextType;
export declare const ActionSheetProvider: ({ children, }: {
    children: React.ReactNode;
}) => import("react/jsx-runtime").JSX.Element;
export {};
