import { PeerConnection } from "bittorrent-tracker"; import { Request } from "../requests/request.js"; import { CoreEventMap, SegmentWithStream, StreamType } from "../types.js"; import { PeerConfig } from "./peer-protocol.js"; import { EventTarget } from "../utils/event-target.js"; type PeerEventHandlers = { onPeerClosed: (peer: Peer) => void; onSegmentRequested: (peer: Peer, segmentId: number, requestId: number, byteFrom?: number) => void; onSegmentsAnnouncement: () => void; }; export declare class Peer { private readonly connection; private readonly eventHandlers; private readonly peerConfig; private readonly streamType; private readonly eventTarget; readonly id: string; private readonly peerProtocol; private downloadingContext?; private loadedSegments; private httpLoadingSegments; private downloadingErrors; private readonly bandwidthCalculator; private cachedDownloadBandwidth; private logger; private readonly onPeerClosed; constructor(connection: PeerConnection, eventHandlers: PeerEventHandlers, peerConfig: PeerConfig, streamType: StreamType, eventTarget: EventTarget); get downloadingSegment(): SegmentWithStream | undefined; get downloadBandwidth(): number; getSegmentStatus(segment: SegmentWithStream): "loaded" | "http-loading" | undefined; private onCommandReceived; protected onSegmentChunkReceived: (chunk: Uint8Array) => void; downloadSegment(segmentRequest: Request): void; uploadSegmentData(segment: SegmentWithStream, requestId: number, data: ArrayBuffer): Promise; private cancelSegmentDownloading; sendSegmentsAnnouncementCommand(loadedSegmentsIds: number[], httpLoadingSegmentsIds: number[]): void; sendSegmentAbsentCommand(segmentExternalId: number, requestId: number): void; private sendCancelSegmentRequestCommand; private sendSegmentDataSendingCompletedCommand; private onPeerConnectionClosed; private onConnectionError; destroy: () => void; static getPeerIdFromConnection(connection: PeerConnection): string; } export {};