import { Event } from '@skyway-sdk/common'; import { Encoding } from '@skyway-sdk/model'; import { SkyWayChannelImpl } from '../channel'; import { StreamSubscribedEvent, StreamUnsubscribedEvent } from '../channel/event'; import { AnalyticsSession } from '../external/analytics'; import { RTCPeerConnection } from '../imports/mediasoup'; import { Codec, EncodingParameters } from '../media'; import { ContentType, WebRTCStats } from '../media/stream'; import { LocalMediaStreamBase, LocalStream } from '../media/stream/local'; import { LocalAudioStream } from '../media/stream/local/audio'; import { LocalCustomVideoStream } from '../media/stream/local/customVideo'; import { LocalVideoStream } from '../media/stream/local/video'; import { Member } from '../member'; import { RemoteMember, RemoteMemberImplInterface } from '../member/remoteMember'; import { TransportConnectionState } from '../plugin/interface'; import { Subscription } from '../subscription'; export * from './factory'; export interface Publication { readonly id: string; readonly contentType: ContentType; metadata?: string; readonly publisher: Member; readonly subscriptions: Subscription[]; readonly origin?: Publication; readonly codecCapabilities: Codec[]; readonly encodings: Encoding[]; /** * @description [japanese] publishしたstreamの実体。 * ローカルで作られたPublicationでなければundefinedとなる */ stream?: T; state: PublicationState; /** * @deprecated * @use {@link LocalPerson.onStreamUnpublished} or {@link Channel.onStreamUnpublished} * @description [japanese] Unpublishされた時に発火するイベント */ onCanceled: Event; /** @description [japanese] Subscribeされた時に発火するイベント */ onSubscribed: Event; /** @description [japanese] このPublicationをSubscribeしたSubscriptionがUnsubscribeされた時に発火するイベント */ onUnsubscribed: Event; /** @description [japanese] このPublicationをSubscribeしたSubscriptionの数が変化した時に発火するイベント */ onSubscriptionListChanged: Event; /** @description [japanese] Metadataが変更された時に発火するイベント */ onMetadataUpdated: Event<{ metadata: string; }>; /** @description [japanese] 有効化された時に発火するイベント */ onEnabled: Event; /** @description [japanese] 無効化された時に発火するイベント */ onDisabled: Event; /** @description [japanese] stateが変化した時に発火するイベント */ onStateChanged: Event; /** * @description [japanese] メディア通信の状態が変化した時に発火するイベント */ onConnectionStateChanged: Event<{ remoteMember: RemoteMember; state: TransportConnectionState; }>; /** * @description [japanese] Metadataの更新 */ updateMetadata: (metadata: string) => Promise; /** * @deprecated * @use {@link LocalPerson.unpublish} * @description [japanese] unpublishする */ cancel: () => Promise; /** * @description [japanese] Video|Audio Streamの場合、encoding設定を更新する */ updateEncodings: (encodings: EncodingParameters[]) => void; /** @description [japanese] 有効化する */ /**@throws {SkyWayError} */ enable: () => Promise; /** @description [japanese] 無効化する */ disable: () => Promise; /** * @description [japanese] Publicationのstreamを同じContentTypeの別のStreamに入れ替える。 * dataStreamを入れ替えることはできない。 * RemoteのPublication(streamがnull)では利用不可。 */ replaceStream: (stream: LocalAudioStream | LocalVideoStream | LocalCustomVideoStream, options?: ReplaceStreamOptions) => void; /** * @experimental * @description [japanese] 試験的なAPIです。今後インターフェースや仕様が変更される可能性があります * @description [japanese] StreamをSubscribeしているMemberとの通信の統計情報を取得する */ getStats(selector: Member | string): Promise; /** * @experimental * @description [japanese] 試験的なAPIです。今後インターフェースや仕様が変更される可能性があります * @description [japanese] 対象のMemberとのRTCPeerConnectionを取得する。RTCPeerConnectionを直接操作すると SDK は正しく動作しなくなる可能性があります。 */ getRTCPeerConnection(selector: Member | string): RTCPeerConnection | undefined; /** * @description [japanese] メディア通信の状態を取得する * @param selector [japanese] 接続相手 */ getConnectionState(selector: Member | string): TransportConnectionState; } /**@internal */ export declare class PublicationImpl implements Publication { readonly id: string; readonly contentType: ContentType; readonly publisher: RemoteMemberImplInterface; private _codecCapabilities; get codecCapabilities(): Codec[]; setCodecCapabilities(_codecCapabilities: Codec[]): void; private _encodings; get encodings(): Encoding[]; setEncodings(_encodings: Encoding[]): void; private _stream?; get stream(): T | undefined; /**@internal */ _setStream(stream: LocalStream | undefined): void; /**@private */ readonly _channel: SkyWayChannelImpl; origin?: PublicationImpl; private _metadata?; get metadata(): string; private _state; get state(): PublicationState; get deviceName(): string | undefined; private readonly _events; readonly onCanceled: Event; readonly onSubscribed: Event; readonly onUnsubscribed: Event; readonly onSubscriptionListChanged: Event; readonly onMetadataUpdated: Event<{ metadata: string; }>; readonly onEnabled: Event; readonly onDisabled: Event; readonly onStateChanged: Event; readonly onConnectionStateChanged: Event<{ remoteMember: RemoteMember; state: TransportConnectionState; }>; /**@private */ readonly _onEncodingsChanged: Event; /**@private */ readonly _onReplaceStream: Event<{ newStream: LocalMediaStreamBase; oldStream: LocalMediaStreamBase; }>; private readonly _onEnabled; private streamEventDisposer; /**@private */ readonly _analytics?: AnalyticsSession; private _context; constructor(args: { channel: SkyWayChannelImpl; id: string; publisher: RemoteMemberImplInterface; contentType: ContentType; metadata?: string; origin?: PublicationImpl; codecCapabilities?: Codec[]; encodings?: EncodingParameters[]; stream?: T; isEnabled: boolean; }); get subscriptions(): Subscription[]; /**@private */ _updateMetadata(metadata: string): void; /**@private */ _disable(): Promise; /**@private */ _enable(): void; /**@private */ _unpublished(): void; /**@private */ _subscribed(subscription: Subscription): void; /**@private */ _unsubscribed(subscription: Subscription): void; /** * @deprecated * @use {@link LocalPerson.unpublish} */ cancel: () => Promise; updateMetadata: (metadata: string) => Promise; updateEncodings(encodings: EncodingParameters[]): void; disable: () => Promise; private _disableStream; enable: () => Promise; private _enableStream; replaceStream(stream: LocalAudioStream | LocalVideoStream | LocalCustomVideoStream, options?: ReplaceStreamOptions): void; getStats(selector: string | Member): Promise; getRTCPeerConnection(selector: string | Member): RTCPeerConnection | undefined; getConnectionState(selector: string | Member): TransportConnectionState; /**@private */ toJSON(): { id: string; channelId: string; publisherId: string; origin: string; contentType: ContentType; metadata: string; codecCapabilities: Codec[]; encodings: Encoding[]; state: PublicationState; stream: T; }; private _dispose; } /** * @description [japanese] Publicationの状態 * - enabled : 配信中 * - disabled : 配信停止中 * - canceled : 配信終了 * */ export declare type PublicationState = 'enabled' | 'disabled' | 'canceled'; /**@internal */ export declare const normalizeEncodings: (encodings: EncodingParameters[]) => Encoding[]; export declare const sortEncodingParameters: (encodings: EncodingParameters[]) => EncodingParameters[]; export declare type ReplaceStreamOptions = { /**@description [japanese] 入れ替え前のstreamを開放する。デフォルトで有効 */ releaseOldStream?: boolean; }; //# sourceMappingURL=index.d.ts.map