import { StatsData } from '../types';
import { RingBuffer } from '../utils/buffer';
type StatsListener = (data: StatsData) => void;
type BufferKey = keyof Omit<StatsData, 'vsync' | 'isWebGPU' | 'gpuAccurate'>;
interface PeakValues {
    triangles: number;
    drawCalls: number;
    lastReset: number;
}
declare class UnifiedStore {
    private listeners;
    private data;
    buffers: Record<BufferKey | 'gpuPercent', RingBuffer>;
    private peaks;
    private instanceCount;
    private updateScheduled;
    private pendingUpdates;
    subscribe(listener: StatsListener): () => void;
    update(newData: Partial<StatsData>): void;
    private flushUpdates;
    get(): StatsData;
    getPeaks(): PeakValues;
    resetPeaks(): void;
    resizeBuffers(size: number): void;
    reset(): void;
    registerInstance(): () => void;
    getInstanceCount(): number;
}
export declare const unifiedStore: UnifiedStore;
export declare const statsStore: {
    subscribe: (fn: StatsListener) => () => void;
    update: (data: Partial<StatsData>) => void;
    get: () => StatsData;
    getPeaks: () => PeakValues;
    resetPeaks: () => void;
    reset: () => void;
    registerInstance: () => () => void;
    getInstanceCount: () => number;
};
export declare const globalBuffers: Record<"fps" | "ms" | "memory" | "gpu" | "cpu" | "compute" | "triangles" | "drawCalls" | "gpuPercent", RingBuffer>;
export declare const updateBufferSize: (size: number) => void;
export declare const registerInstance: () => () => void;
export declare const getInstanceCount: () => number;
export declare function createInstanceBuffers(size: number): {
    destroy: () => void;
    fps: RingBuffer;
    ms: RingBuffer;
    memory: RingBuffer;
    gpu: RingBuffer;
    cpu: RingBuffer;
    compute: RingBuffer;
    triangles: RingBuffer;
    drawCalls: RingBuffer;
    gpuPercent: RingBuffer;
};
export {};
//# sourceMappingURL=unifiedStore.d.ts.map