import { type NodeAddress, type ShaderAddressContext, type ShaderBindingLike, type ShaderCompatibility, type ShaderNodeLike } from './types.cjs'; export declare const THREE_R185_MATERIAL_SLOTS: readonly ["fragmentNode", "vertexNode", "colorNode", "positionNode", "normalNode", "opacityNode", "alphaTestNode", "backdropNode", "backdropAlphaNode", "emissiveNode", "metalnessNode", "roughnessNode", "clearcoatNode", "clearcoatRoughnessNode", "transmissionNode", "thicknessNode", "iorNode", "outputNode", "mrtNode", "depthNode", "castShadowNode", "receivedShadowNode", "maskNode", "envNode"]; type RecipeAddress = Exclude; export interface ThreeWebGPURecipeContext { readonly address: Extract; readonly context: ShaderAddressContext; } export type ThreeWebGPURecipe = (context: ThreeWebGPURecipeContext) => ShaderNodeLike; export interface ThreeWebGPUCompatibilityOptions { /** Exact runtime version provided by `three-blocks/vite/config`. */ readonly threeVersion: string; readonly recipes?: Readonly>; } export declare function assertThreeWebGPUR185(version: string): void; /** * Canonical Three.js r185 binding kind, derived from structural `is*` flags and * node-ownership fields instead of `constructor.name`. Minified application builds * rename classes (Vite's worker-chunk minify pass does not honor `keepNames`), so * hydration must never compare function names against captured manifests. The * returned strings are the historical r185 class names, keeping previously * captured manifests valid. */ export declare function bindingKindOf(binding: ShaderBindingLike): string; /** * Central r185 adapter. This is the only public runtime module allowed to touch the * provider hook and Three.js node-builder internals. */ export declare function createThreeWebGPUShaderCompatibility(options: ThreeWebGPUCompatibilityOptions): ShaderCompatibility; export {};