1/// <reference types="react" />
2import { AbstractPureComponent2, Position } from "../../common";
3import { Props } from "../../common/props";
4import { IToastProps } from "./toast";
5export declare type IToastOptions = IToastProps & {
6    key: string;
7};
8export declare type ToasterPosition = typeof Position.TOP | typeof Position.TOP_LEFT | typeof Position.TOP_RIGHT | typeof Position.BOTTOM | typeof Position.BOTTOM_LEFT | typeof Position.BOTTOM_RIGHT;
9/** Instance methods available on a `<Toaster>` component instance. */
10export interface IToaster {
11    /**
12     * Shows a new toast to the user, or updates an existing toast corresponding to the provided key (optional).
13     *
14     * Returns the unique key of the toast.
15     */
16    show(props: IToastProps, key?: string): string;
17    /** Dismiss the given toast instantly. */
18    dismiss(key: string): void;
19    /** Dismiss all toasts instantly. */
20    clear(): void;
21    /** Returns the props for all current toasts. */
22    getToasts(): IToastOptions[];
23}
24/**
25 * Props supported by the `<Toaster>` component.
26 * These props can be passed as an argument to the static `Toaster.create(props?, container?)` method.
27 */
28export interface IToasterProps extends Props {
29    /**
30     * Whether a toast should acquire application focus when it first opens.
31     * This is disabled by default so that toasts do not interrupt the user's flow.
32     * Note that `enforceFocus` is always disabled for `Toaster`s.
33     *
34     * @default false
35     */
36    autoFocus?: boolean;
37    /**
38     * Whether pressing the `esc` key should clear all active toasts.
39     *
40     * @default true
41     */
42    canEscapeKeyClear?: boolean;
43    /**
44     * Whether the toaster should be rendered into a new element attached to `document.body`.
45     * If `false`, then positioning will be relative to the parent element.
46     *
47     * This prop is ignored by `Toaster.create()` as that method always appends a new element
48     * to the container.
49     *
50     * @default true
51     */
52    usePortal?: boolean;
53    /**
54     * Position of `Toaster` within its container.
55     *
56     * @default Position.TOP
57     */
58    position?: ToasterPosition;
59    /**
60     * The maximum number of active toasts that can be displayed at once.
61     *
62     * When the limit is about to be exceeded, the oldest active toast is removed.
63     *
64     * @default undefined
65     */
66    maxToasts?: number;
67}
68export interface IToasterState {
69    toasts: IToastOptions[];
70}
71export declare class Toaster extends AbstractPureComponent2<IToasterProps, IToasterState> implements IToaster {
72    static displayName: string;
73    static defaultProps: IToasterProps;
74    /**
75     * Create a new `Toaster` instance that can be shared around your application.
76     * The `Toaster` will be rendered into a new element appended to the given container.
77     */
78    static create(props?: IToasterProps, container?: HTMLElement): IToaster;
79    state: IToasterState;
80    private toastId;
81    show(props: IToastProps, key?: string): string;
82    dismiss(key: string, timeoutExpired?: boolean): void;
83    clear(): void;
84    getToasts(): IToastOptions[];
85    render(): JSX.Element;
86    protected validateProps({ maxToasts }: IToasterProps): void;
87    private isNewToastKey;
88    private dismissIfAtLimit;
89    private renderToast;
90    private createToastOptions;
91    private getPositionClasses;
92    private getDismissHandler;
93    private handleClose;
94}
95export declare const OverlayToaster: typeof Toaster;
96export declare type OverlayToasterProps = IToasterProps;
97