import * as react from 'react'; import { CSSProperties } from 'react'; import * as goober from 'goober'; type ToastType = 'success' | 'error' | 'loading' | 'blank' | 'custom'; type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right'; type Renderable = React.ReactElement | string | null; interface IconTheme { primary: string; secondary: string; } type ValueFunction = (arg: TArg) => TValue; type ValueOrFunction = TValue | ValueFunction; declare const resolveValue: (valOrFunction: ValueOrFunction, arg: TArg) => TValue; interface Toast { type: ToastType; id: string; message: ValueOrFunction; icon?: Renderable; duration?: number; pauseDuration: number; position?: ToastPosition; removeDelay?: number; ariaProps: { role: 'status' | 'alert'; 'aria-live': 'assertive' | 'off' | 'polite'; }; style?: CSSProperties; className?: string; iconTheme?: IconTheme; createdAt: number; visible: boolean; dismissed: boolean; height?: number; } type ToastOptions = Partial>; type DefaultToastOptions = ToastOptions & { [key in ToastType]?: ToastOptions; }; interface ToasterProps { position?: ToastPosition; toastOptions?: DefaultToastOptions; reverseOrder?: boolean; gutter?: number; containerStyle?: React.CSSProperties; containerClassName?: string; children?: (toast: Toast) => React.ReactElement; } type Message = ValueOrFunction; type ToastHandler = (message: Message, options?: ToastOptions) => string; declare const toast: { (message: Message, opts?: ToastOptions): string; error: ToastHandler; success: ToastHandler; loading: ToastHandler; custom: ToastHandler; dismiss(toastId?: string): void; remove(toastId?: string): void; promise(promise: Promise | (() => Promise), msgs: { loading: Renderable; success?: ValueOrFunction; error?: ValueOrFunction; }, opts?: DefaultToastOptions): Promise; }; declare const useToaster: (toastOptions?: DefaultToastOptions) => { toasts: Toast[]; handlers: { updateHeight: (toastId: string, height: number) => void; startPause: () => void; endPause: () => void; calculateOffset: (toast: Toast, opts?: { reverseOrder?: boolean; gutter?: number; defaultPosition?: ToastPosition; }) => number; }; }; interface State { toasts: Toast[]; pausedAt: number | undefined; } declare const useStore: (toastOptions?: DefaultToastOptions) => State; interface ToastBarProps { toast: Toast; position?: ToastPosition; style?: react.CSSProperties; children?: (components: { icon: Renderable; message: Renderable; }) => Renderable; } declare const ToastBar: react.FC; interface ErrorTheme { primary?: string; secondary?: string; } declare const ErrorIcon: goober.StyledVNode & react.HTMLAttributes & goober.DefaultTheme & ErrorTheme, never>>; interface LoaderTheme { primary?: string; secondary?: string; } declare const LoaderIcon: goober.StyledVNode & react.HTMLAttributes & goober.DefaultTheme & LoaderTheme, never>>; interface CheckmarkTheme { primary?: string; secondary?: string; } declare const CheckmarkIcon: goober.StyledVNode & react.HTMLAttributes & goober.DefaultTheme & CheckmarkTheme, never>>; declare const ToastIcon: react.FC<{ toast: Toast; }>; declare const Toaster: react.FC; export { CheckmarkIcon, DefaultToastOptions, ErrorIcon, IconTheme, LoaderIcon, Renderable, Toast, ToastBar, ToastIcon, ToastOptions, ToastPosition, ToastType, Toaster, ToasterProps, ValueFunction, ValueOrFunction, toast as default, resolveValue, toast, useToaster, useStore as useToasterStore };