export interface UseChatComposerOptions {
    /** When set, composer state hydrates from the session and persists changes to it. */
    sessionId?: string;
    /** Initial agent override for the new-session (no sessionId) case. */
    defaultAgent?: string;
}
/**
 * Shared controller state for the chat input composer.
 *
 * Owns agent/provider/model selection for both the existing-session input
 * (hydrates from the session row, persists via session PATCH) and the
 * new-session input (hydrates from config defaults + agent overrides,
 * local-only until the session is created).
 */
export declare function useChatComposer({ sessionId, defaultAgent, }?: UseChatComposerOptions): {
    config: {
        agents: string[];
        providers: string[];
        defaults: {
            agent: string;
            provider: string;
            model: string;
            toolApproval?: "auto" | "dangerous" | "all" | "yolo";
            guidedMode?: boolean;
            reasoningText?: boolean;
            reasoningLevel?: "minimal" | "low" | "medium" | "high" | "max" | "xhigh";
            theme?: "light" | "dark";
            tuiTheme?: string;
            vimMode?: boolean;
            compactThread?: boolean;
            fontFamily?: string;
            smartEdges?: boolean;
            releaseToSend?: boolean;
            fullWidthContent?: boolean;
            autoCompactThresholdTokens?: number | null;
            coAuthorCommits?: boolean;
            ottoEnabled?: boolean;
        };
    };
    allModels: import("..").AllModelsResponse;
    agent: string;
    provider: string;
    model: string;
    agentNames: string[];
    isPlanMode: boolean;
    modelSupportsReasoning: boolean;
    modelSupportsVision: boolean;
    modelSupportsAttachment: boolean;
    modelIsFree: boolean;
    providerAuthType: "api" | "oauth" | "wallet";
    isCustomProvider: boolean;
    handleAgentChange: (value: string) => Promise<void>;
    handlePlanModeToggle: (isPlanMode: boolean) => Promise<void>;
    handleProviderChange: (newProvider: string) => Promise<void>;
    handleModelChange: (newModel: string) => Promise<void>;
    handleModelSelectorChange: (newProvider: string, newModel: string) => Promise<void>;
};
//# sourceMappingURL=useChatComposer.d.ts.map