import type { Throws } from '@livekit/throws-transformer/throws'; import type TypedEmitter from 'typed-emitter'; import type { BaseE2EEManager } from '../../../e2ee/E2eeManager'; import { Future } from '../../utils'; import type { DataTrackFrameInternal } from '../frame'; import { DataTrackHandle } from '../handle'; import type { DataTrackInfo } from '../types'; import { DataTrackPublishError, DataTrackPushFrameError, DataTrackPushFrameErrorReason } from './errors'; import DataTrackOutgoingPipeline from './pipeline'; import type { DataTrackOptions, EventPacketAvailable, EventSfuPublishRequest, EventSfuUnpublishRequest, EventTrackPublished, EventTrackUnpublished, SfuPublishResponseResult } from './types'; export type PendingDescriptor = { type: 'pending'; /** Resolves when the descriptor is fully published. */ completionFuture: Future; }; export type ActiveDescriptor = { type: 'active'; info: DataTrackInfo; publishState: 'published' | 'republishing' | 'unpublished'; pipeline: DataTrackOutgoingPipeline; /** Resolves when the descriptor is unpublished. */ unpublishingFuture: Future; }; export type Descriptor = PendingDescriptor | ActiveDescriptor; export declare const Descriptor: { pending(): PendingDescriptor; active(info: DataTrackInfo, e2eeManager: BaseE2EEManager | null): ActiveDescriptor; }; export type DataTrackOutgoingManagerCallbacks = { /** Request sent to the SFU to publish a track. */ sfuPublishRequest: (event: EventSfuPublishRequest) => void; /** Request sent to the SFU to unpublish a track. */ sfuUnpublishRequest: (event: EventSfuUnpublishRequest) => void; /** A serialized packet is ready to be sent over the transport. */ packetAvailable: (event: EventPacketAvailable) => void; /** A new {@link LocalDataTrack} has been published */ trackPublished: (event: EventTrackPublished) => void; /** A {@link LocalDataTrack} has been unpublished */ trackUnpublished: (event: EventTrackUnpublished) => void; }; type OutgoingDataTrackManagerOptions = { /** * Provider to use for encrypting outgoing frame payloads. * * If null, end-to-end encryption will be disabled for all published tracks. */ e2eeManager?: BaseE2EEManager; }; declare const OutgoingDataTrackManager_base: new () => TypedEmitter; export default class OutgoingDataTrackManager extends OutgoingDataTrackManager_base { private e2eeManager; private handleAllocator; private descriptors; constructor(options?: OutgoingDataTrackManagerOptions); static withDescriptors(descriptors: Map): OutgoingDataTrackManager; /** @internal */ updateE2eeManager(e2eeManager: BaseE2EEManager | null): void; /** * Used by attached {@link LocalDataTrack} instances to query their associated descriptor info. * @internal */ getDescriptor(handle: DataTrackHandle): Descriptor | null; /** Used by attached {@link LocalDataTrack} instances to broadcast data track packets to other * subscribers. * @internal */ tryProcessAndSend(handle: DataTrackHandle, frame: DataTrackFrameInternal): Promise | DataTrackPushFrameError>>; /** * Client requested to publish a track. * * If the LiveKit server is too old and doesn't support data tracks, a * {@link DataTrackPublishError#timeout} will be thrown. * * @internal **/ publishRequest(options: DataTrackOptions, signal?: AbortSignal): Promise>; /** * Get information about all currently published tracks. * @internal **/ queryPublished(): DataTrackInfo[]; /** * Client request to unpublish a track. * @internal **/ unpublishRequest(handle: DataTrackHandle): Promise; /** * SFU responded to a request to publish a data track. * @internal **/ receivedSfuPublishResponse(handle: DataTrackHandle, result: SfuPublishResponseResult): void; /** * SFU notification that a track has been unpublished. * @internal **/ receivedSfuUnpublishResponse(handle: DataTrackHandle): void; /** Republish all tracks. * * This must be sent after a full reconnect in order for existing publications * to be recognized by the SFU. Each republished track will be assigned a new SID. * @internal */ sfuWillRepublishTracks(): void; /** * Shuts down the manager and all associated tracks. * @internal **/ shutdown(): Promise; } export {}; //# sourceMappingURL=OutgoingDataTrackManager.d.ts.map