import type { ApiRoute } from '../ApiRoute'; import type { WebSocketRoute } from '../WebSocketRoute'; import type { Request, Response } from './http'; import type { Any, ZeroOrOneArg } from './utils'; /** * API Route class type by route parameters type. */ export type ApiRouteClassType = { prototype: ApiRoute; new (...args: ZeroOrOneArg): ApiRoute; }; /** * API Route class with static method `getParamsFromUrlOrThrow`. */ export type ApiRouteClassTypeWithGetParamsFromUrl = ApiRouteClassType & Readonly<{ getParamsFromUrlOrThrow: Exclude<(typeof ApiRoute)['getParamsFromUrlOrThrow'], undefined>; }>; /** * WebSocket Route class type by route parameters type. */ export type WebSocketRouteClassType = { prototype: WebSocketRoute; new (...args: ZeroOrOneArg): WebSocketRoute; }; /** * WebSocket Route class with static method `getParamsFromUrlOrThrow`. */ export type WebSocketRouteClassTypeWithGetParamsFromUrl = WebSocketRouteClassType & Readonly<{ getParamsFromUrlOrThrow: Exclude<(typeof WebSocketRoute)['getParamsFromUrlOrThrow'], undefined>; }>;