/** Renderer-local NodeBuilder work observed during the current development session. */ export interface ThreeBlocksTslBuildSnapshot { readonly builds: number; readonly buildMs: number; readonly firstLoadBuildMs: number; /** Builds counted when the first frame ended; anything above it in `builds` ran late. */ readonly firstLoadBuilds?: number; /** Synchronous `build()` time. These calls block their owning thread. */ readonly syncBuildMs?: number; /** `buildAsync()` wall time, including time yielded between build stages. */ readonly asyncBuildElapsedMs?: number; /** Synchronous setup retained by precompiled-state hydration. */ readonly precompiledSetupMs?: number; /** Longest synchronous `build()` call. */ readonly maxSyncBuildMs?: number; /** Longest synchronous `prepareForHydration()` call. */ readonly maxPrecompiledSetupMs?: number; readonly firstLoadSyncBuildMs?: number; readonly firstLoadAsyncBuildElapsedMs?: number; readonly firstLoadPrecompiledSetupMs?: number; readonly firstLoadMaxSyncBuildMs?: number; readonly firstLoadMaxPrecompiledSetupMs?: number; } export interface ThreeBlocksTslBuildObserver { readonly snapshot: ThreeBlocksTslBuildSnapshot; freezeFirstLoad(): void; dispose(): void; } export interface ObserveThreeBlocksTslBuildsOptions { readonly onSnapshot?: (snapshot: ThreeBlocksTslBuildSnapshot) => void; } type BuildMethod = 'build' | 'buildAsync' | 'prepareForHydration'; type Clock = () => number; type UnknownMethod = (...args: readonly unknown[]) => unknown; /** * Shared-shape timing seam kept byte-for-byte equivalent to the capture client's * private copy. Exported so the agreement test can protect the two isolated runtimes. */ export declare function wrapThreeBlocksTimedBuild(builder: object, key: BuildMethod, record: (elapsedMs: number, method: BuildMethod) => void, clock?: Clock): UnknownMethod | undefined; /** Observe Three.js NodeBuilder work created by a WebGPURenderer's backend. */ export declare function observeThreeBlocksTslBuilds(renderer: object, options?: ObserveThreeBlocksTslBuildsOptions): ThreeBlocksTslBuildObserver; export {};