export interface FatcherResponse extends Response { } export type FatcherResponseState = Record; export type FatcherMiddlewares = (FatcherFunctionalMiddleware | FatcherMiddleware | (FatcherFunctionalMiddleware | FatcherMiddleware)[])[]; export interface FatcherOptions extends RequestInit { middlewares?: FatcherMiddlewares; } export interface FatcherContext extends Omit { request: Request; } export type FatcherFunctionalMiddleware = (request: FatcherContext, next: (context?: Partial) => Promise | FatcherResponse) => Promise | FatcherResponse; export type FatcherMiddleware = { name: string; use: FatcherFunctionalMiddleware; };