import type { TelemetryFilter } from '../telemetry/api.js';
import type { UiControlPlaneSnapshot } from '../ui-read-models.js';
import type { TransportPaths } from '@pellux/goodvibes-sdk/platform/runtime/transports/transport-paths';
import type { HttpSessionEnsureInput, HttpSessionMessageInput, HttpSteerSessionMessageInput, HttpTaskSubmitInput, HttpTransportTelemetryQuery, HttpTransportTelemetryStreamHandlers } from './http-types.js';
export declare function createJsonRequestInit(token: string | null | undefined, body?: unknown, method?: string): RequestInit;
export declare function maybeObject<T extends object>(value: unknown): T | null;
export declare function isRecord(value: unknown): value is Record<string, unknown>;
export declare function readArrayResponse<T>(body: unknown, key: string): readonly T[];
export declare function readControlPlaneSnapshot(fetchImpl: typeof fetch, paths: TransportPaths, token: string | null | undefined): Promise<UiControlPlaneSnapshot>;
export declare function buildSessionEnsureBody(input?: HttpSessionEnsureInput): Record<string, unknown>;
export declare function buildSessionMessageBody(input: HttpSessionMessageInput): Record<string, unknown>;
export declare function buildSteerSessionMessageBody(input: HttpSteerSessionMessageInput): Record<string, unknown>;
export declare function buildTaskSubmitBody(input: HttpTaskSubmitInput): Record<string, unknown>;
export declare function normalizeTelemetryQuery(query: HttpTransportTelemetryQuery | undefined, defaultLimit: number): TelemetryFilter;
export declare function appendTelemetryQuery(url: URL, query: TelemetryFilter): void;
export declare function connectTelemetryStream(fetchImpl: typeof fetch, url: string, token: string | null | undefined, handlers: HttpTransportTelemetryStreamHandlers): Promise<() => void>;
export declare function buildTransportUrl(baseUrl: string, path: string): string;
//# sourceMappingURL=http-helpers.d.ts.map