import type { ContextHaving } from '../../../../framework-types/execution-context/Types';
import type { EmptyObject } from '../../../Types';
import type { RingBufferAtom } from '../../adaptation/RingBufferAtom';
import type { ContextWithState } from '../../Types';
import type { CoreExportNames, CoreStateAtoms } from '../Types';
import type { NetworkSampleAtom } from './network/NetworkSampleAtom';
export interface Metrics {
    network: RingBufferAtom<NetworkSampleAtom>;
}
export type ContextT = ContextHaving<{
    [CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
}, EmptyObject, ContextWithState>;
/**
 * Collects recent network samples that can be used to calculate throughput estimations.
 * It is using `RingBuffer` to store collection of network samples.
 */
export type MetricsAtom = ReturnType<typeof createMetricsAtom>;
export declare function createMetricsAtom(context: ContextT, defaultSamples?: NetworkSampleAtom[]): import("../state/Types").StateAtom<Metrics, {}>;
