import { ElementType } from 'react'; export interface ToastContextType { addToast: (toast: Omit) => void; removeToast: (id: string) => void; clearAll: () => void; } export interface ToastIcons { primary: ElementType; secondary: ElementType; tertiary: ElementType; quaternary: ElementType; quinary: ElementType; } export interface Toast { id: string; title?: string; message: string; type?: 'primary' | 'secondary' | 'tertiary' | 'quaternary' | 'quinary' | 'error'; duration?: number; persistent?: boolean; action?: { label: string; onClick: () => void; }; } export interface ToastProviderProps { children: React.ReactNode; position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center'; maxToasts?: number; icons?: ToastIcons; closeIcon?: ElementType; stacked?: boolean; } export interface ToastContainerProps { position: string; toasts: Toast[]; onRemove: (id: string) => void; icons?: ToastIcons; closeIcon?: ElementType; stacked?: boolean; maxToasts?: number; } export interface ToastItemProps { toast: { id: string; title?: string; message: string; type?: 'primary' | 'secondary' | 'tertiary' | 'quaternary' | 'quinary' | 'error'; duration?: number; persistent?: boolean; action?: { label: string; onClick: () => void; }; }; onRemove: (id: string) => void; onHeightChange?: (id: string, height: number) => void; position: string; icons?: any; closeIcon?: any; stacked?: boolean; stackIndex?: number; isStackNew?: boolean; isStackVisible?: boolean; }