export declare const THREE_BLOCKS_SUPPORTED_THREE_RANGE: ">=0.185.0 <0.187.0"; /** Minor revision of a supported `three` package version; `undefined` otherwise. */ export declare function supportedThreeMinor(version: string): 185 | 186 | undefined; export declare function isSupportedThreeVersion(version: string): boolean; export interface ThreeProviderHookTransformResult { readonly code: string; readonly state: 'applied' | 'already-applied'; } /** Everything that differs between two releases of the provider-hook transform. */ export interface ThreeReleaseLane { /** Release label used in anchor-drift diagnostics. */ readonly release: string; readonly markerVersion: string; readonly backports: readonly ThreeBackport[]; readonly compileBatchStart: readonly [anchor: string, replacement: string]; readonly computeAsync: ThreeBackport; } export declare const BACKPORT_GLSL_BUFFER_LABEL_MARKER = "three-blocks-backport-glsl#34069"; export declare const BACKPORT_34070_MARKER = "three-blocks-backport#34070"; export declare const RETAINED_INPUT_NODE_ANCHOR = "\t\tthis.id = _nodeId ++;"; export declare const RETAINED_INPUT_NODE_REPLACEMENT = "\t\tthis.id = _nodeId ++;\n\n\t\tthreeBlocksShaderInputRegistry.track( this );"; export declare const RETAINED_INPUT_TEXTURE_ANCHOR = "\t\tObject.defineProperty( this, 'id', { value: _textureId ++ } );"; export declare const RETAINED_INPUT_BUILD_START = "\tbuild() {\n\n\t\tthis.prebuild();"; export declare const RETAINED_INPUT_BUILD_START_REPLACEMENT = "\tprepareForHydration() {\n\n\t\tthreeBlocksShaderInputRegistry.beginBuild();\n\n\t\ttry {\n\n\t\t\tthis.prebuild();\n\t\t\tthis.setBuildStage( 'setup' );\n\n\t\t\tif ( this.context.position && this.context.position.isNode ) {\n\n\t\t\t\tthis.flowNodeFromShaderStage( 'vertex', this.context.position );\n\n\t\t\t}\n\n\t\t\tfor ( const shaderStage of shaderStages ) {\n\n\t\t\t\tthis.setShaderStage( shaderStage );\n\n\t\t\t\tfor ( const node of this.flowNodes[ shaderStage ] ) node.build( this );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t} finally {\n\n\t\t\tthis.setBuildStage( null );\n\t\t\tthis.setShaderStage( null );\n\t\t\tthreeBlocksShaderInputRegistry.endBuild();\n\n\t\t}\n\n\t}\n\n\tbuild() {\n\n\t\tthreeBlocksShaderInputRegistry.beginBuild();\n\n\t\ttry {\n\n\t\t\tthis.prebuild();"; export declare const RETAINED_INPUT_BUILD_END = "\t\treturn this;\n\n\t}\n\n\t/**\n\t * Async version of build()"; export declare const RETAINED_INPUT_BUILD_END_REPLACEMENT = "\t\t\treturn this;\n\n\t\t} finally {\n\n\t\t\tthreeBlocksShaderInputRegistry.endBuild();\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Async version of build()"; export declare const RETAINED_INPUT_ASYNC_START = "\tasync buildAsync() {\n\n\t\tthis.prebuild();"; export declare const RETAINED_INPUT_ASYNC_START_REPLACEMENT = "\tasync buildAsync() {\n\n\t\tthreeBlocksShaderInputRegistry.beginBuild();\n\n\t\ttry {\n\n\t\t\tthis.prebuild();"; export declare const RETAINED_INPUT_ASYNC_END = "\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns shared data object for the given node."; export declare const RETAINED_INPUT_ASYNC_END_REPLACEMENT = "\t\t\treturn this;\n\n\t\t} finally {\n\n\t\t\tthreeBlocksShaderInputRegistry.endBuild();\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns shared data object for the given node."; export declare const RENDER_PROVIDER_ANCHOR = "\t\t\tnodeBuilderState = nodeBuilderCache.get( cacheKey );\n\n\t\t\tif ( nodeBuilderState === undefined ) {\n\n\t\t\t\tconst buildNodeBuilder = async () => {"; export declare const RENDER_PROVIDER_REPLACEMENT = "\t\t\tnodeBuilderState = nodeBuilderCache.get( cacheKey );\n\n\t\t\tif ( nodeBuilderState === undefined ) {\n\n\t\t\t\tconst provider = this.renderer.nodeBuilderStateProvider;\n\n\t\t\t\tif ( provider !== null ) {\n\n\t\t\t\t\tconst prepareForHydration = () => {\n\n\t\t\t\t\t\tconst nodeBuilder = this._createNodeBuilder( renderObject, renderObject.material );\n\t\t\t\t\t\tnodeBuilder.prepareForHydration();\n\n\t\t\t\t\t};\n\t\t\t\t\tconst precompiledState = provider.getForRender( renderObject, NodeBuilderState, prepareForHydration );\n\n\t\t\t\t\tif ( precompiledState !== undefined && precompiledState !== null ) {\n\n\t\t\t\t\t\tnodeBuilderCache.set( cacheKey, precompiledState );\n\t\t\t\t\t\tprecompiledState.usedTimes ++;\n\t\t\t\t\t\trenderObjectData.nodeBuilderState = precompiledState;\n\n\t\t\t\t\t\treturn precompiledState;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst buildNodeBuilder = async () => {"; export declare const PROVIDER_PROPERTY_ANCHOR = "\t\tthis.lighting = new Lighting();\n\n\t\t// internals"; export declare const PROVIDER_PROPERTY_REPLACEMENT = "\t\tthis.lighting = new Lighting();\n\n\t\t/**\n\t\t * Backport of https://github.com/mrdoob/three.js/pull/34070 for r185.\n\t\t * Remove when the supported Three.js release contains the upstream provider.\n\t\t * @type {?{getForRender: Function, getForCompute: Function}}\n\t\t */\n\t\tthis.nodeBuilderStateProvider = null; // three-blocks-backport#34070\n\n\t\t// internals"; export declare const COMPILE_BATCH_MARKER = "three-blocks-compile-batch@VERSION"; export declare const CAPTURE_WEBGL_ANCHOR = "\tconstructor( parameters = {} ) {\n\n\t\tlet BackendClass;"; export declare const TEST_WEBGL_ASSIGNMENT = "\t\tparameters.forceWebGL ||= typeof location !== 'undefined' && new URLSearchParams( location.search ).get( 'webgl' ) === '1';"; export declare function occurrenceCount(source: string, value: string): number; export interface ThreeBackport { readonly pullRequest: 32551 | 34068 | 34069 | 34070 | 34609; readonly marker: string; readonly markerCount: number; readonly replacements: readonly (readonly [label: string, anchor: string, replacement: string])[]; readonly verifications: readonly (readonly [label: string, value: string, count: number])[]; } /** Local GLSL sibling of #34069; no supported release carries it upstream. */ export declare const GLSL_BUFFER_LABEL_BACKPORT: ThreeBackport; export declare function retainedShaderInputBootstrap(markerVersion: string): string; /** Apply one release lane: backports, retained inputs, compile batching, compute async. */ export declare function transformThreeWebgpuLane(source: string, location: string, lane: ThreeReleaseLane): ThreeProviderHookTransformResult;