/**
 * src/agent/directives.ts
 *
 * Parse delivery directives the agent embeds in its response text. Pattern
 * adapted from OpenClaw's `[[reply_to_current]]` model: the agent decides
 * HOW its message should be delivered by prefixing the reply with bracketed
 * markers. The router consumes them and strips before sending to the channel.
 *
 * Why: lets the agent be more nuanced than "always reply" — it can react
 * silently in busy groups, ack with a custom emoji, or stay silent and only
 * journal a thought.
 *
 * Supported directives (any combination, in any order at the START of the reply):
 *   [[reply]]                 — full text reply (default; explicit version)
 *   [[react:<emoji>]]         — react with the emoji to the inbound message, no text
 *   [[ack:<emoji>]]           — react + send a one-line text ack (the rest of the reply)
 *   [[silent]]                — don't deliver anything; just journal
 *   [[delay:<seconds>]]       — wait N seconds before delivering (max 300)
 *   [[forward:<channel>]]     — deliver via this channel instead of the inbound one
 *
 * Multiple directives can stack:
 *   [[react:✅]][[silent]] foo bar  →  react ✅ + don't deliver text
 *
 * Anything before/after that's not a directive becomes the message body.
 */
export type DeliveryMode = 'reply' | 'react' | 'ack' | 'silent';
export interface ParsedDirectives {
    mode: DeliveryMode;
    reactionEmoji: string | null;
    delaySec: number;
    forwardChannel: string | null;
    bodyText: string;
    rawDirectivesFound: string[];
}
export declare function parseDirectives(raw: string): ParsedDirectives;
/**
 * Quick test helper: detect whether a response contains ANY directive at all.
 * Cheaper than full parse; useful as a guard in hot paths.
 */
export declare function hasDirectives(raw: string): boolean;
//# sourceMappingURL=directives.d.ts.map