import { SchemaDefinition, ObjectField } from '@japan-d2/schema/lib/interfaces'; export interface EndpointSchemaRequestInput { query?: (schema: SchemaDefinition) => SchemaDefinition; body?: (schema: SchemaDefinition) => SchemaDefinition; headers?: (schema: SchemaDefinition) => SchemaDefinition; } export interface EndpointSchemaResponseInput { body?: (schema: SchemaDefinition) => SchemaDefinition; headers?: (schema: SchemaDefinition) => SchemaDefinition; } declare type Filter = Pick; export interface EndpointSchemaInput { summary?: string; description?: string; request?: EndpointSchemaRequestInput; response?: EndpointSchemaResponseInput; } export interface EndpointSchemaInputV2 { summary?: string; description?: string; request?: { query?: ObjectField; body?: ObjectField; headers?: ObjectField; }; response?: { body?: ObjectField; headers?: ObjectField; }; } export declare type EndpointSchema = { summary?: string; description?: string; request: SchemaDefinition; response: SchemaDefinition; }; export declare type EndpointRequest = Filter, { query: Q; body: B; headers: H; }>; export declare type EndpointResponse = (B extends Record ? { body: B; } : unknown) & ((H extends Record ? { headers: H; } : unknown) & { headers?: { [key: string]: string; }; }); export interface KeyNameMap { request: { query: string; body: string; headers: string; }; response: { body: string; headers: string; }; } export declare const defaultKeyNameMap: KeyNameMap; export interface Options { keyNameMap: KeyNameMap; } export declare const defaultOptions: Options; export declare function endpointSchemaFactory(baseOptions: Options): (input: EndpointSchemaInput, options?: Options) => EndpointSchema, EndpointResponse>; export declare function endpointSchemaFactoryV2(baseOptions: Options): (input: EndpointSchemaInputV2, options?: Options) => EndpointSchema, EndpointResponse>; export declare const endpointSchema: (input: EndpointSchemaInput, options?: Options) => EndpointSchema, EndpointResponse>; export declare type ResponseBody = T extends EndpointSchema> ? B : never; export declare type ResponseHeaders = T extends EndpointSchema> ? H : never; export declare type RequestQuery = T extends EndpointSchema, unknown> ? Q : never; export declare type RequestBody = T extends EndpointSchema, unknown> ? B : never; export declare type RequestHeaders = T extends EndpointSchema, unknown> ? H : never; export {};