import { CoreEventMap, StreamConfig, StreamWithSegments } from "../types.js";
import { Peer } from "./peer.js";
import { EventTarget } from "../utils/event-target.js";
type P2PTrackerClientEventHandlers = {
    onPeerConnected: (peer: Peer) => void;
    onSegmentRequested: (peer: Peer, segmentExternalId: number, requestId: number, bytesFrom?: number) => void;
    onSegmentsAnnouncement: () => void;
};
export declare class P2PTrackerClient {
    private readonly stream;
    private readonly eventHandlers;
    private readonly config;
    private readonly eventTarget;
    private static readonly PEER_ID_BY_INFO_HASH;
    private readonly streamShortId;
    private readonly client;
    private readonly _peers;
    private readonly logger;
    constructor(streamSwarmId: string, stream: StreamWithSegments, eventHandlers: P2PTrackerClientEventHandlers, config: StreamConfig, eventTarget: EventTarget<CoreEventMap>);
    start(): void;
    destroy(): void;
    private onReceivePeerConnection;
    private onTrackerClientWarning;
    private onTrackerClientError;
    peers(): Generator<Peer, void, unknown>;
    private onPeerClosed;
    static clearPeerIdCache(): void;
}
export {};
