import { Event } from '@skyway-sdk/common';
import { LocalAudioStream, LocalCustomVideoStream, LocalPersonImpl, LocalVideoStream, MemberImpl, MemberType, Publication, RemoteMemberImplInterface, SkyWayChannelImpl, SkyWayContext } from '@skyway-sdk/core';
import { SfuRestApiClient } from '@skyway-sdk/sfu-api-client';
import { SfuBotPlugin } from '.';
import { SFUConnection } from './connection';
import { TransportRepository } from './connection/transport/transportRepository';
import { Forwarding, ForwardingConfigure } from './forwarding';
import { SfuBotPluginOptions } from './option';
export declare class SfuBotMember extends MemberImpl implements RemoteMemberImplInterface {
    readonly side = "remote";
    static readonly subtype = "sfu";
    readonly subtype = "sfu";
    readonly type: MemberType;
    private readonly _context;
    private readonly _transportRepository;
    readonly options: SfuBotPluginOptions;
    private _connections;
    /** @description [japanese] forwardingを開始した時に発火するイベント */
    readonly onForwardingStarted: Event<{
        forwarding: Forwarding;
    }>;
    /** @description [japanese] forwardingを終了した時に発火するイベント */
    readonly onForwardingStopped: Event<{
        forwarding: Forwarding;
    }>;
    /** @description [japanese] forwardingの数が変化した時に発火するイベント */
    readonly onForwardingListChanged: Event<void>;
    private readonly _api;
    private _startForwardQueue;
    private _forwardings;
    get forwardings(): Forwarding[];
    /**@internal */
    constructor(args: {
        channel: SkyWayChannelImpl;
        id: string;
        name?: string;
        metadata?: string | undefined;
        plugin: SfuBotPlugin;
        api: SfuRestApiClient;
        context: SkyWayContext;
        transportRepository: TransportRepository;
        options: SfuBotPluginOptions;
    });
    /**@private */
    _getConnection(localPersonId: string): SFUConnection;
    /**@private */
    _getOrCreateConnection(localPerson: LocalPersonImpl): SFUConnection;
    /**@private */
    private _createConnection;
    /**
     * @description [japanese] StreamのPublicationをForwardingする
     * @throws {SkyWayError}
     * @example
     * const forwarding = await bot.startForwarding(publication, { maxSubscribers: 99 });
     */
    startForwarding(publication: Publication<LocalVideoStream | LocalAudioStream | LocalCustomVideoStream>, configure?: Partial<ForwardingConfigure>): Promise<Forwarding>;
    private _startForwarding;
    private listenStopForwardEvent;
    /**
     * @description [japanese] Forwardingを停止する
     */
    stopForwarding: (target: string | Forwarding) => Promise<void>;
    /**@private */
    _dispose(): void;
}
//# sourceMappingURL=member.d.ts.map