import { CoreEventMap, SegmentWithStream, StreamConfig, StreamWithSegments } from "../types.js";
import { RequestsContainer } from "../requests/request-container.js";
import { EventTarget } from "../utils/event-target.js";
import { SegmentStorage } from "../segment-storage/index.js";
export type EventTargetMap = Record<`onStorageUpdated-${string}`, () => void> & CoreEventMap;
export declare class P2PLoader {
    private streamManifestUrl;
    private readonly stream;
    private readonly requests;
    private readonly segmentStorage;
    private readonly config;
    private readonly eventTarget;
    private readonly onSegmentAnnouncement;
    private readonly trackerClient;
    private isAnnounceMicrotaskCreated;
    constructor(streamManifestUrl: string, stream: StreamWithSegments, requests: RequestsContainer, segmentStorage: SegmentStorage, config: StreamConfig, eventTarget: EventTarget<EventTargetMap>, onSegmentAnnouncement: () => void);
    downloadSegment(segment: SegmentWithStream): void;
    isSegmentLoadingOrLoadedBySomeone(segment: SegmentWithStream): boolean;
    isSegmentLoadedBySomeone(segment: SegmentWithStream): boolean;
    get connectedPeerCount(): number;
    private getSegmentsAnnouncement;
    private onPeerConnected;
    broadcastAnnouncement: (sendEmptyAnnouncement?: boolean) => void;
    private sendSegmentsAnnouncement;
    private onSegmentRequested;
    destroy(): void;
}
