import { type AriaRole, type HTMLAttributes, type ReactElement, type ReactNode } from "react";
import { type ButtonProps } from "../button/Button.js";
import { type CSSTransitionClassNames, type TransitionCallbacks, type TransitionTimeout } from "../transition/types.js";
import { type PropsWithRef } from "../types.js";
import { type ToastContentProps } from "./ToastContent.js";
import { type BaseToastClasNameOptions } from "./toastStyles.js";
/**
 * @since 6.0.0
 */
export interface ConfigurableToastProps extends HTMLAttributes<HTMLDivElement>, BaseToastClasNameOptions, TransitionCallbacks {
    /**
     * Note: this default value will only be generated in the `Toast` component.
     *
     * @defaultValue `"toast-" + useId()`
     */
    id?: string;
    /**
     * Note: This is set while creating the toast.
     *
     * @defaultValue `visibleTime === null ? "alert" : "status"`
     */
    role?: AriaRole;
    /**
     * Set this to `true` to stack the content above the {@link action}. It is not
     * recommended to enable this prop if the {@link closeButton} is enabled.
     *
     * @defaultValue `false`
     */
    stacked?: boolean;
    /**
     * If this is not provided, a `ResizeObserver` will be used to determine if
     * there are multiple lines of content.
     */
    multiline?: boolean;
    /**
     * When this is a string or React element, it will be rendered as the
     * `children` within a `Button`
     */
    action?: ButtonProps | ReactElement | string;
    /**
     * This can be used to replace the custom action button behavior.
     */
    actionButton?: ReactNode;
    /**
     * @defaultValue `getIcon("close")`
     */
    closeIcon?: ReactNode;
    /**
     * Set this to `true` if a close button should be rendered to the right of the
     * `children`.
     *
     * @defaultValue `!!closeButtonProps`
     */
    closeButton?: boolean;
    /**
     * Use this prop to override most of the close button behavior. The
     */
    closeButtonProps?: ButtonProps;
    /**
     * Any additional props that should be provided to the `<div>` that surrounds
     * the toast `children`.
     */
    contentProps?: PropsWithRef<ToastContentProps>;
    /**
     * Set this to `true` if the `children` for the toast should no longer be
     * wrapped in an additional `<div>` that applies some toast layout styles.
     * This should normally only be used for custom `Toast` implementations.
     *
     * @see the `Snackbar`'s `renderToast` prop for an example.
     */
    disableToastContent?: boolean;
    /**
     * The toast's transition timeout for entering and exiting. This is **not**
     * how long the toast should remain visible.
     *
     * @defaultValue `SCALE_TIMEOUT`
     */
    timeout?: TransitionTimeout;
    /**
     * The toast's transition class names for entering and exiting.
     *
     * @defaultValue `SCALE_CLASSNAMES`
     */
    classNames?: CSSTransitionClassNames;
}
/**
 * @since 6.0.0
 */
export interface ToastProps extends ConfigurableToastProps {
    paused?: boolean;
    visible: boolean;
}
/**
 * **Client Component**
 *
 * This component is just used for toast styling and does not implement any of
 * the visibility behavior.
 *
 * @see {@link https://react-md.dev/components/snackbar | Snackbar Demos}
 * @since 6.0.0
 */
export declare const Toast: import("react").ForwardRefExoticComponent<ToastProps & import("react").RefAttributes<HTMLDivElement>>;
