/**
 * The symframe broadcast action union.
 *
 * Stage A (3.5.19): add | update | remove + sticky-card force flag.
 * Stage C (3.5.21): dwell | release | recall | pin | unpin — attention
 *   verbs that treat the panel as a mind window rather than a card list.
 *   - dwell    pull the card to the top with a brief highlight pulse
 *   - release  soft-dismiss with fade-out; recoverable via recall
 *   - recall   re-summon a released card (id optional → most recent)
 *   - pin      persist across reload/reset via localStorage
 *   - unpin    remove the pin (does NOT drop the card)
 * Stage D (3.5.26): setMode — switch panel posture.
 *   - setMode  ambient | focus | awaiting | quiet (plus optional focusedId)
 */
export type SymframePushAction = "add" | "update" | "remove" | "dwell" | "release" | "recall" | "pin" | "unpin" | "setMode";
export type SymframePushPayload = {
    action: SymframePushAction;
    id?: string;
    card?: Record<string, unknown>;
    /**
     * Required to update / remove / release a sticky card. Sticky cards
     * wrap native panels (subagents, scheduling) or any card pushed with
     * sticky:true; without force the registry refuses the operation.
     */
    force?: boolean;
    /** Stage D (setMode only): which mode to switch to. */
    mode?: "ambient" | "focus" | "awaiting" | "quiet";
    /** Stage D (setMode + mode=focus): which card to halo. */
    focusedId?: string;
};
export declare function emitSymframePush(payload: SymframePushPayload): void;
export declare function onSymframePush(listener: (payload: SymframePushPayload) => void): () => void;
export declare function resetSymframeBroadcastForTest(): void;
