import { CoreEventMap, StreamConfig, StreamType } from "../types.js"; import * as Command from "./commands/index.js"; import { EventTarget } from "../utils/event-target.js"; export type PeerConfig = Pick & { streamType: StreamType; infoHash: string; }; export type PeerProtocolEventHandlers = { onCommandReceived: (command: Command.PeerCommand) => void; onSegmentChunkReceived: (data: Uint8Array) => void; onProtocolError: (error: unknown) => void; }; export declare class PeerProtocol { #private; constructor(channel: RTCDataChannel, peerConfig: PeerConfig, eventHandlers: PeerProtocolEventHandlers, eventTarget: EventTarget, peerId: string); sendCommand(command: Command.PeerCommand): void; stopUploadingSegmentData(): void; getUploadingRequestId(): number | undefined; splitSegmentDataToChunksAndUploadAsync(data: ArrayBuffer | ArrayBufferView, requestId: number): Promise; destroy(): void; }