import { ValidationError, type Infer, type ParseResult, type Schema, type Warning } from "@safe-shape/core"; type MaybeSchema = Schema | undefined; type MaybeResponseMap = Readonly>> | undefined; type Expand = { [Key in keyof T]: T[Key]; } & {}; type SectionOutput = TSchema extends Schema ? { readonly [Key in TKey]: Infer; } : {}; export type HttpRequestData = Expand & SectionOutput<"query", TQuery> & SectionOutput<"body", TBody> & SectionOutput<"headers", THeaders> & SectionOutput<"cookies", TCookies>>; export type HttpResponseData = TResponse extends Schema ? Infer : unknown; export type HttpMappedResponseData = TResponses extends Readonly>> ? Infer]> : never; export type HttpAnyResponseData = TResponses extends Readonly>> ? HttpMappedResponseData : HttpResponseData; export interface HttpRequestInput { readonly params?: unknown; readonly query?: unknown; readonly body?: unknown; readonly headers?: unknown; readonly cookies?: unknown; } export interface HttpContractConfig { readonly params?: TParams; readonly query?: TQuery; readonly body?: TBody; readonly response?: TResponse; readonly responses?: TResponses; readonly headers?: THeaders; readonly cookies?: TCookies; } export interface HttpContract { safeParseRequest(input: HttpRequestInput): ParseResult>; parseRequest(input: HttpRequestInput): HttpRequestData; safeParseRequestAsync(input: HttpRequestInput): Promise>>; parseRequestAsync(input: HttpRequestInput): Promise>; safeParseResponse(input: unknown, status?: number): ParseResult>; parseResponse(input: unknown, status?: number): HttpAnyResponseData; safeParseResponseAsync(input: unknown, status?: number): Promise>>; parseResponseAsync(input: unknown, status?: number): Promise>; } export type InferHttpRequest> = TContract extends HttpContract ? HttpRequestData : never; export type InferHttpResponse> = TContract extends HttpContract ? HttpAnyResponseData : never; export type HttpResponseRecoveryOptions = { readonly status?: number; readonly fallback: unknown; readonly getFallback?: never; } | { readonly status?: number; readonly getFallback: () => unknown; readonly fallback?: never; }; export type HttpResponseRecoveryResult = { readonly kind: "valid"; readonly data: TData; readonly warnings?: readonly Warning[]; } | { readonly kind: "recovered"; readonly data: TData; readonly networkError: ValidationError; readonly warnings?: readonly Warning[]; } | { readonly kind: "unavailable"; readonly networkError: ValidationError; readonly fallbackError: ValidationError; }; export declare function httpContract(config: HttpContractConfig): HttpContract; export declare function safeParseHttpRequest>(contract: TContract, input: HttpRequestInput): ParseResult>; export declare function safeParseHttpRequestAsync>(contract: TContract, input: HttpRequestInput): Promise>>; export declare function parseHttpRequest>(contract: TContract, input: HttpRequestInput): InferHttpRequest; export declare function parseHttpRequestAsync>(contract: TContract, input: HttpRequestInput): Promise>; export declare function safeParseHttpResponse>(contract: TContract, input: unknown, status?: number): ParseResult>; export declare function safeParseHttpResponseAsync>(contract: TContract, input: unknown, status?: number): Promise>>; export declare function recoverHttpResponse>(contract: TContract, input: unknown, options: HttpResponseRecoveryOptions): HttpResponseRecoveryResult>; export declare function recoverHttpResponseAsync>(contract: TContract, input: unknown, options: HttpResponseRecoveryOptions): Promise>>; export declare function parseHttpResponse>(contract: TContract, input: unknown, status?: number): InferHttpResponse; export declare function parseHttpResponseAsync>(contract: TContract, input: unknown, status?: number): Promise>; export {}; //# sourceMappingURL=index.d.ts.map