import { ContentType } from '@skyway-sdk/model';
import { BindingRtcPeerConnectionToSubscriptionClientEvent, MediaDeviceReportClientEvent, PublicationUpdateEncodingsReportClientEvent, RtcPeerConnectionEventReportClientEvent, SubscriptionStatsReportClientEvent, SubscriptionUpdatePreferredEncodingReportClientEvent } from './clientEvent';
import { ConnectionFailedEventPayload } from './payloadTypes';
import { ConnectionState } from './socket';
import { Event } from './utils/event';
import { Logger } from './utils/logger';
declare type AnalyticsClientParams = {
    token: string;
    channelId: string;
    channelName?: string;
    memberId: string;
    memberName?: string;
    sdkVersion: string;
};
declare type AnalyticsClientOptions = {
    analyticsLoggingServerDomain?: string;
    secure?: boolean;
    logger?: Logger;
};
declare type MediaDeviceReport = MediaDeviceReportClientEvent['payload'];
declare type BindingRtcPeerConnectionToSubscription = BindingRtcPeerConnectionToSubscriptionClientEvent['payload'];
declare type SubscriptionStatsReport = SubscriptionStatsReportClientEvent['payload'];
declare type RtcPeerConnectionEventReport = RtcPeerConnectionEventReportClientEvent['payload'];
declare type PublicationUpdateEncodingsReport = PublicationUpdateEncodingsReportClientEvent['payload'];
declare type SubscriptionUpdatePreferredEncodingReport = SubscriptionUpdatePreferredEncodingReportClientEvent['payload'];
export declare class AnalyticsClient {
    private readonly _options;
    private readonly _logger;
    private _socket;
    readonly onConnectionStateChanged: Event<ConnectionState>;
    readonly onConnectionFailed: Event<void>;
    readonly onAnalyticsNotEnabledError: Event<ConnectionFailedEventPayload>;
    private _token;
    private _newToken;
    private readonly _channelId;
    private readonly _channelName?;
    private readonly _memberId;
    private readonly _memberName?;
    private readonly _sdkVersion;
    private _isClosed;
    private _responseCallbacks;
    private _acknowledgeCallbacks;
    private _mediaDeviceVersion;
    private _encodingsVersion;
    private _preferredEncodingVersion;
    private _previousSubscriptionStats;
    private _statsRequest;
    constructor({ token, channelId, channelName, memberId, memberName, sdkVersion }: AnalyticsClientParams, options?: AnalyticsClientOptions);
    get connectionState(): ConnectionState;
    connect(): Promise<void>;
    dispose(): void;
    setNewSkyWayAuthToken(token: string): void;
    cleanupOnUnpublished(publicationId: string): void;
    cleanupOnUnsubscribed(subscriptionId: string): void;
    private _disconnect;
    sendMediaDeviceReport(report: Omit<MediaDeviceReport, 'mediaDeviceVersion'>): Promise<void>;
    sendBindingRtcPeerConnectionToSubscription(bindingData: BindingRtcPeerConnectionToSubscription): Promise<void>;
    /**
     * RTCStatsReportにはcandidate-pair, local-candidate, remote-candidateが複数含まれる場合がある。
     * 現在利用されているもののみを選出して返す。
     */
    private filterStatsReport;
    private bundleStatsReportByStatsType;
    sendSubscriptionStatsReport(report: RTCStatsReport, subscriptionParams: Omit<SubscriptionStatsReport, 'stats'> & {
        contentType: ContentType;
    }): Promise<void>;
    sendRtcPeerConnectionEventReport(report: RtcPeerConnectionEventReport): Promise<void>;
    sendPublicationUpdateEncodingsReport(report: Omit<PublicationUpdateEncodingsReport, 'encodingsVersion'>): Promise<void>;
    sendSubscriptionUpdatePreferredEncodingReport(report: Omit<SubscriptionUpdatePreferredEncodingReport, 'preferredEncodingVersion'>): Promise<void>;
    private _sendClientEvent;
    private _waitForAcknowledge;
    private _reconnectWithNewSkyWayAuthToken;
    private _eventReceivedHandler;
    private _acknowledgeHandler;
    private _setAcknowledgeCallback;
    private _cleanupAnalyticsClientMaps;
    getIntervalSec(): number;
    isConnectionEstablished(): boolean;
    isClosed(): boolean;
}
export {};
//# sourceMappingURL=analyticsClient.d.ts.map