/**
 * Shared HTTP client for GDS adapters
 *
 * Thin wrapper around axios with:
 * - OAuth2 client-credentials token exchange
 * - Request timeout
 * - Structured error handling
 * - Logger integration
 *
 * Each adapter uses this to make real HTTP calls when credentials
 * are configured, falling back to stub data otherwise.
 */
import type { AuthConfig, Logger } from "./adapter.ts";
export interface HttpClientConfig {
    baseUrl: string;
    auth?: AuthConfig;
    timeoutMs?: number;
    logger?: Logger;
}
export interface HttpResult {
    status: number;
    body: unknown;
    headers: Record<string, string>;
}
/**
 * Make an HTTP request to a GDS provider via axios
 *
 * If auth config is provided, uses API key header.
 * Throws GdsErrorClass on failure.
 *
 * @param config - Base URL, auth, timeout, logger
 * @param path - API path (e.g. "/v2/shopping/flight-offers")
 * @param method - HTTP method
 * @param body - Optional request body
 * @returns HTTP status, body, headers
 */
export declare function httpRequest(config: HttpClientConfig, path: string, method?: "GET" | "POST" | "PUT" | "DELETE", body?: unknown): Promise<HttpResult>;
/**
 * Perform OAuth2 client-credentials token exchange via axios
 *
 * @param auth - Auth config with clientId, clientSecret, tokenUrl
 * @param logger - Optional logger
 * @returns Bearer access token
 */
export declare function getOAuth2Token(auth: AuthConfig & {
    method: "oauth2";
}, logger?: Logger): Promise<string>;
//# sourceMappingURL=http-client.d.ts.map