import type { ReactNode } from 'react';
/** Toast status type. Controls color scheme. */
export type ToastType = 'info' | 'error';
/** Position for the toast stack relative to the viewport. */
export type ToastPosition = 'topEnd' | 'topStart' | 'bottomEnd' | 'bottomStart';
/** Behavior when a toast with the same uniqueID already exists. */
export type ToastCollisionBehavior = 'overwrite' | 'ignore';
/** Reason why a toast was dismissed. */
export type ToastDismissReason = 'auto' | 'manual';
/** Options for showing a toast. */
export interface ToastOptions {
    /** Primary message content. */
    body: ReactNode;
    /**
     * Toast type controlling color.
     * @default 'info'
     */
    type?: ToastType;
    /**
     * Whether the toast auto-dismisses.
     * Defaults to true for info, false for error.
     */
    isAutoHide?: boolean;
    /**
     * Duration in ms before auto-dismiss.
     * @default 5000
     */
    autoHideDuration?: number;
    /** Content rendered at the end of the toast (trailing slot). */
    endContent?: ReactNode;
    /** Unique identifier for deduplication. */
    uniqueID?: string;
    /**
     * Behavior when a toast with matching uniqueID already exists.
     * @default 'overwrite'
     */
    collisionBehavior?: ToastCollisionBehavior;
    /** Callback fired when the toast is removed. */
    onHide?: (reason: ToastDismissReason) => void;
}
/** Function to programmatically dismiss a toast. */
export type ToastDismissFn = () => void;
/** Function returned by useToast to show toasts. */
export type ShowToastFn = (options: ToastOptions) => ToastDismissFn;
/** Internal toast state with ID and metadata. */
export interface ToastEntry {
    id: string;
    options: ToastOptions;
    createdAt: number;
}
//# sourceMappingURL=types.d.ts.map