/**
 * Provider Capabilities
 * =====================
 *
 * Maps provider features to harness behavior adaptation per D-18.
 * Skills use this to adapt prompting strategy per provider without
 * provider-specific branches in the orchestration code.
 */
/** Capabilities of a specific LLM provider/model combination */
export interface ProviderCapabilities {
    /** Provider identifier (e.g., "anthropic", "openai", "bedrock") */
    providerId: string;
    /** Model identifier (e.g., "claude-opus-4-6", "gpt-4o") */
    modelId: string;
    /** Whether the model supports extended thinking / chain-of-thought tokens */
    supportsThinking: boolean;
    /** Whether the model supports structured output (JSON mode / tool use for output) */
    supportsStructuredOutput: boolean;
    /** How the model handles tool calling */
    toolCallingStyle: 'parallel' | 'sequential' | 'none';
    /** Maximum context window size in tokens */
    maxContextTokens: number;
    /** Maximum output tokens per response */
    maxOutputTokens: number;
    /** Whether the model supports image/vision input */
    supportsVision: boolean;
    /** Whether the model supports streaming */
    supportsStreaming: boolean;
    /** Cost per million input tokens (USD) — for economics tracking per D-19 Pillar 9 */
    costPerMillionInputTokens?: number;
    /** Cost per million output tokens (USD) */
    costPerMillionOutputTokens?: number;
    /** Provider-specific hints for prompt adaptation */
    promptHints: PromptAdaptationHints;
}
/** Hints that skills use to adapt prompting for this provider */
export interface PromptAdaptationHints {
    /** Preferred format for structured data in prompts ("json" works best for most, "xml" for Claude) */
    preferredStructuredFormat: 'json' | 'xml' | 'yaml';
    /** Whether to use system prompt (some models don't support it well) */
    useSystemPrompt: boolean;
    /** Whether to include explicit "think step by step" instructions (unnecessary for thinking models) */
    needsExplicitReasoning: boolean;
    /** Max recommended prompt length before quality degrades (rough guide, tokens) */
    recommendedMaxPromptTokens: number;
}
//# sourceMappingURL=provider-capabilities.d.ts.map