/**
 * @license
 * Copyright 2025 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
export interface AIProvider {
    readonly name: string;
    execute(prompt: string, options?: ProviderOptions): Promise<ProviderResponse>;
    getModels(): Promise<ModelInfo[]>;
    checkLimits(): Promise<UsageLimits>;
    validateConnection(): Promise<boolean>;
}
export interface ProviderOptions {
    model?: string;
    temperature?: number;
    maxTokens?: number;
    stream?: boolean;
    stopSequences?: string[];
}
export interface ProviderResponse {
    text: string;
    usage: TokenUsage;
    model: string;
    finishReason: string;
    metadata?: Record<string, unknown>;
}
export interface TokenUsage {
    promptTokens: number;
    completionTokens: number;
    totalTokens: number;
}
export interface ModelInfo {
    id: string;
    name: string;
    provider: string;
    contextWindow: number;
    supportsVision?: boolean;
    supportsFunctionCalling?: boolean;
    inputPricing?: number;
    outputPricing?: number;
}
export interface UsageLimits {
    requestsPerMinute: number;
    requestsPerDay: number;
    tokensPerMinute: number;
    tokensPerDay: number;
    currentUsage?: {
        requestsToday: number;
        tokensToday: number;
        lastReset: string;
    };
}
export interface ProviderConfig {
    name: string;
    apiKey: string;
    enabled: boolean;
    priority: number;
    models: {
        default: string;
        allowed: string[];
    };
    limits: UsageLimits;
    timeout?: number;
}
