import type * as React from 'react';
import { type ExternalToast, toast as sonnerToast, type ToasterProps } from 'sonner';
import { type NotificationItemProps } from '@/components/organisms/content/NotificationItem';
declare const Toaster: {
    ({ theme, dir, ...props }: ToasterProps): import("react/jsx-runtime").JSX.Element;
    displayName: string;
};
interface ToastContentProps {
    title: string;
    description?: string;
    icon?: React.ReactNode;
    action?: {
        label: string;
        onClick: () => void;
    };
    className?: string;
}
declare function ToastContent({ title, description, icon, action, className, }: ToastContentProps): import("react/jsx-runtime").JSX.Element;
declare namespace ToastContent {
    var displayName: string;
}
export interface SonnerItemProps extends Omit<NotificationItemProps, 'onClose'> {
    /** Toast ID from Sonner - used to dismiss the toast */
    toastId: string | number;
}
/**
 * SonnerItem - A thin wrapper around NotificationItem for use with Sonner toasts.
 *
 * Usage:
 * ```tsx
 * toast.custom((t) => (
 *   <SonnerItem
 *     toastId={t}
 *     variant="success"
 *     title="Changes saved"
 *     supportingText="Your profile has been updated."
 *   />
 * ));
 * ```
 */
declare function SonnerItem({ toastId, ...props }: SonnerItemProps): import("react/jsx-runtime").JSX.Element;
declare namespace SonnerItem {
    var displayName: string;
}
export interface ToastOptions {
    /** Supporting description text */
    description?: string;
    /** Duration in milliseconds before auto-dismiss. Set to Infinity to disable. */
    duration?: number;
    /** Toast ID for programmatic control */
    id?: string | number;
    /** Callback when toast is dismissed */
    onDismiss?: () => void;
    /** Callback when toast auto-closes */
    onAutoClose?: () => void;
    /** Action button displayed on the right */
    action?: {
        label: string;
        onClick: () => void;
    };
}
type ToastMessage = string | {
    title: string;
    description?: string;
};
/**
 * Lightweight toast notification API.
 *
 * @example
 * ```tsx
 * // Simple usage
 * toast('Changes saved');
 * toast.success('File uploaded successfully');
 * toast.error('Failed to save changes');
 *
 * // With description
 * toast.success({
 *   title: 'File uploaded',
 *   description: 'document.pdf has been uploaded successfully.'
 * });
 *
 * // With action button
 * toast.error('Something went wrong', {
 *   action: { label: 'Try Again', onClick: () => {} },
 * });
 * ```
 */
declare function toast(message: ToastMessage, options?: ToastOptions): string | number;
declare namespace toast {
    var success: (message: ToastMessage, options?: ToastOptions) => string | number;
    var error: (message: ToastMessage, options?: ToastOptions) => string | number;
    var warning: (message: ToastMessage, options?: ToastOptions) => string | number;
    var info: (message: ToastMessage, options?: ToastOptions) => string | number;
    var loading: (message: ToastMessage, options?: ToastOptions) => string | number;
    var promise: <T>(promise: Promise<T> | (() => Promise<T>), messages: {
        loading: ToastMessage;
        success: ToastMessage | ((data: T) => ToastMessage);
        error: ToastMessage | ((error: unknown) => ToastMessage);
    }, options?: ToastOptions) => string | number;
    var dismiss: (id?: number | string) => string | number;
    var custom: (jsx: (id: number | string) => React.ReactElement, data?: ExternalToast) => string | number;
}
export type { ToastContentProps, ToasterProps, ToastMessage };
export { SonnerItem, sonnerToast, ToastContent, Toaster, toast };
