import { MethodType, MethodTypeWithBody } from '../const/methods.js'; import { OptionsType, ValidStatusType } from './options.js'; import { RouteQuery, RouteRequestBody, RoutesForMethod, SchemaType } from './schemeTypes.js'; import { NotNever } from './utils.js'; /** * @description Type definition for fetcher functions without a request body. * This type handles methods that do not require a request body (e.g., GET, DELETE). * * @template Schema - The OpenAPI schema type. * @template Method - The HTTP method type (excluding methods with a body). * @template Route - The route type within the schema. */ export type FetcherWithoutBodyParameters, Route extends RoutesForMethod, MethodValidStatus extends ValidStatusType | undefined = undefined, StrictOptions extends boolean = NotNever>> = Parameters<(...args: StrictOptions extends true ? Parameters<(path: Route, options: OptionsType) => never> : Parameters<(path: Route, options?: OptionsType) => never>) => never>; /** * @description Type definition for fetcher functions with a request body. * This type handles methods that require a request body (e.g., POST, PUT). * * @template Schema - The OpenAPI schema type. * @template Method - The HTTP method type (requiring a body). * @template Route - The route type within the schema. */ export type FetcherWithBodyParameters, MethodValidStatus extends ValidStatusType | undefined = undefined, Body extends NotNever> extends true ? RouteRequestBody : undefined = NotNever> extends true ? RouteRequestBody : undefined, StrictBody extends boolean = NotNever>, StrictOptions extends boolean = NotNever>, HasBody extends boolean = StrictOptions extends true ? true : StrictBody> = Parameters<(...args: StrictOptions extends true ? Parameters<(path: Route, body: Body, options: OptionsType) => never> : HasBody extends true ? Parameters<(path: Route, body: Body, options?: OptionsType) => never> : Parameters<(path: Route, body?: Body, options?: OptionsType) => never>) => never>;