@sip-protocol/sdk 0.7.3 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/README.md +267 -0
  2. package/dist/{TransportWebUSB-TQ7WZ4LE.mjs → TransportWebUSB-YQMAGJAJ.mjs} +12 -9
  3. package/dist/browser.d.mts +10 -4
  4. package/dist/browser.d.ts +10 -4
  5. package/dist/browser.js +47556 -19603
  6. package/dist/browser.mjs +628 -48
  7. package/dist/chunk-4GRJ5MAW.mjs +152 -0
  8. package/dist/chunk-5D7A3L3W.mjs +717 -0
  9. package/dist/chunk-64AYA5F5.mjs +7834 -0
  10. package/dist/chunk-GMDGB22A.mjs +379 -0
  11. package/dist/chunk-I534WKN7.mjs +328 -0
  12. package/dist/chunk-IBZVA5Y7.mjs +1003 -0
  13. package/dist/chunk-PRRZAWJE.mjs +223 -0
  14. package/dist/{chunk-UJCSKKID.mjs → chunk-XGB3TDIC.mjs} +13 -1
  15. package/dist/{chunk-3M3HNQCW.mjs → chunk-YWGJ77A2.mjs} +28656 -13103
  16. package/dist/{chunk-6WGN57S2.mjs → chunk-Z3K7W5S3.mjs} +48 -0
  17. package/dist/constants-LHAAUC2T.mjs +51 -0
  18. package/dist/dist-2OGQ7FED.mjs +3957 -0
  19. package/dist/dist-IFHPYLDX.mjs +254 -0
  20. package/dist/fulfillment_proof-ANHVPKTB.mjs +21 -0
  21. package/dist/funding_proof-ICFZ5LHY.mjs +21 -0
  22. package/dist/{index-DIBZHOOQ.d.ts → index-DXh2IGkz.d.ts} +21239 -10304
  23. package/dist/{index-8MQz13eJ.d.mts → index-DeE1ZzA4.d.mts} +21239 -10304
  24. package/dist/index.d.mts +9 -3
  25. package/dist/index.d.ts +9 -3
  26. package/dist/index.js +48396 -19623
  27. package/dist/index.mjs +537 -19
  28. package/dist/interface-Bf7w1PLW.d.mts +679 -0
  29. package/dist/interface-Bf7w1PLW.d.ts +679 -0
  30. package/dist/{noir-DKfEzWy9.d.mts → noir-kzbLVTei.d.mts} +31 -21
  31. package/dist/{noir-DKfEzWy9.d.ts → noir-kzbLVTei.d.ts} +31 -21
  32. package/dist/proofs/halo2.d.mts +151 -0
  33. package/dist/proofs/halo2.d.ts +151 -0
  34. package/dist/proofs/halo2.js +350 -0
  35. package/dist/proofs/halo2.mjs +11 -0
  36. package/dist/proofs/kimchi.d.mts +160 -0
  37. package/dist/proofs/kimchi.d.ts +160 -0
  38. package/dist/proofs/kimchi.js +431 -0
  39. package/dist/proofs/kimchi.mjs +13 -0
  40. package/dist/proofs/noir.d.mts +1 -1
  41. package/dist/proofs/noir.d.ts +1 -1
  42. package/dist/proofs/noir.js +74 -18
  43. package/dist/proofs/noir.mjs +84 -24
  44. package/dist/solana-U3MEGU7W.mjs +280 -0
  45. package/dist/validity_proof-3POXLPNY.mjs +21 -0
  46. package/package.json +44 -11
  47. package/src/adapters/index.ts +41 -0
  48. package/src/adapters/jupiter.ts +571 -0
  49. package/src/adapters/near-intents.ts +135 -0
  50. package/src/advisor/advisor.ts +653 -0
  51. package/src/advisor/index.ts +54 -0
  52. package/src/advisor/tools.ts +303 -0
  53. package/src/advisor/types.ts +164 -0
  54. package/src/chains/ethereum/announcement.ts +536 -0
  55. package/src/chains/ethereum/bnb-optimizations.ts +474 -0
  56. package/src/chains/ethereum/commitment.ts +522 -0
  57. package/src/chains/ethereum/constants.ts +462 -0
  58. package/src/chains/ethereum/deployment.ts +596 -0
  59. package/src/chains/ethereum/gas-estimation.ts +538 -0
  60. package/src/chains/ethereum/index.ts +268 -0
  61. package/src/chains/ethereum/optimizations.ts +614 -0
  62. package/src/chains/ethereum/privacy-adapter.ts +855 -0
  63. package/src/chains/ethereum/registry.ts +584 -0
  64. package/src/chains/ethereum/rpc.ts +905 -0
  65. package/src/chains/ethereum/stealth.ts +491 -0
  66. package/src/chains/ethereum/token.ts +790 -0
  67. package/src/chains/ethereum/transfer.ts +637 -0
  68. package/src/chains/ethereum/types.ts +456 -0
  69. package/src/chains/ethereum/viewing-key.ts +455 -0
  70. package/src/chains/near/commitment.ts +608 -0
  71. package/src/chains/near/constants.ts +284 -0
  72. package/src/chains/near/function-call.ts +871 -0
  73. package/src/chains/near/history.ts +654 -0
  74. package/src/chains/near/implicit-account.ts +840 -0
  75. package/src/chains/near/index.ts +393 -0
  76. package/src/chains/near/native-transfer.ts +658 -0
  77. package/src/chains/near/nep141.ts +775 -0
  78. package/src/chains/near/privacy-adapter.ts +889 -0
  79. package/src/chains/near/resolver.ts +971 -0
  80. package/src/chains/near/rpc.ts +1016 -0
  81. package/src/chains/near/stealth.ts +419 -0
  82. package/src/chains/near/types.ts +317 -0
  83. package/src/chains/near/viewing-key.ts +876 -0
  84. package/src/chains/solana/anchor-transfer.ts +386 -0
  85. package/src/chains/solana/commitment.ts +577 -0
  86. package/src/chains/solana/constants.ts +126 -12
  87. package/src/chains/solana/ephemeral-keys.ts +543 -0
  88. package/src/chains/solana/index.ts +252 -1
  89. package/src/chains/solana/key-derivation.ts +418 -0
  90. package/src/chains/solana/kit-compat.ts +334 -0
  91. package/src/chains/solana/optimizations.ts +560 -0
  92. package/src/chains/solana/privacy-adapter.ts +605 -0
  93. package/src/chains/solana/providers/generic.ts +47 -6
  94. package/src/chains/solana/providers/helius-enhanced-types.ts +336 -0
  95. package/src/chains/solana/providers/helius-enhanced.ts +623 -0
  96. package/src/chains/solana/providers/helius.ts +186 -33
  97. package/src/chains/solana/providers/index.ts +31 -0
  98. package/src/chains/solana/providers/interface.ts +61 -18
  99. package/src/chains/solana/providers/quicknode.ts +409 -0
  100. package/src/chains/solana/providers/triton.ts +426 -0
  101. package/src/chains/solana/providers/webhook.ts +338 -67
  102. package/src/chains/solana/rpc-client.ts +1150 -0
  103. package/src/chains/solana/scan.ts +83 -66
  104. package/src/chains/solana/sol-transfer.ts +732 -0
  105. package/src/chains/solana/spl-transfer.ts +886 -0
  106. package/src/chains/solana/stealth-scanner.ts +703 -0
  107. package/src/chains/solana/sunspot-verifier.ts +453 -0
  108. package/src/chains/solana/transaction-builder.ts +755 -0
  109. package/src/chains/solana/transfer.ts +74 -5
  110. package/src/chains/solana/types.ts +57 -6
  111. package/src/chains/solana/utils.ts +110 -0
  112. package/src/chains/solana/viewing-key.ts +807 -0
  113. package/src/compliance/fireblocks.ts +921 -0
  114. package/src/compliance/index.ts +23 -0
  115. package/src/compliance/range-sas.ts +398 -33
  116. package/src/config/endpoints.ts +100 -0
  117. package/src/crypto.ts +11 -8
  118. package/src/errors.ts +82 -0
  119. package/src/evm/erc4337-relayer.ts +830 -0
  120. package/src/evm/index.ts +47 -0
  121. package/src/fees/calculator.ts +396 -0
  122. package/src/fees/index.ts +87 -0
  123. package/src/fees/near-contract.ts +429 -0
  124. package/src/fees/types.ts +268 -0
  125. package/src/index.ts +686 -1
  126. package/src/intent.ts +6 -3
  127. package/src/logger.ts +324 -0
  128. package/src/network/index.ts +80 -0
  129. package/src/network/proxy.ts +691 -0
  130. package/src/optimizations/index.ts +541 -0
  131. package/src/oracle/types.ts +1 -0
  132. package/src/privacy-backends/arcium-types.ts +727 -0
  133. package/src/privacy-backends/arcium.ts +719 -0
  134. package/src/privacy-backends/combined-privacy.ts +866 -0
  135. package/src/privacy-backends/cspl-token.ts +595 -0
  136. package/src/privacy-backends/cspl-types.ts +512 -0
  137. package/src/privacy-backends/cspl.ts +907 -0
  138. package/src/privacy-backends/health.ts +488 -0
  139. package/src/privacy-backends/inco-types.ts +323 -0
  140. package/src/privacy-backends/inco.ts +616 -0
  141. package/src/privacy-backends/index.ts +254 -4
  142. package/src/privacy-backends/interface.ts +649 -6
  143. package/src/privacy-backends/lru-cache.ts +343 -0
  144. package/src/privacy-backends/magicblock.ts +458 -0
  145. package/src/privacy-backends/mock.ts +258 -0
  146. package/src/privacy-backends/privacycash.ts +13 -17
  147. package/src/privacy-backends/private-swap.ts +570 -0
  148. package/src/privacy-backends/rate-limiter.ts +683 -0
  149. package/src/privacy-backends/registry.ts +414 -2
  150. package/src/privacy-backends/router.ts +283 -3
  151. package/src/privacy-backends/shadowwire.ts +449 -0
  152. package/src/privacy-backends/sip-native.ts +3 -0
  153. package/src/privacy-logger.ts +191 -0
  154. package/src/production-safety.ts +373 -0
  155. package/src/proofs/aggregator.ts +1029 -0
  156. package/src/proofs/browser-composer.ts +1150 -0
  157. package/src/proofs/browser.ts +113 -25
  158. package/src/proofs/cache/index.ts +127 -0
  159. package/src/proofs/cache/interface.ts +545 -0
  160. package/src/proofs/cache/key-generator.ts +188 -0
  161. package/src/proofs/cache/lru-cache.ts +481 -0
  162. package/src/proofs/cache/multi-tier-cache.ts +575 -0
  163. package/src/proofs/cache/persistent-cache.ts +788 -0
  164. package/src/proofs/compliance-proof.ts +872 -0
  165. package/src/proofs/composer/base.ts +923 -0
  166. package/src/proofs/composer/index.ts +25 -0
  167. package/src/proofs/composer/interface.ts +518 -0
  168. package/src/proofs/composer/types.ts +383 -0
  169. package/src/proofs/converters/halo2.ts +452 -0
  170. package/src/proofs/converters/index.ts +208 -0
  171. package/src/proofs/converters/interface.ts +363 -0
  172. package/src/proofs/converters/kimchi.ts +462 -0
  173. package/src/proofs/converters/noir.ts +451 -0
  174. package/src/proofs/fallback.ts +888 -0
  175. package/src/proofs/halo2.ts +42 -0
  176. package/src/proofs/index.ts +471 -0
  177. package/src/proofs/interface.ts +13 -0
  178. package/src/proofs/kimchi.ts +42 -0
  179. package/src/proofs/lazy.ts +1004 -0
  180. package/src/proofs/mock.ts +25 -1
  181. package/src/proofs/noir.ts +110 -29
  182. package/src/proofs/orchestrator.ts +960 -0
  183. package/src/proofs/parallel/concurrency.ts +297 -0
  184. package/src/proofs/parallel/dependency-graph.ts +602 -0
  185. package/src/proofs/parallel/executor.ts +420 -0
  186. package/src/proofs/parallel/index.ts +131 -0
  187. package/src/proofs/parallel/interface.ts +685 -0
  188. package/src/proofs/parallel/worker-pool.ts +644 -0
  189. package/src/proofs/providers/halo2.ts +560 -0
  190. package/src/proofs/providers/index.ts +34 -0
  191. package/src/proofs/providers/kimchi.ts +641 -0
  192. package/src/proofs/validator.ts +881 -0
  193. package/src/proofs/verifier.ts +867 -0
  194. package/src/quantum/index.ts +112 -0
  195. package/src/quantum/winternitz-vault.ts +639 -0
  196. package/src/quantum/wots.ts +611 -0
  197. package/src/settlement/backends/direct-chain.ts +1 -0
  198. package/src/settlement/index.ts +9 -0
  199. package/src/settlement/router.ts +732 -46
  200. package/src/solana/index.ts +72 -0
  201. package/src/solana/jito-relayer.ts +687 -0
  202. package/src/solana/noir-verifier-types.ts +430 -0
  203. package/src/solana/noir-verifier.ts +816 -0
  204. package/src/stealth/address-derivation.ts +193 -0
  205. package/src/stealth/ed25519.ts +431 -0
  206. package/src/stealth/index.ts +233 -0
  207. package/src/stealth/meta-address.ts +221 -0
  208. package/src/stealth/secp256k1.ts +368 -0
  209. package/src/stealth/utils.ts +194 -0
  210. package/src/stealth.ts +50 -1504
  211. package/src/sync/index.ts +106 -0
  212. package/src/sync/manager.ts +504 -0
  213. package/src/sync/mock-provider.ts +318 -0
  214. package/src/sync/oblivious.ts +625 -0
  215. package/src/tokens/index.ts +15 -0
  216. package/src/tokens/registry.ts +301 -0
  217. package/src/utils/deprecation.ts +94 -0
  218. package/src/utils/index.ts +9 -0
  219. package/src/wallet/ethereum/index.ts +68 -0
  220. package/src/wallet/ethereum/metamask-privacy.ts +420 -0
  221. package/src/wallet/ethereum/multi-wallet.ts +646 -0
  222. package/src/wallet/ethereum/privacy-adapter.ts +700 -0
  223. package/src/wallet/ethereum/types.ts +3 -1
  224. package/src/wallet/ethereum/walletconnect-adapter.ts +675 -0
  225. package/src/wallet/hardware/index.ts +10 -0
  226. package/src/wallet/hardware/ledger-privacy.ts +414 -0
  227. package/src/wallet/index.ts +71 -0
  228. package/src/wallet/near/adapter.ts +626 -0
  229. package/src/wallet/near/index.ts +86 -0
  230. package/src/wallet/near/meteor-wallet.ts +1153 -0
  231. package/src/wallet/near/my-near-wallet.ts +790 -0
  232. package/src/wallet/near/wallet-selector.ts +702 -0
  233. package/src/wallet/solana/adapter.ts +6 -4
  234. package/src/wallet/solana/index.ts +13 -0
  235. package/src/wallet/solana/privacy-adapter.ts +567 -0
  236. package/src/wallet/sui/types.ts +6 -4
  237. package/src/zcash/rpc-client.ts +13 -6
  238. package/dist/chunk-2XIVXWHA.mjs +0 -1930
  239. package/dist/chunk-3INS3PR5.mjs +0 -884
  240. package/dist/chunk-3OVABDRH.mjs +0 -17096
  241. package/dist/chunk-7RFRWDCW.mjs +0 -1504
  242. package/dist/chunk-DLDWZFYC.mjs +0 -1495
  243. package/dist/chunk-E6SZWREQ.mjs +0 -57
  244. package/dist/chunk-F6F73W35.mjs +0 -16166
  245. package/dist/chunk-G33LB27A.mjs +0 -16166
  246. package/dist/chunk-HGU6HZRC.mjs +0 -231
  247. package/dist/chunk-L2K34JCU.mjs +0 -1496
  248. package/dist/chunk-OFDBEIEK.mjs +0 -16166
  249. package/dist/chunk-SF7YSLF5.mjs +0 -1515
  250. package/dist/chunk-SN4ZDTVW.mjs +0 -16166
  251. package/dist/chunk-WWUSGOXE.mjs +0 -17129
  252. package/dist/constants-VOI7BSLK.mjs +0 -27
  253. package/dist/index-B71aXVzk.d.ts +0 -13264
  254. package/dist/index-BYZbDjal.d.ts +0 -11390
  255. package/dist/index-CHB3KuOB.d.mts +0 -11859
  256. package/dist/index-CzWPI6Le.d.ts +0 -11859
  257. package/dist/index-pOIIuwfV.d.mts +0 -13264
  258. package/dist/index-xbWjohNq.d.mts +0 -11390
  259. package/dist/solana-4O4K45VU.mjs +0 -46
  260. package/dist/solana-5EMCTPTS.mjs +0 -46
  261. package/dist/solana-NDABAZ6P.mjs +0 -56
  262. package/dist/solana-Q4NAVBTS.mjs +0 -46
  263. package/dist/solana-ZYO63LY5.mjs +0 -46
@@ -25,6 +25,9 @@ import type {
25
25
  } from './interface'
26
26
  import { ProofGenerationError } from './interface'
27
27
  import { ProofError, ErrorCode } from '../errors'
28
+ import { createLogger } from '../logger'
29
+
30
+ const log = createLogger('proofs/mock')
28
31
 
29
32
  /**
30
33
  * Mock proof marker - all mock proofs start with this prefix
@@ -107,12 +110,33 @@ export class MockProofProvider implements ProofProvider {
107
110
  */
108
111
  async initialize(): Promise<void> {
109
112
  if (!this._warningShown && !this._silent) {
110
- console.warn(WARNING_MESSAGE)
113
+ log.warn(
114
+ { framework: 'mock' },
115
+ 'MockProofProvider initialized - NOT FOR PRODUCTION USE. Mock proofs provide NO cryptographic security.'
116
+ )
111
117
  this._warningShown = true
112
118
  }
113
119
  this._isReady = true
114
120
  }
115
121
 
122
+ /**
123
+ * Wait for the provider to be ready, with optional timeout
124
+ *
125
+ * For MockProofProvider, initialization is instant so this always resolves immediately.
126
+ *
127
+ * @param timeoutMs - Maximum time to wait (ignored for mock provider)
128
+ */
129
+ async waitUntilReady(timeoutMs?: number): Promise<void> {
130
+ // Suppress unused variable warning
131
+ void timeoutMs
132
+
133
+ if (this._isReady) {
134
+ return
135
+ }
136
+ // Initialize if not already done
137
+ await this.initialize()
138
+ }
139
+
116
140
  /**
117
141
  * Generate a mock funding proof
118
142
  *
@@ -26,17 +26,20 @@ import { ProofError, ErrorCode } from '../errors'
26
26
  // Import Noir JS (dynamically loaded to support both Node and browser)
27
27
  import { Noir } from '@noir-lang/noir_js'
28
28
  import type { CompiledCircuit } from '@noir-lang/types'
29
- import { UltraHonkBackend } from '@aztec/bb.js'
29
+ import { UltraHonkBackend, Barretenberg } from '@aztec/bb.js'
30
30
  import { secp256k1 } from '@noble/curves/secp256k1'
31
31
 
32
32
  // Import compiled circuit artifacts
33
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
+ // Circuit JSON files are typed via CompiledCircuit assertion
34
34
  import fundingCircuitArtifact from './circuits/funding_proof.json'
35
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
36
35
  import validityCircuitArtifact from './circuits/validity_proof.json'
37
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
38
36
  import fulfillmentCircuitArtifact from './circuits/fulfillment_proof.json'
39
37
 
38
+ // Type assertion for circuit artifacts (JSON modules)
39
+ const fundingCircuit = fundingCircuitArtifact as unknown as CompiledCircuit
40
+ const validityCircuit = validityCircuitArtifact as unknown as CompiledCircuit
41
+ const fulfillmentCircuit = fulfillmentCircuitArtifact as unknown as CompiledCircuit
42
+
40
43
  /**
41
44
  * Public key coordinates for secp256k1
42
45
  */
@@ -113,11 +116,19 @@ export interface NoirProviderConfig {
113
116
  * })
114
117
  * ```
115
118
  */
119
+ /** Default initialization timeout in milliseconds */
120
+ const DEFAULT_INIT_TIMEOUT_MS = 30000
121
+
116
122
  export class NoirProofProvider implements ProofProvider {
117
123
  readonly framework: ProofFramework = 'noir'
118
124
  private _isReady = false
125
+ private _initPromise: Promise<void> | null = null
126
+ private _initError: Error | null = null
119
127
  private config: NoirProviderConfig
120
128
 
129
+ // Barretenberg instance (shared by all backends)
130
+ private barretenberg: Barretenberg | null = null
131
+
121
132
  // Circuit instances
122
133
  private fundingNoir: Noir | null = null
123
134
  private fundingBackend: UltraHonkBackend | null = null
@@ -185,21 +196,94 @@ export class NoirProofProvider implements ProofProvider {
185
196
  * Loads circuit artifacts and initializes the proving backend.
186
197
  */
187
198
  async initialize(): Promise<void> {
199
+ // If already ready, return immediately
188
200
  if (this._isReady) {
189
201
  return
190
202
  }
191
203
 
204
+ // If initialization is in progress, wait for it
205
+ if (this._initPromise) {
206
+ return this._initPromise
207
+ }
208
+
209
+ // If a previous initialization failed, rethrow the error
210
+ if (this._initError) {
211
+ throw this._initError
212
+ }
213
+
214
+ // Start initialization and track the promise
215
+ this._initPromise = this._doInitialize()
216
+
217
+ try {
218
+ await this._initPromise
219
+ } catch (error) {
220
+ // Store error for future calls
221
+ this._initError = error instanceof Error ? error : new Error(String(error))
222
+ this._initPromise = null
223
+ throw error
224
+ }
225
+ }
226
+
227
+ /**
228
+ * Wait for the provider to be ready, with optional timeout
229
+ *
230
+ * This method blocks until initialization is complete or the timeout is reached.
231
+ * If initialization is already complete, resolves immediately.
232
+ * If initialization hasn't started, this method will start it.
233
+ *
234
+ * @param timeoutMs - Maximum time to wait in milliseconds (default: 30000)
235
+ * @throws ProofError if timeout is reached before ready
236
+ * @throws ProofError if initialization fails
237
+ */
238
+ async waitUntilReady(timeoutMs: number = DEFAULT_INIT_TIMEOUT_MS): Promise<void> {
239
+ if (this._isReady) {
240
+ return
241
+ }
242
+
243
+ // If there was a previous error, throw it
244
+ if (this._initError) {
245
+ throw new ProofError(
246
+ `NoirProofProvider initialization failed: ${this._initError.message}`,
247
+ ErrorCode.PROOF_PROVIDER_NOT_READY,
248
+ { context: { error: this._initError } }
249
+ )
250
+ }
251
+
252
+ // Start initialization if not already started
253
+ const initPromise = this._initPromise ?? this.initialize()
254
+
255
+ // Race between initialization and timeout
256
+ const timeoutPromise = new Promise<never>((_, reject) => {
257
+ setTimeout(() => {
258
+ reject(new ProofError(
259
+ `NoirProofProvider initialization timed out after ${timeoutMs}ms`,
260
+ ErrorCode.PROOF_PROVIDER_NOT_READY
261
+ ))
262
+ }, timeoutMs)
263
+ })
264
+
265
+ await Promise.race([initPromise, timeoutPromise])
266
+ }
267
+
268
+ /**
269
+ * Internal initialization logic
270
+ */
271
+ private async _doInitialize(): Promise<void> {
192
272
  try {
193
273
  if (this.config.verbose) {
194
274
  console.log('[NoirProofProvider] Initializing...')
195
275
  }
196
276
 
197
- // Initialize Funding Proof circuit
198
- // Cast to CompiledCircuit - the JSON artifact matches the expected structure
199
- const fundingCircuit = fundingCircuitArtifact as unknown as CompiledCircuit
277
+ // Initialize Barretenberg (bb.js 3.x requires shared instance)
278
+ this.barretenberg = await Barretenberg.new()
279
+
280
+ if (this.config.verbose) {
281
+ console.log('[NoirProofProvider] Barretenberg initialized')
282
+ }
200
283
 
201
- // Create backend for proof generation
202
- this.fundingBackend = new UltraHonkBackend(fundingCircuit.bytecode)
284
+ // Initialize Funding Proof circuit
285
+ // Create backend for proof generation (bb.js 3.x requires Barretenberg instance)
286
+ this.fundingBackend = new UltraHonkBackend(fundingCircuit.bytecode, this.barretenberg)
203
287
 
204
288
  // Create Noir instance for witness generation
205
289
  this.fundingNoir = new Noir(fundingCircuit)
@@ -212,10 +296,8 @@ export class NoirProofProvider implements ProofProvider {
212
296
  }
213
297
 
214
298
  // Initialize Validity Proof circuit
215
- const validityCircuit = validityCircuitArtifact as unknown as CompiledCircuit
216
-
217
- // Create backend for validity proof generation
218
- this.validityBackend = new UltraHonkBackend(validityCircuit.bytecode)
299
+ // Create backend for validity proof generation (bb.js 3.x requires Barretenberg instance)
300
+ this.validityBackend = new UltraHonkBackend(validityCircuit.bytecode, this.barretenberg)
219
301
 
220
302
  // Create Noir instance for validity witness generation
221
303
  this.validityNoir = new Noir(validityCircuit)
@@ -225,10 +307,8 @@ export class NoirProofProvider implements ProofProvider {
225
307
  }
226
308
 
227
309
  // Initialize Fulfillment Proof circuit
228
- const fulfillmentCircuit = fulfillmentCircuitArtifact as unknown as CompiledCircuit
229
-
230
- // Create backend for fulfillment proof generation
231
- this.fulfillmentBackend = new UltraHonkBackend(fulfillmentCircuit.bytecode)
310
+ // Create backend for fulfillment proof generation (bb.js 3.x requires Barretenberg instance)
311
+ this.fulfillmentBackend = new UltraHonkBackend(fulfillmentCircuit.bytecode, this.barretenberg)
232
312
 
233
313
  // Create Noir instance for fulfillment witness generation
234
314
  this.fulfillmentNoir = new Noir(fulfillmentCircuit)
@@ -819,21 +899,22 @@ export class NoirProofProvider implements ProofProvider {
819
899
  * Destroy the provider and free resources
820
900
  */
821
901
  async destroy(): Promise<void> {
822
- if (this.fundingBackend) {
823
- await this.fundingBackend.destroy()
824
- this.fundingBackend = null
825
- }
826
- if (this.validityBackend) {
827
- await this.validityBackend.destroy()
828
- this.validityBackend = null
829
- }
830
- if (this.fulfillmentBackend) {
831
- await this.fulfillmentBackend.destroy()
832
- this.fulfillmentBackend = null
833
- }
902
+ // Clear backend references (bb.js 3.x backends don't have destroy method)
903
+ this.fundingBackend = null
904
+ this.validityBackend = null
905
+ this.fulfillmentBackend = null
906
+
907
+ // Clear Noir instances
834
908
  this.fundingNoir = null
835
909
  this.validityNoir = null
836
910
  this.fulfillmentNoir = null
911
+
912
+ // Destroy shared Barretenberg instance (bb.js 3.x)
913
+ if (this.barretenberg) {
914
+ await this.barretenberg.destroy()
915
+ this.barretenberg = null
916
+ }
917
+
837
918
  this._isReady = false
838
919
  }
839
920