import { Material, Mesh, Object3D, Scene, ShaderMaterial, Texture, WebGLRenderer } from 'three'; import { Geometry } from 'three-stdlib'; type drawCount = { type: string; drawCount: number; }; export type drawCounts = { total: number; type: string; data: drawCount[]; }; export type ProgramsPerf = Object3D & { name: string; calls: number; vertices: number; faces: number; geometries: Object3D[]; textures: Texture[]; shaders: ShaderMaterial[]; points: Geometry[]; lines: Geometry[]; matrices: number[]; meshes?: { [index: string]: Mesh[]; }; material: Material; program?: WebGLProgram; visible: boolean; drawCounts: drawCounts; expand: boolean; }; type Logger = { i: number; maxMemory: number; gpu: number; mem: number; cpu: number; fps: number; duration: number; frameCount: number; }; type GLLogger = { calls: number; triangles: number; points: number; lines: number; counts: number; }; export type State = { getReport: () => any; log: any; paused: boolean; overclockingFps: boolean; fpsLimit: number; startTime: number; triggerProgramsUpdate: number; customData: number; accumulated: { totalFrames: number; log: Logger; gl: GLLogger; max: { log: Logger; gl: GLLogger; }; }; chart: { data: { [index: string]: number[]; }; circularId: number; }; infos: { version: string; renderer: string; vendor: string; }; gl: WebGLRenderer | undefined; scene: Scene | undefined; programs: ProgramsPerfs; objectWithMaterials: Mesh[] | null; tab: 'infos' | 'programs' | 'data'; }; export type ProgramsPerfs = Map; declare const setCustomData: (customData: number) => void; declare const getCustomData: () => number; export declare const usePerfImpl: import('zustand/traditional').UseBoundStoreWithEqualityFn>; declare const usePerf: (sel: (state: State) => S) => S; declare const getPerf: () => State, setPerf: { (partial: State | Partial | ((state: State) => State | Partial), replace?: false): void; (state: State | ((state: State) => State), replace: true): void; }; export { usePerf, getPerf, setPerf, setCustomData, getCustomData };