/// <reference types="react" />
import { DefaultToast, StateReturnType } from "./index";
export declare type DefaultToastOptions<T extends DefaultToast> = Omit<T, "id" | "visible" | "reverseOrder" | "createdAt">;
export declare type DefaultToastProviderOptions<T extends DefaultToast> = Partial<DefaultToastOptions<T>>;
export declare type ConfigurableToastOptions<T extends DefaultToast> = Omit<T, "visible">;
export declare type ToastOptions<T extends DefaultToast> = Partial<ConfigurableToastOptions<T>>;
export interface ToastStore<T extends DefaultToast> extends StateReturnType<T> {
}
export interface CreateToast<T extends DefaultToast, Content> {
    createToast: CreateToastHandler<T, Content>;
}
export declare type CreateToastHandler<T extends DefaultToast, Content> = (content: Content, options?: ToastOptions<T>) => T;
export declare type AddToast<T extends DefaultToast, Content> = (content: Content, options?: ToastOptions<T>) => string;
export declare type ShowToast<T extends DefaultToast, Content> = (content: Content, options?: ToastOptions<T>) => string;
export declare type UpdateToast<T extends DefaultToast> = (toastId: string, toast: Partial<T>) => void;
export declare type UpdateFieldToast<T extends DefaultToast> = (field: keyof T, fieldValue: any, toast: Partial<T>) => void;
export declare type UpdateAllToast<T extends DefaultToast> = (toast: Partial<T>) => void;
export declare type DismissToast = (toastId?: string) => void;
export declare type RemoveToast = (toastId?: string) => void;
export declare type ToastHandlers<T extends DefaultToast, Content> = {
    addToast: AddToast<T, Content>;
    showToast: ShowToast<T, Content>;
    updateToast: UpdateToast<T>;
    updateFieldToast: UpdateFieldToast<T>;
    updateAllToast: UpdateAllToast<T>;
    dismissToast: DismissToast;
    removeToast: RemoveToast;
};
export declare type CreateToastStoreReturn<T extends DefaultToast, Content> = [
    React.FC<Partial<DefaultToastOptions<T>>>,
    () => ToastStore<T>,
    () => CreateToast<T, Content>,
    () => ToastHandlers<T, Content>
];
