import { FC } from 'react';
interface ComposerProps {
    /** Wraps every agent API call so the parent's left-channel
     *  guard hook can flip into the not_in_channel state on 502. */
    guard?: <T>(fn: () => Promise<T>) => Promise<T>;
    /** Channel mode (B4): when set, the composer replies INTO this thread
     *  (root ts) instead of posting a new top-level channel message. */
    threadTs?: string;
    /** Fired after a successful send — lets an inline reply composer
     *  collapse itself once the message is away. */
    onSent?: () => void;
    /** Smaller, single-row presentation for the inline reply box. */
    compact?: boolean;
    placeholder?: string;
    autoFocus?: boolean;
    /** Linked-conversation kind, for the `slack_reply_sent` Gainsight
     *  event's `link_type` metadata. Derived from the conversation's
     *  `targetKind` by the parent panel. */
    linkType?: 'thread' | 'channel';
}
/**
 * Composer per Figma 683:667012. Plain textarea + emoji /
 * attachment slots (UI-7 + UI-8 stubs) + Send button.
 *
 * UI-10 layered on top:
 *   - Typing `@` opens the MentionPicker, anchored to a hidden
 *     div positioned at the cursor's location (approximate — we
 *     anchor to the textarea itself for M1; revisit if PD wants
 *     cursor-precise positioning).
 *   - As the user keeps typing, the substring between the `@` and
 *     the cursor filters the picker.
 *   - Picking a member replaces the in-flight `@xxx` with
 *     `@DisplayName ` in the textarea and remembers the
 *     externalUserId mapping. On send, every tracked
 *     `@DisplayName` literal gets swapped back to Slack's
 *     `<@externalUserId>` mention syntax server-side.
 *   - Esc closes the picker; Backspace before the `@` does too.
 *
 * Mention map is a flat array (not a Map) because the same name
 * could be inserted twice — we replace the first matching span
 * per occurrence at send time.
 */
export declare const Composer: FC<ComposerProps>;
export {};
//# sourceMappingURL=Composer.d.ts.map