//#region src/clients/index.d.ts
/**
 * Abstract base class for API clients that interact with Google services.
 *
 * This class defines the contract for API clients, requiring implementations
 * to provide a fetch method that handles HTTP requests with appropriate
 * authentication headers. Concrete implementations should handle different
 * authentication strategies (API keys, service account credentials, etc.)
 * based on the runtime environment.
 *
 * @abstract
 *
 * @example
 * ```typescript
 * class MyApiClient extends ApiClient {
 *   async fetch(request: Request): Promise<Response> {
 *     // Add authentication headers
 *     request.headers.set('Authorization', 'Bearer token');
 *     return fetch(request);
 *   }
 * }
 * ```
 */
declare abstract class ApiClient {
  /**
   * Has an API Key been set for this client?
   */
  abstract hasApiKey(): boolean;
  /**
   * For some credential methods, we know what the project ID is.
   * This is necessary for OAuth-based access to Vertex
   */
  getProjectId(): Promise<string>;
  /**
   * Executes an HTTP request with appropriate authentication.
   *
   * Implementations should add necessary authentication headers to the request
   * before forwarding it to the underlying fetch implementation.
   *
   * @param request - The HTTP request to execute
   * @returns A Promise that resolves to the HTTP response
   *
   * @abstract
   */
  abstract fetch(request: Request): Promise<Response>;
}
//#endregion
export { ApiClient };
//# sourceMappingURL=index.d.cts.map