import type { IProviderV2, ProviderContext, ServiceProfile, ProviderRuntimeProfile } from '../api/provider-types.js'; import type { IAuthProvider } from '../../auth/auth-interface.js'; import type { ModuleDependencies } from '../../../modules/pipeline/interfaces/pipeline-interfaces.js'; import type { OpenAIStandardConfig } from '../api/provider-config.js'; import type { UnknownObject } from '../../../types/common-types.js'; import type { ProviderRuntimeMetadata } from './provider-runtime-metadata.js'; export declare abstract class BaseProvider implements IProviderV2 { readonly id: string; readonly abstract type: string; readonly providerType: string; readonly config: OpenAIStandardConfig; protected dependencies: ModuleDependencies; protected isInitialized: boolean; protected requestCount: number; protected errorCount: number; protected lastActivity: number; protected authMode: 'apikey' | 'oauth'; protected oauthProviderId?: string; private lastRuntimeMetadata?; private runtimeProfile?; private static rateLimitFailures; private static readonly RATE_LIMIT_THRESHOLD; constructor(config: OpenAIStandardConfig, dependencies: ModuleDependencies); setRuntimeProfile(runtime: ProviderRuntimeProfile): void; protected getRuntimeProfile(): ProviderRuntimeProfile | undefined; protected getLogId(): string; protected abstract getServiceProfile(): ServiceProfile; protected abstract createAuthProvider(): IAuthProvider; protected abstract preprocessRequest(request: UnknownObject): UnknownObject | Promise; protected abstract postprocessResponse(response: unknown, _context: ProviderContext): UnknownObject | Promise; initialize(): Promise; processIncoming(request: UnknownObject): Promise; processOutgoing(response: UnknownObject): Promise; sendRequest(request: unknown): Promise; checkHealth(): Promise; cleanup(): Promise; getStatus(): { id: string; type: string; providerType: string; isInitialized: boolean; requestCount: number; errorCount: number; lastActivity: number; }; protected onInitialize(): Promise; protected onCleanup(): Promise; protected abstract sendRequestInternal(request: UnknownObject): Promise; protected performHealthCheck(_url: string): Promise; protected getCurrentRuntimeMetadata(): ProviderRuntimeMetadata | undefined; private createContext; private handleRequestError; private enforceRateLimitWindow; protected hasDataEnvelope(value: UnknownObject): value is UnknownObject & { data?: UnknownObject; }; private getRateLimitBucketKey; private registerRateLimitFailure; private resetRateLimitCounter; private forceRateLimitFailure; private static parseDurationToMs; }