import { type ErrorInfo, type RuntimeInfo, SkyWayError } from '@skyway-sdk/common';
import { type MediaAttributes } from 'sdp-transform';
import type { Channel, SkyWayChannelImpl } from './channel';
import type { SkyWayContext } from './context';
import type { Codec } from './media';
import type { LocalStream, RemoteStream, WebRTCStats } from './media/stream';
import type { Member } from './member';
/**@internal */
export declare function getBitrateFromPeerConnection(stream: LocalStream | RemoteStream, direction: 'inbound' | 'outbound', cb: (bitrate: number) => void, selector: Member | string): () => void;
/**@internal */
export declare function statsToArray(stats: RTCStatsReport): WebRTCStats;
/**@internal */
export declare function createLogPayload({ operationName, channel, }: {
    operationName: string;
    channel: Channel;
}): Promise<any>;
/**@internal */
export declare function createWarnPayload({ member, detail, channel, operationName, payload, }: {
    operationName: string;
    member?: Member;
    channel?: SkyWayChannelImpl;
    detail: string;
    payload?: any;
}): any;
/**@internal */
export declare function createError({ operationName, context, info, error, path, payload, channel, }: {
    operationName: string;
    path: string;
    info: ErrorInfo;
    context?: SkyWayContext;
    channel?: Channel;
    error?: Error;
    payload?: any;
}): SkyWayError<any>;
/**@internal */
export declare const waitForLocalStats: ({ stream, remoteMember, end, interval, timeout, }: {
    stream: LocalStream;
    remoteMember: string;
    end: (stats: WebRTCStats) => boolean;
    /**ms */
    interval?: number | undefined;
    /**ms */
    timeout?: number | undefined;
}) => Promise<WebRTCStats>;
/**@internal */
export declare function getRtcRtpCapabilities(): Promise<{
    audio: (Codec & {
        payload: number;
    })[];
    video: (Codec & {
        payload: number;
    })[];
}>;
/**@internal */
export declare const getParameters: (fmtp: MediaAttributes['fmtp'], payload: number) => {
    [k: string]: string | number | undefined;
};
/**@internal */
export declare const fmtpConfigParser: (config: string) => {
    [k: string]: string | number | undefined;
};
/**@internal */
export declare function createTestVideoTrack(width: number, height: number): MediaStreamTrack;
/**
 * @internal
 * @description browser only
 */
export declare const getRuntimeInfo: ({ isNotBrowser, }?: Partial<{
    isNotBrowser: RuntimeInfo;
}>) => RuntimeInfo;
/**
 * @internal
 * @description from mediasoup-client
 */
export declare function detectDevice(): BuiltinHandlerName | undefined;
/**@internal */
export declare type BuiltinHandlerName = 'Chrome111' | 'Chrome74' | 'Chrome70' | 'Chrome67' | 'Chrome55' | 'Firefox60' | 'Safari12' | 'Safari11' | 'Edge11' | 'ReactNativeUnifiedPlan' | 'ReactNative';
//# sourceMappingURL=util.d.ts.map