@mica/sdk (SDK contract v1)
    Preparing search index...

    Interface ToastMessage

    A single toast, as shown by usePhoneNotification().toast.

    interface ToastMessage {
        actions?: ToastAction[];
        app?: string;
        avatar?: string;
        breakThrough?: boolean;
        deepLink?: string;
        duration?: number;
        hasReplyInput?: boolean;
        id: string;
        message: string;
        notificationId?: number;
        onClick?: () => void | Promise<void>;
        onExpire?: () => void | Promise<void>;
        onReply?: (replyText: string) => void | Promise<void>;
        persist?: boolean;
        replyPlaceholder?: string;
        sender?: string;
        source?: NotificationSource;
        title?: string;
        type: ToastType;
    }
    Index
    actions?: ToastAction[]
    app?: string
    avatar?: string
    breakThrough?: boolean

    For a call: it rang despite DND, because of a favourite or a repeat.

    deepLink?: string
    duration?: number
    hasReplyInput?: boolean
    id: string
    message: string
    notificationId?: number

    The drawer notification this toast created, if any — lets a swipe-to-archive act on the right row.

    onClick?: () => void | Promise<void>
    onExpire?: () => void | Promise<void>

    Run when the toast times out on its own, as opposed to being dismissed or actioned.

    Exists because an expiring toast can leave state behind: an unanswered call toast vanished after 12s while callStore.status stayed 'incoming', so the phone sat open and focused showing a call with no way to end it.

    onReply?: (replyText: string) => void | Promise<void>
    persist?: boolean
    replyPlaceholder?: string
    sender?: string
    source?: NotificationSource

    What kind of interruption this is, which is what decides whether Do Not Disturb and the per-app mutes apply to it (shell/state/notificationPolicy.ts).

    Defaults to 'feedback' — a toast confirming something the player just did, which is never suppressed. Every arrival path has to say so, and they all live in nuiMessages.ts and the helpers at the bottom of shell/state/toast.ts.

    title?: string
    type: ToastType