@skyway-sdk/core
Version:
The official Next Generation JavaScript SDK for SkyWay
73 lines • 2.72 kB
TypeScript
import { type Event, Events } from '@skyway-sdk/common';
import type model from '@skyway-sdk/model';
import type { Channel, SkyWayChannelImpl } from '../channel';
import type { SkyWayContext } from '../context';
import type { LocalStream, RemoteAudioStream, RemoteDataStream, RemoteVideoStream } from '../media/stream';
import type { Publication } from '../publication';
import type { Subscription } from '../subscription';
export interface Member {
id: string;
name?: string;
channel: Channel;
type: MemberType;
subtype: string;
side: MemberSide;
metadata?: string;
state: MemberState;
/**@description [japanese] Channelから離脱したときに発火するイベント */
onLeft: Event<void>;
/**@description [japanese] Metadataが変化したときに発火するイベント */
onMetadataUpdated: Event<string>;
/**@description [japanese] このMemberのPublicationのリスト */
publications: Publication<LocalStream>[];
/**@description [japanese] このMemberのSubscriptionのリスト */
subscriptions: Subscription<RemoteVideoStream | RemoteAudioStream | RemoteDataStream>[];
/**
* @description [japanese] metadataを更新する
*/
updateMetadata: (metadata: string) => Promise<void>;
/**
* @description [japanese] memberをChannelから退去させる
*/
leave: () => Promise<void>;
}
/**@internal */
export declare abstract class MemberImpl implements Member {
readonly channel: SkyWayChannelImpl;
readonly id: string;
readonly name?: string;
readonly type: MemberType;
readonly context: SkyWayContext;
abstract readonly side: MemberSide;
readonly subtype: string;
private _metadata?;
private _state;
/**@internal */
readonly _events: Events;
readonly onLeft: Event<void>;
readonly onMetadataUpdated: Event<string>;
constructor(args: {
channel: SkyWayChannelImpl;
name?: string;
id: string;
metadata?: string;
context: SkyWayContext;
});
get metadata(): string | undefined;
get state(): MemberState;
get publications(): Publication<LocalStream>[];
get subscriptions(): Subscription<import("../media/stream").RemoteStream>[];
/**@internal */
toJSON(): model.Member;
/** @private*/
_left(): void;
/** @private*/
_metadataUpdated(metadata: string): void;
updateMetadata(metadata: string): Promise<void>;
/**@throws {@link SkyWayError} */
leave(): Promise<void>;
}
export declare type MemberState = 'joined' | 'left';
export declare type MemberType = 'person' | 'bot';
export declare type MemberSide = 'local' | 'remote';
//# sourceMappingURL=index.d.ts.map