import type { VextClientContract, VextClientRouteMethod } from "./types.js"; type VextHeadersInit = ConstructorParameters[0]; type RoutesByMethod = Extract; type PathFor = RoutesByMethod["path"] & string; type RouteTypeFor = Extract, { path: TPath; }> extends { routeId: infer TRouteId; } ? TRouteId extends keyof TRouteTypes ? TRouteTypes[TRouteId] extends VextApiRouteType ? TRouteTypes[TRouteId] : VextApiRouteType : VextApiRouteType : VextApiRouteType; export interface VextApiClientOptions { baseUrl?: string; fetch?: typeof fetch; headers?: VextHeadersInit; } export interface VextApiRequestOptions { params?: Record; query?: Record>; body?: unknown; headers?: VextHeadersInit; signal?: AbortSignal; } /** Type-only route projection emitted by the generated API client. */ export interface VextApiRouteType { params: unknown; query: unknown; headers: unknown; /** Cookie validation is contract metadata; browser fetch owns cookie transport. */ cookies: unknown; body: unknown; response: unknown; } export type VextApiRequestOptionsFor = Omit & { params?: TRoute["params"]; query?: TRoute["query"]; headers?: TRoute["headers"]; body?: TRoute["body"]; }; export declare class VextApiError extends Error { readonly name = "VextApiError"; readonly status: number; readonly code: unknown; readonly details: unknown; readonly response: Response; readonly rawBody: unknown; constructor(args: { status: number; message: string; response: Response; rawBody: unknown; code?: unknown; details?: unknown; }); } export declare function isVextApiError(error: unknown): error is VextApiError; export interface VextApiClient> { readonly contract: TContract; request>(method: TMethod, path: TPath, options?: VextApiRequestOptionsFor>): Promise["response"]>; GET>(path: TPath, options?: VextApiRequestOptionsFor>): Promise["response"]>; POST>(path: TPath, options?: VextApiRequestOptionsFor>): Promise["response"]>; PUT>(path: TPath, options?: VextApiRequestOptionsFor>): Promise["response"]>; PATCH>(path: TPath, options?: VextApiRequestOptionsFor>): Promise["response"]>; DELETE>(path: TPath, options?: VextApiRequestOptionsFor>): Promise["response"]>; HEAD>(path: TPath, options?: VextApiRequestOptionsFor>): Promise["response"]>; OPTIONS>(path: TPath, options?: VextApiRequestOptionsFor>): Promise["response"]>; } export declare function createVextApiClient>(contract: TContract, options?: VextApiClientOptions): VextApiClient; export {};