import type { HttpTransport } from './http.js';
import { type ServerSentEventHandlers } from './sse-stream.js';
export interface ContractRouteDefinition {
    readonly method: string;
    readonly path: string;
}
export interface ContractRouteLike {
    readonly id: string;
}
export interface ContractInvokeOptions {
    readonly signal?: AbortSignal;
    readonly headers?: HeadersInit;
}
export interface ContractStreamOptions extends ContractInvokeOptions {
    readonly handlers: ServerSentEventHandlers;
}
export declare function buildContractInput(primaryKey: string, primaryValue: string, input?: Record<string, unknown>): Record<string, unknown>;
export declare function requireContractRoute<TRoute extends ContractRouteLike>(routes: readonly TRoute[], routeId: string, kind: string): TRoute;
export declare function invokeContractRoute<T = unknown>(transport: HttpTransport, route: ContractRouteDefinition, input?: Record<string, unknown>, options?: ContractInvokeOptions): Promise<T>;
export declare function openContractRouteStream(transport: HttpTransport, route: ContractRouteDefinition, input: Record<string, unknown> | undefined, options: ContractStreamOptions): Promise<() => void>;
//# sourceMappingURL=contract-client.d.ts.map