export interface APIClientConfig { baseUrl: string; apiKey: string; timeout?: number; retries?: number; debug?: boolean; headers?: Record; } export interface ConnectionTestResult { success: boolean; status: "connected" | "not_configured" | "error" | "unauthorized"; message: string; latencyMs?: number; details?: { host?: string; user?: UserInfo; organization?: OrganizationInfo; error?: string; apiVersion?: string; }; } export interface UserInfo { id: string | number; email?: string; name?: string; username?: string; avatar?: string; role?: string; createdAt?: string; lastLogin?: string; metadata?: Record; } export interface OrganizationInfo { id: string | number; name: string; slug?: string; plan?: string; memberCount?: number; createdAt?: string; metadata?: Record; } export interface RateLimitInfo { limit: number; remaining: number; resetAt?: Date; retryAfter?: number; } export interface APIResponse { success: boolean; data?: T; error?: string; statusCode?: number; rateLimit?: RateLimitInfo; headers?: Record; } export interface PaginatedResponse { results: T[]; count: number; next?: string; previous?: string; page?: number; totalPages?: number; } export declare abstract class BaseAPIClient { protected config: APIClientConfig; protected rateLimitInfo?: RateLimitInfo; constructor(config: APIClientConfig); abstract get providerName(): string; protected log(message: string, level?: "info" | "warn" | "error" | "debug"): void; protected request(endpoint: string, options?: RequestInit): Promise>; protected getAuthHeaders(): Record; protected updateRateLimitFromHeaders(headers: Headers): void; protected parseErrorMessage(statusCode: number, body: string): string; testConnection(): Promise; abstract getCurrentUser(): Promise; abstract getOrganization(): Promise; get(endpoint: string): Promise>; post(endpoint: string, body?: any): Promise>; put(endpoint: string, body?: any): Promise>; patch(endpoint: string, body?: any): Promise>; delete(endpoint: string): Promise>; paginate(endpoint: string, options?: { limit?: number; maxPages?: number; }): Promise; getRateLimitInfo(): RateLimitInfo | undefined; protected sleep(ms: number): Promise; protected withRetry(fn: () => Promise, maxRetries?: number): Promise; } export declare function createAPIClientConfig(env: Record, options: { hostEnvVar: string; apiKeyEnvVar: string; defaultHost?: string; }): APIClientConfig | null; //# sourceMappingURL=api-client.d.ts.map