import { AgoraObservable } from '../../imports'; import { AgoraRtcVideoSourceType, AgoraRtcAudioSourceType, AgoraRtcMediaSourceState, AgoraRtcStreamPublishPoolObserver, AgoraRtcStreamPublishPoolItem } from './type'; export declare abstract class AgoraRtcStreamPublishPool { protected readonly observable: AgoraObservable; protected _itemMap: Map; protected _isPaused: boolean; addObserver(observer: AgoraRtcStreamPublishPoolObserver): void; removeObserver(observer: AgoraRtcStreamPublishPoolObserver): void; protected abstract createItem(streamId: string, token: string | undefined): TItem; protected onVideoItemUpdated(item: TItem): void; protected onBeforeUpdate(item: TItem): void; protected shouldNotifyUpdate(item: TItem): boolean; protected shouldNotifyVideoEncoderConfig(item: TItem, wasVideoPublished: boolean): boolean; protected onBeforeJoinChannel(item: TItem): void; private getOrCreateItem; publishVideo(token: string | undefined, streamId: string, sourceId: string, type: AgoraRtcVideoSourceType, state: AgoraRtcMediaSourceState): number; publishAudio(token: string | undefined, streamId: string, sourceId: string, type: AgoraRtcAudioSourceType, state: AgoraRtcMediaSourceState): number; updateVideoSource(sourceId: string, type: AgoraRtcVideoSourceType, state: AgoraRtcMediaSourceState): number; updateAudioSource(sourceId: string, type: AgoraRtcAudioSourceType, state: AgoraRtcMediaSourceState): number; unpublishVideo(streamId: string, type: AgoraRtcVideoSourceType): number; unpublishAudio(streamId: string, type: AgoraRtcAudioSourceType): number; pause(): number; resume(): number; getItem(streamId: string): TItem | undefined; abstract release(): void; }