import { ReactNode } from 'react';
import { DOMProps } from '@react-types/shared';
import { ToastOptions as RACToastOptions } from 'react-stately/useToastState';
import { ToastProps, ToastRegionProps } from 'react-aria-components/Toast';
export type ToastPlacement = 'top' | 'top end' | 'bottom' | 'bottom end';
export interface ToastContainerProps extends Omit<ToastRegionProps<SpectrumToastValue>, 'queue' | 'children' | 'style' | 'className' | 'render'> {
    /**
     * Placement of the toast container on the page.
     * @default "bottom"
     */
    placement?: ToastPlacement;
}
export interface ToastOptions extends Omit<RACToastOptions, 'priority'>, DOMProps {
    /** A label for the action button within the toast. */
    actionLabel?: string;
    /** Handler that is called when the action button is pressed. */
    onAction?: () => void;
    /** Whether the toast should automatically close when an action is performed. */
    shouldCloseOnAction?: boolean;
}
export interface SpectrumToastValue extends DOMProps {
    /** The content of the toast. */
    children: string;
    /** The variant (i.e. color) of the toast. */
    variant: 'positive' | 'negative' | 'info' | 'neutral';
    /** A label for the action button within the toast. */
    actionLabel?: string;
    /** Handler that is called when the action button is pressed. */
    onAction?: () => void;
    /** Whether the toast should automatically close when an action is performed. */
    shouldCloseOnAction?: boolean;
}
type CloseFunction = () => void;
declare const SpectrumToastQueue: {
    /** Queues a neutral toast. */
    neutral(children: string, options?: ToastOptions): CloseFunction;
    /** Queues a positive toast. */
    positive(children: string, options?: ToastOptions): CloseFunction;
    /** Queues a negative toast. */
    negative(children: string, options?: ToastOptions): CloseFunction;
    /** Queues an informational toast. */
    info(children: string, options?: ToastOptions): CloseFunction;
};
export { SpectrumToastQueue as ToastQueue };
/**
 * A ToastContainer renders the queued toasts in an application. It should be placed
 * at the root of the app.
 */
export declare function ToastContainer(props: ToastContainerProps): ReactNode;
interface SpectrumToastProps extends ToastProps<SpectrumToastValue> {
    placement?: 'top' | 'bottom';
    align?: 'start' | 'center' | 'end';
    reduceMotion?: boolean;
}
export declare function SpectrumToast(props: SpectrumToastProps): ReactNode;
