import { Event } from '@skyway-sdk/common';
import { LocalStreamBase } from '.';
/**@description [japanese] DataStreamにて送受信できるデータの型。object型のデータを送信する場合、ArrayBufferなどの`JSON.stringify`に非対応な型をプロパティとして含めると正しいデータが送受信されないため、別途エンコード・デコード処理の実装が必要。 */
export declare type DataStreamMessageType = string | ArrayBuffer | object;
export declare class LocalDataStream extends LocalStreamBase {
    readonly options: DataStreamOptions;
    readonly contentType = "data";
    /**@private */
    readonly _onWriteData: Event<DataStreamMessageType>;
    private _isEnabled;
    /**
     * @description [japanese] データストリームが書き込み可能な状態になったことを通知するイベント
     * イベントデータとして、書き込み可能になったデータストリームのSubscriberの情報が通知される。
     */
    readonly onWritable: Event<DataStreamSubscriber>;
    /**
     * @description [japanese] データストリームが書き込み不可能な状態になったことを通知するイベント。
     * イベントデータとして、書き込み不可能になったデータストリームのSubscriberの情報が通知される。
     */
    readonly onUnwritable: Event<DataStreamSubscriber>;
    constructor(options?: DataStreamOptions);
    /**@internal */
    setIsEnabled(b: boolean): void;
    /**@description [japanese] データを送信する */
    write(data: DataStreamMessageType): void;
}
/**@internal */
export declare const objectFlag = "skyway_object:";
export declare type DataStreamOptions = {
    /**
     * @description [japanese] 再送待ち時間上限
     */
    maxPacketLifeTime?: number;
    /**
     * @description [japanese] 再送回数上限
     */
    maxRetransmits?: number;
    /**
     * @description [japanese] 順序制御
     */
    ordered?: boolean;
};
/**@description [japanese] データストリームをSubscribeしているMemberの情報 */
export declare type DataStreamSubscriber = {
    id: string;
    name?: string;
};
//# sourceMappingURL=data.d.ts.map