import type { AddMessage, DuplicateBehavior, Message, MessageQueueActions, ToastMessage } from "./MessageQueueContext"; export declare const ADD_MESSAGE = "ADD_MESSAGE"; export declare const POP_MESSAGE = "POP_MESSAGE"; export declare const RESET_QUEUE = "RESET_QUEUE"; /** * @internal */ export interface AddMessageAction { type: typeof ADD_MESSAGE; message: M; duplicates: DuplicateBehavior; } /** * @internal */ export declare function addMessage(message: M, duplicates: DuplicateBehavior): AddMessageAction; /** * @internal */ export interface PopMessageAction { type: typeof POP_MESSAGE; } /** * @internal */ export declare const popMessage: () => PopMessageAction; /** * @internal */ export interface ResetQueueAction { type: typeof RESET_QUEUE; } /** * @internal */ export declare const resetQueue: () => ResetQueueAction; /** * @internal */ export declare type MessageActions = AddMessageAction | PopMessageAction | ResetQueueAction; /** * This function is used to update the message queue state by adding a new * message when needed. * * @internal */ export declare function handleAddMessage(state: readonly M[], message: M, duplicates: DuplicateBehavior): readonly M[]; /** * @internal */ export declare function reducer(state: readonly M[], action: MessageActions): readonly M[]; export interface MessageQueueOptions { timeout?: number; duplicates?: DuplicateBehavior; defaultQueue?: readonly M[]; } export interface MessageQueueResult extends MessageQueueActions { queue: readonly M[]; visible: boolean; addMessage: AddMessage; } /** * This is the main logic for the message queue behavior that will handle: * * - creating timeouts as needed to show/hide toasts within the `SnackbarQueue` * component * - create a way to push messages with optional priority onto the queue * * @internal */ export declare function useMessageQueue({ timeout, duplicates, defaultQueue, }: MessageQueueOptions): MessageQueueResult;