export interface RestRequest { url: string; method: RequestMethod; respond: (payload: RestRequestResponse) => unknown; reject: (payload: RestRequestRejection) => unknown; } export interface RestRequestResponse { ok: boolean; status: number; body?: string; } export interface RestRequestRejection extends RestRequestResponse { error: string; } export interface RestPayload { bucketId?: string; body?: Record; retryCount: number; headers?: Record; } export interface RestRateLimitedPath { url: string; resetTimestamp: number; bucketId?: string; } export type RequestMethod = "GET" | "POST" | "PUT" | "DELETE" | "PATCH";