import * as z from 'zod';
export type CommandGenerator = AsyncGenerator<string, void, unknown>;
export type Provider = 'gemini' | 'openai' | 'openrouter' | 'perplexity' | 'modelbox' | 'anthropic' | 'xai';
export declare const reasoningEffortSchema: z.ZodEnum<["low", "medium", "high"]>;
export type ReasoningEffort = z.infer<typeof reasoningEffortSchema>;
export interface CommandOptions {
    model?: string;
    maxTokens?: number;
    provider?: Provider;
    debug: boolean;
    url?: string;
    json?: boolean | string;
    reasoningEffort?: ReasoningEffort;
    saveTo?: string;
    quiet?: boolean;
    hint?: string;
    subdir?: string;
    withDoc?: string[];
    fromGithub?: string;
    fileProvider?: Provider;
    thinkingProvider?: Provider;
    fileModel?: string;
    thinkingModel?: string;
    tokenCount?: number;
    webSearch?: boolean;
    timeout?: number;
    trackTelemetry?: (data: Record<string, any>) => void;
}
export interface Command {
    execute(query: string, options: CommandOptions): CommandGenerator;
}
export interface CommandMap {
    [key: string]: Command;
}
export interface Config {
    ide?: string;
    reasoningEffort?: ReasoningEffort;
    perplexity?: {
        model?: string;
        maxTokens?: number;
    };
    plan?: {
        fileProvider: Provider;
        thinkingProvider: Provider;
        fileModel?: string;
        thinkingModel?: string;
        fileMaxTokens?: number;
        thinkingMaxTokens?: number;
    };
    repo?: {
        provider: Provider;
        model?: string;
        maxTokens?: number;
        maxRepoSizeMB?: number;
    };
    doc?: {
        maxRepoSizeMB?: number;
        provider: Provider;
        model?: string;
        maxTokens?: number;
    };
    tokenCount?: {
        encoding: 'o200k_base' | 'gpt2' | 'r50k_base' | 'p50k_base' | 'p50k_edit' | 'cl100k_base';
    };
    browser?: {
        headless?: boolean;
        defaultViewport?: string;
        timeout?: number;
    };
    stagehand?: {
        provider: 'anthropic' | 'openai';
        verbose?: boolean;
        debugDom?: boolean;
        enableCaching?: boolean;
    };
    web?: {
        provider?: Provider;
        model?: string;
        maxTokens?: number;
    };
    mcp?: {
        provider?: Provider;
        model?: string;
        maxTokens?: number;
        defaultServer?: string;
        overrides?: Record<string, {
            githubUrl?: string;
            command?: 'uvx' | 'npx';
            args?: string[];
        }>;
    };
    marketplace?: {
        model?: string;
        maxTokens?: number;
    };
    youtube?: {
        provider?: Provider;
        model?: string;
        maxTokens?: number;
        defaultType?: 'summary' | 'transcript' | 'plan' | 'review' | 'custom';
        defaultFormat?: 'markdown' | 'json' | 'text';
        maxRetries?: number;
        retryDelay?: number;
    };
}
export interface ModelOptions {
    model: string;
    maxTokens: number;
    systemPrompt?: string;
    tokenCount?: number;
    webSearch?: boolean;
    timeout?: number;
    debug: boolean | undefined;
}
export interface VideoAnalysisOptions extends ModelOptions {
    videoUrl: string;
    temperature?: number;
    topK?: number;
    topP?: number;
}
export interface BaseModelProvider {
    executePrompt(prompt: string, options?: ModelOptions): Promise<string>;
    supportsWebSearch(modelName: string): Promise<{
        supported: boolean;
        model?: string;
        error?: string;
    }>;
    executeVideoPrompt?(prompt: string, options: VideoAnalysisOptions): Promise<string>;
}
