import { Encoding } from '@skyway-sdk/model';
export declare type ClientEventType = 'MediaDeviceReport' | 'BindingRtcPeerConnectionToSubscription' | 'SubscriptionStatsReport' | 'RtcPeerConnectionEventReport' | 'PublicationUpdateEncodingsReport' | 'SubscriptionUpdatePreferredEncodingReport';
export declare type MediaDeviceReportClientEvent = {
    id: string;
    type: 'MediaDeviceReport';
    payload: {
        publicationId: string;
        mediaDeviceName: string;
        mediaDeviceVersion: number;
        mediaDeviceTrigger: 'publish' | 'replaceStream' | 'changeCamera';
        updatedAt: number;
    };
};
export declare type BindingRtcPeerConnectionToSubscriptionClientEvent = {
    id: string;
    type: 'BindingRtcPeerConnectionToSubscription';
    payload: {
        subscriptionId: string;
        role: 'sender' | 'receiver';
        rtcPeerConnectionId: string;
    };
};
export declare type SubscriptionStats = {
    [type: string]: {
        [property: string]: string;
    };
};
export declare type SubscriptionStatsReportClientEvent = {
    id: string;
    type: 'SubscriptionStatsReport';
    payload: {
        subscriptionId: string;
        role: 'sender' | 'receiver';
        stats: SubscriptionStats;
        createdAt: number;
    };
};
export declare type RtcPeerConnectionEventReportClientEvent = {
    id: string;
    type: 'RtcPeerConnectionEventReport';
    payload: {
        rtcPeerConnectionId: string;
        type: 'offer' | 'answer' | 'iceCandidate' | 'iceCandidateError' | 'iceConnectionStateChange' | 'iceGatheringStateChange' | 'connectionStateChange' | 'signalingStateChange' | 'restartIce' | 'skywayConnectionStateChange';
        data: {
            offer?: string;
            answer?: string;
            candidate?: string;
            event?: string;
            iceConnectionState?: string;
            iceGatheringState?: string;
            connectionState?: string;
            signalingState?: string;
            skywayConnectionState?: string;
        } | undefined;
        createdAt: number;
    };
};
export declare type PublicationUpdateEncodingsReportClientEvent = {
    id: string;
    type: 'PublicationUpdateEncodingsReport';
    payload: {
        publicationId: string;
        encodings: Encoding[];
        encodingsVersion: number;
        updatedAt: number;
    };
};
export declare type SubscriptionUpdatePreferredEncodingReportClientEvent = {
    id: string;
    type: 'SubscriptionUpdatePreferredEncodingReport';
    payload: {
        subscriptionId: string;
        preferredEncodingIndex: number;
        preferredEncodingVersion: number;
        updatedAt: number;
    };
};
export declare class ClientEvent {
    readonly id: string;
    readonly type: string;
    readonly payload: Record<string, unknown>;
    constructor(type: ClientEventType, payload: Record<string, unknown>);
    toJSON(): {
        id: string;
        type: string;
        payload: Record<string, unknown>;
    };
}
//# sourceMappingURL=clientEvent.d.ts.map