import type { TokenProvider } from './auth.ts'; import type { WireMeta } from './types.ts'; export type FetchLike = (input: string, init: RequestInit) => Promise; export interface RetryPolicy { /** Intentos totales, incluido el primero. Por defecto 2. */ readonly maxAttempts?: number; /** Espera base entre intentos en milisegundos. Por defecto 250. */ readonly backoffMs?: number; /** Tope de espera cuando el servidor envía `Retry-After`. Por defecto 5000. */ readonly maxRetryAfterMs?: number; } export interface TransportOptions { readonly baseUrl: string; readonly tokenProvider: TokenProvider; readonly fetch?: FetchLike; readonly timeoutMs?: number; readonly apiVersion?: string; readonly maxResponseBytes?: number; readonly retry?: RetryPolicy; readonly onRequestId?: (requestId: string) => void; readonly sleep?: (ms: number) => Promise; } export interface TransportRequest { readonly method: 'GET' | 'POST'; readonly path: string; readonly query?: Readonly>; readonly body?: unknown; readonly headers?: Readonly>; /** Sólo una operación idempotente puede reintentarse tras un fallo transitorio. */ readonly idempotent: boolean; readonly requestId?: string; /** Versión esperada del envelope para esta ruta; usa la del cliente si se omite. */ readonly apiVersion?: string; } export interface TransportResponse { readonly status: number; readonly data: T; readonly meta: WireMeta; readonly requestId: string; } /** * Transporte HTTP de la fachada: Bearer, `Accept`, `X-Request-Id`, timeout por * `AbortController`, límite de tamaño de respuesta, validación del envelope y * reintento acotado sólo de fallos transitorios en operaciones idempotentes. */ export declare class ApiTransport { #private; constructor(options: TransportOptions); get apiVersion(): string; request(request: TransportRequest): Promise>; } //# sourceMappingURL=transport.d.ts.map