import { ClaudeProvider } from './claude.js';
import { ClaudeHeadlessProvider } from './claude-headless.js';
import { ClaudeTerminalProvider } from './claude-terminal.js';
import { CodexProvider } from './codex.js';
import { OpenCodeProvider } from './opencode.js';
import { CursorProvider } from './cursor.js';
import { CopilotProvider } from './copilot.js';
import { KiroProvider } from './kiro.js';
import { MockProvider } from './mock.js';
export class ProviderRegistry {
    static instance = null;
    providers;
    constructor() {
        this.providers = {
            'claude-sdk': new ClaudeProvider(),
            claude: new ClaudeHeadlessProvider(),
            'claude-terminal': new ClaudeTerminalProvider(),
            codex: new CodexProvider(),
            opencode: new OpenCodeProvider(),
            cursor: new CursorProvider(),
            copilot: new CopilotProvider(),
            kiro: new KiroProvider(),
            mock: new MockProvider(),
        };
    }
    static getInstance() {
        if (!ProviderRegistry.instance) {
            ProviderRegistry.instance = new ProviderRegistry();
        }
        return ProviderRegistry.instance;
    }
    static resetInstance() {
        ProviderRegistry.instance = null;
    }
    get(type) {
        const provider = this.providers[type];
        if (!provider) {
            throw new Error(`Unknown provider type: ${type}`);
        }
        return provider;
    }
}
export function getProvider(type) {
    return ProviderRegistry.getInstance().get(type);
}
//# sourceMappingURL=index.js.map