import { ReactNode } from 'react';
export type ToastTone = "neutral" | "success" | "warning" | "danger" | "info";
export type ToastPlacement = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
export type ToastInput = string | {
    id?: string;
    title: ReactNode;
    description?: ReactNode;
    tone?: ToastTone;
    duration?: number;
    icon?: ReactNode;
    action?: ReactNode;
    dismissible?: boolean;
    className?: string;
};
export type ToastRecord = {
    id: string;
    title: ReactNode;
    description?: ReactNode;
    tone: ToastTone;
    duration: number;
    icon?: ReactNode;
    action?: ReactNode;
    dismissible: boolean;
    className?: string;
};
export type ToastManagerProps = {
    toasts: ToastRecord[];
    onDismiss: (id: string) => void;
    placement?: ToastPlacement;
    className?: string;
};
export type ToastProviderProps = {
    children: ReactNode;
    placement?: ToastPlacement;
    maxToasts?: number;
    defaultDuration?: number;
    className?: string;
};
export type ToastContextValue = {
    toasts: ToastRecord[];
    toast: (input: ToastInput) => string;
    success: (input: string | Omit<Extract<ToastInput, object>, "tone">) => string;
    warning: (input: string | Omit<Extract<ToastInput, object>, "tone">) => string;
    danger: (input: string | Omit<Extract<ToastInput, object>, "tone">) => string;
    info: (input: string | Omit<Extract<ToastInput, object>, "tone">) => string;
    dismiss: (id: string) => void;
    clear: () => void;
};
