import type { OnLogForAnalyticsProps } from '@skyway-sdk/common';
import type { ContentType } from '@skyway-sdk/model';
import { type BindingRtcPeerConnectionToSubscriptionClientEvent, type JoinReportClientEvent, type MediaDeviceReportClientEvent, type PublicationUpdateEncodingsReportClientEvent, type RtcPeerConnectionEventReportClientEvent, type SubscriptionStatsReportClientEvent, type SubscriptionUpdatePreferredEncodingReportClientEvent } from './clientEvent';
import { type ConnectionFailedEventPayload } from './payloadTypes';
import { type ConnectionState } from './socket';
import { Event } from './utils/event';
import type { Logger } from './utils/logger';
declare type AnalyticsClientParams = {
    token: string;
    sdkVersion: string;
    contextId: 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'];
declare type JoinReport = JoinReportClientEvent['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 _sdkVersion;
    private readonly _contextId;
    private _isClosed;
    private _responseCallbacks;
    private _acknowledgeCallbacks;
    private _acknowledgeCancelCallbacks;
    private _acknowledgeTimeouts;
    private _mediaDeviceVersion;
    private _encodingsVersion;
    private _preferredEncodingVersion;
    private _previousSubscriptionStats;
    private _statsRequest;
    private _pendingSdkLogs;
    private _sdkLogTimer;
    private static readonly MAX_PENDING_SDK_LOGS;
    constructor({ token, sdkVersion, contextId }: AnalyticsClientParams, options?: AnalyticsClientOptions);
    get connectionState(): ConnectionState;
    connect(): Promise<void>;
    bufferOrSendSdkLog(log: OnLogForAnalyticsProps): void;
    dispose(): void;
    setNewSkyWayAuthToken(token: string): void;
    cleanupOnUnpublished(publicationId: string): void;
    cleanupOnUnsubscribed(subscriptionId: string): void;
    private _disconnect;
    sendMediaDeviceReport(report: Omit<MediaDeviceReport, 'mediaDeviceVersion'>): Promise<void>;
    sendSdkLogReport(logs: OnLogForAnalyticsProps[]): 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>;
    sendJoinReport(report: JoinReport): Promise<void>;
    private _sendClientEvent;
    private _waitForAcknowledge;
    private _cancelAcknowledgeWait;
    private _setAcknowledgeTimeout;
    private _clearAcknowledgeTimeout;
    private _reconnectWithNewSkyWayAuthToken;
    private _eventReceivedHandler;
    private _acknowledgeHandler;
    private _setAcknowledgeCallback;
    private _cleanupAnalyticsClientMaps;
    getIntervalSec(): number;
    isConnectionEstablished(): boolean;
    isClosed(): boolean;
}
export {};
//# sourceMappingURL=analyticsClient.d.ts.map