import { type SourceInfo } from "./source-info.ts";
export type CustomCommandFrontmatter = {
    description?: string;
    model?: string;
    agent?: string;
    subtask?: boolean;
    [key: string]: unknown;
};
export interface CustomCommand {
    name: string;
    description?: string;
    model?: string;
    agent?: string;
    subtask?: boolean;
    template: string;
    sourceInfo: SourceInfo;
    filePath: string;
}
export interface LoadCustomCommandsOptions {
    cwd: string;
    agentDir: string;
    includeDefaults: boolean;
}
export declare function loadCustomCommands(options: LoadCustomCommandsOptions): CustomCommand[];
/**
 * Execute shell substitutions in a template.
 * `command` syntax runs the inner command and replaces it with stdout.
 */
export declare function executeShellSubstitutions(template: string, cwd: string): string;
/**
 * Expand a custom command with arguments.
 * Returns the expanded content or null if not a custom command.
 */
export declare function expandCustomCommand(text: string, commands: CustomCommand[], cwd: string): {
    command: CustomCommand;
    expanded: string;
} | null;
//# sourceMappingURL=custom-commands.d.ts.map