import type { CommandHandler } from "./command-bus.js";
export interface SlashCommandResult {
    readonly kind: "status" | "mutation" | "error";
    readonly command: string;
    readonly payload: unknown;
    readonly renderMode: "theme" | "nlp" | "json";
    readonly sideEffects: readonly RuntimeSideEffect[];
}
export type RuntimeSideEffect = {
    readonly type: "provider_changed";
    readonly provider: string;
    readonly model: string;
} | {
    readonly type: "thinking_changed";
    readonly thinking: string;
    readonly modelVariant: string;
} | {
    readonly type: "session_updated";
    readonly sessionId: string;
} | {
    readonly type: "memory_written";
    readonly memoryId: string;
} | {
    readonly type: "theme_changed";
    readonly theme: string;
};
export interface SlashCommandInput {
    readonly command: string;
    readonly args: readonly string[];
    readonly rawText: string;
    readonly state: {
        readonly provider?: string;
        readonly model?: string;
        readonly sessionId?: string;
        readonly theme?: string;
        readonly thinking?: string;
        readonly activeProviderTab?: string;
    };
}
export interface SlashCommandHandler {
    execute(input: SlashCommandInput): Promise<SlashCommandResult>;
}
export declare function createSlashCommandHandler(state?: SlashCommandInput["state"]): CommandHandler;
export declare function registerSlashCommands(bus: {
    registerHandler(command: string, handler: CommandHandler): void;
}, state?: SlashCommandInput["state"]): void;
