import { getProvider } from './index.js';
const MCP_SERVER_PROVIDERS = new Set([
    'claude',
    'claude-sdk',
    'claude-terminal',
]);
const ALLOWED_TOOLS_PROVIDERS = new Set([
    'claude',
    'claude-sdk',
    'claude-terminal',
    'opencode',
    'mock',
]);
const CLAUDE_ALLOWED_TOOLS_PROVIDERS = new Set([
    'claude',
    'claude-sdk',
    'claude-terminal',
    'mock',
]);
const MAX_TURNS_PROVIDERS = new Set([
    'claude',
    'claude-sdk',
    'codex',
    'opencode',
    'cursor',
    'copilot',
    'mock',
]);
function resolveProviderCapabilities(provider) {
    if (provider === undefined) {
        return undefined;
    }
    return {
        supportsStructuredOutput: getProvider(provider).supportsStructuredOutput,
        supportsMcpServers: MCP_SERVER_PROVIDERS.has(provider),
        supportsAllowedTools: ALLOWED_TOOLS_PROVIDERS.has(provider),
        supportsClaudeAllowedTools: CLAUDE_ALLOWED_TOOLS_PROVIDERS.has(provider),
        supportsMaxTurns: MAX_TURNS_PROVIDERS.has(provider),
    };
}
export function providerSupportsStructuredOutput(provider) {
    return resolveProviderCapabilities(provider)?.supportsStructuredOutput;
}
export function providerSupportsMcpServers(provider) {
    return resolveProviderCapabilities(provider)?.supportsMcpServers;
}
export function providerSupportsAllowedTools(provider) {
    return resolveProviderCapabilities(provider)?.supportsAllowedTools;
}
export function providerSupportsClaudeAllowedTools(provider) {
    return resolveProviderCapabilities(provider)?.supportsClaudeAllowedTools;
}
export function providerSupportsMaxTurns(provider) {
    return resolveProviderCapabilities(provider)?.supportsMaxTurns;
}
//# sourceMappingURL=provider-capabilities.js.map