/** * RequestClient — low-level fetch wrapper. * * Adds: * - per-request timeoutMs (default 30s) * - AbortSignal composition (caller-supplied AbortSignal + timeout signal) * - retry on idempotent verbs only (GET / HEAD), exponential backoff * - JSON content-type defaulting for JSON bodies * * Has zero auth knowledge — callers compose headers/auth before passing in. * The response is returned RAW (Response object); src/client/response.ts * layer parses and wraps into the SDK envelope. */ export type RequestClientOptions = { /** Default per-request timeout in milliseconds. */ timeoutMs?: number; /** Max retries for idempotent verbs. 0 disables retry. */ retries?: number; /** Initial backoff in ms; doubles on each retry. */ retryBackoffMs?: number; }; export type RequestOptions = { method?: string; headers?: Record; body?: BodyInit | Record | undefined; signal?: AbortSignal; /** Per-call timeout override. */ timeoutMs?: number; /** Per-call retry override. */ retries?: number; /** * Awaited immediately before each fetch attempt with the final RequestInit. * Mutations to `headers` are honored. Runs per attempt so a hook that * refreshes a credential stays correct across retries. */ onRequest?: (request: RequestInit) => Promise | void; }; export declare class RequestClient { private readonly defaultTimeoutMs; private readonly defaultRetries; private readonly retryBackoffMs; constructor(options?: RequestClientOptions); request(url: string, options?: RequestOptions): Promise; }