import type { LogFormat, LogLevel } from '@skyway-sdk/common';
import type { RtcApiConfig, RtcRpcApiConfig } from '@skyway-sdk/rtc-api-client';
export type { RtcApiConfig, RtcRpcApiConfig };
export declare type SkyWayConfigOptions = {
    /**@internal */
    rtcApi: RtcApiConfig;
    /**@internal */
    iceParamServer: {
        domain?: string;
        version?: number;
        secure?: boolean;
    };
    /**@internal */
    signalingService: {
        domain?: string;
        secure?: boolean;
    };
    /**@internal */
    analyticsService: {
        domain?: string;
        secure?: boolean;
    };
    rtcConfig: {
        /**
         * @internal
         * @description ms
         * */
        timeout?: number;
        turnPolicy?: TurnPolicy;
        /**
         * @internal
         */
        stunPolicy?: 'enable' | 'disable';
        turnProtocol?: TurnProtocol;
        /**
         * @internal
         * @description ms
         * */
        iceDisconnectBufferTimeout?: number;
    };
    token: {
        updateRemindSec?: number;
    };
    log: Partial<{
        level: LogLevel;
        format: LogFormat;
    }>;
    /**@internal */
    internal: {
        disableDPlane?: boolean;
    };
    member: Partial<LocalMemberConfig & {
        /**
         * @internal
         * @readonly
         * */
        leaveWhenDisconnected?: boolean;
    }>;
};
/**
 * @description [japanese] LocalMemberに関する設定
 * @description [japanese]
 * MemberはpreventAutoLeaveOnBeforeUnloadがfalseもしくは未指定の場合、ブラウザのタブを閉じるとChannelから削除される。
 * preventAutoLeaveOnBeforeUnloadがtrueの場合、
 * もしくはiOS safariのようなbeforeunloadイベントに対応していないブラウザを使用している場合は、
 * タブを閉じたあと最長でkeepaliveIntervalSec + keepaliveIntervalGapSec秒後にChannelから削除される。
 */
export declare type LocalMemberConfig = {
    /**@description [japanese] trueの場合、beforeunloadイベントで自動的にleaveしない。デフォルトはfalse */
    preventAutoLeaveOnBeforeUnload: boolean;
    /**@description [japanese] KeepAliveを行う周期 */
    keepaliveIntervalSec: number;
    /**@description [japanese] KeepAliveの周期を超えてChannelからMemberが削除されるまでの時間 */
    keepaliveIntervalGapSec: number;
};
/**@internal */
export declare type MemberInternalConfig = {
    /**@internal */
    disableSignaling?: boolean;
    disableAnalytics?: boolean;
};
export declare type TurnPolicy = 'enable' | 'disable' | 'turnOnly';
export declare type TurnProtocol = 'all' | 'udp' | 'tcp' | 'tls';
export declare type SkyWayContextConfig = {
    rtcApi: Required<SkyWayConfigOptions['rtcApi']>;
    iceParamServer: Required<SkyWayConfigOptions['iceParamServer']>;
    signalingService: Required<SkyWayConfigOptions['signalingService']>;
    analyticsService: Required<SkyWayConfigOptions['analyticsService']>;
    rtcConfig: Required<SkyWayConfigOptions['rtcConfig']>;
    token: Required<SkyWayConfigOptions['token']>;
    log: Required<SkyWayConfigOptions['log']>;
    internal: Required<SkyWayConfigOptions['internal']>;
    member: Required<SkyWayConfigOptions['member']>;
};
export declare class ContextConfig implements SkyWayConfigOptions {
    /**@internal */
    rtcApi: Required<SkyWayConfigOptions['rtcApi']>;
    /**@internal */
    iceParamServer: Required<SkyWayConfigOptions['iceParamServer']>;
    /**@internal */
    signalingService: Required<SkyWayConfigOptions['signalingService']>;
    /**@internal */
    analyticsService: Required<SkyWayConfigOptions['analyticsService']>;
    rtcConfig: Required<SkyWayConfigOptions['rtcConfig']>;
    token: Required<SkyWayConfigOptions['token']>;
    log: Required<SkyWayConfigOptions['log']>;
    /**@internal */
    internal: Required<SkyWayConfigOptions['internal']>;
    member: Required<SkyWayConfigOptions['member']>;
    /**@internal */
    constructor(options?: Partial<SkyWayConfigOptions>);
}
//# sourceMappingURL=config.d.ts.map