import type { X278Capabilities } from "./domain.cjs"; import { type X278Client, type X278ClientOptions, type X278Transport } from "./sdk.cjs"; export type X278Fetch = (input: string | URL | Request, init?: RequestInit) => Promise; export type X278HttpOperation = "capabilities" | "authorize" | "resume" | "awaitDetermination" | "auditLog" | "verify"; export interface X278HttpRequestEvent { readonly requestId: string; readonly operation: X278HttpOperation; readonly method: "GET" | "POST"; readonly url: string; readonly attempt: number; readonly headers: Readonly>; readonly body?: unknown; } export interface X278HttpResponseEvent extends X278HttpRequestEvent { readonly status: number; readonly durationMs: number; readonly responseHeaders: Readonly>; readonly responseBody: unknown; } export interface X278HttpRetryEvent extends X278HttpRequestEvent { readonly status?: number; readonly retryAfterMs: number; readonly error?: unknown; } export interface X278HttpHooks { readonly onRequest?: (event: X278HttpRequestEvent) => void | Promise; readonly onResponse?: (event: X278HttpResponseEvent) => void | Promise; readonly onRetry?: (event: X278HttpRetryEvent) => void | Promise; readonly onError?: (event: X278HttpRetryEvent) => void | Promise; } export interface X278Logger { readonly debug?: (message: string, context?: unknown) => void; readonly warn?: (message: string, context?: unknown) => void; readonly error?: (message: string, context?: unknown) => void; } export interface X278RetryOptions { readonly maxRetries?: number; readonly baseDelayMs?: number; readonly maxDelayMs?: number; readonly retryStatuses?: ReadonlyArray; readonly jitter?: boolean; } export interface X278HttpTransportOptions { readonly baseUrl: string | URL; readonly fetch?: X278Fetch; readonly headers?: HeadersInit | ((event: X278HttpRequestEvent) => HeadersInit | Promise); readonly bearerToken?: string | (() => string | Promise); readonly timeoutMs?: number; readonly retry?: X278RetryOptions; readonly debug?: boolean; readonly logger?: X278Logger; readonly hooks?: X278HttpHooks; } export type X278HttpClientOptions = X278HttpTransportOptions & X278ClientOptions; export interface X278HttpTransport extends X278Transport { readonly capabilities: () => Promise; } export type X278HttpClient = X278Client & { readonly capabilities: () => Promise; }; export interface X278Env extends Readonly> { readonly X278_PAYER_URL?: string; readonly X278_BEARER_TOKEN?: string; } export declare const defineX278HttpConfig: (config: Config) => Config; /** * Creates a fetch-backed x278 transport for production payer endpoints. * * @example * const transport = createX278HttpTransport({ * baseUrl: "https://payer.example", * bearerToken: process.env.X278_BEARER_TOKEN, * debug: true * }); */ export declare const createX278HttpTransport: (options: X278HttpTransportOptions) => X278HttpTransport; /** * Creates the batteries-included Promise client for an x278 HTTP endpoint. * * @example * const client = createX278HttpClient({ * baseUrl: "https://payer.example", * collectEvidence * }); */ export declare const createX278HttpClient: (options: string | URL | X278HttpClientOptions) => X278HttpClient; /** * Creates an HTTP client from environment variables for local parity. * * @example * const client = createX278HttpClientFromEnv(process.env, { collectEvidence }); */ export declare const createX278HttpClientFromEnv: (env?: X278Env, options?: Omit) => X278HttpClient; //# sourceMappingURL=http.d.cts.map