import { Event } from '@skyway-sdk/common'; import { ChannelState, LocalStream, PersonInit, Publication, SkyWayChannelImpl, SubscriptionImpl } from '@skyway-sdk/core'; import { RoomMember } from '../member'; import { LocalRoomMember, LocalRoomMemberImpl } from '../member/local/base'; import { RemoteRoomMember, RemoteRoomMemberImpl } from '../member/remote/base'; import { RoomPublication, RoomPublicationImpl } from '../publication'; import { RoomSubscription, RoomSubscriptionImpl } from '../subscription'; import { RoomType } from '.'; import * as event from './event'; export declare type RoomState = ChannelState; export interface Room { readonly type: RoomType; readonly id: string; readonly name?: string; readonly metadata?: string; readonly state: RoomState; readonly disposed: boolean; /** * @description [japanese] Roomが閉じられたときに発火するイベント */ readonly onClosed: Event; /** * @description [japanese] RoomのMetadataが更新されたときに発火するイベント */ readonly onMetadataUpdated: Event; /** * @description [japanese] RoomにMemberが参加したときに発火するイベント */ readonly onMemberJoined: Event; /** * @description [japanese] RoomからMemberが離脱したときに発火するイベント */ readonly onMemberLeft: Event; /** * @description [japanese] Memberの数が変化した時に発火するイベント */ readonly onMemberListChanged: Event; /** * @description [japanese] Room上のMemberのメタデータが変更されたときに発火するイベント */ readonly onMemberMetadataUpdated: Event; /** * @description [japanese] RoomにStreamがPublishされたときに発火するイベント */ readonly onStreamPublished: Event; /** * @description [japanese] RoomからStreamがUnPublishされたときに発火するイベント */ readonly onStreamUnpublished: Event; /** * @description [japanese] Publicationの数が変化した時に発火するイベント */ readonly onPublicationListChanged: Event; /** * @description [japanese] Room上のPublicationのメタデータが変更されたときに発火するイベント */ readonly onPublicationMetadataUpdated: Event; /** * @description [japanese] Publicationが有効化された時に発火するイベント */ readonly onPublicationEnabled: Event; /** * @description [japanese] Publicationが無効化された時に発火するイベント */ readonly onPublicationDisabled: Event; /** * @description [japanese] Room上のStreamがSubscribeされたときに発火するイベント */ readonly onPublicationSubscribed: Event; /** * @description [japanese] Room上のStreamがUnSubscribeされたときに発火するイベント */ readonly onPublicationUnsubscribed: Event; /** * @description [japanese] Subscriptionの数が変化した時に発火するイベント */ readonly onSubscriptionListChanged: Event; /** * @description [japanese] Roomに参加しているMemberの一覧を取得する */ readonly members: RemoteRoomMember[]; /** * @description [japanese] RoomにPublishされているStreamのPublicationの一覧を取得する */ readonly publications: RoomPublication[]; /** * @description [japanese] Room上のStreamのSubscriptionの一覧を取得する */ readonly subscriptions: RoomSubscription[]; localRoomMember?: LocalRoomMember; /** * @description [japanese] RoomにMemberを追加する */ join: (memberInit?: RoomMemberInit) => Promise; /** * @description [japanese] RoomからMemberを退室させる */ leave: (member: RoomMember) => Promise; /** * @description [japanese] 別のRoomのMemberを移動させる */ moveRoom: (member: LocalRoomMember) => Promise; /** * @description [japanese] Roomのmetadataを更新する */ updateMetadata: (metadata: string) => Promise; /** * @description [japanese] Roomを閉じる */ close: () => Promise; /** * @description [japanese] Roomを閉じずにRoomインスタンスの利用を終了し次のリソースを解放する。 * - サーバとの通信 * - イベントリスナー * - LocalMemberのインスタンス */ dispose: () => Promise; } /**@internal */ export declare abstract class RoomImpl implements Room { _channel: SkyWayChannelImpl; readonly type: RoomType; protected _members: { [memberId: string]: RemoteRoomMemberImpl; }; /**@private */ _getMember(id: string): RemoteRoomMemberImpl; protected _publications: { [publicationId: string]: RoomPublicationImpl; }; /**@private */ _getPublication(id: string): RoomPublicationImpl; /**@private */ _addPublication(p: Publication): RoomPublication; protected _subscriptions: { [subscriptionId: string]: RoomSubscriptionImpl; }; /**@private */ _getSubscription(id: string): RoomSubscriptionImpl; /**@private */ _addSubscription(s: SubscriptionImpl): RoomSubscriptionImpl; localRoomMember?: LocalRoomMemberImpl; readonly _context: import("@skyway-sdk/core").SkyWayContext; private readonly _events; readonly onClosed: Event; readonly onMetadataUpdated: Event; readonly onMemberJoined: Event; readonly onMemberLeft: Event; readonly onMemberListChanged: Event; readonly onMemberMetadataUpdated: Event; readonly onStreamPublished: Event; readonly onStreamUnpublished: Event; readonly onPublicationListChanged: Event; readonly onPublicationMetadataUpdated: Event; readonly onPublicationEnabled: Event; readonly onPublicationDisabled: Event; readonly onPublicationSubscribed: Event; readonly onPublicationUnsubscribed: Event; readonly onSubscriptionListChanged: Event; get id(): string; get name(): string; get metadata(): string | undefined; get state(): ChannelState; get disposed(): boolean; constructor(type: RoomType, _channel: SkyWayChannelImpl); private _handleOnMemberMetadataUpdate; protected abstract setChannelState(): void; protected abstract setChannelListener(): void; get members(): RemoteRoomMember[]; get publications(): RoomPublication[]; get subscriptions(): RoomSubscription[]; protected joinChannel(roomMemberInit?: RoomMemberInit): Promise; abstract join(memberInit?: RoomMemberInit): Promise; leave(member: RoomMember): Promise; moveRoom(member: LocalRoomMember): Promise; updateMetadata(metadata: string): Promise; close(): Promise; dispose(): Promise; toJSON(): { type: "sfu" | "p2p"; id: string; name: string; metadata: string | undefined; members: RemoteRoomMember[]; publications: RoomPublication[]; subscriptions: RoomSubscription[]; }; } export declare type RoomMemberInit = PersonInit; //# sourceMappingURL=base.d.ts.map