import { type ReactNode } from "react";
export type ToastVariant = "success" | "error" | "warning" | "info";
export type ToastPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
export interface ToastOptions {
    variant?: ToastVariant;
    /** Shorthand — shown as the title. */
    message?: ReactNode;
    title?: ReactNode;
    description?: ReactNode;
    icon?: ReactNode;
    /**
     * Custom action node (advanced escape hatch). Rendered as-is —
     * the design system does NOT override the consumer's styling, so
     * pass whatever component you want. Click handling is also entirely
     * the consumer's responsibility; this does NOT auto-dismiss the
     * toast. Prefer `actionLabel` + `onAction` for the standard chip.
     */
    action?: ReactNode;
    /**
     * Label for the first-class action chip — rendered with consistent
     * accent-tinted styling across all toasts. Auto-dismisses the toast
     * after `onAction` runs (the user has acknowledged it).
     */
    actionLabel?: string;
    /** Click handler for the `actionLabel` chip. Fires before dismissal. */
    onAction?: () => void;
    /** Completely replaces the default body. */
    render?: (props: {
        id: string;
        dismiss: () => void;
    }) => ReactNode;
    duration?: number;
    closeable?: boolean;
    position?: ToastPosition;
}
export interface ToastProviderProps {
    children: ReactNode;
    defaultPosition?: ToastPosition;
    /** How many toasts to show "peeking" when collapsed. Default 3. */
    maxStack?: number;
}
export declare function ToastProvider({ children, defaultPosition, maxStack, }: ToastProviderProps): import("react/jsx-runtime").JSX.Element;
export declare function useToast(): {
    toast: ((options: ToastOptions) => string) & {
        success: (message: ReactNode, opts?: Omit<ToastOptions, "variant" | "message">) => string;
        error: (message: ReactNode, opts?: Omit<ToastOptions, "variant" | "message">) => string;
        warning: (message: ReactNode, opts?: Omit<ToastOptions, "variant" | "message">) => string;
        info: (message: ReactNode, opts?: Omit<ToastOptions, "variant" | "message">) => string;
        custom: (render: NonNullable<ToastOptions["render"]>, opts?: Omit<ToastOptions, "render">) => string;
    };
    dismiss: (id: string) => void;
    dismissAll: (position?: ToastPosition) => void;
};
//# sourceMappingURL=Toast.d.ts.map