/**
 * @module web/inbound/owner-notify
 *
 * Deterministic "you just got a message" heads-up.
 *
 * The koi flagging incoming messages used to depend on the model CHOOSING to
 * call `notify_me` during its auto-reply run — which is unreliable: it never
 * fires for messages the koi judges as noise, it waits behind the (slow) model
 * run, it can be skipped when the koi is busy answering the owner, and a burst
 * of messages competes for the same run. So the owner often saw nothing.
 *
 * This instead fires the heads-up the MOMENT a message lands, straight from the
 * channel's inbound handler — before any koi run, off the run lanes entirely. It
 * is fire-and-forget and deduped, so bursts and reconnect-replays are smooth and
 * a busy koi never blocks it.
 *
 * It injects into the owner's MAIN chat (the TUI session) via the same
 * `chat.inject` path `notify_me` uses, so it shows up live in the terminal.
 */
import { type SKYKOIConfig } from "../../config/config.js";
export type OwnerInboundNotice = {
    /** Human label for the platform, e.g. "WhatsApp", "Telegram". */
    channelLabel: string;
    /** Display name (or number/handle) of whoever sent it. */
    sender: string;
    /** The message text (media-only messages get a placeholder upstream). */
    body: string;
    isGroup: boolean;
    /** Group/chat title, shown for group messages. */
    groupSubject?: string;
    /** True for a DM, or a group message that mentions / replies to the owner. */
    directedAtOwner: boolean;
    /** Unique per-channel message id, for dedup. */
    messageId?: string;
    /** The channel session key, used only to resolve which koi's main chat to hit. */
    koiSessionKey?: string;
    config?: SKYKOIConfig;
};
/**
 * Surface an inbound message in the owner's terminal chat, immediately.
 *
 * Policy: every DM is surfaced; group messages only when they're aimed at the
 * owner (mention or reply-to-them) so idle group chatter doesn't flood the chat.
 * Never throws — inbound handling must never hinge on this.
 */
export declare function notifyOwnerInbound(notice: OwnerInboundNotice): void;
