export interface SlashCommandContext {
    switchModel: (provider: string, model: string) => Promise<void>;
    compact: () => Promise<void>;
    newSession: () => Promise<void>;
    listSessions: () => Promise<string>;
    getSettings: () => Record<string, unknown>;
    setSetting: (key: string, value: unknown) => Promise<void>;
    getModelList: () => string;
    quit: () => void;
    /** Create a branch (rewind N messages and fork). */
    branch: (stepsBack?: number) => Promise<string>;
    /** List all branches in the current session. */
    listBranches: () => Promise<string>;
}
export interface SlashCommand {
    name: string;
    aliases: string[];
    description: string;
    usage: string;
    execute: (args: string, context: SlashCommandContext) => Promise<string> | string;
}
export declare class SlashCommandRegistry {
    private commands;
    register(command: SlashCommand): void;
    unregister(name: string): void;
    get(name: string): SlashCommand | undefined;
    getAll(): SlashCommand[];
    parse(input: string): {
        name: string;
        args: string;
    } | null;
    execute(input: string, context: SlashCommandContext): Promise<string | null>;
}
export declare function createBuiltinCommands(): SlashCommand[];
//# sourceMappingURL=slash-commands.d.ts.map