/**
 * SyncHttpClient adapter over the platform `fetch` API.
 *
 * Implements `SyncHttpClientPort` using `globalThis.fetch` for HTTP
 * dispatch and `JSON.stringify` / `Response.json()` for body
 * serialization. This is the default transport for
 * `SyncController.syncWith(remote)` when the remote is a URL rather
 * than an in-process peer.
 *
 * Keeping this adapter in `src/infrastructure/adapters/` preserves
 * the hexagonal wall: `fetch` and `JSON.stringify` stay out of
 * `src/domain/**`.
 */
import SyncHttpClientPort, { type SyncHttpClientRequest, type SyncHttpClientResult, type SyncHttpClientTelemetry } from '../../ports/SyncHttpClientPort.ts';
import type OperationPolicyPort from '../../ports/OperationPolicyPort.ts';
type FetchSyncHttpClientAdapterOptions = {
    readonly policy?: OperationPolicyPort;
};
/**
 * Implementation of SyncHttpClientPort using `fetch`.
 */
export default class FetchSyncHttpClientAdapter extends SyncHttpClientPort {
    private readonly _policy;
    constructor(options?: FetchSyncHttpClientAdapterOptions);
    exchange(request: SyncHttpClientRequest, telemetry: SyncHttpClientTelemetry): Promise<SyncHttpClientResult>;
    /**
     * Performs the `fetch` call, translating transport-level failures
     * (timeout, abort, network) into typed result variants.
     */
    private _sendRequest;
    /**
     * Inspects an HTTP response status and body, producing the final
     * SyncHttpClientResult. Body decoding uses `.json()` which itself
     * may throw — we translate that into a decode-failure variant.
     */
    private _interpretResponse;
}
export {};
