/**
 * Per-Model Tool Configuration (Codex-inspired)
 *
 * Different models get different tool sets and prompt templates
 * based on their capabilities. For example, smaller models might
 * not get complex tools, and some models support specific features
 * like extended thinking or structured outputs.
 */
export interface ModelToolConfig {
    /** Model name pattern (glob-like matching) */
    model: string;
    /** Tools to enable for this model (null = all tools) */
    enabledTools?: string[] | null;
    /** Tools to disable for this model */
    disabledTools?: string[];
    /** Maximum tool rounds per turn */
    maxToolRounds?: number;
    /** Whether this model supports extended thinking/reasoning */
    supportsReasoning?: boolean;
    /** Whether this model supports structured tool calls (function calling) */
    supportsToolCalls?: boolean;
    /** Whether this model supports vision/images */
    supportsVision?: boolean;
    /** System prompt template override */
    systemPromptTemplate?: string;
    /** Max output tokens for this model */
    maxOutputTokens?: number;
    /** Context window size */
    contextWindow?: number;
    /** Preferred patch format: 'unified' | 'search_replace' | 'full_file' */
    patchFormat?: 'unified' | 'search_replace' | 'full_file';
}
/**
 * Get the tool configuration for a specific model.
 * Falls back to permissive defaults if no match.
 */
export declare function getModelToolConfig(modelName: string, customConfigs?: ModelToolConfig[]): ModelToolConfig;
/**
 * Filter a list of tool names based on model capabilities.
 */
export declare function filterToolsForModel(toolNames: string[], modelConfig: ModelToolConfig): string[];
