import { Request } from "../requests/request.js"; import { CoreEventMap, SegmentWithStream, PeerError, PeerWarning } from "../types.js"; import { PeerConfig } from "./peer-protocol.js"; import { EventTarget } from "../utils/event-target.js"; type PeerEventHandlers = { onSegmentRequested: (peer: Peer, segmentId: number, requestId: number, byteFrom?: number) => void; onSegmentsAnnouncement: () => void; onWarning: (warning: PeerWarning) => void; }; export declare class Peer { #private; readonly id: string; readonly channel: RTCDataChannel; readonly eventTarget: EventTarget; readonly connectedAt: number; get isDestroyed(): boolean; constructor(id: string, channel: RTCDataChannel, closeConnection: (error?: PeerError) => void, eventHandlers: PeerEventHandlers, peerConfig: PeerConfig, eventTarget: EventTarget); get downloadingSegment(): SegmentWithStream | undefined; get isUploadingSegment(): boolean; getDownloadBandwidth(): number; getSegmentStatus(segment: SegmentWithStream): "loaded" | "http-loading" | undefined; downloadSegment(segmentRequest: Request): void; uploadSegmentData(segment: SegmentWithStream, requestId: number, data: ArrayBuffer | ArrayBufferView): Promise; sendSegmentsAnnouncementCommand(loadedSegmentsIds: number[], httpLoadingSegmentsIds: number[]): void; sendSegmentAbsentCommand(segmentExternalId: number, requestId: number): void; destroy(isConnectionClosed?: boolean, error?: PeerError): void; } export {};