import type { UsableMiddleware } from "../../classes/Middleware"; import type RuntimeError from "../../classes/RuntimeError"; import type Base from "../../classes/request/Base"; import type HttpRequestContext from "../../classes/request/HttpRequestContext"; import type WsCloseContext from "../../classes/request/WsCloseContext"; import type WsMessageContext from "../../classes/request/WsMessageContext"; import type WsOpenContext from "../../classes/request/WsOpenContext"; import type location from "../../functions/location"; import type { Method } from "../global"; import type { z } from "zod"; export type RealAny = Promise | any; export type EndFn = (...args: any[]) => void; export type SetItemType = S extends Set ? T : never; export type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never; export type LocationCallback = (l: typeof location) => string[]; export type ZodResponse = [z.infer, null] | [null, z.ZodError>]; export type AnyClass = new (...args: any[]) => any; export type DataContext = (Request extends HttpRequestContext ? HTTPMethod extends 'GET' ? Omit : Request : Request) & Omit>>, keyof InstanceType>; export type RateLimitConfig = { sortTo: number; penalty: number; timeWindow: number; maxHits: number; }; export type ErrorCallbacks> = { httpRequest?(ctr: DataContext<'HttpRequest', 'GET', HttpRequestContext, Middlewares>, error: RuntimeError): RealAny; wsOpen?(ctr: DataContext<'WsOpen', 'GET', WsOpenContext<'open', Context>, Middlewares>, error: RuntimeError): RealAny; wsMessage?(ctr: DataContext<'WsMessage', 'GET', WsMessageContext, Middlewares>, error: RuntimeError): RealAny; wsClose?(ctr: DataContext<'WsClose', 'GET', WsCloseContext, Middlewares>, error: RuntimeError): RealAny; }; export type FinishCallbacks> = { httpRequest?(ctr: DataContext<'HttpRequest', 'GET', Base, Middlewares>, ms: number): RealAny; wsOpen?(ctr: DataContext<'WsOpen', 'GET', Base, Middlewares>, ms: number): RealAny; wsMessage?(ctr: DataContext<'WsMessage', 'GET', Base, Middlewares>, ms: number): RealAny; wsClose?(ctr: DataContext<'WsClose', 'GET', Base, Middlewares>, ms: number): RealAny; }; export type RatelimitCallbacks> = { httpRequest?(ctr: DataContext<'HttpRequest', 'GET', HttpRequestContext, Middlewares>): RealAny; wsMessage?(ctr: DataContext<'WsMessage', 'GET', WsMessageContext, Middlewares>): RealAny; }; export type ClassContexts = { HttpRequest: typeof HttpRequestContext; WsOpen: typeof WsOpenContext; WsMessage: typeof WsMessageContext; WsClose: typeof WsCloseContext; };