interface ShaderCaptureReadiness { readonly selector?: string; readonly global?: string; } interface ShaderCaptureRuntimeConfiguration { readonly capture: boolean; readonly forceLive: boolean; /** Renderer backend owned by this capture lane. Omitted for ambient overlay instrumentation. */ readonly backend?: 'webgpu' | 'webgl'; /** Instrument a browser-driver observation without writing a capture or forcing live misses. */ readonly driven?: boolean; readonly settleFrames: number; /** Maximum visible settle time after readiness before capture posts, regardless of late builds. */ readonly settleTimeoutMs?: number; /** * Absolute epoch deadline at which a driven capture must begin its manifest * write, reserving driver time for payload validation, the transactional * write, and timeout diagnostics before the outer lane budget expires. */ readonly deadlineAt?: number; /** Pause the settle countdown while an interactive capture tab is hidden. */ readonly visibilityGuard?: boolean; /** Overlay-capture session identity. Omitted by the driven browser capture. */ readonly captureId?: string; /** Browser storage key cleared after a successful overlay capture POST. */ readonly sessionKey?: string; /** Per-dev-server token sent as an HTTP header by overlay capture. */ readonly token?: string; readonly readiness?: ShaderCaptureReadiness; readonly transform: number; } /** * Structural mirror of runtime `bindingKindOf`. The capture bundle is injected into * `three.webgpu.js`, so importing the runtime value here would create a module cycle. */ declare function capturedBindingKind(value: object): string; type UnknownRecord = Record; declare function configureThreeBlocksShaderCapture(next: ShaderCaptureRuntimeConfiguration): void; declare function activeShaderCaptureScene(): string; /** * Capture-runtime copy of the devtools timing seam. This module is injected as a * standalone browser script and therefore cannot import three-blocks/devtools. */ declare function wrapThreeBlocksCaptureTimedBuild(builder: UnknownRecord, key: 'build' | 'buildAsync' | 'prepareForHydration', record?: (elapsedMs: number, method: 'build' | 'buildAsync' | 'prepareForHydration') => void, clock?: () => number, onBuilt?: () => void): void; /** Called immediately after Three creates a live NodeBuilder, before setup/build. */ declare function instrumentThreeBlocksShaderBuilder(builderValue: unknown, rendererValue: unknown, targetValue?: unknown): void; /** Called after the #34068 builder callback observes a successful real build. */ declare function recordThreeBlocksShaderBuild(builderValue: unknown, rendererValue: unknown): void; /** Called at the top of r185 getForRender/getForCompute before provider lookup. */ declare function prepareThreeBlocksShaderRenderer(rendererValue: unknown, namespaceValue?: unknown, revisionValue?: unknown): void; /** Synchronous view of this lane's demand journal for driver diagnostics. */ declare function readThreeBlocksShaderDemands(): readonly UnknownRecord[]; declare function pageLoadingIsComplete(root: UnknownRecord, readiness?: ShaderCaptureReadiness): boolean; export { activeShaderCaptureScene, capturedBindingKind, configureThreeBlocksShaderCapture, instrumentThreeBlocksShaderBuilder, pageLoadingIsComplete, prepareThreeBlocksShaderRenderer, readThreeBlocksShaderDemands, recordThreeBlocksShaderBuild, wrapThreeBlocksCaptureTimedBuild };