import http from 'node:http'; import { EventEmitter } from 'node:events'; import type { ServerRequest } from 'srvx'; import { EVENTS } from '@tus/utils'; import type { DataStore, Upload, CancellationContext } from '@tus/utils'; import { GetHandler } from './handlers/GetHandler.js'; import { HeadHandler } from './handlers/HeadHandler.js'; import { OptionsHandler } from './handlers/OptionsHandler.js'; import { PatchHandler } from './handlers/PatchHandler.js'; import { PostHandler } from './handlers/PostHandler.js'; import { DeleteHandler } from './handlers/DeleteHandler.js'; import type { ServerOptions, RouteHandler, WithOptional } from './types.js'; type Handlers = { GET: InstanceType; HEAD: InstanceType; OPTIONS: InstanceType; PATCH: InstanceType; POST: InstanceType; DELETE: InstanceType; }; interface TusEvents { [EVENTS.POST_CREATE]: (req: ServerRequest, upload: Upload, url: string) => void; [EVENTS.POST_RECEIVE]: (req: ServerRequest, upload: Upload) => void; [EVENTS.POST_FINISH]: (req: ServerRequest, res: Response, upload: Upload) => void; [EVENTS.POST_TERMINATE]: (req: ServerRequest, res: Response, id: string) => void; } type on = EventEmitter['on']; type emit = EventEmitter['emit']; export declare interface Server { on(event: Event, listener: TusEvents[Event]): this; on(eventName: Parameters[0], listener: Parameters[1]): this; emit(event: Event, listener: TusEvents[Event]): ReturnType; emit(eventName: Parameters[0], listener: Parameters[1]): ReturnType; } export declare class Server extends EventEmitter { datastore: DataStore; handlers: Handlers; options: ServerOptions; constructor(options: WithOptional & { datastore: DataStore; }); get(path: string, handler: RouteHandler): void; handle(req: http.IncomingMessage, res: http.ServerResponse): Promise; handleWeb(req: Request): Promise; private handler; private getCorsOrigin; write(context: CancellationContext, headers: Headers, status: number, body?: string): Promise; listen(...args: any[]): http.Server; cleanUpExpiredUploads(): Promise; protected createContext(): { signal: AbortSignal; abort: () => void; cancel: () => void; }; } export {}; //# sourceMappingURL=server.d.ts.map