import type { AnnounceEvent, TrackerResponse } from "./TrackerResponse.js"; export interface AnnounceParams { infoHash: Buffer; peerId: Buffer; port: number; uploaded: number; downloaded: number; left: number; event: AnnounceEvent; /** HTTP User-Agent header — should match the spoofed client profile */ userAgent: string; /** compact=1 for HTTP trackers */ compact?: boolean; numWant?: number; key?: string; trackerId?: string; } export interface ScrapeResult { seeders: number; leechers: number; completed: number; } export interface ITracker { readonly url: string; announce(params: AnnounceParams): Promise; /** Send stopped event and clean up resources */ stop(params: Omit): Promise; /** Fetch current seeder/leecher counts without announcing (optional) */ scrape?(infoHash: Buffer): Promise; }