import Subject from '../../rx/Subject';
import PublisherState from './PublisherState';
import EndPoint, { IStream, AddIceCandidatesStatus, SetRemoteDescriptionStatus } from '../discovery/EndPoint';
import DisposableList from '../../lang/DisposableList';
import { IRtcPublishMonitorStatistic } from '../../rtc/RtcPublishMonitor';
import { PublishStatus } from '../api/Publish';
export default class PublisherContext {
    publisherInitialization: Date;
    disposables: DisposableList;
    publisherDisposables: DisposableList;
    state: Subject<PublisherState>;
    authorized: Subject<boolean>;
    online: Subject<boolean>;
    loading: Subject<boolean>;
    publishing: Subject<boolean>;
    standby: Subject<boolean>;
    stopped: Subject<boolean>;
    failureCount: Subject<number>;
    endPoint: Subject<EndPoint | null>;
    stream: Subject<IStream | null>;
    rtcStatistics: Subject<IRtcPublishMonitorStatistic | null>;
    clearFailureCountTimeout: number;
    startReconnectionAttemptsTimeInMilliseconds: number;
    name: string;
    constructor(name?: string);
    get streamId(): string;
    applyPublishStatus(status: PublishStatus): void;
    applySetRemoteDescriptionStatus(status: SetRemoteDescriptionStatus): void;
    applyAddIceCandidatesStatus(status: AddIceCandidatesStatus): void;
    mapPublishStatusToPublisherStatus(status: PublishStatus): PublisherState;
    applyUnhandledError(): void;
    applyUnauthorized(): void;
    applyNotFound(): void;
    private generateScreenName;
}
