import { ApiResponse, HandleResponse } from './response'; import { OmitStrict } from './typescript'; import { BuildUrlParams } from './url'; declare type FetchParams = Pick; /** * The params generated by the library */ declare type BaseRequestParams = BuildUrlParams & FetchParams & Pick; /** * Additional fetch options provided by the user on a per-call basis */ export interface AdditionalFetchOptions extends OmitStrict { } export declare type CompleteRequestParams = BaseRequestParams & AdditionalFetchOptions; declare type HandleRequest = (a: Args, additionalFetchOptions?: AdditionalFetchOptions) => CompleteRequestParams; /** * helper used to type-check the arguments, and add default params for all requests */ export declare const createRequestHandler: (fn: (a: Args) => BaseRequestParams) => HandleRequest; /** * Initial parameters that apply to all calls */ export declare type InitParams = { apiVersion?: string; fetch?: typeof fetch; } & OmitStrict & ({ accessKey: string; apiUrl?: never; } | { apiUrl: string; accessKey?: never; }); declare type RequestGenerator = { handleRequest: HandleRequest; handleResponse: HandleResponse; }; declare type Endpoint = { getPathname: (params: PathnameParams) => string; } & RequestGenerator; export declare const makeEndpoint: (endpoint: Endpoint) => Endpoint; declare type GeneratedRequestFunction = (...a: Parameters>) => Promise>; declare type InitMakeRequest = (args: InitParams) => (handlers: RequestGenerator) => GeneratedRequestFunction; export declare const initMakeRequest: InitMakeRequest; export {};