import { RecursiveRecord, HttpMethods } from '@dvcol/common-utils'; type BaseRequest = { input: RequestInfo; init: RequestInit & { headers: RequestInit['headers']; }; }; type BaseInit = Omit, 'method'>; type BaseBody = Partial>; type BaseTemplateOptions = { /** * Enables caching of requests (defaults to true). * If a number is provided, it will be used as the retention time in milliseconds. */ cache?: boolean | number | { retention?: number; evictOnError?: boolean; }; /** Boolean record or required (truthy) or optional parameters (falsy) */ parameters?: { /** Boolean record or required (truthy) or optional path parameters (falsy) */ path?: Partial>; /** Boolean record or required (truthy) or optional query parameters (falsy) */ query?: Partial>; }; }; type BaseTemplate

= { method: HttpMethods; url: string; opts?: O; /** Boolean record or required (truthy) or optional fields (falsy) */ body?: BaseBody; /** Partial fetch request init */ init?: BaseInit; /** Validate the parameters before performing request */ validate?: (param: P) => boolean; /** Transform the parameters before performing request */ transform?: (param: P) => P; /** Default seed parameters */ seed?: Partial

; }; export type { BaseBody, BaseInit, BaseRequest, BaseTemplate, BaseTemplateOptions };