import type { SymiConfig } from "../config/config.js";
import type { TranscriptAppender } from "./reply/middleware-transcript-update.js";
import type { ReplyDispatcher } from "./reply/reply-dispatcher.js";
import type { TypingSignaler } from "./reply/typing-mode.js";
import type { SurfaceProfile, TurnSurface } from "./run-unified-turn.js";
/** Inputs needed to build any surface profile. */
export interface BuildProfileOptions {
    cfg: SymiConfig;
    /** Required for surfaces with a payload dispatcher (channel, glass-ui, tui). */
    dispatcher?: ReplyDispatcher;
    /** Required for surfaces that route to channels. */
    channel?: string;
    originatingChannel?: string;
    originatingTo?: string;
    currentSurface?: string;
    sessionKey?: string;
    accountId?: string;
    threadId?: string | number;
    /** Per-turn typing signaler (Phase 8 wrapping). */
    typingSignaler?: Pick<TypingSignaler, "signalTextDelta" | "signalToolStart">;
    /** Transcript appender for surfaces that record transcripts. */
    transcriptAppender?: TranscriptAppender;
    /** Inbound audio flag (legacy field; TTS removed). */
    inboundAudio?: boolean;
}
export declare function buildChannelProfile(opts: BuildProfileOptions): SurfaceProfile;
export declare function buildGlassUiProfile(opts: BuildProfileOptions): SurfaceProfile;
export declare function buildTuiProfile(opts: BuildProfileOptions): SurfaceProfile;
export declare function buildCliProfile(_opts: BuildProfileOptions): SurfaceProfile;
export declare function buildCronProfile(opts: BuildProfileOptions): SurfaceProfile;
/**
 * Build the appropriate surface profile by tag. Convenience wrapper for
 * callers who know the surface at runtime (e.g. dispatch.ts will branch
 * on Surface/Provider to select the profile).
 */
export declare function buildSurfaceProfile(surface: TurnSurface, opts: BuildProfileOptions): SurfaceProfile;
