@layerzerolabs/lz-iotal1-sdk-v2 3.0.143

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 (279) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +19 -0
  3. package/deployments/iotal1-mainnet/blocked_message_lib.json +58 -0
  4. package/deployments/iotal1-mainnet/blocked_msglib_ptb_builder.json +58 -0
  5. package/deployments/iotal1-mainnet/call.json +46 -0
  6. package/deployments/iotal1-mainnet/counter.json +85 -0
  7. package/deployments/iotal1-mainnet/dvn.json +49 -0
  8. package/deployments/iotal1-mainnet/dvn_call_type.json +45 -0
  9. package/deployments/iotal1-mainnet/dvn_fee_lib.json +59 -0
  10. package/deployments/iotal1-mainnet/dvn_layerzero.json +56 -0
  11. package/deployments/iotal1-mainnet/dvn_ptb_builder.json +45 -0
  12. package/deployments/iotal1-mainnet/endpoint_ptb_builder.json +70 -0
  13. package/deployments/iotal1-mainnet/endpoint_v2.json +86 -0
  14. package/deployments/iotal1-mainnet/executor.json +49 -0
  15. package/deployments/iotal1-mainnet/executor_call_type.json +45 -0
  16. package/deployments/iotal1-mainnet/executor_fee_lib.json +60 -0
  17. package/deployments/iotal1-mainnet/executor_layerzero.json +56 -0
  18. package/deployments/iotal1-mainnet/executor_ptb_builder.json +45 -0
  19. package/deployments/iotal1-mainnet/layerzero_views.json +46 -0
  20. package/deployments/iotal1-mainnet/message_lib_common.json +47 -0
  21. package/deployments/iotal1-mainnet/msglib_ptb_builder_call_types.json +45 -0
  22. package/deployments/iotal1-mainnet/multi_call.json +45 -0
  23. package/deployments/iotal1-mainnet/oapp.json +50 -0
  24. package/deployments/iotal1-mainnet/object-BlockedMessageLib.json +9 -0
  25. package/deployments/iotal1-mainnet/object-BlockedMsglibPtbBuilder.json +9 -0
  26. package/deployments/iotal1-mainnet/object-Counter.json +9 -0
  27. package/deployments/iotal1-mainnet/object-CounterAdminCap.json +9 -0
  28. package/deployments/iotal1-mainnet/object-CounterOApp.json +9 -0
  29. package/deployments/iotal1-mainnet/object-DVN.json +5 -0
  30. package/deployments/iotal1-mainnet/object-DVNCap.json +9 -0
  31. package/deployments/iotal1-mainnet/object-DVNFeeLib.json +9 -0
  32. package/deployments/iotal1-mainnet/object-EndpointPtbBuilder.json +9 -0
  33. package/deployments/iotal1-mainnet/object-EndpointPtbBuilderAdminCap.json +9 -0
  34. package/deployments/iotal1-mainnet/object-EndpointV2.json +9 -0
  35. package/deployments/iotal1-mainnet/object-EndpointV2AdminCap.json +9 -0
  36. package/deployments/iotal1-mainnet/object-Executor.json +5 -0
  37. package/deployments/iotal1-mainnet/object-ExecutorCap.json +9 -0
  38. package/deployments/iotal1-mainnet/object-ExecutorFeeLib.json +9 -0
  39. package/deployments/iotal1-mainnet/object-ExecutorOwnerCap.json +5 -0
  40. package/deployments/iotal1-mainnet/object-OFTComposerManager.json +9 -0
  41. package/deployments/iotal1-mainnet/object-PackageWhitelistValidator.json +9 -0
  42. package/deployments/iotal1-mainnet/object-PriceFeed.json +9 -0
  43. package/deployments/iotal1-mainnet/object-PriceFeedOwnerCap.json +9 -0
  44. package/deployments/iotal1-mainnet/object-SimpleMessageLib.json +9 -0
  45. package/deployments/iotal1-mainnet/object-SimpleMessageLibAdminCap.json +9 -0
  46. package/deployments/iotal1-mainnet/object-SmlPtbBuilder.json +9 -0
  47. package/deployments/iotal1-mainnet/object-Treasury.json +9 -0
  48. package/deployments/iotal1-mainnet/object-TreasuryAdminCap.json +9 -0
  49. package/deployments/iotal1-mainnet/object-ULN302.json +9 -0
  50. package/deployments/iotal1-mainnet/object-ULN302AdminCap.json +9 -0
  51. package/deployments/iotal1-mainnet/object-Uln302PtbBuilder.json +9 -0
  52. package/deployments/iotal1-mainnet/object-Uln302Verification.json +9 -0
  53. package/deployments/iotal1-mainnet/object-WorkerRegistry.json +9 -0
  54. package/deployments/iotal1-mainnet/object-ZroCoinMetadata.json +9 -0
  55. package/deployments/iotal1-mainnet/object-ZroTreasuryCap.json +9 -0
  56. package/deployments/iotal1-mainnet/oft_common.json +61 -0
  57. package/deployments/iotal1-mainnet/package_whitelist_validator.json +113 -0
  58. package/deployments/iotal1-mainnet/price_feed.json +70 -0
  59. package/deployments/iotal1-mainnet/price_feed_call_types.json +45 -0
  60. package/deployments/iotal1-mainnet/ptb_move_call.json +48 -0
  61. package/deployments/iotal1-mainnet/simple_message_lib.json +69 -0
  62. package/deployments/iotal1-mainnet/simple_msglib_ptb_builder.json +58 -0
  63. package/deployments/iotal1-mainnet/treasury.json +69 -0
  64. package/deployments/iotal1-mainnet/uln_302.json +87 -0
  65. package/deployments/iotal1-mainnet/uln_302_ptb_builder.json +58 -0
  66. package/deployments/iotal1-mainnet/uln_common.json +49 -0
  67. package/deployments/iotal1-mainnet/utils.json +57 -0
  68. package/deployments/iotal1-mainnet/worker_common.json +46 -0
  69. package/deployments/iotal1-mainnet/worker_registry.json +58 -0
  70. package/deployments/iotal1-mainnet/zro.json +67 -0
  71. package/deployments/iotal1-sandbox-local/blocked_message_lib.json +58 -0
  72. package/deployments/iotal1-sandbox-local/blocked_msglib_ptb_builder.json +58 -0
  73. package/deployments/iotal1-sandbox-local/call.json +46 -0
  74. package/deployments/iotal1-sandbox-local/counter.json +148 -0
  75. package/deployments/iotal1-sandbox-local/dvn.json +49 -0
  76. package/deployments/iotal1-sandbox-local/dvn_call_type.json +73 -0
  77. package/deployments/iotal1-sandbox-local/dvn_fee_lib.json +59 -0
  78. package/deployments/iotal1-sandbox-local/dvn_layerzero.json +56 -0
  79. package/deployments/iotal1-sandbox-local/dvn_ptb_builder.json +45 -0
  80. package/deployments/iotal1-sandbox-local/endpoint_ptb_builder.json +70 -0
  81. package/deployments/iotal1-sandbox-local/endpoint_v2.json +86 -0
  82. package/deployments/iotal1-sandbox-local/executor.json +49 -0
  83. package/deployments/iotal1-sandbox-local/executor_call_type.json +73 -0
  84. package/deployments/iotal1-sandbox-local/executor_fee_lib.json +60 -0
  85. package/deployments/iotal1-sandbox-local/executor_layerzero.json +56 -0
  86. package/deployments/iotal1-sandbox-local/executor_ptb_builder.json +45 -0
  87. package/deployments/iotal1-sandbox-local/layerzero_views.json +46 -0
  88. package/deployments/iotal1-sandbox-local/message_lib_common.json +47 -0
  89. package/deployments/iotal1-sandbox-local/msglib_ptb_builder_call_types.json +45 -0
  90. package/deployments/iotal1-sandbox-local/multi_call.json +45 -0
  91. package/deployments/iotal1-sandbox-local/oapp.json +50 -0
  92. package/deployments/iotal1-sandbox-local/object-BlockedMessageLib.json +9 -0
  93. package/deployments/iotal1-sandbox-local/object-BlockedMsglibPtbBuilder.json +9 -0
  94. package/deployments/iotal1-sandbox-local/object-Counter.json +9 -0
  95. package/deployments/iotal1-sandbox-local/object-CounterAdminCap.json +9 -0
  96. package/deployments/iotal1-sandbox-local/object-CounterOApp.json +9 -0
  97. package/deployments/iotal1-sandbox-local/object-DVN.json +5 -0
  98. package/deployments/iotal1-sandbox-local/object-DVNCap.json +9 -0
  99. package/deployments/iotal1-sandbox-local/object-DVNFeeLib.json +9 -0
  100. package/deployments/iotal1-sandbox-local/object-EndpointPtbBuilder.json +9 -0
  101. package/deployments/iotal1-sandbox-local/object-EndpointPtbBuilderAdminCap.json +9 -0
  102. package/deployments/iotal1-sandbox-local/object-EndpointV2.json +9 -0
  103. package/deployments/iotal1-sandbox-local/object-EndpointV2AdminCap.json +9 -0
  104. package/deployments/iotal1-sandbox-local/object-Executor.json +5 -0
  105. package/deployments/iotal1-sandbox-local/object-ExecutorCap.json +9 -0
  106. package/deployments/iotal1-sandbox-local/object-ExecutorFeeLib.json +9 -0
  107. package/deployments/iotal1-sandbox-local/object-ExecutorOwnerCap.json +5 -0
  108. package/deployments/iotal1-sandbox-local/object-PackageWhitelistValidator.json +9 -0
  109. package/deployments/iotal1-sandbox-local/object-PriceFeed.json +9 -0
  110. package/deployments/iotal1-sandbox-local/object-PriceFeedOwnerCap.json +9 -0
  111. package/deployments/iotal1-sandbox-local/object-SimpleMessageLib.json +9 -0
  112. package/deployments/iotal1-sandbox-local/object-SimpleMessageLibAdminCap.json +9 -0
  113. package/deployments/iotal1-sandbox-local/object-SmlPtbBuilder.json +9 -0
  114. package/deployments/iotal1-sandbox-local/object-Treasury.json +9 -0
  115. package/deployments/iotal1-sandbox-local/object-TreasuryAdminCap.json +9 -0
  116. package/deployments/iotal1-sandbox-local/object-ULN302.json +9 -0
  117. package/deployments/iotal1-sandbox-local/object-ULN302AdminCap.json +9 -0
  118. package/deployments/iotal1-sandbox-local/object-Uln302PtbBuilder.json +9 -0
  119. package/deployments/iotal1-sandbox-local/object-Uln302Verification.json +9 -0
  120. package/deployments/iotal1-sandbox-local/object-WorkerRegistry.json +9 -0
  121. package/deployments/iotal1-sandbox-local/object-ZroCoinMetadata.json +9 -0
  122. package/deployments/iotal1-sandbox-local/object-ZroTreasuryCap.json +9 -0
  123. package/deployments/iotal1-sandbox-local/package_whitelist_validator.json +113 -0
  124. package/deployments/iotal1-sandbox-local/price_feed.json +98 -0
  125. package/deployments/iotal1-sandbox-local/price_feed_call_types.json +45 -0
  126. package/deployments/iotal1-sandbox-local/ptb_move_call.json +48 -0
  127. package/deployments/iotal1-sandbox-local/simple_message_lib.json +69 -0
  128. package/deployments/iotal1-sandbox-local/simple_msglib_ptb_builder.json +58 -0
  129. package/deployments/iotal1-sandbox-local/treasury.json +97 -0
  130. package/deployments/iotal1-sandbox-local/uln_302.json +87 -0
  131. package/deployments/iotal1-sandbox-local/uln_302_ptb_builder.json +58 -0
  132. package/deployments/iotal1-sandbox-local/uln_common.json +49 -0
  133. package/deployments/iotal1-sandbox-local/utils.json +78 -0
  134. package/deployments/iotal1-sandbox-local/worker_common.json +46 -0
  135. package/deployments/iotal1-sandbox-local/worker_registry.json +58 -0
  136. package/deployments/iotal1-sandbox-local/zro.json +67 -0
  137. package/deployments/iotal1-testnet/blocked_message_lib.json +58 -0
  138. package/deployments/iotal1-testnet/blocked_msglib_ptb_builder.json +58 -0
  139. package/deployments/iotal1-testnet/call.json +46 -0
  140. package/deployments/iotal1-testnet/counter.json +85 -0
  141. package/deployments/iotal1-testnet/dvn.json +49 -0
  142. package/deployments/iotal1-testnet/dvn_call_type.json +45 -0
  143. package/deployments/iotal1-testnet/dvn_fee_lib.json +59 -0
  144. package/deployments/iotal1-testnet/dvn_layerzero.json +56 -0
  145. package/deployments/iotal1-testnet/dvn_ptb_builder.json +45 -0
  146. package/deployments/iotal1-testnet/endpoint_ptb_builder.json +70 -0
  147. package/deployments/iotal1-testnet/endpoint_v2.json +86 -0
  148. package/deployments/iotal1-testnet/executor.json +49 -0
  149. package/deployments/iotal1-testnet/executor_call_type.json +45 -0
  150. package/deployments/iotal1-testnet/executor_fee_lib.json +60 -0
  151. package/deployments/iotal1-testnet/executor_layerzero.json +56 -0
  152. package/deployments/iotal1-testnet/executor_ptb_builder.json +45 -0
  153. package/deployments/iotal1-testnet/layerzero_views.json +46 -0
  154. package/deployments/iotal1-testnet/message_lib_common.json +47 -0
  155. package/deployments/iotal1-testnet/msglib_ptb_builder_call_types.json +45 -0
  156. package/deployments/iotal1-testnet/multi_call.json +45 -0
  157. package/deployments/iotal1-testnet/oapp.json +50 -0
  158. package/deployments/iotal1-testnet/object-BlockedMessageLib.json +9 -0
  159. package/deployments/iotal1-testnet/object-BlockedMsglibPtbBuilder.json +9 -0
  160. package/deployments/iotal1-testnet/object-Counter.json +9 -0
  161. package/deployments/iotal1-testnet/object-CounterAdminCap.json +9 -0
  162. package/deployments/iotal1-testnet/object-CounterOApp.json +9 -0
  163. package/deployments/iotal1-testnet/object-DVN.json +5 -0
  164. package/deployments/iotal1-testnet/object-DVNCap.json +9 -0
  165. package/deployments/iotal1-testnet/object-DVNFeeLib.json +9 -0
  166. package/deployments/iotal1-testnet/object-EndpointPtbBuilder.json +9 -0
  167. package/deployments/iotal1-testnet/object-EndpointPtbBuilderAdminCap.json +9 -0
  168. package/deployments/iotal1-testnet/object-EndpointV2.json +9 -0
  169. package/deployments/iotal1-testnet/object-EndpointV2AdminCap.json +9 -0
  170. package/deployments/iotal1-testnet/object-Executor.json +5 -0
  171. package/deployments/iotal1-testnet/object-ExecutorCap.json +9 -0
  172. package/deployments/iotal1-testnet/object-ExecutorFeeLib.json +9 -0
  173. package/deployments/iotal1-testnet/object-ExecutorOwnerCap.json +5 -0
  174. package/deployments/iotal1-testnet/object-PackageWhitelistValidator.json +9 -0
  175. package/deployments/iotal1-testnet/object-PriceFeed.json +9 -0
  176. package/deployments/iotal1-testnet/object-PriceFeedOwnerCap.json +9 -0
  177. package/deployments/iotal1-testnet/object-SimpleMessageLib.json +9 -0
  178. package/deployments/iotal1-testnet/object-SimpleMessageLibAdminCap.json +9 -0
  179. package/deployments/iotal1-testnet/object-SmlPtbBuilder.json +9 -0
  180. package/deployments/iotal1-testnet/object-Treasury.json +9 -0
  181. package/deployments/iotal1-testnet/object-TreasuryAdminCap.json +9 -0
  182. package/deployments/iotal1-testnet/object-ULN302.json +9 -0
  183. package/deployments/iotal1-testnet/object-ULN302AdminCap.json +9 -0
  184. package/deployments/iotal1-testnet/object-Uln302PtbBuilder.json +9 -0
  185. package/deployments/iotal1-testnet/object-Uln302Verification.json +9 -0
  186. package/deployments/iotal1-testnet/object-WorkerRegistry.json +9 -0
  187. package/deployments/iotal1-testnet/object-ZroCoinMetadata.json +9 -0
  188. package/deployments/iotal1-testnet/object-ZroTreasuryCap.json +9 -0
  189. package/deployments/iotal1-testnet/package_whitelist_validator.json +113 -0
  190. package/deployments/iotal1-testnet/price_feed.json +70 -0
  191. package/deployments/iotal1-testnet/price_feed_call_types.json +45 -0
  192. package/deployments/iotal1-testnet/ptb_move_call.json +48 -0
  193. package/deployments/iotal1-testnet/simple_message_lib.json +69 -0
  194. package/deployments/iotal1-testnet/simple_msglib_ptb_builder.json +58 -0
  195. package/deployments/iotal1-testnet/treasury.json +69 -0
  196. package/deployments/iotal1-testnet/uln_302.json +87 -0
  197. package/deployments/iotal1-testnet/uln_302_ptb_builder.json +58 -0
  198. package/deployments/iotal1-testnet/uln_common.json +49 -0
  199. package/deployments/iotal1-testnet/utils.json +57 -0
  200. package/deployments/iotal1-testnet/worker_common.json +46 -0
  201. package/deployments/iotal1-testnet/worker_registry.json +58 -0
  202. package/deployments/iotal1-testnet/zro.json +67 -0
  203. package/dist/index.cjs +11279 -0
  204. package/dist/index.cjs.map +1 -0
  205. package/dist/index.d.mts +5824 -0
  206. package/dist/index.d.ts +5824 -0
  207. package/dist/index.mjs +11107 -0
  208. package/dist/index.mjs.map +1 -0
  209. package/package.json +68 -0
  210. package/src/bcs/dvn.ts +7 -0
  211. package/src/bcs/endpoint.ts +7 -0
  212. package/src/bcs/executor.ts +27 -0
  213. package/src/bcs/index.ts +8 -0
  214. package/src/bcs/messaging-fee.ts +6 -0
  215. package/src/bcs/move-call.ts +28 -0
  216. package/src/bcs/oapp.ts +14 -0
  217. package/src/bcs/price-feed.ts +21 -0
  218. package/src/bcs/uln.ts +15 -0
  219. package/src/generated/addresses.ts +344 -0
  220. package/src/index.ts +5 -0
  221. package/src/module-manager.ts +360 -0
  222. package/src/modules/call.ts +245 -0
  223. package/src/modules/endpoint.ts +2417 -0
  224. package/src/modules/index.ts +10 -0
  225. package/src/modules/layerzero-views.ts +205 -0
  226. package/src/modules/message-libs/blocked-message-lib.ts +112 -0
  227. package/src/modules/message-libs/index.ts +4 -0
  228. package/src/modules/message-libs/simple-message-lib.ts +270 -0
  229. package/src/modules/message-libs/uln302.ts +827 -0
  230. package/src/modules/oapps/counter.ts +458 -0
  231. package/src/modules/oapps/index.ts +3 -0
  232. package/src/modules/oapps/oapp.ts +744 -0
  233. package/src/modules/ptb-builders/blocked-message-lib-ptb-builder.ts +49 -0
  234. package/src/modules/ptb-builders/dvn-ptb-builder.ts +58 -0
  235. package/src/modules/ptb-builders/endpoint-ptb-builder.ts +520 -0
  236. package/src/modules/ptb-builders/executor-ptb-builder.ts +58 -0
  237. package/src/modules/ptb-builders/index.ts +9 -0
  238. package/src/modules/ptb-builders/package-whitelist-validator.ts +142 -0
  239. package/src/modules/ptb-builders/ptb-builder.ts +357 -0
  240. package/src/modules/ptb-builders/simple-message-lib-ptb-builder.ts +53 -0
  241. package/src/modules/ptb-builders/uln302-ptb-builder.ts +222 -0
  242. package/src/modules/utils.ts +902 -0
  243. package/src/modules/workers/dvn-fee-lib.ts +89 -0
  244. package/src/modules/workers/dvn-layerzero.ts +85 -0
  245. package/src/modules/workers/dvn.ts +1727 -0
  246. package/src/modules/workers/executor-fee-lib.ts +94 -0
  247. package/src/modules/workers/executor-layerzero.ts +79 -0
  248. package/src/modules/workers/executor.ts +1170 -0
  249. package/src/modules/workers/index.ts +10 -0
  250. package/src/modules/workers/price-feed.ts +575 -0
  251. package/src/modules/workers/treasury.ts +295 -0
  252. package/src/modules/workers/worker-registry.ts +110 -0
  253. package/src/modules/zro.ts +94 -0
  254. package/src/resource.ts +104 -0
  255. package/src/sdk.ts +183 -0
  256. package/src/types/dvn.ts +20 -0
  257. package/src/types/endpoint.ts +16 -0
  258. package/src/types/errors.ts +10 -0
  259. package/src/types/executor.ts +23 -0
  260. package/src/types/index.ts +13 -0
  261. package/src/types/layerzero-views.ts +59 -0
  262. package/src/types/message-lib.ts +38 -0
  263. package/src/types/modules.ts +36 -0
  264. package/src/types/move-types.ts +24 -0
  265. package/src/types/oapp.ts +6 -0
  266. package/src/types/options.ts +333 -0
  267. package/src/types/price-feed.ts +21 -0
  268. package/src/types/ptb-builder.ts +29 -0
  269. package/src/types/simulation.ts +8 -0
  270. package/src/utils/argument.ts +198 -0
  271. package/src/utils/index.ts +8 -0
  272. package/src/utils/move-call-object-fetcher.ts +105 -0
  273. package/src/utils/non-sender-object-validator.ts +102 -0
  274. package/src/utils/package-allowlist-validator.ts +134 -0
  275. package/src/utils/ptb-validator.ts +14 -0
  276. package/src/utils/share-object-validator.ts +37 -0
  277. package/src/utils/transaction.ts +157 -0
  278. package/src/utils/type-name.ts +99 -0
  279. package/src/utils/validate-with-details.ts +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/bcs/dvn.ts","../src/bcs/endpoint.ts","../src/bcs/executor.ts","../src/bcs/messaging-fee.ts","../src/bcs/move-call.ts","../src/bcs/oapp.ts","../src/bcs/price-feed.ts","../src/bcs/uln.ts","../src/types/modules.ts","../src/types/errors.ts","../src/types/executor.ts","../src/types/ptb-builder.ts","../src/types/price-feed.ts","../src/types/message-lib.ts","../src/types/move-types.ts","../src/types/layerzero-views.ts","../src/types/endpoint.ts","../src/utils/argument.ts","../src/utils/transaction.ts","../src/utils/package-allowlist-validator.ts","../src/utils/non-sender-object-validator.ts","../src/utils/share-object-validator.ts","../src/utils/move-call-object-fetcher.ts","../src/utils/validate-with-details.ts","../src/utils/type-name.ts","../src/modules/endpoint.ts","../src/modules/message-libs/blocked-message-lib.ts","../src/modules/message-libs/simple-message-lib.ts","../src/modules/message-libs/uln302.ts","../src/modules/workers/dvn.ts","../src/modules/workers/dvn-fee-lib.ts","../src/modules/workers/dvn-layerzero.ts","../src/modules/workers/executor.ts","../src/modules/workers/executor-fee-lib.ts","../src/modules/workers/executor-layerzero.ts","../src/modules/workers/price-feed.ts","../src/modules/workers/treasury.ts","../src/modules/workers/worker-registry.ts","../src/modules/ptb-builders/dvn-ptb-builder.ts","../src/modules/ptb-builders/endpoint-ptb-builder.ts","../src/modules/ptb-builders/executor-ptb-builder.ts","../src/modules/ptb-builders/package-whitelist-validator.ts","../src/modules/ptb-builders/ptb-builder.ts","../src/modules/ptb-builders/simple-message-lib-ptb-builder.ts","../src/modules/ptb-builders/uln302-ptb-builder.ts","../src/modules/ptb-builders/blocked-message-lib-ptb-builder.ts","../src/modules/oapps/counter.ts","../src/modules/oapps/oapp.ts","../src/modules/layerzero-views.ts","../src/modules/call.ts","../src/modules/utils.ts","../src/modules/zro.ts","../src/module-manager.ts","../src/generated/addresses.ts","../src/resource.ts","../src/sdk.ts"],"names":["bcs","Modules","ModelType","MessageLibType","LzTypeName","CallTypeName","tx","result","Transaction","MODULE_NAME","target_fn","placeholderMoveCallCount","Stage"],"mappings":"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","file":"index.mjs","sourcesContent":["import { bcs } from '@iota/iota-sdk/bcs'\n\nexport const DvnDstConfigBcs = bcs.struct('DstConfig', {\n gas: bcs.U256,\n multiplier_bps: bcs.U16,\n floor_margin_usd: bcs.U128,\n})\n","import { bcs } from '@iota/iota-sdk/bcs'\n\n// Timeout struct BCS definition\nexport const TimeoutBcs = bcs.struct('Timeout', {\n expiry: bcs.U64,\n fallback_lib: bcs.Address,\n})\n","import { bcs } from '@iota/iota-sdk/bcs'\n\n// Bytes32 struct (from utils::bytes32)\nexport const Bytes32Bcs = bcs.struct('Bytes32', {\n bytes: bcs.vector(bcs.u8()),\n})\n\n// ULN-302 ExecutorConfig (from uln_302::executor_config)\nexport const ExecutorConfigBcs = bcs.struct('ExecutorConfig', {\n max_message_size: bcs.U64,\n executor: bcs.Address,\n})\n\n// Executor Worker DstConfig (from executor::executor_type)\nexport const DstConfigBcs = bcs.struct('DstConfig', {\n lz_receive_base_gas: bcs.U64,\n lz_compose_base_gas: bcs.U64,\n multiplier_bps: bcs.U16,\n floor_margin_usd: bcs.U128,\n native_cap: bcs.U128,\n})\n\n// Executor Worker NativeDropParams (from executor::executor_type)\nexport const NativeDropParamsBcs = bcs.struct('NativeDropParams', {\n receiver: bcs.Address,\n amount: bcs.U64,\n})\n","import { bcs } from '@iota/iota-sdk/bcs'\n\nexport const MessagingFeeBcs = bcs.struct('MessagingFee', {\n native_fee: bcs.U64,\n zro_fee: bcs.U64,\n})\n","import { bcs } from '@iota/iota-sdk/bcs'\n\n// BCS schemas for MoveCall deserialization\nexport const FunctionBCS = bcs.struct('Function', {\n package: bcs.Address,\n module_name: bcs.string(),\n name: bcs.string(),\n})\n\nexport const ArgumentBCS = bcs.enum('Argument', {\n ID: bcs.vector(bcs.u8()),\n Object: bcs.Address,\n Pure: bcs.vector(bcs.u8()),\n NestedResult: bcs.struct('NestedResult', {\n call_index: bcs.u16(),\n result_index: bcs.u16(),\n }),\n})\n\nexport const MoveCallBCS = bcs.struct('MoveCall', {\n function: FunctionBCS,\n arguments: bcs.vector(ArgumentBCS),\n type_arguments: bcs.vector(bcs.string()), // TypeName serialized as string\n is_builder_call: bcs.bool(),\n result_ids: bcs.vector(bcs.vector(bcs.u8())),\n})\n\nexport const VectorMoveCallBCS = bcs.vector(MoveCallBCS)\n","import { bcs } from '@iota/iota-sdk/bcs'\n\n// OAppInfoV1 struct BCS definition\n// Corresponds to the Move struct defined in oapp_info_v1.move\nexport const OAppInfoV1Bcs = bcs.struct('OAppInfoV1', {\n // Object ID address of the OApp instance\n oapp_object: bcs.Address,\n // Used to populate the MoveCalls to fetch the next nonce that can be executed by an executor\n next_nonce_info: bcs.vector(bcs.u8()),\n // Used to populate the MoveCalls to execute lz_receive by executor\n lz_receive_info: bcs.vector(bcs.u8()),\n // Additional configuration data for custom OApp functionality\n extra_info: bcs.vector(bcs.u8()),\n})\n","import { bcs } from '@iota/iota-sdk/bcs'\n\n// Price struct BCS definition\nexport const PriceBcs = bcs.struct('Price', {\n price_ratio: bcs.U128,\n gas_price_in_unit: bcs.U64,\n gas_per_byte: bcs.U32,\n})\n\n// ArbitrumPriceExt struct BCS definition\nexport const ArbitrumPriceExtBcs = bcs.struct('ArbitrumPriceExt', {\n gas_per_l2_tx: bcs.U64,\n gas_per_l1_call_data_byte: bcs.U32,\n})\n\n// ModelType enum BCS definition\nexport const ModelTypeBcs = bcs.enum('ModelType', {\n DEFAULT: null,\n ARB_STACK: null,\n OP_STACK: null,\n})\n","import { bcs } from '@iota/iota-sdk/bcs'\n\nexport const UlnConfigBcs = bcs.struct('UlnConfig', {\n confirmations: bcs.U64,\n required_dvns: bcs.vector(bcs.Address),\n optional_dvns: bcs.vector(bcs.Address),\n optional_dvn_threshold: bcs.U8,\n})\n\nexport const OAppUlnConfigBcs = bcs.struct('OAppUlnConfig', {\n use_default_confirmations: bcs.Bool,\n use_default_required_dvns: bcs.Bool,\n use_default_optional_dvns: bcs.Bool,\n uln_config: UlnConfigBcs,\n})\n","/**\n * Enum containing all available SDK modules\n * Keys are capitalized, values match the actual module names used in the system\n */\nexport enum Modules {\n // Core modules\n Endpoint = 'endpoint',\n SimpleMessageLib = 'simpleMessageLib',\n BlockedMessageLib = 'blockedMessageLib',\n Uln302 = 'uln302',\n Utils = 'utils',\n Zro = 'zro',\n Call = 'call',\n Treasury = 'treasury',\n LayerZeroViews = 'layerZeroViews',\n PtbBuilder = 'ptbBuilder',\n EndpointPtbBuilder = 'endpointPtbBuilder',\n SimpleMessageLibPtbBuilder = 'simpleMessageLibPtbBuilder',\n BlockedMessageLibPtbBuilder = 'blockedMessageLibPtbBuilder',\n Uln302PtbBuilder = 'uln302PtbBuilder',\n\n // Non-core modules\n Oapp = 'oapp',\n Dvn = 'dvn',\n DvnFeeLib = 'dvnFeeLib',\n DvnLayerZero = 'dvnLayerZero',\n Executor = 'executor',\n ExecutorFeeLib = 'executorFeeLib',\n ExecutorLayerZero = 'executorLayerZero',\n PackageWhitelistValidator = 'packageWhitelistValidator',\n PriceFeed = 'priceFeed',\n Counter = 'counter',\n DvnPtbBuilder = 'dvnPtbBuilder',\n ExecutorPtbBuilder = 'executorPtbBuilder',\n WorkerRegistry = 'workerRegistry',\n}\n","// SDK Error classes\nexport class MoveAbortError extends Error {\n readonly abortCode: number\n constructor(abortCode: number, rawMsg: string) {\n super(`Move abort with code: ${abortCode}. Raw error message: ${rawMsg}`)\n this.abortCode = abortCode\n }\n}\n\nexport class UnclassifiedError extends Error {}\n","// Type definitions for Executor configurations\nexport interface DstConfig {\n lzReceiveBaseGas: bigint\n lzComposeBaseGas: bigint\n multiplierBps: number\n floorMarginUsd: bigint\n nativeCap: bigint\n}\n\nexport interface NativeDropParams {\n receiver: string\n amount: bigint\n}\n\n// refer to packages/layerzero-v2/iota/contracts/workers/executors/executor-fee-lib/sources/types/executor_option.move\nexport const ExecutorOptionType = {\n LZRECEIVE: 1,\n NATIVE_DROP: 2,\n LZCOMPOSE: 3,\n ORDERED_EXECUTION: 4,\n} as const\n\nexport const ALL_EXECUTOR_OPTION_TYPES = Object.values(ExecutorOptionType)\n","// TypeScript interfaces matching the Move structs in move_call.move\nexport interface MoveCall {\n // eslint-disable-next-line @typescript-eslint/ban-types\n function: Function\n arguments: Argument[]\n type_arguments: string[] // TypeName as string\n result_ids: Uint8Array[]\n is_builder_call: boolean\n}\n\nexport interface Function {\n package: string\n module_name: string\n name: string\n}\n\nexport type Argument =\n | { ID: Uint8Array }\n | { Object: string }\n | { Pure: Uint8Array }\n | { NestedResult: [number, number] } // [call_index, result_index]\n\nexport const MAX_BATCH_SIZE = 50\nexport const DEFAULT_SIMULATION_TIMES = 5\n\nexport interface BuilderPlaceholderInfo {\n index: number\n moveCallCount: number\n}\n","// PriceFeed configuration and data interfaces\n\n// Model Types enum - matches Move contract ModelType\nexport enum ModelType {\n DEFAULT = 0,\n ARB_STACK = 1,\n OP_STACK = 2,\n}\n\n// Price struct interface - matches Move contract Price struct\nexport interface Price {\n priceRatio: bigint // u128 in Move (price_ratio)\n gasPriceInUnit: bigint // u64 in Move (gas_price_in_unit)\n gasPerByte: number // u32 in Move (gas_per_byte)\n}\n\n// ArbitrumPriceExt struct interface - matches Move contract ArbitrumPriceExt struct\nexport interface ArbitrumPriceExt {\n gasPerL2Tx: bigint // u64 in Move (gas_per_l2_tx)\n gasPerL1CallDataByte: number // u32 in Move (gas_per_l1_call_data_byte)\n}\n","export enum MessageLibType {\n Send = 0,\n Receive = 1,\n SendAndReceive = 2,\n}\n\n// Configuration type constants\nexport const CONFIG_TYPE = {\n EXECUTOR: 1,\n SEND_ULN: 2,\n RECEIVE_ULN: 3,\n} as const\n\n// Type definitions for ULN configurations\nexport interface ExecutorConfig {\n maxMessageSize: number\n executor: string\n}\n\nexport interface UlnConfig {\n confirmations: bigint\n requiredDvns: string[]\n optionalDvns: string[]\n optionalDvnThreshold: number\n}\n\nexport interface OAppUlnConfig {\n useDefaultConfirmations: boolean\n useDefaultRequiredDvns: boolean\n useDefaultOptionalDvns: boolean\n ulnConfig: UlnConfig\n}\n\nexport interface VersionInfo {\n major: bigint\n minor: number\n endpointVersion: number\n}\n","export enum LzTypeName {\n EndpointQuoteParam = 'EndpointQuoteParam',\n EndpointSendParam = 'EndpointSendParam',\n MessageLibQuoteParam = 'MessageLibQuoteParam',\n MessageLibSendParam = 'MessageLibSendParam',\n MessageLibSetConfigParam = 'MessageLibSetConfigParam',\n MessagingFee = 'MessagingFee',\n MessagingReceipt = 'MessagingReceipt',\n MoveCall = 'MoveCall',\n EndpointLzReceiveParam = 'EndpointLzReceiveParam',\n EndpointLzComposeParam = 'EndpointLzComposeParam',\n CallVoid = 'CallVoid',\n MessageLibSendResult = 'MessageLibSendResult',\n}\n\nexport enum CallTypeName {\n EndpointQuoteCall = 'EndpointQuoteCall',\n EndpointSendCall = 'EndpointSendCall',\n MessageLibSendCall = 'MessageLibSendCall',\n MessageLibQuoteCall = 'MessageLibQuoteCall',\n MessageLibSetConfigCall = 'MessageLibSetConfigCall',\n EndpointLzReceiveCall = 'EndpointLzReceiveCall',\n EndpointLzComposeCall = 'EndpointLzComposeCall',\n}\n","// Endpoint execution states\nexport const EndpointExecutionState = {\n STATE_NOT_EXECUTABLE: 0,\n STATE_VERIFIED_BUT_NOT_EXECUTABLE: 1,\n STATE_EXECUTABLE: 2,\n STATE_EXECUTED: 3,\n} as const\n\n// ULN verification states\nexport const UlnVerificationState = {\n STATE_VERIFYING: 0,\n STATE_VERIFIABLE: 1,\n STATE_VERIFIED: 2,\n STATE_NOT_INITIALIZABLE: 3,\n} as const\n\nexport type EndpointExecutionStateType = (typeof EndpointExecutionState)[keyof typeof EndpointExecutionState]\nexport type UlnVerificationStateType = (typeof UlnVerificationState)[keyof typeof UlnVerificationState]\n\nimport { TransactionArgument } from '@iota/iota-sdk/transactions'\n\n/**\n * Parameters for checking message executability\n */\nexport interface ExecutableParams {\n messagingChannel: string | TransactionArgument\n srcEid: number | TransactionArgument\n sender: Uint8Array | TransactionArgument\n nonce: bigint | TransactionArgument\n}\n\n/**\n * Parameters for checking message initializability\n */\nexport interface InitializableParams {\n messagingChannel: string | TransactionArgument\n srcEid: number | TransactionArgument\n sender: Uint8Array | TransactionArgument\n}\n\n/**\n * Parameters for checking message verifiability by endpoint\n */\nexport interface VerifiableParams {\n messagingChannel: string | TransactionArgument\n srcEid: number | TransactionArgument\n sender: Uint8Array | TransactionArgument\n nonce: bigint | TransactionArgument\n}\n\n/**\n * Parameters for checking ULN verification state\n */\nexport interface UlnVerifiableParams {\n verification: string | TransactionArgument\n messagingChannel: string | TransactionArgument\n packetHeaderBytes: Uint8Array | TransactionArgument\n payloadHash: Uint8Array | TransactionArgument\n}\n","export interface MessagingFee {\n nativeFee: bigint\n zroFee: bigint\n}\n\nexport interface Timeout {\n expiry: bigint\n fallbackLib: string\n}\n/**\n * LayerZero protocol version constants\n */\n\nexport const OAppInfoVersion = { VERSION_1: 1, VERSION_2: 2 } as const\nexport const LzReceiveVersion = { VERSION_1: 1 } as const\nexport const LzComposeVersion = { VERSION_1: 1 } as const\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { Transaction, TransactionArgument } from '@iota/iota-sdk/transactions'\n\nimport { Utils } from '../modules'\n\n/**\n * Type guard to check if a value is already a TransactionArgument\n * TransactionArgument can be:\n * 1. Argument object with $kind property\n * 2. Synchronous function: (tx: Transaction) => Argument\n * 3. Asynchronous function: AsyncTransactionThunk\n */\nexport function isTransactionArgument(value: unknown): value is TransactionArgument {\n // Check if it's a function (sync or async)\n if (typeof value === 'function') {\n return true\n }\n\n // Check if it's an Argument object\n if (value !== null && typeof value === 'object' && '$kind' in value) {\n const obj = value as { $kind: string }\n return (\n obj.$kind === 'GasCoin' || obj.$kind === 'Input' || obj.$kind === 'Result' || obj.$kind === 'NestedResult'\n )\n }\n\n return false\n}\n\n/**\n * Convert value to TransactionArgument using a simple converter function\n * @param value - The value to convert (primitive type or TransactionArgument)\n * @param converter - Function to convert primitive type to TransactionArgument\n * @returns TransactionArgument\n */\nexport function asArg<T>(\n value: T | TransactionArgument,\n converter: (val: T) => TransactionArgument\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value\n }\n return converter(value)\n}\n\n/**\n * Convert value to TransactionArgument using a converter that requires Transaction\n * @param tx - The transaction\n * @param value - The value to convert\n * @param converter - Function to convert value using transaction\n * @returns TransactionArgument\n */\nexport function asArgWithTx<T>(\n tx: Transaction,\n value: T | TransactionArgument,\n converter: (tx: Transaction, val: T) => TransactionArgument\n): TransactionArgument {\n if (isTransactionArgument(value)) {\n return value\n }\n return converter(tx, value)\n}\n\n/**\n * Async version: Convert value to TransactionArgument using an async converter that requires Transaction\n * @param tx - The transaction\n * @param value - The value to convert\n * @param converter - Async function to convert value using transaction\n * @returns Promise<TransactionArgument>\n */\nexport async function asArgWithTxAsync<T>(\n tx: Transaction,\n value: T | TransactionArgument,\n converter: (tx: Transaction, val: T) => Promise<TransactionArgument>\n): Promise<TransactionArgument> {\n if (isTransactionArgument(value)) {\n return value\n }\n return converter(tx, value)\n}\n\n// ===== Simplified conversion methods =====\n\n/**\n * Convert to object reference TransactionArgument\n */\nexport function asObject(tx: Transaction, value: string | TransactionArgument): TransactionArgument {\n return asArg(value, (val) => tx.object(val))\n}\n\n/**\n * Convert to address TransactionArgument\n */\nexport function asAddress(tx: Transaction, value: string | TransactionArgument): TransactionArgument {\n return asArg(value, (val) => tx.pure.address(val))\n}\n\n/**\n * Convert to u8 TransactionArgument\n */\nexport function asU8(tx: Transaction, value: number | TransactionArgument): TransactionArgument {\n return asArg(value, (val) => tx.pure.u8(val))\n}\n\n/**\n * Convert to u16 TransactionArgument\n */\nexport function asU16(tx: Transaction, value: number | TransactionArgument): TransactionArgument {\n return asArg(value, (val) => tx.pure.u16(val))\n}\n\n/**\n * Convert to u32 TransactionArgument\n */\nexport function asU32(tx: Transaction, value: number | TransactionArgument): TransactionArgument {\n return asArg(value, (val) => tx.pure.u32(val))\n}\n\n/**\n * Convert to u64 TransactionArgument (supports bigint, number, or string)\n */\nexport function asU64(tx: Transaction, value: bigint | number | string | TransactionArgument): TransactionArgument {\n return asArg(value, (val) => tx.pure.u64(val))\n}\n\n/**\n * Convert to u128 TransactionArgument (supports bigint, number, or string)\n */\nexport function asU128(tx: Transaction, value: bigint | number | string | TransactionArgument): TransactionArgument {\n return asArg(value, (val) => tx.pure.u128(val))\n}\n\n/**\n * Convert to u256 TransactionArgument (supports bigint, number, or string)\n */\nexport function asU256(tx: Transaction, value: bigint | number | string | TransactionArgument): TransactionArgument {\n return asArg(value, (val) => tx.pure.u256(val))\n}\n\n/**\n * Convert Uint8Array to Bytes32 using moduleManager's fromBytesMoveCall\n * @param tx - The transaction\n * @param value - Uint8Array or TransactionArgument\n * @param utils - utils Module\n * @returns TransactionArgument\n */\nexport function asBytes32(tx: Transaction, value: Uint8Array | TransactionArgument, utils: Utils): TransactionArgument {\n return asArgWithTx(tx, value, (tx, bytes) => utils.fromBytesMoveCall(tx, bytes))\n}\n\n/**\n * Convert Uint8Array to serialized bytes vector TransactionArgument\n * @param tx - The transaction\n * @param value - Uint8Array or TransactionArgument\n * @returns TransactionArgument\n */\nexport function asBytes(tx: Transaction, value: Uint8Array | TransactionArgument): TransactionArgument {\n return asArg(value, (val) => tx.pure(bcs.vector(bcs.u8()).serialize(val)))\n}\n/**\n * Convert Uint8Array Vector to serialized bytes vector TransactionArgument\n * @param tx - The transaction\n * @param value - Uint8Array or TransactionArgument\n * @returns TransactionArgument\n */\nexport function asBytesVector(tx: Transaction, value: Uint8Array[] | TransactionArgument): TransactionArgument {\n return asArg(value, (val) => tx.pure(bcs.vector(bcs.vector(bcs.u8())).serialize(val)))\n}\n\n/**\n * Convert string to string TransactionArgument\n * @param tx - The transaction\n * @param value - string or TransactionArgument\n * @returns TransactionArgument\n */\nexport function asString(tx: Transaction, value: string | TransactionArgument): TransactionArgument {\n return asArg(value, (val) => tx.pure.string(val))\n}\n\n/**\n * Convert address array to serialized vector<address> TransactionArgument\n * @param tx - The transaction\n * @param value - string[] or TransactionArgument\n * @returns TransactionArgument\n */\nexport function asAddressVector(tx: Transaction, value: string[] | TransactionArgument): TransactionArgument {\n return asArg(value, (val) => tx.pure(bcs.vector(bcs.Address).serialize(val)))\n}\n\n/**\n * Convert boolean to boolean TransactionArgument\n * @param tx - The transaction\n * @param value - boolean or TransactionArgument\n * @returns TransactionArgument\n */\nexport function asBool(tx: Transaction, value: boolean | TransactionArgument): TransactionArgument {\n return asArg(value, (val) => tx.pure.bool(val))\n}\n","import { IotaClient, IotaExecutionResult, IotaTransactionBlockResponse } from '@iota/iota-sdk/client'\nimport { Keypair } from '@iota/iota-sdk/cryptography'\nimport { Ed25519Keypair } from '@iota/iota-sdk/keypairs/ed25519'\nimport { Transaction } from '@iota/iota-sdk/transactions'\nimport { fromBase64 } from '@iota/iota-sdk/utils'\n\nimport { MoveAbortError, SimulateResult, UnclassifiedError } from '../types'\n\nexport async function simulateTransaction(\n iotaClient: IotaClient,\n tx: Transaction,\n sender?: string\n): Promise<SimulateResult[]> {\n const resolvedSender = determineSenderAddress(tx, sender)\n const { results, error } = await iotaClient.devInspectTransactionBlock({\n transactionBlock: tx,\n sender: resolvedSender,\n })\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (error != undefined && error != null) {\n throw handleError(error)\n }\n if (results === undefined || results === null) {\n throw new Error('No results found')\n }\n const lastCommandResults: IotaExecutionResult = results[results.length - 1]\n\n if (lastCommandResults.returnValues === undefined) {\n throw new Error('No return values found')\n }\n return lastCommandResults.returnValues.map((result) => {\n return {\n value: typeof result[0] === 'string' ? fromBase64(result[0]) : new Uint8Array(result[0]),\n type: result[1],\n }\n })\n}\n\nexport async function simulateTransactionMultiResult(\n iotaClient: IotaClient,\n tx: Transaction,\n resultIndex: number[],\n sender?: string\n): Promise<SimulateResult[][]> {\n const resolvedSender = determineSenderAddress(tx, sender)\n const { results, error } = await iotaClient.devInspectTransactionBlock({\n transactionBlock: tx,\n sender: resolvedSender,\n })\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (error != undefined && error != null) {\n throw handleError(error)\n }\n if (results === undefined || results === null) {\n throw new Error('No results found')\n }\n\n const selectedResults: IotaExecutionResult[] = resultIndex.map((idx) => {\n return results[idx]\n })\n\n return selectedResults.map((result) => {\n if (result.returnValues === undefined) {\n throw new Error('No return values found')\n }\n return result.returnValues.map((result) => {\n return {\n value: typeof result[0] === 'string' ? fromBase64(result[0]) : new Uint8Array(result[0]),\n type: result[1],\n }\n })\n })\n}\n\nexport async function validateTransaction(\n client: IotaClient,\n signer: Keypair,\n tx: Transaction\n): Promise<IotaTransactionBlockResponse> {\n tx.setSenderIfNotSet(signer.getPublicKey().toIotaAddress())\n const result = await client.signAndExecuteTransaction({\n signer,\n transaction: tx,\n options: {\n showEffects: true,\n showObjectChanges: true,\n showEvents: true,\n },\n })\n\n if (result.effects?.status.status !== 'success') {\n throw new Error(result.effects?.status.error)\n }\n\n await client.waitForTransaction({ digest: result.digest })\n return result\n}\n\n/**\n * Execute simulate using a moveCall function\n * @param client - The Iota client\n * @param moveCallFn - Function that adds moveCall to the transaction (supports both sync and async, any return type)\n * @param parser - Function to parse the result\n * @returns The parsed result\n */\nexport async function executeSimulate<T>(\n client: IotaClient,\n moveCallFn: (tx: Transaction) => unknown,\n parser: (result: { value: Uint8Array }[]) => T\n): Promise<T> {\n const tx = new Transaction()\n await moveCallFn(tx)\n const result = await simulateTransaction(client, tx)\n return parser(result)\n}\n\n/**\n * Determines the appropriate sender address using fallback hierarchy:\n * 1. Use provided sender if available\n * 2. Use transaction's existing sender if valid\n * 3. Generate a random sender as last resort\n *\n * @param tx - The transaction to get sender from\n * @param preferredSender - Optional sender address to prioritize\n * @returns The determined sender address\n */\nfunction determineSenderAddress(tx: Transaction, preferredSender?: string): string {\n //eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n if (preferredSender) return preferredSender\n\n const existingSender = tx.getData().sender\n if (typeof existingSender === 'string') return existingSender\n\n return Ed25519Keypair.generate().toIotaAddress()\n}\n\nexport function handleError(e: string): unknown {\n if (e.includes('ExecutionError')) {\n const majorStatusMatch = e.match(/major_status:\\s([A-Z_]+)/)\n if (majorStatusMatch !== null) {\n const major_status = majorStatusMatch[1]\n if (major_status === 'ABORTED') {\n const subStatusMatch = e.match(/sub_status:\\sSome\\((\\d+)\\)/)\n if (subStatusMatch === null) {\n return new MoveAbortError(Number.NEGATIVE_INFINITY, e)\n } else {\n return new MoveAbortError(Number(subStatusMatch[1]), e)\n }\n }\n } else {\n return new UnclassifiedError(e)\n }\n }\n return new Error(e)\n}\n","import { MoveCallWithObjectDetails } from './move-call-object-fetcher'\nimport { IPTBValidator } from './ptb-validator'\nimport { PackageWhitelistValidator as PackageWhitelistSDK } from '../modules/ptb-builders/package-whitelist-validator'\n\n/**\n * PackageAllowlistValidator ensures all function calls and objects belong to allowlisted packages\n * This validator checks that:\n * 1. All function calls target approved packages\n * 2. All object arguments come from approved packages\n *\n * If local packageWhitelist is empty, it will use the PTB whitelist contract for validation\n * If local packageWhitelist is provided, it will use only the local whitelist (contract is ignored)\n */\nexport class PackageAllowlistValidator implements IPTBValidator {\n private packageWhitelist: Set<string>\n private validator?: PackageWhitelistSDK\n\n constructor(packageWhitelist: string[] = [], validator?: PackageWhitelistSDK) {\n if (packageWhitelist.length == 0 && validator == null) {\n throw new Error('PackageAllowlistValidator requires either a packageWhitelist or a validator')\n }\n this.packageWhitelist = new Set(packageWhitelist)\n this.validator = validator\n }\n\n /**\n * Validates that all function calls and object arguments belong to whitelisted packages\n * @param moveCallsWithDetails - Array of move calls with object details\n * @throws Error if any function call or object belongs to a non-whitelisted package\n */\n async validate(moveCallsWithDetails: MoveCallWithObjectDetails[]): Promise<void> {\n const allPackages = new Set<string>()\n\n // Collect packages from function calls\n for (const { moveCall } of moveCallsWithDetails) {\n const packageId = moveCall.function.package\n if (packageId === '') {\n throw new Error('Move call package is missing')\n }\n allPackages.add(packageId)\n }\n\n // Collect packages from objects\n for (const { objectDetails } of moveCallsWithDetails) {\n for (const [objectId, objectResponse] of objectDetails) {\n if (!objectResponse.data) {\n throw new Error(`Object ${objectId} not found`)\n }\n\n const packageId = this.extractPackageIdFromType(objectResponse.data.type)\n if (packageId == null) {\n throw new Error(`Could not extract package ID from object ${objectId}`)\n }\n allPackages.add(packageId)\n }\n }\n\n // Validate all packages at once\n const isAllValid = await this.validatePackages(Array.from(allPackages))\n // Check result - if any package failed, throw error\n if (!isAllValid) {\n throw new Error(\n `One or more packages are not allowlisted. Packages: [${Array.from(allPackages).join(', ')}]`\n )\n }\n }\n\n /**\n * Validate multiple packages at once\n * @param packages - Array of package IDs to validate\n * @returns Object mapping package ID to validation result\n */\n private async validatePackages(packages: string[]): Promise<boolean> {\n if (packages.length === 0) {\n return true\n }\n // If custom whitelist is provided, use it first\n if (this.packageWhitelist.size > 0) {\n // Check if ALL packages are in whitelist - if any fails, return false\n for (const packageId of packages) {\n if (!this.packageWhitelist.has(packageId)) {\n return false\n }\n }\n return true\n } else {\n // Use the contract's validate function to validate all packages at once\n try {\n return await this.validator!.validate(packages)\n } catch (error) {\n console.warn(`Failed to check whitelist:`, error)\n return false\n }\n }\n }\n\n /**\n * Extracts package ID from object type string\n * Object types are in format: \"packageId::module::struct<generics>\"\n * @param objectType - The object type string\n * @returns The package ID or null if extraction fails\n */\n private extractPackageIdFromType(objectType: string | null | undefined): string | null {\n if (objectType == null) {\n return null\n }\n\n // Object type format: \"0x123abc::module_name::struct_name<T1, T2>\"\n // We want to extract the package ID (0x123abc)\n const parts = objectType.split('::')\n if (parts.length < 2) {\n return null\n }\n\n const packageId = parts[0]\n\n // Validate that it looks like a package ID (starts with 0x and has hex characters)\n if (!packageId.startsWith('0x') || packageId.length < 3) {\n return null\n }\n\n return packageId\n }\n\n /**\n * Get available packages for error messages\n */\n private getAvailablePackagesList(): string {\n if (this.packageWhitelist.size > 0) {\n return Array.from(this.packageWhitelist).join(', ')\n }\n return 'contract whitelist'\n }\n}\n","import { ObjectOwner } from '@iota/iota-sdk/client'\n\nimport { MoveCallWithObjectDetails } from './move-call-object-fetcher'\nimport { IPTBValidator } from './ptb-validator'\n\n/**\n * NonSenderObjectValidator ensures objects are not owned by the transaction sender\n *\n * In Iota, this validator checks that objects are:\n * - Shared: globally accessible, mutations require consensus\n * - Immutable: can't change after creation\n * - Owned by another address (not the sender)\n *\n * This prevents the sender from using their own owned objects in the transaction\n */\nexport class NonSenderObjectValidator implements IPTBValidator {\n private sender: string\n\n constructor(sender: string) {\n this.sender = sender\n }\n\n /**\n * Validates that objects are not owned by the sender\n * @param moveCallsWithDetails - Array of move calls with object details\n * @throws Error if any object is owned by the sender\n */\n validate(moveCallsWithDetails: MoveCallWithObjectDetails[]): void {\n for (const { objectDetails } of moveCallsWithDetails) {\n for (const [objectId, objectResponse] of objectDetails) {\n const owner = objectResponse.data?.owner\n if (owner == null) {\n throw new Error(`Object ${objectId} has no owner`)\n }\n // Validate that object is not owned by the sender\n if (!this.isValidOwnership(owner)) {\n const ownerType = this.getOwnershipType(owner)\n throw new Error(\n `Object ${objectId} is owned by the sender (${this.sender}). ` +\n `Only Shared, Immutable, or objects owned by other addresses are allowed. ` +\n `Current ownership: ${ownerType}`\n )\n }\n }\n }\n }\n\n /**\n * Checks if the ownership is valid (not owned by sender)\n * @param owner - The object owner to check\n * @returns true if ownership is valid (Shared, Immutable, or owned by another address)\n */\n private isValidOwnership(owner: ObjectOwner): boolean {\n // Shared objects are valid\n if (typeof owner === 'object' && 'Shared' in owner) {\n return true\n }\n\n // Immutable objects are valid\n if (owner === 'Immutable') {\n return true\n }\n\n // Objects owned by another address are valid\n if (typeof owner === 'object' && 'AddressOwner' in owner && owner.AddressOwner !== this.sender) {\n return true\n }\n\n // Objects owned by another object are valid\n if (typeof owner === 'object' && 'ObjectOwner' in owner) {\n return true\n }\n\n // If owned by sender, it's invalid\n return false\n }\n\n /**\n * Gets a human-readable description of the ownership type\n * @param owner - The object owner\n * @returns String description of ownership type\n */\n private getOwnershipType(owner: ObjectOwner): string {\n if (typeof owner === 'object' && 'Shared' in owner) {\n return `Shared (initial_shared_version: ${owner.Shared.initial_shared_version})`\n }\n\n if (owner === 'Immutable') {\n return 'Immutable'\n }\n\n if (typeof owner === 'object' && 'AddressOwner' in owner) {\n return `AddressOwner: ${owner.AddressOwner}`\n }\n\n if (typeof owner === 'object' && 'ObjectOwner' in owner) {\n return `ObjectOwner: ${owner.ObjectOwner}`\n }\n\n return 'Unknown ownership type'\n }\n}\n","import { ObjectOwner } from '@iota/iota-sdk/client'\n\nimport { MoveCallWithObjectDetails } from './move-call-object-fetcher'\nimport { IPTBValidator } from './ptb-validator'\n\n/**\n * ShareObjectValidator ensures all object arguments are Shared or Immutable\n * This is the default validator for PTB operations\n */\nexport class ShareObjectValidator implements IPTBValidator {\n /**\n * Validates move calls with pre-fetched object details\n * @param moveCallsWithDetails - Array of move calls with object details\n * @throws Error if any object is not Shared/Immutable\n */\n validate(moveCallsWithDetails: MoveCallWithObjectDetails[]): void {\n for (const { objectDetails } of moveCallsWithDetails) {\n for (const [objectId, objectResponse] of objectDetails) {\n if (objectResponse.data?.owner == null) {\n throw new Error(`Object ${objectId} does not have owner`)\n }\n if (!this.isSharedOrImmutable(objectResponse.data.owner)) {\n throw new Error(`Object ${objectId} is not Shared/Immutable`)\n }\n }\n }\n }\n\n /**\n * Checks if an object owner is Shared or Immutable\n * @param owner - The object owner to check\n * @returns true if the owner is Shared or Immutable, false otherwise\n */\n protected isSharedOrImmutable(owner: ObjectOwner): boolean {\n return (typeof owner === 'object' && 'Shared' in owner) || owner === 'Immutable'\n }\n}\n","import { IotaClient, IotaObjectResponse } from '@iota/iota-sdk/client'\n\nimport { MAX_BATCH_SIZE, MoveCall } from '../types'\n\n/**\n * Represents a move call with its associated object details\n */\nexport interface MoveCallWithObjectDetails {\n moveCall: MoveCall\n objectDetails: Map<string, IotaObjectResponse>\n}\n\n/**\n * MoveCallObjectFetcher fetches object details for move calls once\n * and provides them to validators to avoid multiple API calls\n */\nexport class MoveCallObjectFetcher {\n private client: IotaClient\n private batchSize: number\n\n constructor(client: IotaClient, batchSize: number = MAX_BATCH_SIZE) {\n this.client = client\n this.batchSize = batchSize\n }\n\n /**\n * Fetches object details for all objects referenced in move calls\n * @param moveCalls - Array of move calls to fetch object details for\n * @param options - Options for what object data to fetch\n * @returns Array of move calls with their associated object details\n */\n async fetchObjectDetails(\n moveCalls: MoveCall[],\n options: {\n showOwner?: boolean\n showType?: boolean\n showContent?: boolean\n showBcs?: boolean\n showDisplay?: boolean\n showStorageRebate?: boolean\n } = {}\n ): Promise<MoveCallWithObjectDetails[]> {\n // Extract all unique object IDs from move calls\n const objectIdSet = new Set<string>()\n for (const moveCall of moveCalls) {\n for (const arg of moveCall.arguments) {\n if ('Object' in arg) {\n objectIdSet.add(arg.Object)\n }\n }\n }\n\n const objectIds = Array.from(objectIdSet)\n if (objectIds.length === 0) {\n // No objects to fetch, return move calls with empty object details\n return moveCalls.map((moveCall) => ({\n moveCall,\n objectDetails: new Map<string, IotaObjectResponse>(),\n }))\n }\n\n // Validate batch size\n if (this.batchSize > MAX_BATCH_SIZE || this.batchSize < 1) {\n throw new Error(`batchSize must be between 1 and ${MAX_BATCH_SIZE}`)\n }\n\n // Fetch all objects in batches\n const objectDetailsMap = new Map<string, IotaObjectResponse>()\n\n for (let i = 0; i < objectIds.length; i += this.batchSize) {\n const batch = objectIds.slice(i, i + this.batchSize)\n const objects = await this.client.multiGetObjects({\n ids: batch,\n options,\n })\n\n // Map object responses to their IDs\n objects.forEach((object, index) => {\n const objectId = batch[index]\n objectDetailsMap.set(objectId, object)\n })\n }\n\n // Create move calls with object details\n return moveCalls.map((moveCall) => {\n // Get object details for this specific move call\n const moveCallObjectDetails = new Map<string, IotaObjectResponse>()\n\n for (const arg of moveCall.arguments) {\n if ('Object' in arg) {\n const objectId = arg.Object\n const objectDetail = objectDetailsMap.get(objectId)\n if (objectDetail) {\n moveCallObjectDetails.set(objectId, objectDetail)\n }\n }\n }\n\n return {\n moveCall,\n objectDetails: moveCallObjectDetails,\n }\n })\n }\n}\n","import { IotaClient } from '@iota/iota-sdk/client'\n\nimport { MoveCallObjectFetcher } from './move-call-object-fetcher'\nimport { IPTBValidator, ObjectFetchOptions } from './ptb-validator'\nimport { MAX_BATCH_SIZE, MoveCall } from '../types'\n\n/**\n * Validates move calls using multiple validators with a single object fetch\n * @param client - IotaClient instance\n * @param moveCalls - Array of move calls to validate\n * @param validators - Array of validators to run\n * @param options - Options for what object data to fetch\n * @param batchSize - Batch size for object fetching\n */\nexport async function validateWithDetails(\n client: IotaClient,\n moveCalls: MoveCall[],\n validators: IPTBValidator[],\n sender?: string,\n userOptions: ObjectFetchOptions = {},\n batchSize: number = MAX_BATCH_SIZE\n): Promise<void> {\n if (validators.length === 0) {\n return // No validators to run\n }\n\n // Default to fetching all common options, user can override\n const defaultOptions: ObjectFetchOptions = {\n showOwner: true,\n showType: true,\n showContent: false,\n showBcs: false,\n showDisplay: false,\n showStorageRebate: false,\n }\n\n // Merge user options with defaults (user options take precedence)\n const finalOptions = { ...defaultOptions, ...userOptions }\n\n // Fetch object details once\n const objectFetcher = new MoveCallObjectFetcher(client, batchSize)\n const moveCallsWithDetails = await objectFetcher.fetchObjectDetails(moveCalls, finalOptions)\n // Run all validators with the same object details\n for (const validator of validators) {\n const result = validator.validate(moveCallsWithDetails, sender)\n if (result instanceof Promise) {\n await result\n }\n }\n}\n","import sha3 from 'js-sha3'\n\nimport { ModuleManager } from '../module-manager'\nimport { CallTypeName, LzTypeName, Modules } from '../types'\n\n// Predefined type names\nconst TYPE_CONFIG = {\n [LzTypeName.EndpointQuoteParam]: { pkg: Modules.Endpoint, module: 'endpoint_quote', type: 'QuoteParam' },\n [LzTypeName.EndpointSendParam]: { pkg: Modules.Endpoint, module: 'endpoint_send', type: 'SendParam' },\n [LzTypeName.MessageLibQuoteParam]: { pkg: Modules.Endpoint, module: 'message_lib_quote', type: 'QuoteParam' },\n [LzTypeName.MessageLibSendParam]: { pkg: Modules.Endpoint, module: 'message_lib_send', type: 'SendParam' },\n [LzTypeName.MessageLibSendResult]: { pkg: Modules.Endpoint, module: 'message_lib_send', type: 'SendResult' },\n [LzTypeName.MessageLibSetConfigParam]: {\n pkg: Modules.Endpoint,\n module: 'message_lib_set_config',\n type: 'SetConfigParam',\n },\n [LzTypeName.MessagingFee]: { pkg: Modules.Endpoint, module: 'messaging_fee', type: 'MessagingFee' },\n [LzTypeName.MessagingReceipt]: { pkg: Modules.Endpoint, module: 'messaging_receipt', type: 'MessagingReceipt' },\n [LzTypeName.EndpointLzReceiveParam]: { pkg: Modules.Endpoint, module: 'lz_receive', type: 'LzReceiveParam' },\n [LzTypeName.EndpointLzComposeParam]: { pkg: Modules.Endpoint, module: 'lz_compose', type: 'LzComposeParam' },\n [LzTypeName.MoveCall]: { pkg: Modules.Call, module: 'move_call', type: 'MoveCall' },\n [LzTypeName.CallVoid]: { pkg: Modules.Call, module: 'call', type: 'Void' },\n} as const\n\n// Call type configuration\nconst CALL_TYPE_CONFIG = {\n [CallTypeName.EndpointQuoteCall]: { param: LzTypeName.EndpointQuoteParam, result: LzTypeName.MessagingFee },\n [CallTypeName.EndpointSendCall]: { param: LzTypeName.EndpointSendParam, result: LzTypeName.MessagingReceipt },\n [CallTypeName.MessageLibQuoteCall]: { param: LzTypeName.MessageLibQuoteParam, result: LzTypeName.MessagingFee },\n [CallTypeName.MessageLibSendCall]: {\n param: LzTypeName.MessageLibSendParam,\n result: LzTypeName.MessageLibSendResult,\n },\n [CallTypeName.MessageLibSetConfigCall]: { param: LzTypeName.MessageLibSetConfigParam, result: LzTypeName.CallVoid },\n [CallTypeName.EndpointLzReceiveCall]: { param: LzTypeName.EndpointLzReceiveParam, result: LzTypeName.CallVoid },\n [CallTypeName.EndpointLzComposeCall]: { param: LzTypeName.EndpointLzComposeParam, result: LzTypeName.CallVoid },\n} as const\n\nexport function getTypeName(moduleManager: ModuleManager, type: LzTypeName | CallTypeName): string {\n // Handle simple types\n if (type in TYPE_CONFIG) {\n const config = TYPE_CONFIG[type as keyof typeof TYPE_CONFIG]\n const { packageId } = moduleManager.getModule<{ packageId: string }>(config.pkg)\n return buildTypeName(packageId, config.module, config.type)\n }\n\n // Handle Call types\n if (type in CALL_TYPE_CONFIG) {\n const callConfig = CALL_TYPE_CONFIG[type as keyof typeof CALL_TYPE_CONFIG]\n const paramType = getTypeName(moduleManager, callConfig.param)\n const resultType = getTypeName(moduleManager, callConfig.result)\n return buildCallTypeName(moduleManager.getCall().packageId, paramType, resultType)\n }\n\n throw new Error(`Unknown type name: ${JSON.stringify(type)}`)\n}\n\n/**\n * Normalizes a Iota package ID with configurable formatting options\n * @param packageId - The package ID to normalize (with or without 0x prefix)\n * @param includePrefix - Whether to include the '0x' prefix in the result (default: false)\n * @param trimLeadingZeros - Whether to remove leading zeros (default: true)\n * @returns The normalized package ID\n *\n * @example\n * normalizeIotaPackageId('0x0001abc', false, true) // '1abc'\n * normalizeIotaPackageId('0x0001abc', true, true) // '0x1abc'\n * normalizeIotaPackageId('0x0001abc', true, false) // '0x0001abc'\n */\nexport function normalizeIotaPackageId(packageId: string, includePrefix = false, trimLeadingZeros = false): string {\n // Remove 0x prefix if present\n let normalized = packageId.startsWith('0x') ? packageId.slice(2) : packageId\n\n // Trim leading zeros if requested\n if (trimLeadingZeros) {\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n normalized = normalized.replace(/^0+/, '') || '0'\n }\n\n // Add prefix back if requested\n return includePrefix ? `0x${normalized}` : normalized\n}\n\nexport function callId(moduleManager: ModuleManager, type: CallTypeName): string {\n return sha3.keccak_256(Buffer.from(getTypeName(moduleManager, type)))\n}\n\n// === Internal Functions ===\n\n// Helper function: build basic type name\nfunction buildTypeName(packageId: string, module: string, type: string): string {\n return `${normalizeIotaPackageId(packageId)}::${module}::${type}`\n}\n\n// Helper function: build Call type name\nfunction buildCallTypeName(packageId: string, paramType: string, resultType: string): string {\n return `${normalizeIotaPackageId(packageId)}::call::Call<${paramType},${resultType}>`\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { MessagingFeeBcs, TimeoutBcs } from '../bcs'\nimport { ModuleManager } from '../module-manager'\nimport {\n CallTypeName,\n DEFAULT_SIMULATION_TIMES,\n LzTypeName,\n MessageLibType,\n MessagingFee,\n MoveCall,\n ObjectOptions,\n Timeout,\n} from '../types'\nimport {\n asAddress,\n asArgWithTx,\n asBytes,\n asBytes32,\n asObject,\n asString,\n asU16,\n asU32,\n asU64,\n executeSimulate,\n simulateTransaction,\n} from '../utils'\nimport { PackageAllowlistValidator } from '../utils/package-allowlist-validator'\nimport { IPTBValidator } from '../utils/ptb-validator'\nimport { ShareObjectValidator } from '../utils/share-object-validator'\nimport { callId, getTypeName } from '../utils/type-name'\nimport { validateWithDetails } from '../utils/validate-with-details'\n\nconst MODULE_NAME = 'endpoint_v2'\n\nexport const EndpointErrorCode = {\n // MessageLibManager related errors (with MessageLibManager_ prefix)\n MessageLibManager_EAlreadyRegistered: 1,\n MessageLibManager_EDefaultReceiveLibUnavailable: 2,\n MessageLibManager_EDefaultSendLibUnavailable: 3,\n MessageLibManager_EInvalidAddress: 4,\n MessageLibManager_EInvalidBounds: 5,\n MessageLibManager_EInvalidExpiry: 6,\n MessageLibManager_EInvalidReceiveLib: 7,\n MessageLibManager_EOnlyNonDefaultLib: 8,\n MessageLibManager_EOnlyReceiveLib: 9,\n MessageLibManager_EOnlyRegisteredLib: 10,\n MessageLibManager_EOnlySendLib: 11,\n MessageLibManager_ESameValue: 12,\n\n MessagingChannel_EAlreadyInitialized: 1,\n MessagingChannel_EInsufficientNativeFee: 2,\n MessagingChannel_EInsufficientZroFee: 3,\n MessagingChannel_EInvalidNonce: 4,\n MessagingChannel_EInvalidOApp: 5,\n MessagingChannel_EInvalidPayloadHash: 6,\n MessagingChannel_ENotSending: 7,\n MessagingChannel_EPathNotVerifiable: 8,\n MessagingChannel_EPayloadHashNotFound: 9,\n MessagingChannel_ESendReentrancy: 10,\n MessagingChannel_EUninitializedChannel: 11,\n\n // MessagingComposer related errors (with MessagingComposer_ prefix)\n MessagingComposer_EComposeExists: 1,\n MessagingComposer_EComposeMessageMismatch: 2,\n MessagingComposer_EComposeNotFound: 3,\n MessagingComposer_EComposerNotRegistered: 4,\n MessagingComposer_EComposerRegistered: 5,\n // OAppRegistry related errors (with OAppRegistry_ prefix)\n OAppRegistry_EOAppNotRegistered: 1,\n OAppRegistry_EOAppRegistered: 2,\n\n // Endpoint related errors (with Endpoint_ prefix)\n Endpoint_EAlreadyInitialized: 1,\n Endpoint_EInvalidEid: 2,\n Endpoint_ENotInitialized: 3,\n Endpoint_ERefundAddressNotFound: 4,\n Endpoint_EUnauthorizedOApp: 5,\n Endpoint_EUnauthorizedSendLibrary: 6,\n} as const\n\nexport class Endpoint {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Set Functions ===\n\n /**\n * Initialize the endpoint with an Endpoint ID (EID)\n * @param tx - The transaction to add the move call to\n * @param eid - The endpoint ID to initialize or transaction argument\n */\n initEidMoveCall(tx: Transaction, eid: number | TransactionArgument): void {\n tx.moveCall({\n target: this.#target('init_eid'),\n arguments: [tx.object(this.objects.endpointV2), tx.object(this.objects.endpointAdminCap), asU32(tx, eid)],\n })\n }\n\n // ===== OApp Messaging Functions =====\n\n /**\n * Register an OApp with the endpoint\n * @param tx - The transaction to add the move call to\n * @param oappCap - The OApp capability object ID or transaction argument\n * @param oappInfo - OApp information including lz_receive execution information\n * @returns Transaction result containing the messaging channel address\n */\n registerOAppMoveCall(\n tx: Transaction,\n oappCap: string | TransactionArgument,\n oappInfo: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('register_oapp'),\n arguments: [tx.object(this.objects.endpointV2), asObject(tx, oappCap), asBytes(tx, oappInfo)],\n })\n }\n\n /**\n * Set a delegate for an OApp\n * @param tx - The transaction to add the move call to\n * @param oappCap - The OApp capability object ID or transaction argument\n * @param newDelegate - The new delegate address or transaction argument\n */\n setDelegateMoveCall(\n tx: Transaction,\n oappCap: string | TransactionArgument,\n newDelegate: string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_delegate'),\n arguments: [tx.object(this.objects.endpointV2), asObject(tx, oappCap), asAddress(tx, newDelegate)],\n })\n }\n\n /**\n * Set OApp information for an OApp\n * @param tx - The transaction to add the move call to\n * @param callerCap - The caller capability object ID or transaction argument\n * @param oapp - The OApp address or transaction argument\n * @param oappInfo - The OApp information including lz_receive execution information as bytes or transaction argument\n */\n setOappInfoMoveCall(\n tx: Transaction,\n callerCap: string | TransactionArgument,\n oapp: string | TransactionArgument,\n oappInfo: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_oapp_info'),\n arguments: [\n tx.object(this.objects.endpointV2),\n asObject(tx, callerCap),\n asAddress(tx, oapp),\n asBytes(tx, oappInfo),\n ],\n })\n }\n\n /**\n * Initialize a messaging channel between local and remote OApps\n * @param tx - The transaction to add the move call to\n * @param callerCap - The caller capability object ID or transaction argument\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param remoteEid - The remote endpoint ID or transaction argument\n * @param remoteOapp - The remote OApp address as bytes or transaction argument\n */\n initChannelMoveCall(\n tx: Transaction,\n callerCap: string | TransactionArgument,\n messagingChannel: string | TransactionArgument,\n remoteEid: number | TransactionArgument,\n remoteOapp: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('init_channel'),\n arguments: [\n tx.object(this.objects.endpointV2),\n asObject(tx, callerCap),\n asObject(tx, messagingChannel),\n asU32(tx, remoteEid),\n asBytes32(tx, remoteOapp, this.moduleManager.getUtils()),\n ],\n })\n }\n\n /**\n * Quote the messaging fee for sending a message\n * @param tx - The transaction to add the move call to\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param call - The call transaction result\n * @returns Transaction result containing the quote\n */\n quoteMoveCall(\n tx: Transaction,\n messagingChannel: string | TransactionArgument,\n call: TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('quote'),\n arguments: [tx.object(this.objects.endpointV2), asObject(tx, messagingChannel), call],\n })\n }\n\n /**\n * Confirm quote operation with message library\n * @param tx - The transaction to add the move call to\n * @param endpointCall - The endpoint call transaction result or transaction argument\n * @param messageLibCall - The message library call transaction result or transaction argument\n */\n confirmQuoteMoveCall(\n tx: Transaction,\n endpointCall: TransactionArgument,\n messageLibCall: TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('confirm_quote'),\n arguments: [tx.object(this.objects.endpointV2), endpointCall, messageLibCall],\n })\n }\n\n /**\n * Send a message through the messaging channel\n * @param tx - The transaction to add the move call to\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param call - The call transaction result\n * @returns Transaction result containing the send operation\n */\n sendMoveCall(\n tx: Transaction,\n messagingChannel: string | TransactionArgument,\n call: TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('send'),\n arguments: [tx.object(this.objects.endpointV2), asObject(tx, messagingChannel), call],\n })\n }\n\n /**\n * Confirm send operation with send library\n * @param tx - The transaction to add the move call to\n * @param sendLibrary - The send library object ID or transaction argument\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param endpointCall - The endpoint call transaction result\n * @param sendLibraryCall - The send library call transaction result\n * @returns Transaction result containing the confirmed send operation\n */\n confirmSendMoveCall(\n tx: Transaction,\n sendLibrary: string | TransactionArgument,\n messagingChannel: string | TransactionArgument,\n endpointCall: TransactionArgument,\n sendLibraryCall: TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('confirm_send'),\n arguments: [\n tx.object(this.objects.endpointV2),\n asObject(tx, sendLibrary),\n asObject(tx, messagingChannel),\n endpointCall,\n sendLibraryCall,\n ],\n })\n }\n\n /**\n * Refund fees from a send operation\n * @param tx - The transaction to add the move call to\n * @param sendCall - The send call transaction result or transaction argument\n * @returns Transaction result containing the refund operation\n */\n refundMoveCall(tx: Transaction, sendCall: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('refund'),\n arguments: [tx.object(this.objects.endpointV2), sendCall],\n })\n }\n\n /**\n * Verify a message from another chain\n * @param tx - The transaction to add the move call to\n * @param receiveLibrary - The receive library object ID or transaction argument\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param srcEid - The source endpoint ID or transaction argument\n * @param sender - The sender address as bytes or transaction argument\n * @param nonce - The message nonce or transaction argument\n * @param payloadHash - The payload hash as bytes or transaction argument\n */\n verifyMoveCall(\n tx: Transaction,\n receiveLibrary: string | TransactionArgument,\n messagingChannel: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: bigint | number | string | TransactionArgument,\n payloadHash: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('verify'),\n arguments: [\n tx.object(this.objects.endpointV2),\n asObject(tx, receiveLibrary),\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n asBytes32(tx, payloadHash, this.moduleManager.getUtils()),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Clear a verified message by executing it\n * @param tx - The transaction to add the move call to\n * @param caller - The caller object ID or transaction argument\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param srcEid - Source endpoint ID or transaction argument\n * @param sender - Sender address as bytes or transaction argument\n * @param nonce - Message nonce or transaction argument\n * @param guid - Globally unique identifier as bytes or transaction argument\n * @param message - Message payload as bytes or transaction argument\n */\n clearMoveCall(\n tx: Transaction,\n caller: string | TransactionArgument,\n messagingChannel: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: bigint | number | string | TransactionArgument,\n guid: Uint8Array | TransactionArgument,\n message: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('clear'),\n arguments: [\n tx.object(this.objects.endpointV2),\n asObject(tx, caller),\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n asBytes32(tx, guid, this.moduleManager.getUtils()),\n asBytes(tx, message),\n ],\n })\n }\n\n /**\n * Skip a message (mark as processed without execution)\n * @param tx - The transaction to add the move call to\n * @param caller - The caller object ID or transaction argument\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param srcEid - Source endpoint ID or transaction argument\n * @param sender - Sender address as bytes or transaction argument\n * @param nonce - Message nonce or transaction argument\n */\n skipMoveCall(\n tx: Transaction,\n caller: string | TransactionArgument,\n messagingChannel: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: bigint | number | string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('skip'),\n arguments: [\n tx.object(this.objects.endpointV2),\n asObject(tx, caller),\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n ],\n })\n }\n\n /**\n * Nilify a message (clear without execution)\n * @param tx - The transaction to add the move call to\n * @param caller - The caller object ID or transaction argument\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param srcEid - Source endpoint ID or transaction argument\n * @param sender - Sender address as bytes or transaction argument\n * @param nonce - Message nonce or transaction argument\n * @param payloadHash - Message payload hash as bytes or transaction argument\n */\n nilifyMoveCall(\n tx: Transaction,\n caller: string | TransactionArgument,\n messagingChannel: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: bigint | number | string | TransactionArgument,\n payloadHash: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('nilify'),\n arguments: [\n tx.object(this.objects.endpointV2),\n asObject(tx, caller),\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n asBytes32(tx, payloadHash, this.moduleManager.getUtils()),\n ],\n })\n }\n\n /**\n * Burn a message (permanently remove)\n * @param tx - The transaction to add the move call to\n * @param caller - The caller object ID or transaction argument\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param srcEid - Source endpoint ID or transaction argument\n * @param sender - Sender address as bytes or transaction argument\n * @param nonce - Message nonce or transaction argument\n * @param payloadHash - Message payload hash as bytes or transaction argument\n */\n burnMoveCall(\n tx: Transaction,\n caller: string | TransactionArgument,\n messagingChannel: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: bigint | number | string | TransactionArgument,\n payloadHash: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('burn'),\n arguments: [\n tx.object(this.objects.endpointV2),\n asObject(tx, caller),\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n asBytes32(tx, payloadHash, this.moduleManager.getUtils()),\n ],\n })\n }\n\n /**\n * Execute a LayerZero receive operation\n * @param tx - The transaction to add the move call to\n * @param executorCallCap - The executor call capability\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param srcEid - The source endpoint ID or transaction argument\n * @param sender - The sender address as bytes or transaction argument\n * @param nonce - The message nonce or transaction argument\n * @param guid - The globally unique identifier as bytes or transaction argument\n * @param message - The message payload as bytes or transaction argument\n * @param extraData - Additional data as bytes or transaction argument (optional)\n * @param value - The native token value to transfer or transaction argument\n * @returns Transaction result containing the receive operation\n */\n lzReceiveMoveCall(\n tx: Transaction,\n executorCallCap: TransactionArgument,\n messagingChannel: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: bigint | number | string | TransactionArgument,\n guid: Uint8Array | TransactionArgument,\n message: Uint8Array | TransactionArgument,\n extraData: Uint8Array | TransactionArgument = new Uint8Array(),\n value: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('lz_receive'),\n arguments: [\n tx.object(this.objects.endpointV2),\n executorCallCap,\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n asBytes32(tx, guid, this.moduleManager.getUtils()),\n asBytes(tx, message),\n asBytes(tx, extraData),\n asArgWithTx(tx, value, (tx, val) => this.moduleManager.getUtils().createOptionIotaL1Call(tx, val)),\n ],\n })\n }\n\n /**\n * Send alert for failed LayerZero receive operation\n * @param tx - The transaction to add the move call to\n * @param executor - The executor object ID or transaction argument\n * @param srcEid - Source endpoint ID or transaction argument\n * @param sender - Sender address as bytes or transaction argument\n * @param nonce - Message nonce or transaction argument\n * @param receiver - Receiver address or transaction argument\n * @param guid - Globally unique identifier as bytes or transaction argument\n * @param gas - Gas amount for execution or transaction argument\n * @param value - Native token value or transaction argument\n * @param message - Message payload as bytes or transaction argument\n * @param extraData - Additional execution data as bytes or transaction argument\n * @param reason - Failure reason or transaction argument\n */\n lzReceiveAlertMoveCall(\n tx: Transaction,\n executor: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: bigint | number | string | TransactionArgument,\n receiver: string | TransactionArgument,\n guid: Uint8Array | TransactionArgument,\n gas: bigint | number | string | TransactionArgument,\n value: bigint | number | string | TransactionArgument,\n message: Uint8Array | TransactionArgument,\n extraData: Uint8Array | TransactionArgument,\n reason: string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('lz_receive_alert'),\n arguments: [\n asObject(tx, executor),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n asAddress(tx, receiver),\n asBytes32(tx, guid, this.moduleManager.getUtils()),\n asU64(tx, gas),\n asU64(tx, value),\n asBytes(tx, message),\n asBytes(tx, extraData),\n asString(tx, reason),\n ],\n })\n }\n\n /**\n * Register a composer with the endpoint\n * @param tx - The transaction to add the move call to\n * @param composerCap - The composer capability object ID or transaction argument\n * @param composerInfo - Composer information including lz_compose execution information as bytes\n * @returns Transaction result containing the compose queue address\n */\n registerComposerMoveCall(\n tx: Transaction,\n composerCap: string | TransactionArgument,\n composerInfo: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('register_composer'),\n arguments: [tx.object(this.objects.endpointV2), asObject(tx, composerCap), asBytes(tx, composerInfo)],\n })\n }\n\n /**\n * Set composer information for a composer\n * @param tx - The transaction to add the move call to\n * @param composerCap - The composer capability object ID or transaction argument\n * @param composerInfo - Composer information including lz_compose execution information as bytes or transaction argument\n */\n setComposerInfoMoveCall(\n tx: Transaction,\n composerCap: string | TransactionArgument,\n composerInfo: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_composer_info'),\n arguments: [tx.object(this.objects.endpointV2), asObject(tx, composerCap), asBytes(tx, composerInfo)],\n })\n }\n\n /**\n * Send compose message to queue\n * @param tx - The transaction to add the move call to\n * @param from - The sender object ID or transaction argument\n * @param composeQueue - The compose queue object ID or transaction argument\n * @param guid - Globally unique identifier as bytes or transaction argument\n * @param index - Compose message index or transaction argument\n * @param message - Message payload as bytes or transaction argument\n */\n sendComposeMoveCall(\n tx: Transaction,\n from: string | TransactionArgument,\n composeQueue: string | TransactionArgument,\n guid: Uint8Array | TransactionArgument,\n index: number | TransactionArgument,\n message: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('send_compose'),\n arguments: [\n asObject(tx, from),\n asObject(tx, composeQueue),\n asBytes32(tx, guid, this.moduleManager.getUtils()),\n asU16(tx, index),\n asBytes(tx, message),\n ],\n })\n }\n\n /**\n * Execute LayerZero compose operation\n * @param tx - The transaction to add the move call to\n * @param executorCallCap - The executor call capability\n * @param composeQueue - The compose queue object ID or transaction argument\n * @param from - Source address or transaction argument\n * @param guid - Globally unique identifier as bytes or transaction argument\n * @param index - Compose message index or transaction argument\n * @param message - Message payload as bytes or transaction argument\n * @param extraData - Additional execution data as bytes or transaction argument (optional)\n * @param value - Native token value to transfer or transaction argument\n * @returns Transaction result containing the compose operation\n */\n lzComposeMoveCall(\n tx: Transaction,\n executorCallCap: TransactionArgument,\n composeQueue: string | TransactionArgument,\n from: string | TransactionArgument,\n guid: Uint8Array | TransactionArgument,\n index: number | TransactionArgument,\n message: Uint8Array | TransactionArgument,\n extraData: Uint8Array | TransactionArgument = new Uint8Array(),\n value: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('lz_compose'),\n arguments: [\n tx.object(this.objects.endpointV2),\n executorCallCap,\n asObject(tx, composeQueue),\n asAddress(tx, from),\n asBytes32(tx, guid, this.moduleManager.getUtils()),\n asU16(tx, index),\n asBytes(tx, message),\n asBytes(tx, extraData),\n asArgWithTx(tx, value, (tx, val) => this.moduleManager.getUtils().createOptionIotaL1Call(tx, val)),\n ],\n })\n }\n\n /**\n * Send alert for failed LayerZero compose operation\n * @param tx - The transaction to add the move call to\n * @param executor - The executor object ID or transaction argument\n * @param from - Source address or transaction argument\n * @param to - Destination address or transaction argument\n * @param guid - Globally unique identifier as bytes or transaction argument\n * @param index - Compose message index or transaction argument\n * @param gas - Gas amount for execution or transaction argument\n * @param value - Native token value or transaction argument\n * @param message - Message payload as bytes or transaction argument\n * @param extraData - Additional execution data as bytes or transaction argument\n * @param reason - Failure reason or transaction argument\n */\n lzComposeAlertMoveCall(\n tx: Transaction,\n executor: string | TransactionArgument,\n from: string | TransactionArgument,\n to: string | TransactionArgument,\n guid: Uint8Array | TransactionArgument,\n index: number | TransactionArgument,\n gas: bigint | number | string | TransactionArgument,\n value: bigint | number | string | TransactionArgument,\n message: Uint8Array | TransactionArgument,\n extraData: Uint8Array | TransactionArgument,\n reason: string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('lz_compose_alert'),\n arguments: [\n asObject(tx, executor),\n asAddress(tx, from),\n asAddress(tx, to),\n asBytes32(tx, guid, this.moduleManager.getUtils()),\n asU16(tx, index),\n asU64(tx, gas),\n asU64(tx, value),\n asBytes(tx, message),\n asBytes(tx, extraData),\n asString(tx, reason),\n ],\n })\n }\n\n // ===== OApp Library Configuration Functions =====\n /**\n * Set the send library for an OApp to a specific destination\n * @param tx - The transaction to add the move call to\n * @param caller - The caller capability object ID or transaction argument\n * @param sender - The sender OApp address or transaction argument\n * @param dstEid - The destination endpoint ID or transaction argument\n * @param newLib - The new send library address or transaction argument\n */\n setSendLibraryMoveCall(\n tx: Transaction,\n caller: string | TransactionArgument,\n sender: string | TransactionArgument,\n dstEid: number | TransactionArgument,\n newLib: string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_send_library'),\n arguments: [\n tx.object(this.objects.endpointV2),\n asObject(tx, caller),\n asAddress(tx, sender),\n asU32(tx, dstEid),\n asAddress(tx, newLib),\n ],\n })\n }\n\n /**\n * Set the receive library for an OApp from a specific source\n * @param tx - The transaction to add the move call to\n * @param caller - The caller capability object ID or transaction argument\n * @param receiver - The receiver OApp address or transaction argument\n * @param srcEid - The source endpoint ID or transaction argument\n * @param newLib - The new receive library address or transaction argument\n * @param gracePeriod - The grace period in seconds or transaction argument\n */\n setReceiveLibraryMoveCall(\n tx: Transaction,\n caller: string | TransactionArgument,\n receiver: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n newLib: string | TransactionArgument,\n gracePeriod: number | string | bigint | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_receive_library'),\n arguments: [\n tx.object(this.objects.endpointV2),\n asObject(tx, caller),\n asAddress(tx, receiver),\n asU32(tx, srcEid),\n asAddress(tx, newLib),\n asU64(tx, gracePeriod),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Set timeout for receive library transition\n * @param tx - The transaction to add the move call to\n * @param caller - The caller capability object ID or transaction argument\n * @param receiver - The receiver OApp address or transaction argument\n * @param srcEid - Source endpoint ID or transaction argument\n * @param lib - The library address or transaction argument\n * @param expiry - Timeout expiry timestamp or transaction argument\n */\n setReceiveLibraryTimeoutMoveCall(\n tx: Transaction,\n caller: string | TransactionArgument,\n receiver: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n lib: string | TransactionArgument,\n expiry: number | string | bigint | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_receive_library_timeout'),\n arguments: [\n tx.object(this.objects.endpointV2),\n asObject(tx, caller),\n asAddress(tx, receiver),\n asU32(tx, srcEid),\n asAddress(tx, lib),\n asU64(tx, expiry),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Set configuration for an OApp's message library\n * @param tx - The transaction to add the move call to\n * @param caller - The caller object ID or transaction argument\n * @param oapp - The OApp address or transaction argument\n * @param lib - The message library address or transaction argument\n * @param eid - Endpoint ID or transaction argument\n * @param config_type - Configuration type identifier or transaction argument\n * @param config - Configuration data as bytes or transaction argument\n * @returns Transaction result containing the configuration operation\n */\n setConfigMoveCall(\n tx: Transaction,\n caller: string | TransactionArgument,\n oapp: string | TransactionArgument,\n lib: string | TransactionArgument,\n eid: number | TransactionArgument,\n config_type: number | TransactionArgument,\n config: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('set_config'),\n arguments: [\n tx.object(this.objects.endpointV2),\n asObject(tx, caller),\n asAddress(tx, oapp),\n asAddress(tx, lib),\n asU32(tx, eid),\n asU32(tx, config_type),\n asBytes(tx, config),\n ],\n })\n }\n\n /**\n * Register a message library with the endpoint (admin only)\n * @param tx - The transaction to add the move call to\n * @param messageLibCap - The message library capability address or transaction argument\n * @param messageLibType - The type of message library (Send, Receive, or SendAndReceive)\n */\n registerLibraryMoveCall(\n tx: Transaction,\n messageLibCap: string | TransactionArgument,\n messageLibType: MessageLibType\n ): void {\n const libType = this.messageLibTypeMoveCall(tx, messageLibType)\n tx.moveCall({\n target: this.#target('register_library'),\n arguments: [\n tx.object(this.objects.endpointV2),\n tx.object(this.objects.endpointAdminCap),\n asAddress(tx, messageLibCap),\n libType,\n ],\n })\n }\n\n /**\n * Set default send library for a destination EID (admin only)\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID\n * @param newLib - The new default send library address\n */\n setDefaultSendLibraryMoveCall(\n tx: Transaction,\n dstEid: number | TransactionArgument,\n newLib: string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_default_send_library'),\n arguments: [\n tx.object(this.objects.endpointV2),\n tx.object(this.objects.endpointAdminCap),\n asU32(tx, dstEid),\n asAddress(tx, newLib),\n ],\n })\n }\n\n /**\n * Set default receive library for a source EID (admin only)\n * @param tx - The transaction to add the move call to\n * @param srcEid - Source endpoint ID\n * @param newLib - The new default receive library address\n * @param gracePeriod - Grace period in seconds for library transition\n */\n setDefaultReceiveLibraryMoveCall(\n tx: Transaction,\n srcEid: number | TransactionArgument,\n newLib: string | TransactionArgument,\n gracePeriod: number | string | bigint | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_default_receive_library'),\n arguments: [\n tx.object(this.objects.endpointV2),\n tx.object(this.objects.endpointAdminCap),\n asU32(tx, srcEid),\n asAddress(tx, newLib),\n asU64(tx, gracePeriod),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Set timeout for default receive library transition (admin only)\n * @param tx - The transaction to add the move call to\n * @param srcEid - Source endpoint ID\n * @param lib - The library address\n * @param expiry - Timeout expiry timestamp\n */\n setDefaultReceiveLibraryTimeoutMoveCall(\n tx: Transaction,\n srcEid: number | TransactionArgument,\n lib: string | TransactionArgument,\n expiry: number | string | bigint | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_default_receive_library_timeout'),\n arguments: [\n tx.object(this.objects.endpointV2),\n tx.object(this.objects.endpointAdminCap),\n asU32(tx, srcEid),\n asAddress(tx, lib),\n asU64(tx, expiry),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Create message library type move call\n * @param tx - The transaction to add the move call to\n * @param messageLibType - The message library type enum value\n * @returns Transaction result containing the library type\n */\n messageLibTypeMoveCall(tx: Transaction, messageLibType: MessageLibType): TransactionResult {\n switch (messageLibType) {\n case MessageLibType.Send:\n return tx.moveCall({\n target: this.#target('send', 'message_lib_type'),\n arguments: [],\n })\n case MessageLibType.Receive:\n return tx.moveCall({\n target: this.#target('receive', 'message_lib_type'),\n arguments: [],\n })\n case MessageLibType.SendAndReceive:\n return tx.moveCall({\n target: this.#target('send_and_receive', 'message_lib_type'),\n arguments: [],\n })\n default:\n throw new Error(`Invalid message lib type: ${JSON.stringify(messageLibType)}`)\n }\n }\n\n // === View Functions ===\n\n // Basic endpoint info\n\n /**\n * Get the Endpoint ID (EID) of the current chain\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the EID\n */\n eidMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('eid'),\n arguments: [tx.object(this.objects.endpointV2)],\n })\n }\n\n /**\n * Get the Endpoint ID (EID) of the current chain\n * @returns The endpoint ID, or 0 if not initialized\n */\n async eid(): Promise<number> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.eidMoveCall(tx)\n },\n (result) => bcs.U32.parse(result[0].value)\n )\n }\n\n /**\n * Check if an OApp is registered with the endpoint\n * @param tx - The transaction to add the move call to\n * @param oapp - The OApp address to check or transaction argument\n * @returns Transaction result containing the registration status\n */\n isOappRegisteredMoveCall(tx: Transaction, oapp: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_oapp_registered'),\n arguments: [tx.object(this.objects.endpointV2), asAddress(tx, oapp)],\n })\n }\n\n /**\n * Check if an OApp is registered with the endpoint\n * @param oapp - The OApp address to check\n * @returns True if the OApp is registered, false otherwise\n */\n async isOappRegistered(oapp: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => this.isOappRegisteredMoveCall(tx, oapp),\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get messaging channel for an OApp\n * @param tx - The transaction to add the move call to\n * @param oapp - The OApp address or transaction argument\n * @returns Transaction result containing the messaging channel address\n */\n getMessagingChannelMoveCall(tx: Transaction, oapp: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_messaging_channel'),\n arguments: [tx.object(this.objects.endpointV2), asAddress(tx, oapp)],\n })\n }\n\n /**\n * Get the messaging channel for an OApp\n * @param oapp - The OApp address\n * @returns The messaging channel address\n */\n async getMessagingChannel(oapp: string): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getMessagingChannelMoveCall(tx, oapp)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get OApp information for an OApp\n * @param tx - The transaction to add the move call to\n * @param oapp - The OApp address or transaction argument\n * @returns Transaction result containing the OApp information including lz_receive execution information\n */\n getOappInfoMoveCall(tx: Transaction, oapp: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_oapp_info'),\n arguments: [tx.object(this.objects.endpointV2), asAddress(tx, oapp)],\n })\n }\n\n /**\n * Get OApp information for an OApp\n * @param oapp - The OApp address\n * @returns Promise<Uint8Array> - The OApp information including lz_receive execution information as bytes\n */\n async getOappInfo(oapp: string): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => {\n return this.getOappInfoMoveCall(tx, oapp)\n },\n (result) => {\n const parsed = bcs.vector(bcs.u8()).parse(result[0].value)\n return new Uint8Array(parsed)\n }\n )\n }\n\n /**\n * Get delegate address for an OApp\n * @param tx - The transaction to add the move call to\n * @param oapp - The OApp address or transaction argument\n * @returns Transaction result containing the delegate address\n */\n getDelegateMoveCall(tx: Transaction, oapp: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_delegate'),\n arguments: [tx.object(this.objects.endpointV2), asAddress(tx, oapp)],\n })\n }\n\n /**\n * Get delegate address for an OApp\n * @param oapp - The OApp address\n * @returns Promise<string> - The delegate address\n */\n async getDelegate(oapp: string): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getDelegateMoveCall(tx, oapp)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Check if a composer is registered with the endpoint\n * @param tx - The transaction to add the move call to\n * @param composer - The composer address or transaction argument\n * @returns Transaction result containing the registration status\n */\n isComposerRegisteredMoveCall(tx: Transaction, composer: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_composer_registered'),\n arguments: [tx.object(this.objects.endpointV2), asAddress(tx, composer)],\n })\n }\n\n /**\n * Check if a composer is registered with the endpoint\n * @param composer - The composer address\n * @returns Promise<boolean> - True if the composer is registered\n */\n async isComposerRegistered(composer: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isComposerRegisteredMoveCall(tx, composer)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get compose queue address for a composer\n * @param tx - The transaction to add the move call to\n * @param composer - The composer address or transaction argument\n * @returns Transaction result containing the compose queue address\n */\n getComposeQueueMoveCall(tx: Transaction, composer: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_compose_queue'),\n arguments: [tx.object(this.objects.endpointV2), asAddress(tx, composer)],\n })\n }\n\n /**\n * Get compose queue address for a composer\n * @param composer - The composer address\n * @returns Promise<string> - The compose queue address\n */\n async getComposeQueue(composer: string): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getComposeQueueMoveCall(tx, composer)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get composer information for a registered composer\n * @param tx - The transaction to add the move call to\n * @param composer - The composer address or transaction argument\n * @returns Transaction result containing the composer information\n */\n getComposerInfoMoveCall(tx: Transaction, composer: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_composer_info'),\n arguments: [tx.object(this.objects.endpointV2), asAddress(tx, composer)],\n })\n }\n\n /**\n * Get composer information for a registered composer\n * @param composer - The composer address\n * @returns Promise<Uint8Array> - The composer information as bytes\n */\n async getComposerInfo(composer: string): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getComposerInfoMoveCall(tx, composer)\n },\n (result) => {\n const parsed = bcs.vector(bcs.u8()).parse(result[0].value)\n return new Uint8Array(parsed)\n }\n )\n }\n\n // Compose Queue View Functions\n /**\n * Get composer address from compose queue\n * @param tx - The transaction to add the move call to\n * @param composeQueue - The compose queue object ID or transaction argument\n * @returns Transaction result containing the composer address\n */\n getComposerMoveCall(tx: Transaction, composeQueue: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_composer'),\n arguments: [asObject(tx, composeQueue)],\n })\n }\n\n /**\n * Get composer address from compose queue\n * @param composeQueue - The compose queue object ID\n * @returns Promise<string> - The composer address\n */\n async getComposer(composeQueue: string): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => this.getComposerMoveCall(tx, composeQueue),\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Check if compose message hash exists\n * @param tx - The transaction to add the move call to\n * @param composeQueue - The compose queue object ID\n * @param from - Sender address\n * @param guid - Globally unique identifier as bytes\n * @param index - Compose message index\n * @returns Transaction result containing the message hash existence status\n */\n hasComposeMessageHashMoveCall(\n tx: Transaction,\n composeQueue: string | TransactionArgument,\n from: string | TransactionArgument,\n guid: Uint8Array | TransactionArgument,\n index: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('has_compose_message_hash'),\n arguments: [\n asObject(tx, composeQueue),\n asAddress(tx, from),\n asBytes32(tx, guid, this.moduleManager.getUtils()),\n asU16(tx, index),\n ],\n })\n }\n\n /**\n * Check if compose message hash exists\n * @param composeQueue - The compose queue object ID\n * @param from - Sender address\n * @param guid - Globally unique identifier as bytes\n * @param index - Compose message index\n * @returns Promise<boolean> - True if message hash exists\n */\n async hasComposeMessageHash(composeQueue: string, from: string, guid: Uint8Array, index: number): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => this.hasComposeMessageHashMoveCall(tx, composeQueue, from, guid, index),\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get compose message hash\n * @param tx - The transaction to add the move call to\n * @param composeQueue - The compose queue object ID\n * @param from - Sender address\n * @param guid - Globally unique identifier as bytes\n * @param index - Compose message index\n * @returns Transaction result containing the message hash\n */\n getComposeMessageHashMoveCall(\n tx: Transaction,\n composeQueue: string | TransactionArgument,\n from: string | TransactionArgument,\n guid: Uint8Array | TransactionArgument,\n index: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_compose_message_hash'),\n arguments: [\n asObject(tx, composeQueue),\n asAddress(tx, from),\n asBytes32(tx, guid, this.moduleManager.getUtils()),\n asU16(tx, index),\n ],\n })\n }\n\n /**\n * Get compose message hash\n * @param composeQueue - The compose queue object ID\n * @param from - Sender address\n * @param guid - Globally unique identifier as bytes\n * @param index - Compose message index\n * @returns Promise<Uint8Array> - The message hash as bytes\n */\n async getComposeMessageHash(\n composeQueue: string,\n from: string,\n guid: Uint8Array,\n index: number\n ): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getComposeMessageHashMoveCall(tx, composeQueue, from, guid, index)\n },\n (result) => {\n const parsed = bcs.vector(bcs.u8()).parse(result[0].value)\n return new Uint8Array(parsed)\n }\n )\n }\n\n // Message Library View Functions\n /**\n * Get count of registered message libraries\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the count of registered libraries\n */\n registeredLibrariesCountMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('registered_libraries_count'),\n arguments: [tx.object(this.objects.endpointV2)],\n })\n }\n\n /**\n * Get count of registered message libraries\n * @returns Promise<bigint> - The number of registered libraries\n */\n async registeredLibrariesCount(): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.registeredLibrariesCountMoveCall(tx)\n },\n (result) => BigInt(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Get list of registered message libraries with pagination\n * @param tx - The transaction to add the move call to\n * @param start - Start index for pagination or transaction argument\n * @param maxCount - Maximum count to return or transaction argument\n * @returns Transaction result containing array of library addresses\n */\n registeredLibrariesMoveCall(\n tx: Transaction,\n start: bigint | TransactionArgument,\n maxCount: bigint | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('registered_libraries'),\n arguments: [tx.object(this.objects.endpointV2), asU64(tx, start), asU64(tx, maxCount)],\n })\n }\n\n /**\n * Get list of registered message libraries with pagination\n * @param start - Start index for pagination\n * @param maxCount - Maximum count to return\n * @returns Promise<string[]> - Array of registered library addresses\n */\n async registeredLibraries(start: bigint, maxCount: bigint): Promise<string[]> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.registeredLibrariesMoveCall(tx, start, maxCount)\n },\n (result) => bcs.vector(bcs.Address).parse(result[0].value)\n )\n }\n\n /**\n * Check if a message library is registered\n * @param tx - The transaction to add the move call to\n * @param messageLib - The message library address or transaction argument\n * @returns Transaction result containing the registration status\n */\n isLibraryRegisteredMoveCall(tx: Transaction, messageLib: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_registered_library'),\n arguments: [tx.object(this.objects.endpointV2), asAddress(tx, messageLib)],\n })\n }\n\n /**\n * Check if a message library is registered\n * @param lib - The message library address\n * @returns Promise<boolean> - True if the library is registered\n */\n async isRegisteredLibrary(lib: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isLibraryRegisteredMoveCall(tx, lib)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get message library type\n * @param tx - The transaction to add the move call to\n * @param lib - The message library address or transaction argument\n * @returns Transaction result containing the library type\n */\n getLibraryTypeMoveCall(tx: Transaction, lib: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_library_type'),\n arguments: [tx.object(this.objects.endpointV2), asAddress(tx, lib)],\n })\n }\n\n /**\n * Get message library type\n * @param lib - The message library address\n * @returns Promise<MessageLibType> - The library type (Send, Receive, or SendAndReceive)\n */\n async getLibraryType(lib: string): Promise<MessageLibType> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getLibraryTypeMoveCall(tx, lib)\n },\n (result) => {\n const value = bcs.U8.parse(result[0].value)\n return value as MessageLibType\n }\n )\n }\n\n /**\n * Get default send library for a destination EID\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID or transaction argument\n * @returns Transaction result containing the default send library address\n */\n getDefaultSendLibraryMoveCall(tx: Transaction, dstEid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_default_send_library'),\n arguments: [tx.object(this.objects.endpointV2), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get default send library for a destination EID\n * @param dstEid - Destination endpoint ID\n * @returns Promise<string> - The default send library address, empty string if unavailable\n */\n async getDefaultSendLibrary(dstEid: number): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getDefaultSendLibraryMoveCall(tx, dstEid)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get default receive library for a source EID\n * @param tx - The transaction to add the move call to\n * @param srcEid - Source endpoint ID or transaction argument\n * @returns Transaction result containing the default receive library address\n */\n getDefaultReceiveLibraryMoveCall(tx: Transaction, srcEid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_default_receive_library'),\n arguments: [tx.object(this.objects.endpointV2), asU32(tx, srcEid)],\n })\n }\n\n /**\n * Get default receive library for a source EID\n * @param srcEid - Source endpoint ID\n * @returns Promise<string> - The default receive library address, empty string if unavailable\n */\n async getDefaultReceiveLibrary(srcEid: number): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getDefaultReceiveLibraryMoveCall(tx, srcEid)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get timeout for default receive library transition\n * @param tx - The transaction to add the move call to\n * @param srcEid - Source endpoint ID or transaction argument\n * @returns Transaction result containing the timeout information\n */\n getDefaultReceiveLibraryTimeoutMoveCall(tx: Transaction, srcEid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_default_receive_library_timeout'),\n arguments: [tx.object(this.objects.endpointV2), asU32(tx, srcEid)],\n })\n }\n\n /**\n * Get timeout for default receive library transition\n * @param srcEid - Source endpoint ID\n * @returns Promise<Timeout | null> - The timeout information or null if not set\n */\n async getDefaultReceiveLibraryTimeout(srcEid: number): Promise<Timeout | null> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getDefaultReceiveLibraryTimeoutMoveCall(tx, srcEid)\n },\n (result) => {\n const optionBytes = result[0].value\n const optionValue = bcs.option(TimeoutBcs).parse(optionBytes)\n if (optionValue) {\n return {\n expiry: BigInt(optionValue.expiry),\n fallbackLib: optionValue.fallback_lib,\n }\n }\n return null\n }\n )\n }\n\n /**\n * Check if an endpoint ID is supported\n * @param tx - The transaction to add the move call to\n * @param eid - Endpoint ID to check or transaction argument\n * @returns Transaction result containing the support status\n */\n isSupportedEidMoveCall(tx: Transaction, eid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_supported_eid'),\n arguments: [tx.object(this.objects.endpointV2), asU32(tx, eid)],\n })\n }\n\n /**\n * Check if an endpoint ID is supported\n * @param eid - Endpoint ID to check\n * @returns Promise<boolean> - True if the endpoint ID is supported\n */\n async isSupportedEid(eid: number): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => this.isSupportedEidMoveCall(tx, eid),\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get send library for an OApp and destination EID\n * @param tx - The transaction to add the move call to\n * @param sender - The sender OApp address or transaction argument\n * @param dstEid - Destination endpoint ID or transaction argument\n * @returns Transaction result containing the send library info\n */\n getSendLibraryMoveCall(\n tx: Transaction,\n sender: string | TransactionArgument,\n dstEid: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_send_library'),\n arguments: [tx.object(this.objects.endpointV2), asAddress(tx, sender), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get send library for an OApp and destination EID\n * @param sender - The sender OApp address\n * @param dstEid - Destination endpoint ID\n * @returns Promise<[string, boolean]> - Tuple of [library address, is default]\n */\n async getSendLibrary(sender: string, dstEid: number): Promise<[string, boolean]> {\n return executeSimulate(\n this.client,\n (tx) => this.getSendLibraryMoveCall(tx, sender, dstEid),\n (result) => {\n const lib = bcs.Address.parse(result[0].value)\n const isDefault = bcs.Bool.parse(result[1].value)\n return [lib, isDefault]\n }\n )\n }\n\n /**\n * Get receive library for an OApp and source EID\n * @param tx - The transaction to add the move call to\n * @param receiver - The receiver OApp address or transaction argument\n * @param srcEid - Source endpoint ID or transaction argument\n * @returns Transaction result containing the receive library info\n */\n getReceiveLibraryMoveCall(\n tx: Transaction,\n receiver: string | TransactionArgument,\n srcEid: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_receive_library'),\n arguments: [tx.object(this.objects.endpointV2), asAddress(tx, receiver), asU32(tx, srcEid)],\n })\n }\n\n /**\n * Get receive library for an OApp and source EID\n * @param receiver - The receiver OApp address\n * @param srcEid - Source endpoint ID\n * @returns Promise<[string, boolean]> - Tuple of [library address, is default]\n */\n async getReceiveLibrary(receiver: string, srcEid: number): Promise<[string, boolean]> {\n return executeSimulate(\n this.client,\n (tx) => this.getReceiveLibraryMoveCall(tx, receiver, srcEid),\n (result) => {\n const lib = bcs.Address.parse(result[0].value)\n const isDefault = bcs.Bool.parse(result[1].value)\n return [lib, isDefault]\n }\n )\n }\n\n /**\n * Get receive library timeout for an OApp and source EID\n * @param tx - The transaction to add the move call to\n * @param receiver - The receiver OApp address or transaction argument\n * @param srcEid - Source endpoint ID or transaction argument\n * @returns Transaction result containing the timeout information\n */\n getReceiveLibraryTimeoutMoveCall(\n tx: Transaction,\n receiver: string | TransactionArgument,\n srcEid: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_receive_library_timeout'),\n arguments: [tx.object(this.objects.endpointV2), asAddress(tx, receiver), asU32(tx, srcEid)],\n })\n }\n\n /**\n * Get receive library timeout for an OApp and source EID\n * @param receiver - The receiver OApp address\n * @param srcEid - Source endpoint ID\n * @returns Promise<Timeout | null> - The timeout information or null if not set\n */\n async getReceiveLibraryTimeout(receiver: string, srcEid: number): Promise<Timeout | null> {\n return executeSimulate(\n this.client,\n (tx) => this.getReceiveLibraryTimeoutMoveCall(tx, receiver, srcEid),\n (result) => {\n const optionBytes = result[0].value\n const optionValue = bcs.option(TimeoutBcs).parse(optionBytes)\n if (optionValue) {\n return {\n expiry: BigInt(optionValue.expiry),\n fallbackLib: optionValue.fallback_lib,\n }\n }\n return null\n }\n )\n }\n\n /**\n * Check if a receive library is valid for current time\n * @param tx - The transaction to add the move call to\n * @param receiver - The receiver OApp address or transaction argument\n * @param srcEid - Source endpoint ID or transaction argument\n * @param actualReceiveLib - The actual receive library address to validate or transaction argument\n * @returns Transaction result containing the validity status\n */\n isValidReceiveLibraryMoveCall(\n tx: Transaction,\n receiver: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n actualReceiveLib: string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_valid_receive_library'),\n arguments: [\n tx.object(this.objects.endpointV2),\n asAddress(tx, receiver),\n asU32(tx, srcEid),\n asAddress(tx, actualReceiveLib),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Check if a receive library is valid for current time\n * @param receiver - The receiver OApp address\n * @param srcEid - Source endpoint ID\n * @param actualReceiveLib - The actual receive library address to validate\n * @returns Promise<boolean> - True if the receive library is valid\n */\n async isValidReceiveLibrary(receiver: string, srcEid: number, actualReceiveLib: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => this.isValidReceiveLibraryMoveCall(tx, receiver, srcEid, actualReceiveLib),\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n // Messaging Channel View Functions\n\n /**\n * Check if channel is initialized for remote OApp\n * @param tx - The transaction to add the move call to\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param remoteEid - Remote endpoint ID or transaction argument\n * @param remoteOapp - Remote OApp address as bytes or transaction argument\n * @returns Transaction result containing the initialization status\n */\n isChannelInitedMoveCall(\n tx: Transaction,\n messagingChannel: string | TransactionArgument,\n remoteEid: number | TransactionArgument,\n remoteOapp: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_channel_inited'),\n arguments: [\n asObject(tx, messagingChannel),\n asU32(tx, remoteEid),\n asBytes32(tx, remoteOapp, this.moduleManager.getUtils()),\n ],\n })\n }\n\n /**\n * Check if channel is initialized for remote OApp\n * @param messagingChannel - The messaging channel object ID\n * @param remoteEid - Remote endpoint ID\n * @param remoteOapp - Remote OApp address as bytes\n * @returns Promise<boolean> - True if channel is initialized\n */\n async isChannelInited(messagingChannel: string, remoteEid: number, remoteOapp: Uint8Array): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => this.isChannelInitedMoveCall(tx, messagingChannel, remoteEid, remoteOapp),\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Check if message path is initializable\n * @param tx - The transaction to add the move call to\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param srcEid - Source endpoint ID or transaction argument\n * @param sender - Sender address as bytes or transaction argument\n * @returns Transaction result containing the initialization status\n */\n initializableMoveCall(\n tx: Transaction,\n messagingChannel: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('initializable'),\n arguments: [\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n ],\n })\n }\n\n /**\n * Check if message path is initializable\n * @param messagingChannel - The messaging channel object ID\n * @param srcEid - Source endpoint ID\n * @param sender - Sender address as bytes\n * @returns Promise<boolean> - True if path is initializable\n */\n async initializable(messagingChannel: string, srcEid: number, sender: Uint8Array): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => this.initializableMoveCall(tx, messagingChannel, srcEid, sender),\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get OApp address from messaging channel\n * @param tx - The transaction to add the move call to\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @returns Transaction result containing the OApp address\n */\n getOappMoveCall(tx: Transaction, messagingChannel: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_oapp'),\n arguments: [asObject(tx, messagingChannel)],\n })\n }\n\n /**\n * Get OApp address from messaging channel\n * @param messagingChannel - The messaging channel object ID\n * @returns Promise<string> - The OApp address\n */\n async getOapp(messagingChannel: string): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => this.getOappMoveCall(tx, messagingChannel),\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Check if messaging channel is currently sending\n * @param tx - The transaction to add the move call to\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @returns Transaction result containing the sending status\n */\n isSendingMoveCall(tx: Transaction, messagingChannel: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_sending'),\n arguments: [asObject(tx, messagingChannel)],\n })\n }\n\n /**\n * Check if messaging channel is currently sending\n * @param messagingChannel - The messaging channel object ID\n * @returns Promise<boolean> - True if the channel is currently sending\n */\n async isSending(messagingChannel: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => this.isSendingMoveCall(tx, messagingChannel),\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get next GUID for outbound message\n * @param tx - The transaction to add the move call to\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param dstEid - Destination endpoint ID or transaction argument\n * @param receiver - Receiver address as bytes or transaction argument\n * @returns Transaction result containing the next GUID\n */\n getNextGuidMoveCall(\n tx: Transaction,\n messagingChannel: string | TransactionArgument,\n dstEid: number | TransactionArgument,\n receiver: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_next_guid'),\n arguments: [\n tx.object(this.objects.endpointV2),\n asObject(tx, messagingChannel),\n asU32(tx, dstEid),\n asBytes32(tx, receiver, this.moduleManager.getUtils()),\n ],\n })\n }\n\n /**\n * Get next GUID for outbound message\n * @param messagingChannel - The messaging channel object ID\n * @param dstEid - Destination endpoint ID\n * @param receiver - Receiver address as bytes\n * @returns Promise<Uint8Array> - The next GUID as bytes\n */\n async getNextGuid(messagingChannel: string, dstEid: number, receiver: Uint8Array): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => this.getNextGuidMoveCall(tx, messagingChannel, dstEid, receiver),\n (result) => {\n const parsed = bcs.vector(bcs.u8()).parse(result[0].value)\n return new Uint8Array(parsed)\n }\n )\n }\n\n /**\n * Get outbound nonce for destination\n * @param tx - The transaction to add the move call to\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param dstEid - Destination endpoint ID or transaction argument\n * @param receiver - Receiver address as bytes or transaction argument\n * @returns Transaction result containing the outbound nonce\n */\n getOutboundNonceMoveCall(\n tx: Transaction,\n messagingChannel: string | TransactionArgument,\n dstEid: number | TransactionArgument,\n receiver: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_outbound_nonce'),\n arguments: [\n asObject(tx, messagingChannel),\n asU32(tx, dstEid),\n asBytes32(tx, receiver, this.moduleManager.getUtils()),\n ],\n })\n }\n\n /**\n * Get outbound nonce for destination\n * @param messagingChannel - The messaging channel object ID\n * @param dstEid - Destination endpoint ID\n * @param receiver - Receiver address as bytes\n * @returns Promise<bigint> - The outbound nonce value\n */\n async getOutboundNonce(messagingChannel: string, dstEid: number, receiver: Uint8Array): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => this.getOutboundNonceMoveCall(tx, messagingChannel, dstEid, receiver),\n (result) => BigInt(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Get lazy inbound nonce from source\n * @param tx - The transaction to add the move call to\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param srcEid - Source endpoint ID or transaction argument\n * @param sender - Sender address as bytes or transaction argument\n * @returns Transaction result containing the lazy inbound nonce\n */\n getLazyInboundNonceMoveCall(\n tx: Transaction,\n messagingChannel: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_lazy_inbound_nonce'),\n arguments: [\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n ],\n })\n }\n\n /**\n * Get lazy inbound nonce from source\n * @param messagingChannel - The messaging channel object ID\n * @param srcEid - Source endpoint ID\n * @param sender - Sender address as bytes\n * @returns Promise<bigint> - The lazy inbound nonce value\n */\n async getLazyInboundNonce(messagingChannel: string, srcEid: number, sender: Uint8Array): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => this.getLazyInboundNonceMoveCall(tx, messagingChannel, srcEid, sender),\n (result) => BigInt(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Get inbound nonce from source\n * @param tx - The transaction to add the move call to\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param srcEid - Source endpoint ID or transaction argument\n * @param sender - Sender address as bytes or transaction argument\n * @returns Transaction result containing the inbound nonce\n */\n getInboundNonceMoveCall(\n tx: Transaction,\n messagingChannel: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_inbound_nonce'),\n arguments: [\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n ],\n })\n }\n\n /**\n * Get inbound nonce from source\n * @param messagingChannel - The messaging channel object ID\n * @param srcEid - Source endpoint ID\n * @param sender - Sender address as bytes\n * @returns Promise<bigint> - The inbound nonce value\n */\n async getInboundNonce(messagingChannel: string, srcEid: number, sender: Uint8Array): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => this.getInboundNonceMoveCall(tx, messagingChannel, srcEid, sender),\n (result) => BigInt(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Check if inbound payload hash exists\n * @param tx - The transaction to add the move call to\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param srcEid - Source endpoint ID or transaction argument\n * @param sender - Sender address as bytes or transaction argument\n * @param nonce - Message nonce or transaction argument\n * @returns Transaction result containing the payload hash existence status\n */\n hasInboundPayloadHashMoveCall(\n tx: Transaction,\n messagingChannel: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('has_inbound_payload_hash'),\n arguments: [\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n ],\n })\n }\n\n /**\n * Check if inbound payload hash exists\n * @param messagingChannel - The messaging channel object ID\n * @param srcEid - Source endpoint ID\n * @param sender - Sender address as bytes\n * @param nonce - Message nonce\n * @returns Promise<boolean> - True if payload hash exists\n */\n async hasInboundPayloadHash(\n messagingChannel: string,\n srcEid: number,\n sender: Uint8Array,\n nonce: bigint\n ): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => this.hasInboundPayloadHashMoveCall(tx, messagingChannel, srcEid, sender, nonce),\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get inbound payload hash\n * @param tx - The transaction to add the move call to\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param srcEid - Source endpoint ID or transaction argument\n * @param sender - Sender address as bytes or transaction argument\n * @param nonce - Message nonce or transaction argument\n * @returns Transaction result containing the payload hash\n */\n getInboundPayloadHashMoveCall(\n tx: Transaction,\n messagingChannel: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_inbound_payload_hash'),\n arguments: [\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n ],\n })\n }\n\n /**\n * Get inbound payload hash\n * @param messagingChannel - The messaging channel object ID\n * @param srcEid - Source endpoint ID\n * @param sender - Sender address as bytes\n * @param nonce - Message nonce\n * @returns Promise<Uint8Array | null> - The payload hash as bytes or null if not found\n */\n async getInboundPayloadHash(\n messagingChannel: string,\n srcEid: number,\n sender: Uint8Array,\n nonce: bigint\n ): Promise<Uint8Array | null> {\n return executeSimulate(\n this.client,\n (tx) => this.getInboundPayloadHashMoveCall(tx, messagingChannel, srcEid, sender, nonce),\n (result) => {\n const parsed = bcs.vector(bcs.u8()).parse(result[0].value)\n return new Uint8Array(parsed)\n }\n )\n }\n\n /**\n * Check if message is verifiable\n * @param tx - The transaction to add the move call to\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param srcEid - Source endpoint ID or transaction argument\n * @param sender - Sender address as bytes or transaction argument\n * @param nonce - Message nonce or transaction argument\n * @returns Transaction result containing the verifiable status\n */\n verifiableMoveCall(\n tx: Transaction,\n messagingChannel: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('verifiable'),\n arguments: [\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n ],\n })\n }\n\n /**\n * Check if message is verifiable\n * @param messagingChannel - The messaging channel object ID\n * @param srcEid - Source endpoint ID\n * @param sender - Sender address as bytes\n * @param nonce - Message nonce\n * @returns Promise<boolean> - True if message is verifiable\n */\n async verifiable(messagingChannel: string, srcEid: number, sender: Uint8Array, nonce: bigint): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => this.verifiableMoveCall(tx, messagingChannel, srcEid, sender, nonce),\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n // === Quote and Send Functions ===\n\n /**\n * Quote the messaging fee for sending a message\n *\n * This method simulates the transaction to calculate the exact fees required\n * for sending a cross-chain message, including native and ZRO token fees.\n *\n * @param tx - The transaction containing the quote call\n * @param quoteCall - The quote call transaction result\n * @param sender - Optional sender address for simulation context\n * @param maxSimulationTimes - Maximum number of simulation iterations allowed\n * @returns Promise resolving to MessagingFee with nativeFee and zroFee\n * @throws Error if simulation fails or validation errors occur\n */\n async quote(\n tx: Transaction,\n quoteCall: TransactionResult,\n sender: string | undefined = undefined,\n validators: IPTBValidator[] = [],\n maxSimulationTimes = DEFAULT_SIMULATION_TIMES\n ): Promise<MessagingFee> {\n await this.populateQuoteTransaction(tx, quoteCall, sender, validators, maxSimulationTimes)\n\n // apply get fee result move-call\n const quoteResult = this.moduleManager\n .getCall()\n .resultMoveCall(\n tx,\n getTypeName(this.moduleManager, LzTypeName.EndpointQuoteParam),\n getTypeName(this.moduleManager, LzTypeName.MessagingFee),\n quoteCall\n )\n tx.moveCall({\n target: '0x1::option::borrow',\n typeArguments: [getTypeName(this.moduleManager, LzTypeName.MessagingFee)],\n arguments: [quoteResult],\n })\n\n const result = await simulateTransaction(this.client, tx)\n const messageFee = MessagingFeeBcs.parse(result[0].value)\n return {\n nativeFee: BigInt(messageFee.native_fee),\n zroFee: BigInt(messageFee.zro_fee),\n }\n }\n\n /**\n * Populate a transaction with all necessary move calls for quoting a message\n * @param tx - The transaction to populate with move calls\n * @param quoteCall - The quote call transaction result\n * @param sender - Optional sender address for simulation context\n * @param maxSimulationTimes - Maximum number of simulation iterations allowed\n * @param validators - validators for simulation context (ShareObjectValidator + PackageWhitelistValidator are always ensured, additional validators can be provided)\n * @throws Error if simulation fails or validation errors occur\n * @returns Promise<MoveCall[]> - The final move calls that are built\n */\n async populateQuoteTransaction(\n tx: Transaction,\n quoteCall: TransactionResult,\n sender: string | undefined = undefined,\n validators: IPTBValidator[] = [],\n maxSimulationTimes = DEFAULT_SIMULATION_TIMES\n ): Promise<MoveCall[]> {\n const simulateTx = Transaction.from(tx)\n this.moduleManager.getEndpointPtbBuilder(this.client).buildQuotePtbByCallMoveCall(simulateTx, quoteCall)\n\n const moveCalls = await this.moduleManager.getPtbBuilder().simulatePtb(simulateTx)\n\n const [_, finalMoveCalls] = await this.moduleManager\n .getPtbBuilder()\n .buildPtb(\n tx,\n moveCalls,\n new Map([[callId(this.moduleManager, CallTypeName.EndpointQuoteCall), quoteCall]]),\n sender,\n maxSimulationTimes\n )\n\n // Always validate for quote operations (compulsory) - AFTER building with complete moveCalls\n const allValidators = this.#addRequiredValidators(validators)\n await validateWithDetails(this.client, finalMoveCalls, allValidators)\n return finalMoveCalls\n }\n\n /**\n * Populate a transaction with all necessary move calls for sending a message\n *\n * This method builds the complete transaction by simulating and resolving all\n * required move calls, including worker assignments and fee calculations.\n * It validates all input objects to ensure PTB compatibility.\n *\n * @param tx - The transaction to populate with move calls\n * @param sendCall - The send call transaction result\n * @param sender - Optional sender address for simulation context\n * @param validators - validators for simulation context (ShareObjectValidator + PackageWhitelistValidator are always ensured, additional validators can be provided)\n * @param maxSimulationTimes - Maximum number of simulation iterations allowed\n * @throws Error if simulation fails, validation errors occur, or objects are not PTB-compatible\n * @returns Promise<MoveCall[]> - The final move calls that are built\n */\n async populateSendTransaction(\n tx: Transaction,\n sendCall: TransactionResult,\n sender: string | undefined = undefined,\n validators: IPTBValidator[] = [],\n maxSimulationTimes = DEFAULT_SIMULATION_TIMES\n ): Promise<MoveCall[]> {\n const simulateTx = Transaction.from(tx)\n this.moduleManager.getEndpointPtbBuilder(this.client).buildSendPtbByCallMoveCall(simulateTx, sendCall)\n\n const moveCalls = await this.moduleManager.getPtbBuilder().simulatePtb(simulateTx)\n\n const [_, finalMoveCalls] = await this.moduleManager\n .getPtbBuilder()\n .buildPtb(\n tx,\n moveCalls,\n new Map([[callId(this.moduleManager, CallTypeName.EndpointSendCall), sendCall]]),\n sender,\n maxSimulationTimes\n )\n\n // Always validate for send operations (compulsory) - AFTER building with complete moveCalls\n const allValidators = this.#addRequiredValidators(validators)\n await validateWithDetails(this.client, finalMoveCalls, allValidators)\n return finalMoveCalls\n }\n\n /**\n * Populate a transaction with all necessary move calls for setting configuration\n *\n * This method builds the complete transaction for updating message library configuration\n * by simulating and resolving all required move calls.\n *\n * @param tx - The transaction to populate with move calls\n * @param setConfigCall - The set config call transaction result\n * @param sender - Optional sender address for simulation context\n * @param validators - validators for simulation context (ShareObjectValidator + PackageWhitelistValidator are always ensured, additional validators can be provided)\n * @param maxSimulationTimes - Maximum number of simulation iterations allowed\n * @throws Error if simulation fails or validation errors occur\n * @returns Promise<MoveCall[]> - The final move calls that are built\n */\n async populateSetConfigTransaction(\n tx: Transaction,\n setConfigCall: TransactionResult,\n sender: string | undefined = undefined,\n validators: IPTBValidator[] = [],\n maxSimulationTimes = DEFAULT_SIMULATION_TIMES\n ): Promise<MoveCall[]> {\n const simulateTx = Transaction.from(tx)\n this.moduleManager.getEndpointPtbBuilder(this.client).buildSetConfigPtbByCallMoveCall(simulateTx, setConfigCall)\n\n const moveCalls = await this.moduleManager.getPtbBuilder().simulatePtb(simulateTx)\n\n const [_, finalMoveCalls] = await this.moduleManager\n .getPtbBuilder()\n .buildPtb(\n tx,\n moveCalls,\n new Map([[callId(this.moduleManager, CallTypeName.MessageLibSetConfigCall), setConfigCall]]),\n sender,\n maxSimulationTimes\n )\n\n // Always validate for set config operations (compulsory) - AFTER building with complete moveCalls\n const allValidators = this.#addRequiredValidators(validators)\n await validateWithDetails(this.client, finalMoveCalls, allValidators)\n\n return finalMoveCalls\n }\n\n /**\n * Populate a transaction with all necessary move calls for receiving a LayerZero message\n *\n * This method builds the complete transaction for processing an incoming cross-chain\n * message, including all required validations and state updates.\n *\n * @param tx - The transaction to populate with move calls\n * @param lzReceiveCall - The LayerZero receive call transaction result\n * @param oapp - The receiver OApp address\n * @param sender - Optional sender address for simulation context\n * @param maxSimulationTimes - Maximum number of simulation iterations allowed\n * @throws Error if simulation fails or validation errors occur\n * @returns Promise<MoveCall[]> - The final move calls that are built\n */\n async populateLzReceiveTransaction(\n tx: Transaction,\n lzReceiveCall: TransactionResult,\n oapp: string | TransactionArgument, // receiver oapp\n sender: string | undefined = undefined,\n validators: IPTBValidator[] = [],\n maxSimulationTimes = DEFAULT_SIMULATION_TIMES\n ): Promise<MoveCall[]> {\n const simulateTx = Transaction.from(tx)\n this.getOappInfoMoveCall(simulateTx, oapp)\n const moveCalls = await this.moduleManager.getPtbBuilder().simulateLzReceivePtb(simulateTx, sender)\n\n const [_, finalMoveCalls] = await this.moduleManager\n .getPtbBuilder()\n .buildPtb(\n tx,\n moveCalls,\n new Map([[callId(this.moduleManager, CallTypeName.EndpointLzReceiveCall), lzReceiveCall]]),\n sender,\n maxSimulationTimes\n )\n\n await validateWithDetails(this.client, finalMoveCalls, validators)\n\n return finalMoveCalls\n }\n\n /**\n * Populate a transaction with all necessary move calls for LayerZero compose\n *\n * This method builds the complete transaction for processing a LayerZero compose\n * operation, including all required validations and state updates.\n *\n * @param tx - The transaction to populate with move calls\n * @param endpointLzComposeCall - The LayerZero compose call transaction result\n * @param composer - The composer address\n * @param sender - Optional sender address for simulation context\n * @param maxSimulationTimes - Maximum number of simulation iterations allowed\n * @throws Error if simulation fails or validation errors occur\n * @returns Promise<MoveCall[]> - The final move calls that are built\n */\n async populateLzComposeTransaction(\n tx: Transaction,\n endpointLzComposeCall: TransactionResult,\n composer: string | TransactionArgument,\n sender: string | undefined = undefined,\n validators: IPTBValidator[] = [],\n maxSimulationTimes = DEFAULT_SIMULATION_TIMES\n ): Promise<MoveCall[]> {\n const simulateTx = Transaction.from(tx)\n this.getComposerInfoMoveCall(simulateTx, composer)\n const moveCalls = await this.moduleManager.getPtbBuilder().simulateLzComposePtb(simulateTx, sender)\n\n const [_, finalMoveCalls] = await this.moduleManager\n .getPtbBuilder()\n .buildPtb(\n tx,\n moveCalls,\n new Map([[callId(this.moduleManager, CallTypeName.EndpointLzComposeCall), endpointLzComposeCall]]),\n sender,\n maxSimulationTimes\n )\n\n await validateWithDetails(this.client, finalMoveCalls, validators)\n\n return finalMoveCalls\n }\n\n // === Private Functions ===\n\n /**\n * Add required validators if missing, then combine with user validators\n * @param validators - User-provided validators\n * @returns Combined array with required validators first, then user validators\n * @private\n */\n #addRequiredValidators(validators: IPTBValidator[]): IPTBValidator[] {\n const hasShareValidator = validators.some((v) => v instanceof ShareObjectValidator)\n const hasPackageValidator = validators.some((v) => v instanceof PackageAllowlistValidator)\n\n const required: IPTBValidator[] = []\n if (!hasShareValidator) required.push(new ShareObjectValidator())\n if (!hasPackageValidator) {\n // Use SDK to get the correct PackageWhitelistValidator with proper package address\n const packageWhitelistContract = this.moduleManager.getPackageWhitelistValidator(this.client)\n required.push(new PackageAllowlistValidator([], packageWhitelistContract))\n }\n\n return [...required, ...validators]\n }\n\n /**\n * Generate the full target path for move calls\n * @param functionName - The function name to call\n * @param moduleName - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(functionName: string, moduleName: string = MODULE_NAME): string {\n return `${this.packageId}::${moduleName}::${functionName}`\n }\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { ObjectOptions } from '../../types'\nimport { executeSimulate } from '../../utils'\n\nconst MODULE_NAME = 'blocked_message_lib'\n\nexport const BlockedMessageLibErrorCode = {\n // BlockedMessageLib related errors (with BlockedMessageLib_ prefix)\n BlockedMessageLib_ENotImplemented: 1,\n} as const\n\nexport class BlockedMessageLib {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Set Functions ===\n\n /**\n * Quote messaging fees (always throws not implemented error)\n * @param tx - The transaction to add the move call to\n * @param call - The call transaction result or transaction argument\n */\n quoteMoveCall(tx: Transaction, call: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('quote'),\n arguments: [tx.object(this.objects.blockedMessageLib), call],\n })\n }\n\n /**\n * Send message (always throws not implemented error)\n * @param tx - The transaction to add the move call to\n * @param call - The call transaction result or transaction argument\n */\n sendMoveCall(tx: Transaction, call: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('send'),\n arguments: [tx.object(this.objects.blockedMessageLib), call],\n })\n }\n\n /**\n * Set configuration (always throws not implemented error)\n * @param tx - The transaction to add the move call to\n * @param call - The call transaction result or transaction argument\n */\n setConfigMoveCall(tx: Transaction, call: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_config'),\n arguments: [tx.object(this.objects.blockedMessageLib), call],\n })\n }\n\n // === View Functions ===\n\n /**\n * Get blocked message library version\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the version information\n */\n versionMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('version'),\n arguments: [],\n })\n }\n\n /**\n * Get blocked message library version\n * @returns Promise<[string, string, string]> - Tuple of [major, minor, endpoint] version strings\n */\n async getVersion(): Promise<[string, string, string]> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.versionMoveCall(tx)\n },\n (result) => [\n bcs.U64.parse(result[0].value).toString(),\n bcs.U8.parse(result[1].value).toString(),\n bcs.U8.parse(result[2].value).toString(),\n ]\n )\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name: string = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { ObjectOptions } from '../../types'\nimport { asAddress, asBytes, asBytes32, asObject, asU64, executeSimulate } from '../../utils'\n\nconst MODULE_NAME = 'simple_message_lib'\n\nexport const SimpleMessageLibErrorCode = {\n // SimpleMessageLib related errors (matching simple_message_lib.move)\n SimpleMessageLib_ENotImplemented: 1,\n SimpleMessageLib_EZROFeeNotEnabled: 2,\n SimpleMessageLib_EInvalidEid: 3,\n} as const\n\nexport class SimpleMessageLib {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Set Functions ===\n\n /**\n * Set messaging fees for simple message library (admin only)\n * @param tx - The transaction to add the move call to\n * @param zroFee - The ZRO token fee amount or transaction argument\n * @param nativeFee - The native token fee amount or transaction argument\n */\n setMessagingFeeMoveCall(\n tx: Transaction,\n zroFee: number | TransactionArgument,\n nativeFee: number | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_messaging_fee'),\n arguments: [\n tx.object(this.objects.simpleMessageLib),\n tx.object(this.objects.simpleMessageLibAdminCap),\n asU64(tx, zroFee),\n asU64(tx, nativeFee),\n ],\n })\n }\n\n /**\n * Set fee recipient address (admin only)\n * @param tx - The transaction to add the move call to\n * @param feeRecipient - The new fee recipient address or transaction argument\n */\n setFeeRecipientMoveCall(tx: Transaction, feeRecipient: string | TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_fee_recipient'),\n arguments: [\n tx.object(this.objects.simpleMessageLib),\n tx.object(this.objects.endpointAdminCap),\n asAddress(tx, feeRecipient),\n ],\n })\n }\n\n /**\n * Validate packet for simple message processing\n * @param tx - The transaction to add the move call to\n * @param messagingChannel - The messaging channel object ID or transaction argument\n * @param packetHeader - The packet header as bytes or transaction argument\n * @param payloadHash - The payload hash as bytes or transaction argument\n */\n validatePacketMoveCall(\n tx: Transaction,\n messagingChannel: string | TransactionArgument,\n packetHeader: Uint8Array | TransactionArgument,\n payloadHash: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('validate_packet'),\n arguments: [\n tx.object(this.objects.simpleMessageLib),\n tx.object(this.objects.endpointV2),\n tx.object(this.objects.simpleMessageLibAdminCap),\n asObject(tx, messagingChannel),\n asBytes(tx, packetHeader),\n asBytes32(tx, payloadHash, this.moduleManager.getUtils()),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Set configuration for simple message library\n * @param tx - The transaction to add the move call to\n * @param call - The call transaction result containing configuration or transaction argument\n */\n setConfigMoveCall(tx: Transaction, call: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_config'),\n arguments: [tx.object(this.objects.simpleMessageLib), call],\n })\n }\n\n /**\n * Quote messaging fees for simple message library\n * @param tx - The transaction to add the move call to\n * @param call - The call transaction result containing quote parameters or transaction argument\n */\n quoteMoveCall(tx: Transaction, call: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('quote'),\n arguments: [tx.object(this.objects.simpleMessageLib), call],\n })\n }\n\n /**\n * Send message through simple message library\n * @param tx - The transaction to add the move call to\n * @param messageChannel - The messaging channel object ID or transaction argument\n * @param endpointCall - The endpoint call transaction result or transaction argument\n * @param messageLibCall - The message library call transaction result or transaction argument\n */\n sendMoveCall(\n tx: Transaction,\n messageChannel: string | TransactionArgument,\n endpointCall: TransactionArgument,\n messageLibCall: TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('send'),\n arguments: [\n tx.object(this.objects.simpleMessageLib),\n tx.object(this.objects.endpointV2),\n asObject(tx, messageChannel),\n endpointCall,\n messageLibCall,\n ],\n })\n }\n\n // === View Functions ===\n\n /**\n * Get native token fee amount\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the native fee\n */\n getNativeFeeMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_native_fee'),\n arguments: [tx.object(this.objects.simpleMessageLib)],\n })\n }\n\n /**\n * Get native token fee amount\n * @returns Promise<string> - The native token fee as string\n */\n async getNativeFee(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getNativeFeeMoveCall(tx)\n },\n (result) => bcs.U64.parse(result[0].value)\n )\n }\n\n /**\n * Get ZRO token fee amount\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the ZRO fee\n */\n getZroFeeMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_zro_fee'),\n arguments: [tx.object(this.objects.simpleMessageLib)],\n })\n }\n\n /**\n * Get ZRO token fee amount\n * @returns Promise<string> - The ZRO token fee as string\n */\n async getZroFee(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getZroFeeMoveCall(tx)\n },\n (result) => bcs.U64.parse(result[0].value)\n )\n }\n\n /**\n * Get fee recipient address\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the fee recipient address\n */\n getFeeRecipientMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_fee_recipient'),\n arguments: [tx.object(this.objects.simpleMessageLib)],\n })\n }\n\n /**\n * Get fee recipient address\n * @returns Promise<string> - The fee recipient address\n */\n async getFeeRecipient(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getFeeRecipientMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get simple message library version\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the version information\n */\n versionMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('version'),\n arguments: [],\n })\n }\n\n /**\n * Get simple message library version\n * @returns Promise<[string, string, string]> - Tuple of [major, minor, endpoint] version strings\n */\n async getVersion(): Promise<[string, string, string]> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.versionMoveCall(tx)\n },\n (result) => [\n bcs.U64.parse(result[0].value).toString(),\n bcs.U8.parse(result[1].value).toString(),\n bcs.U8.parse(result[2].value).toString(),\n ]\n )\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name: string = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ExecutorConfigBcs, OAppUlnConfigBcs, UlnConfigBcs } from '../../bcs'\nimport { ModuleManager } from '../../module-manager'\nimport { ExecutorConfig, OAppUlnConfig, ObjectOptions, UlnConfig, VersionInfo } from '../../types'\nimport {\n asAddress,\n asAddressVector,\n asBytes,\n asBytes32,\n asObject,\n asU32,\n asU64,\n asU8,\n executeSimulate,\n} from '../../utils'\n\nconst MODULE_NAME = 'uln_302'\n\n// ULN-302 specific error codes (matching uln-302 contract files)\nexport const Uln302ErrorCode = {\n SendUln302_EDefaultExecutorConfigNotFound: 1,\n SendUln302_EDefaultUlnConfigNotFound: 2,\n SendUln302_EInvalidMessageSize: 3,\n SendUln302_EOAppExecutorConfigNotFound: 4,\n SendUln302_EOAppUlnConfigNotFound: 5,\n\n ReceiveUln302_EConfirmationsNotFound: 1,\n ReceiveUln302_EDefaultUlnConfigNotFound: 2,\n ReceiveUln302_EInvalidEid: 3,\n ReceiveUln302_EOAppUlnConfigNotFound: 4,\n ReceiveUln302_EVerifying: 5,\n\n Uln302_EInvalidConfigType: 1,\n Uln302_EInvalidMessagingChannel: 2,\n Uln302_EUnsupportedEid: 3,\n\n // UlnConfig related errors (matching uln_config.move)\n UlnConfig_EAtLeastOneDVN: 1,\n UlnConfig_EDuplicateOptionalDVNs: 2,\n UlnConfig_EDuplicateRequiredDVNs: 3,\n UlnConfig_EInvalidOptionalDVNCount: 4,\n UlnConfig_EInvalidOptionalDVNThreshold: 5,\n UlnConfig_EInvalidRequiredDVNCount: 6,\n UlnConfig_EInvalidUlnConfigBytes: 7,\n\n // OAppUlnConfig related errors (matching oapp_uln_config.move)\n OAppUlnConfig_EInvalidConfirmations: 1,\n OAppUlnConfig_EInvalidRequiredDVNs: 2,\n OAppUlnConfig_EInvalidOptionalDVNs: 3,\n\n // ExecutorConfig related errors (matching executor_config.move)\n ExecutorConfig_EInvalidExecutorAddress: 1,\n ExecutorConfig_EInvalidExecutorBytes: 2,\n ExecutorConfig_EZeroMessageSize: 3,\n} as const\n\nexport class Uln302 {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Set Functions ===\n\n /**\n * Create quote move call for message library\n * Note: This is typically called by the endpoint, not directly by users\n * @param tx - The transaction to add the move call to\n * @param call - The call transaction result containing quote parameters\n * @returns Transaction result containing the quote operation\n */\n quoteMoveCall(tx: Transaction, call: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('quote'),\n arguments: [tx.object(this.objects.uln302), call],\n })\n }\n\n /**\n * Confirm quote move call with worker fee calculations\n * Note: This is typically called by the endpoint, not directly by users\n * @param tx - The transaction to add the move call to\n * @param treasury - Treasury object address\n * @param messageLibCall - Message library call transaction result\n * @param executorCall - Executor call transaction result\n * @param dvnMultiCall - DVN multi-call transaction result\n */\n confirmQuoteMoveCall(\n tx: Transaction,\n treasury: string | TransactionArgument,\n messageLibCall: TransactionArgument,\n executorCall: TransactionArgument,\n dvnMultiCall: TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('confirm_quote'),\n arguments: [\n tx.object(this.objects.uln302),\n asObject(tx, treasury),\n messageLibCall,\n executorCall,\n dvnMultiCall,\n ],\n })\n }\n\n /**\n * Create send move call for message library\n * Note: This is typically called by the endpoint, not directly by users\n * @param tx - The transaction to add the move call to\n * @param call - The call transaction result containing send parameters\n * @returns Transaction result containing the send operation\n */\n sendMoveCall(tx: Transaction, call: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('send'),\n arguments: [tx.object(this.objects.uln302), call],\n })\n }\n\n /**\n * Confirm send move call with treasury and worker integration\n * Note: This is typically called by the endpoint, not directly by users\n * @param tx - The transaction to add the move call to\n * @param treasury - Treasury object address\n * @param messagingChannel - The messaging channel object ID\n * @param endpointCall - The endpoint call transaction result\n * @param messageLibCall - The message library call transaction result\n * @param executorCall - The executor call transaction result\n * @param dvnMultiCall - The DVN multi-call transaction result\n */\n confirmSendMoveCall(\n tx: Transaction,\n treasury: string | TransactionArgument,\n messagingChannel: string | TransactionArgument,\n endpointCall: TransactionArgument,\n messageLibCall: TransactionArgument,\n executorCall: TransactionArgument,\n dvnMultiCall: TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('confirm_send'),\n arguments: [\n tx.object(this.objects.uln302),\n tx.object(this.objects.endpointV2),\n asObject(tx, treasury),\n asObject(tx, messagingChannel),\n endpointCall,\n messageLibCall,\n executorCall,\n dvnMultiCall,\n ],\n })\n }\n\n /**\n * Set configuration move call for ULN302\n * Note: This is typically called by the endpoint, not directly by users\n * @param tx - The transaction to add the move call to\n * @param call - The call transaction result containing configuration\n */\n setConfigMoveCall(tx: Transaction, call: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_config'),\n arguments: [tx.object(this.objects.uln302), call],\n })\n }\n\n /**\n * Verify packet move call with DVN call (new API)\n * Note: This is typically called by DVNs via Call objects, not directly by users\n * @param tx - The transaction to add the move call to\n * @param verification - The verification object address or transaction argument\n * @param call - The DVN verification call containing verification parameters\n */\n verifyMoveCall(tx: Transaction, verification: string | TransactionArgument, call: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('verify'),\n arguments: [tx.object(this.objects.uln302), asObject(tx, verification), call],\n })\n }\n\n /**\n * Commit verification move call after all DVN verifications are complete\n * Note: This is typically called by relayers/executors, not directly by users\n * @param tx - The transaction to add the move call to\n * @param verification - The verification object address\n * @param messagingChannel - The messaging channel object ID\n * @param packetHeader - The packet header as bytes\n * @param payloadHash - The payload hash as bytes\n */\n commitVerificationMoveCall(\n tx: Transaction,\n verification: string | TransactionArgument,\n messagingChannel: string | TransactionArgument,\n packetHeader: Uint8Array | TransactionArgument,\n payloadHash: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('commit_verification'),\n arguments: [\n tx.object(this.objects.uln302),\n asObject(tx, verification),\n tx.object(this.objects.endpointV2),\n asObject(tx, messagingChannel),\n asBytes(tx, packetHeader),\n asBytes32(tx, payloadHash, this.moduleManager.getUtils()),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Set default executor configuration for destination EID (admin only)\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID or transaction argument\n * @param config - Executor configuration parameters\n */\n setDefaultExecutorConfigMoveCall(\n tx: Transaction,\n dstEid: number | TransactionArgument,\n config: ExecutorConfig\n ): void {\n const executorConfig = this.createExecutorConfigMoveCall(tx, config)\n tx.moveCall({\n target: this.#target('set_default_executor_config'),\n arguments: [\n tx.object(this.objects.uln302),\n tx.object(this.objects.uln302AdminCap),\n asU32(tx, dstEid),\n executorConfig,\n ],\n })\n }\n\n /**\n * Set default send ULN configuration for destination EID (admin only)\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID or transaction argument\n * @param config - ULN configuration parameters\n */\n setDefaultSendUlnConfigMoveCall(tx: Transaction, dstEid: number | TransactionArgument, config: UlnConfig): void {\n const ulnConfig = this.createUlnConfigMoveCall(tx, config)\n tx.moveCall({\n target: this.#target('set_default_send_uln_config'),\n arguments: [\n tx.object(this.objects.uln302),\n tx.object(this.objects.uln302AdminCap),\n asU32(tx, dstEid),\n ulnConfig,\n ],\n })\n }\n\n /**\n * Set default receive ULN configuration for source EID (admin only)\n * @param tx - The transaction to add the move call to\n * @param srcEid - Source endpoint ID or transaction argument\n * @param config - ULN configuration parameters\n */\n setDefaultReceiveUlnConfigMoveCall(tx: Transaction, srcEid: number | TransactionArgument, config: UlnConfig): void {\n const ulnConfig = this.createUlnConfigMoveCall(tx, config)\n tx.moveCall({\n target: this.#target('set_default_receive_uln_config'),\n arguments: [\n tx.object(this.objects.uln302),\n tx.object(this.objects.uln302AdminCap),\n asU32(tx, srcEid),\n ulnConfig,\n ],\n })\n }\n\n // === View Functions ===\n\n /**\n * Get ULN-302 version information\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing version information\n */\n versionMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('version'),\n arguments: [],\n })\n }\n\n /**\n * Get ULN-302 version information\n * @returns Promise<VersionInfo> - Version information with major, minor, and endpoint version\n */\n async version(): Promise<VersionInfo> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.versionMoveCall(tx)\n },\n (result) => ({\n major: BigInt(bcs.U64.parse(result[0].value)),\n minor: bcs.U8.parse(result[1].value),\n endpointVersion: bcs.U8.parse(result[2].value),\n })\n )\n }\n\n /**\n * Check if endpoint ID is supported by ULN-302\n * @param tx - The transaction to add the move call to\n * @param eid - Endpoint ID to check\n * @returns Transaction result containing support status\n */\n isSupportedEidMoveCall(tx: Transaction, eid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_supported_eid'),\n arguments: [tx.object(this.objects.uln302), asU32(tx, eid)],\n })\n }\n\n /**\n * Check if endpoint ID is supported by ULN-302\n * @param eid - Endpoint ID to check\n * @returns Promise<boolean> - True if the endpoint ID is supported\n */\n async isSupportedEid(eid: number): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isSupportedEidMoveCall(tx, eid)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get default executor configuration for destination EID\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID\n * @returns Transaction result containing the executor configuration\n */\n getDefaultExecutorConfigMoveCall(tx: Transaction, dstEid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_default_executor_config'),\n arguments: [tx.object(this.objects.uln302), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get default executor configuration for destination EID\n */\n async getDefaultExecutorConfig(dstEid: number): Promise<ExecutorConfig> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getDefaultExecutorConfigMoveCall(tx, dstEid)\n },\n (result) => this.parseExecutorConfig(result[0].value)\n )\n }\n\n /**\n * Get OApp-specific executor configuration\n * @param tx - The transaction to add the move call to\n * @param sender - The sender OApp address\n * @param dstEid - Destination endpoint ID\n * @returns Transaction result containing the executor configuration\n */\n getOAppExecutorConfigMoveCall(\n tx: Transaction,\n sender: string | TransactionArgument,\n dstEid: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_oapp_executor_config'),\n arguments: [tx.object(this.objects.uln302), asAddress(tx, sender), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get OApp-specific executor configuration\n */\n async getOAppExecutorConfig(sender: string, dstEid: number): Promise<ExecutorConfig> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getOAppExecutorConfigMoveCall(tx, sender, dstEid)\n },\n (result) => this.parseExecutorConfig(result[0].value)\n )\n }\n\n /**\n * Get effective executor configuration (OApp-specific or default)\n * @param tx - The transaction to add the move call to\n * @param sender - The sender OApp address\n * @param dstEid - Destination endpoint ID\n * @returns Transaction result containing the effective executor configuration\n */\n getEffectiveExecutorConfigMoveCall(\n tx: Transaction,\n sender: string | TransactionArgument,\n dstEid: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_effective_executor_config'),\n arguments: [tx.object(this.objects.uln302), asAddress(tx, sender), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get effective executor configuration (OApp-specific or default)\n */\n async getEffectiveExecutorConfig(sender: string, dstEid: number): Promise<ExecutorConfig> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getEffectiveExecutorConfigMoveCall(tx, sender, dstEid)\n },\n (result) => this.parseExecutorConfig(result[0].value)\n )\n }\n\n /**\n * Get default send ULN configuration for destination EID\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID\n * @returns Transaction result containing the default send ULN configuration\n */\n getDefaultSendUlnConfigMoveCall(tx: Transaction, dstEid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_default_send_uln_config'),\n arguments: [tx.object(this.objects.uln302), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get default ULN send configuration\n */\n async getDefaultSendUlnConfig(dstEid: number): Promise<UlnConfig> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getDefaultSendUlnConfigMoveCall(tx, dstEid)\n },\n (result) => this.parseUlnConfig(result[0].value)\n )\n }\n\n /**\n * Get OApp-specific send ULN configuration\n * @param tx - The transaction to add the move call to\n * @param sender - The sender OApp address\n * @param dstEid - Destination endpoint ID\n * @returns Transaction result containing the OApp send ULN configuration\n */\n getOAppSendUlnConfigMoveCall(\n tx: Transaction,\n sender: string | TransactionArgument,\n dstEid: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_oapp_send_uln_config'),\n arguments: [tx.object(this.objects.uln302), asAddress(tx, sender), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get OApp-specific ULN send configuration\n */\n async getOAppSendUlnConfig(sender: string, dstEid: number): Promise<OAppUlnConfig> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getOAppSendUlnConfigMoveCall(tx, sender, dstEid)\n },\n (result) => this.parseOAppUlnConfig(result[0].value)\n )\n }\n\n /**\n * Get effective send ULN configuration (OApp-specific or default)\n * @param tx - The transaction to add the move call to\n * @param sender - The sender OApp address\n * @param dstEid - Destination endpoint ID\n * @returns Transaction result containing the effective send ULN configuration\n */\n getEffectiveSendUlnConfigMoveCall(\n tx: Transaction,\n sender: string | TransactionArgument,\n dstEid: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_effective_send_uln_config'),\n arguments: [tx.object(this.objects.uln302), asAddress(tx, sender), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get effective ULN send configuration\n */\n async getEffectiveSendUlnConfig(sender: string, dstEid: number): Promise<UlnConfig> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getEffectiveSendUlnConfigMoveCall(tx, sender, dstEid)\n },\n (result) => this.parseUlnConfig(result[0].value)\n )\n }\n\n /**\n * Get default receive ULN configuration for source EID\n * @param tx - The transaction to add the move call to\n * @param srcEid - Source endpoint ID\n * @returns Transaction result containing the default receive ULN configuration\n */\n getDefaultReceiveUlnConfigMoveCall(tx: Transaction, srcEid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_default_receive_uln_config'),\n arguments: [tx.object(this.objects.uln302), asU32(tx, srcEid)],\n })\n }\n\n /**\n * Get default ULN receive configuration\n */\n async getDefaultReceiveUlnConfig(srcEid: number): Promise<UlnConfig> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getDefaultReceiveUlnConfigMoveCall(tx, srcEid)\n },\n (result) => this.parseUlnConfig(result[0].value)\n )\n }\n\n /**\n * Get OApp-specific receive ULN configuration\n * @param tx - The transaction to add the move call to\n * @param receiver - The receiver OApp address\n * @param srcEid - Source endpoint ID\n * @returns Transaction result containing the OApp receive ULN configuration\n */\n getOAppReceiveUlnConfigMoveCall(\n tx: Transaction,\n receiver: string | TransactionArgument,\n srcEid: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_oapp_receive_uln_config'),\n arguments: [tx.object(this.objects.uln302), asAddress(tx, receiver), asU32(tx, srcEid)],\n })\n }\n\n /**\n * Get OApp-specific ULN receive configuration\n */\n async getOAppReceiveUlnConfig(receiver: string, srcEid: number): Promise<OAppUlnConfig> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getOAppReceiveUlnConfigMoveCall(tx, receiver, srcEid)\n },\n (result) => this.parseOAppUlnConfig(result[0].value)\n )\n }\n\n /**\n * Get effective receive ULN configuration (OApp-specific or default)\n * @param tx - The transaction to add the move call to\n * @param receiver - The receiver OApp address\n * @param srcEid - Source endpoint ID\n * @returns Transaction result containing the effective receive ULN configuration\n */\n getEffectiveReceiveUlnConfigMoveCall(\n tx: Transaction,\n receiver: string | TransactionArgument,\n srcEid: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_effective_receive_uln_config'),\n arguments: [tx.object(this.objects.uln302), asAddress(tx, receiver), asU32(tx, srcEid)],\n })\n }\n\n /**\n * Get effective ULN receive configuration\n */\n async getEffectiveReceiveUlnConfig(receiver: string, srcEid: number): Promise<UlnConfig> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getEffectiveReceiveUlnConfigMoveCall(tx, receiver, srcEid)\n },\n (result) => this.parseUlnConfig(result[0].value)\n )\n }\n\n /**\n * Get verification object address for ULN-302\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the verification object address\n */\n getVerificationMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_verification'),\n arguments: [tx.object(this.objects.uln302)],\n })\n }\n\n /**\n * Get verification object address for ULN-302\n * @returns Promise<string> - The verification object address\n */\n async getVerification(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getVerificationMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Check if packet is verifiable through ULN-302\n * @param tx - The transaction to add the move call to\n * @param verification - The verification object address\n * @param packetHeader - The packet header as bytes\n * @param payloadHash - The payload hash as bytes\n * @returns Transaction result containing the verifiable status\n */\n verifiableMoveCall(\n tx: Transaction,\n verification: string | TransactionArgument,\n packetHeader: Uint8Array | TransactionArgument,\n payloadHash: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('verifiable'),\n arguments: [\n tx.object(this.objects.uln302),\n asObject(tx, verification),\n tx.object(this.objects.endpointV2),\n asBytes(tx, packetHeader),\n asBytes32(tx, payloadHash, this.moduleManager.getUtils()),\n ],\n })\n }\n\n /**\n * Check if packet is verifiable through ULN-302\n * @param verification - Verification object address\n * @param packetHeader - Packet header as bytes\n * @param payloadHash - Payload hash as bytes\n * @returns Promise<boolean> - True if packet is verifiable\n */\n async verifiable(verification: string, packetHeader: Uint8Array, payloadHash: Uint8Array): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.verifiableMoveCall(tx, verification, packetHeader, payloadHash)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get confirmations for a specific DVN verification\n * @param tx - The transaction to add the move call to\n * @param verification - The verification object address\n * @param dvn - The DVN address\n * @param headerHash - The header hash as bytes\n * @param payloadHash - The payload hash as bytes\n * @returns Transaction result containing the confirmations count\n */\n getConfirmationsMoveCall(\n tx: Transaction,\n verification: string | TransactionArgument,\n dvn: string | TransactionArgument,\n headerHash: Uint8Array | TransactionArgument,\n payloadHash: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_confirmations'),\n arguments: [\n asObject(tx, verification),\n asAddress(tx, dvn),\n asBytes32(tx, headerHash, this.moduleManager.getUtils()),\n asBytes32(tx, payloadHash, this.moduleManager.getUtils()),\n ],\n })\n }\n\n /**\n * Get confirmations for a specific DVN verification\n * @param verification - The verification object address\n * @param dvn - The DVN address\n * @param headerHash - The header hash as bytes\n * @param payloadHash - The payload hash as bytes\n * @returns Promise<bigint> - The confirmations count\n */\n async getConfirmations(\n verification: string,\n dvn: string,\n headerHash: Uint8Array,\n payloadHash: Uint8Array\n ): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getConfirmationsMoveCall(tx, verification, dvn, headerHash, payloadHash)\n },\n (result) => BigInt(bcs.U64.parse(result[0].value))\n )\n }\n\n // === Private Functions ===\n\n /**\n * Create executor configuration move call\n * @param tx - The transaction to add the move call to\n * @param config - Executor configuration parameters\n * @returns Transaction result containing the executor configuration\n * @private\n */\n private createExecutorConfigMoveCall(tx: Transaction, config: ExecutorConfig): TransactionResult {\n return tx.moveCall({\n target: this.#target('create', 'executor_config'),\n arguments: [asU64(tx, config.maxMessageSize), asAddress(tx, config.executor)],\n })\n }\n\n /**\n * Create ULN configuration move call\n * @param tx - The transaction to add the move call to\n * @param config - ULN configuration parameters\n * @returns Transaction result containing the ULN configuration\n * @private\n */\n private createUlnConfigMoveCall(tx: Transaction, config: UlnConfig): TransactionResult {\n return tx.moveCall({\n target: this.#target('create', 'uln_config'),\n arguments: [\n asU64(tx, config.confirmations),\n asAddressVector(tx, config.requiredDvns),\n asAddressVector(tx, config.optionalDvns),\n asU8(tx, config.optionalDvnThreshold),\n ],\n })\n }\n\n /**\n * Parse executor configuration from BCS data\n * @param data - Raw BCS data to parse\n * @returns ExecutorConfig - Parsed executor configuration\n * @private\n */\n private parseExecutorConfig(data: Uint8Array): ExecutorConfig {\n const config = ExecutorConfigBcs.parse(data)\n return {\n maxMessageSize: Number(config.max_message_size),\n executor: config.executor,\n }\n }\n\n /**\n * Parse ULN configuration from BCS data\n * @param data - Raw BCS data to parse\n * @returns UlnConfig - Parsed ULN configuration\n * @private\n */\n private parseUlnConfig(data: Uint8Array): UlnConfig {\n const config = UlnConfigBcs.parse(data)\n return {\n confirmations: BigInt(config.confirmations),\n requiredDvns: config.required_dvns,\n optionalDvns: config.optional_dvns,\n optionalDvnThreshold: config.optional_dvn_threshold,\n }\n }\n\n /**\n * Parse OApp ULN configuration from BCS data\n * @param data - Raw BCS data to parse\n * @returns OAppUlnConfig - Parsed OApp ULN configuration\n * @private\n */\n private parseOAppUlnConfig(data: Uint8Array): OAppUlnConfig {\n const config = OAppUlnConfigBcs.parse(data)\n const ulnConfig = config.uln_config\n return {\n useDefaultConfirmations: config.use_default_confirmations,\n useDefaultRequiredDvns: config.use_default_required_dvns,\n useDefaultOptionalDvns: config.use_default_optional_dvns,\n ulnConfig: {\n confirmations: BigInt(ulnConfig.confirmations),\n requiredDvns: ulnConfig.required_dvns,\n optionalDvns: ulnConfig.optional_dvns,\n optionalDvnThreshold: ulnConfig.optional_dvn_threshold,\n },\n }\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name: string = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { Bytes32Bcs, DvnDstConfigBcs } from '../../bcs'\nimport { ModuleManager } from '../../module-manager'\nimport { DvnDstConfig, ObjectOptions } from '../../types'\nimport {\n asAddress,\n asBool,\n asBytes,\n asBytes32,\n asObject,\n asU128,\n asU16,\n asU256,\n asU32,\n asU64,\n executeSimulate,\n} from '../../utils'\n\nconst MODULE_NAME = 'dvn'\n\nexport const DVNErrorCode = {\n // DVN related errors (with DVN_ prefix)\n DVN_EExpiredSignature: 1,\n DVN_EEidNotSupported: 2,\n DVN_EHashAlreadyUsed: 3,\n DVN_EPtbBuilderAlreadyInitialized: 4,\n\n // Multisig related errors (matching multisig.move)\n Multisig_EDuplicatedSigner: 1,\n Multisig_EInvalidSignatureLength: 2,\n Multisig_EInvalidSignerLength: 3,\n Multisig_EQuorumIsZero: 4,\n Multisig_ESignaturesLessThanQuorum: 5,\n Multisig_ESignerAlreadyExists: 6,\n Multisig_ESignerNotFound: 7,\n Multisig_ESignerNotInCommittee: 8,\n Multisig_ESignersSizeIsLessThanQuorum: 9,\n\n // DVNInfoV1 related errors (matching dvn_info_v1.move)\n DVNInfoV1_EInvalidData: 1,\n DVNInfoV1_EInvalidVersion: 2,\n} as const\n\nexport class DVN {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Set Functions ===\n\n /**\n * Set admin role for an address (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param admin - The admin address or transaction argument\n * @param active - Whether to activate or deactivate the admin role or transaction argument\n */\n setAdminMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n admin: string | TransactionArgument,\n active: boolean | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_admin'),\n arguments: [tx.object(this.objects.dvn), asObject(tx, adminCap), asAddress(tx, admin), asBool(tx, active)],\n })\n }\n\n /**\n * Set default multiplier basis points for fee calculation (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param multiplierBps - The multiplier in basis points or transaction argument\n */\n setDefaultMultiplierBpsMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n multiplierBps: number | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_default_multiplier_bps'),\n arguments: [tx.object(this.objects.dvn), asObject(tx, adminCap), asU16(tx, multiplierBps)],\n })\n }\n\n /**\n * Set deposit address for DVN fees (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param depositAddress - The new deposit address or transaction argument\n */\n setDepositAddressMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n depositAddress: string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_deposit_address'),\n arguments: [tx.object(this.objects.dvn), asObject(tx, adminCap), asAddress(tx, depositAddress)],\n })\n }\n\n /**\n * Set price feed for DVN (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param priceFeed - The price feed address or transaction argument\n */\n setPriceFeedMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n priceFeed: string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_price_feed'),\n arguments: [tx.object(this.objects.dvn), asObject(tx, adminCap), asAddress(tx, priceFeed)],\n })\n }\n\n /**\n * Set supported option types for a destination EID (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param dstEid - Destination endpoint ID\n * @param optionTypes - Array of supported option types\n */\n setSupportedOptionTypesMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n dstEid: number | TransactionArgument,\n optionTypes: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_supported_option_types'),\n arguments: [\n tx.object(this.objects.dvn),\n asObject(tx, adminCap),\n asU32(tx, dstEid),\n asBytes(tx, optionTypes),\n ],\n })\n }\n\n /**\n * Set worker fee library (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param workerFeeLib - The worker fee library address\n */\n setWorkerFeeLibMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n workerFeeLib: string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_worker_fee_lib'),\n arguments: [tx.object(this.objects.dvn), asObject(tx, adminCap), asAddress(tx, workerFeeLib)],\n })\n }\n\n /**\n * Set destination configuration for DVN (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param dstEid - Destination endpoint ID\n * @param gas - Gas amount for verification\n * @param multiplierBps - Multiplier in basis points\n * @param floorMarginUsd - Floor margin in USD\n */\n setDstConfigMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n dstEid: number | TransactionArgument,\n gas: bigint | number | string | TransactionArgument,\n multiplierBps: number | TransactionArgument,\n floorMarginUsd: bigint | number | string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_dst_config'),\n arguments: [\n tx.object(this.objects.dvn),\n asObject(tx, adminCap),\n asU32(tx, dstEid),\n asU256(tx, gas),\n asU16(tx, multiplierBps),\n asU128(tx, floorMarginUsd),\n ],\n })\n }\n\n /**\n * Initialize PTB builder move calls for DVN worker operations (admin only) - can only be called once\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param targetPtbBuilder - Target PTB builder address\n * @param getFeeMoveCalls - Get fee move calls transaction argument\n * @param assignJobMoveCalls - Assign job move calls transaction argument\n * @returns Transaction result containing the init PTB builder call\n */\n initPtbBuilderMoveCallsMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n targetPtbBuilder: string | TransactionArgument,\n getFeeMoveCalls: TransactionArgument,\n assignJobMoveCalls: TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('init_ptb_builder_move_calls'),\n arguments: [\n tx.object(this.objects.dvn),\n asObject(tx, adminCap),\n asAddress(tx, targetPtbBuilder),\n getFeeMoveCalls, // First element of DVN PTB result tuple\n assignJobMoveCalls, // Second element of DVN PTB result tuple\n ],\n })\n }\n\n /**\n * Set PTB builder move calls for DVN worker operations (admin with signatures)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param targetPtbBuilder - Target PTB builder address\n * @param getFeeMoveCalls - Get fee move calls transaction argument\n * @param assignJobMoveCalls - Assign job move calls transaction argument\n * @param expiration - Signature expiration timestamp\n * @param signatures - Multisig signatures for authorization\n * @returns Transaction result containing the set PTB builder call\n */\n setPtbBuilderMoveCallsMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n targetPtbBuilder: string | TransactionArgument,\n getFeeMoveCalls: TransactionArgument,\n assignJobMoveCalls: TransactionArgument,\n expiration: bigint | number | string | TransactionArgument,\n signatures: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('set_ptb_builder_move_calls'),\n arguments: [\n tx.object(this.objects.dvn),\n asObject(tx, adminCap),\n asAddress(tx, targetPtbBuilder),\n getFeeMoveCalls, // First element of DVN PTB result tuple\n assignJobMoveCalls, // Second element of DVN PTB result tuple\n asU64(tx, expiration),\n asBytes(tx, signatures),\n tx.object.clock(),\n ],\n })\n }\n\n // === Set Functions with Signatures ===\n\n /**\n * Set supported message library (admin with signatures)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param messageLib - The message library address\n * @param supported - Whether to support or remove support for the message library\n * @param expiration - Signature expiration timestamp\n * @param signatures - Multisig signatures for authorization\n */\n setSupportedMessageLibMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n messageLib: string | TransactionArgument,\n supported: boolean | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument,\n signatures: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_supported_message_lib'),\n arguments: [\n tx.object(this.objects.dvn),\n asObject(tx, adminCap),\n asAddress(tx, messageLib),\n asBool(tx, supported),\n asU64(tx, expiration),\n asBytes(tx, signatures),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Set allowlist status for an OApp sender (admin with signatures)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param oapp - The OApp address to allowlist/remove\n * @param allowed - Whether to allow or remove from allowlist\n * @param expiration - Signature expiration timestamp\n * @param signatures - Multisig signatures for authorization\n */\n setAllowlistMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n oapp: string | TransactionArgument,\n allowed: boolean | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument,\n signatures: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_allowlist'),\n arguments: [\n tx.object(this.objects.dvn),\n asObject(tx, adminCap),\n asAddress(tx, oapp),\n asBool(tx, allowed),\n asU64(tx, expiration),\n asBytes(tx, signatures),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Set denylist status for an OApp sender (admin with signatures)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param oapp - The OApp address to denylist/remove\n * @param denied - Whether to deny or remove from denylist\n * @param expiration - Signature expiration timestamp\n * @param signatures - Multisig signatures for authorization\n */\n setDenylistMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n oapp: string | TransactionArgument,\n denied: boolean | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument,\n signatures: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_denylist'),\n arguments: [\n tx.object(this.objects.dvn),\n asObject(tx, adminCap),\n asAddress(tx, oapp),\n asBool(tx, denied),\n asU64(tx, expiration),\n asBytes(tx, signatures),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Set paused state with multisig signatures (admin with signatures)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param paused - Whether to pause or unpause the DVN\n * @param expiration - Signature expiration timestamp\n * @param signatures - Multisig signatures for authorization\n */\n setPausedMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n paused: boolean | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument,\n signatures: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_paused'),\n arguments: [\n tx.object(this.objects.dvn),\n asObject(tx, adminCap),\n asBool(tx, paused),\n asU64(tx, expiration),\n asBytes(tx, signatures),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Set quorum threshold with multisig signatures (admin with signatures)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param quorum - The new quorum threshold\n * @param expiration - Signature expiration timestamp\n * @param signatures - Multisig signatures for authorization\n */\n setQuorumMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n quorum: bigint | number | string | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument,\n signatures: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_quorum'),\n arguments: [\n tx.object(this.objects.dvn),\n asObject(tx, adminCap),\n asU64(tx, quorum),\n asU64(tx, expiration),\n asBytes(tx, signatures),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Set DVN signer with multisig signatures (admin with signatures)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param signer - The signer public key as bytes\n * @param active - Whether to activate or deactivate the signer\n * @param expiration - Signature expiration timestamp\n * @param signatures - Multisig signatures for authorization\n */\n setDvnSignerMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n signer: Uint8Array | TransactionArgument,\n active: boolean | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument,\n signatures: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_dvn_signer'),\n arguments: [\n tx.object(this.objects.dvn),\n asObject(tx, adminCap),\n asBytes(tx, signer),\n asBool(tx, active),\n asU64(tx, expiration),\n asBytes(tx, signatures),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Change admin status using quorum signatures\n * @param tx - The transaction to add the move call to\n * @param admin - The admin address to change\n * @param active - Whether to activate or deactivate the admin\n * @param expiration - Signature expiration timestamp\n * @param signatures - Multisig signatures for authorization\n */\n quorumChangeAdminMoveCall(\n tx: Transaction,\n admin: string | TransactionArgument,\n active: boolean | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument,\n signatures: Uint8Array | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('quorum_change_admin'),\n arguments: [\n tx.object(this.objects.dvn),\n asAddress(tx, admin),\n asBool(tx, active),\n asU64(tx, expiration),\n asBytes(tx, signatures),\n tx.object.clock(),\n ],\n })\n }\n\n // Verification Functions\n\n /**\n * Verify a packet with DVN signatures (admin with signatures) - returns Call object for ULN302\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param targetMessageLib - The target message library address (usually ULN302)\n * @param packetHeader - The packet header as bytes\n * @param payloadHash - The payload hash as bytes\n * @param confirmations - Required confirmations count\n * @param expiration - Signature expiration timestamp\n * @param signatures - DVN multisig signatures\n * @returns Transaction result containing the verification Call object\n */\n verifyMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n targetMessageLib: string | TransactionArgument,\n packetHeader: Uint8Array | TransactionArgument,\n payloadHash: Uint8Array | TransactionArgument,\n confirmations: bigint | number | string | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument,\n signatures: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('verify'),\n arguments: [\n tx.object(this.objects.dvn),\n asObject(tx, adminCap),\n asAddress(tx, targetMessageLib),\n asBytes(tx, packetHeader),\n asBytes32(tx, payloadHash, this.moduleManager.getUtils()),\n asU64(tx, confirmations),\n asU64(tx, expiration),\n asBytes(tx, signatures),\n tx.object.clock(),\n ],\n })\n }\n\n // Worker Functions\n\n /**\n * Assign verification job for DVN (called via PTB with MultiCall created by send function in ULN302)\n * @param tx - The transaction to add the move call to\n * @param dvnMultiCall - The DVN multi-call transaction result\n * @returns Transaction result containing a Call for fee calculation\n */\n assignJobMoveCall(tx: Transaction, dvnMultiCall: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('assign_job'),\n arguments: [tx.object(this.objects.dvn), dvnMultiCall],\n })\n }\n\n /**\n * Confirm assign job operation with fee calculation\n * @param tx - The transaction to add the move call to\n * @param dvnMultiCall - The DVN multi-call transaction result\n * @param feelibCall - The fee library call transaction result\n */\n confirmAssignJobMoveCall(\n tx: Transaction,\n dvnMultiCall: TransactionArgument,\n feelibCall: TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('confirm_assign_job'),\n arguments: [tx.object(this.objects.dvn), dvnMultiCall, feelibCall],\n })\n }\n\n /**\n * Get fee for verification (using MultiCall created by quote function in ULN302)\n * @param tx - The transaction to add the move call to\n * @param dvnMultiCall - The DVN multi-call transaction result\n * @returns Transaction result containing a Call for fee calculation\n */\n getFeeMoveCall(tx: Transaction, dvnMultiCall: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_fee'),\n arguments: [tx.object(this.objects.dvn), dvnMultiCall],\n })\n }\n\n /**\n * Confirm get fee operation with fee calculation\n * @param tx - The transaction to add the move call to\n * @param dvnMultiCall - The DVN multi-call transaction result\n * @param feelibCall - The fee library call transaction result\n */\n confirmGetFeeMoveCall(tx: Transaction, dvnMultiCall: TransactionArgument, feelibCall: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('confirm_get_fee'),\n arguments: [tx.object(this.objects.dvn), dvnMultiCall, feelibCall],\n })\n }\n\n // === View Functions ===\n\n /**\n * Get the size of the allowlist\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the allowlist size\n */\n allowlistSizeMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('allowlist_size'),\n arguments: [tx.object(this.objects.dvn)],\n })\n }\n\n /**\n * Get the size of the allowlist\n * @returns Promise<bigint> - The number of addresses in the allowlist\n */\n async allowlistSize(): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.allowlistSizeMoveCall(tx)\n },\n (result) => BigInt(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Get default multiplier basis points\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the default multiplier bps\n */\n defaultMultiplierBpsMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('default_multiplier_bps'),\n arguments: [tx.object(this.objects.dvn)],\n })\n }\n\n /**\n * Get default multiplier basis points\n * @returns Promise<number> - The default multiplier in basis points\n */\n async defaultMultiplierBps(): Promise<number> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.defaultMultiplierBpsMoveCall(tx)\n },\n (result) => bcs.U16.parse(result[0].value)\n )\n }\n\n /**\n * Get DVN deposit address for fee collection\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the deposit address\n */\n depositAddressMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('deposit_address'),\n arguments: [tx.object(this.objects.dvn)],\n })\n }\n\n /**\n * Get DVN deposit address for fee collection\n * @returns Promise<string> - The deposit address\n */\n async depositAddress(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.depositAddressMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get destination configuration for DVN\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID\n * @returns Transaction result containing the destination configuration\n */\n dstConfigMoveCall(tx: Transaction, dstEid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('dst_config'),\n arguments: [tx.object(this.objects.dvn), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get destination configuration for DVN\n * @param dstEid - Destination endpoint ID\n * @returns Promise<DvnDstConfig> - The destination configuration\n */\n async dstConfig(dstEid: number): Promise<DvnDstConfig> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.dstConfigMoveCall(tx, dstEid)\n },\n (result) => {\n const value = DvnDstConfigBcs.parse(result[0].value)\n return {\n gas: BigInt(value.gas),\n multiplierBps: value.multiplier_bps,\n floorMarginUsd: BigInt(value.floor_margin_usd),\n }\n }\n )\n }\n\n /**\n * Check if an address has ACL (Access Control List) permission\n * @param tx - The transaction to add the move call to\n * @param account - The account address to check\n * @returns Transaction result containing the ACL permission status\n */\n hasAclMoveCall(tx: Transaction, account: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('has_acl'),\n arguments: [tx.object(this.objects.dvn), asAddress(tx, account)],\n })\n }\n\n /**\n * Check if an address has ACL (Access Control List) permission\n * @param account - The account address to check\n * @returns Promise<boolean> - True if the address has ACL permission\n */\n async hasAcl(account: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.hasAclMoveCall(tx, account)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get all registered DVN admins\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing array of admin addresses\n */\n adminsMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('admins'),\n arguments: [tx.object(this.objects.dvn)],\n })\n }\n\n /**\n * Get all registered DVN admins\n * @returns Promise<string[]> - Array of admin addresses\n */\n async admins(): Promise<string[]> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.adminsMoveCall(tx)\n },\n (result) => {\n const parsed = bcs.vector(bcs.Address).parse(result[0].value)\n return parsed\n }\n )\n }\n\n /**\n * Check if an admin cap is valid\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID to check\n * @returns Transaction result containing the admin status\n */\n isAdminMoveCall(tx: Transaction, adminCap: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_admin'),\n arguments: [tx.object(this.objects.dvn), asObject(tx, adminCap)],\n })\n }\n\n /**\n * Check if an admin cap is valid\n * @param adminCap - The admin capability object ID to check\n * @returns Promise<boolean> - True if the admin cap is valid\n */\n async isAdmin(adminCap: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isAdminMoveCall(tx, adminCap)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Check if an address is an admin\n * @param tx - The transaction to add the move call to\n * @param admin - The admin address to check\n * @returns Transaction result containing the admin status\n */\n isAdminAddressMoveCall(tx: Transaction, admin: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_admin_address'),\n arguments: [tx.object(this.objects.dvn), asAddress(tx, admin)],\n })\n }\n\n /**\n * Check if an address is an admin\n * @param admin - The admin address to check\n * @returns Promise<boolean> - True if the address is an admin\n */\n async isAdminAddress(admin: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isAdminAddressMoveCall(tx, admin)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Check if a message library is supported by this DVN\n * @param tx - The transaction to add the move call to\n * @param messageLib - The message library address to check\n * @returns Transaction result containing the support status\n */\n isSupportedMessageLibMoveCall(tx: Transaction, messageLib: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_supported_message_lib'),\n arguments: [tx.object(this.objects.dvn), asAddress(tx, messageLib)],\n })\n }\n\n /**\n * Check if a message library is supported by this DVN\n * @param messageLib - The message library address to check\n * @returns Promise<boolean> - True if the message library is supported\n */\n async isSupportedMessageLib(messageLib: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isSupportedMessageLibMoveCall(tx, messageLib)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Check if an address is allowlisted\n * @param tx - The transaction to add the move call to\n * @param account - The account address to check\n * @returns Transaction result containing the allowlist status\n */\n isAllowlistedMoveCall(tx: Transaction, account: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_allowlisted'),\n arguments: [tx.object(this.objects.dvn), asAddress(tx, account)],\n })\n }\n\n /**\n * Check if an address is in the allowlist\n * @param account - The account address to check\n * @returns Promise<boolean> - True if the address is allowlisted\n */\n async isAllowlisted(account: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isAllowlistedMoveCall(tx, account)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Check if an address is denylisted\n * @param tx - The transaction to add the move call to\n * @param account - The account address to check\n * @returns Transaction result containing the denylist status\n */\n isDenylistedMoveCall(tx: Transaction, account: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_denylisted'),\n arguments: [tx.object(this.objects.dvn), asAddress(tx, account)],\n })\n }\n\n /**\n * Check if an address is in the denylist\n * @param account - The account address to check\n * @returns Promise<boolean> - True if the address is denylisted\n */\n async isDenylisted(account: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isDenylistedMoveCall(tx, account)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Check if DVN is paused\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the paused status\n */\n isPausedMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_paused'),\n arguments: [tx.object(this.objects.dvn)],\n })\n }\n\n /**\n * Check if DVN worker is paused\n * @returns Promise<boolean> - True if the worker is paused\n */\n async isPaused(): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isPausedMoveCall(tx)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Check if an address is a registered DVN signer\n * @param tx - The transaction to add the move call to\n * @param signer - The signer public key as bytes\n * @returns Transaction result containing the signer status\n */\n isSignerMoveCall(tx: Transaction, signer: Uint8Array | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_signer'),\n arguments: [tx.object(this.objects.dvn), asBytes(tx, signer)],\n })\n }\n\n /**\n * Check if an address is a registered DVN signer\n * @param signer - The signer public key as bytes\n * @returns Promise<boolean> - True if the address is a registered signer\n */\n async isSigner(signer: Uint8Array): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isSignerMoveCall(tx, signer)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get DVN price feed address\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the price feed address\n */\n priceFeedMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('price_feed'),\n arguments: [tx.object(this.objects.dvn)],\n })\n }\n\n /**\n * Get DVN price feed address\n * @returns Promise<string> - The price feed address\n */\n async priceFeed(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.priceFeedMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get DVN quorum threshold\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the quorum threshold\n */\n quorumMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('quorum'),\n arguments: [tx.object(this.objects.dvn)],\n })\n }\n\n /**\n * Get DVN quorum threshold\n * @returns Promise<bigint> - The quorum threshold\n */\n async quorum(): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.quorumMoveCall(tx)\n },\n (result) => BigInt(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Get the total count of registered DVN signers\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the signer count\n */\n signerCountMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('signer_count'),\n arguments: [tx.object(this.objects.dvn)],\n })\n }\n\n /**\n * Get the total count of registered DVN signers\n * @returns Promise<bigint> - The number of registered signers\n */\n async signerCount(): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.signerCountMoveCall(tx)\n },\n (result) => BigInt(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Get all registered DVN signers\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing array of signer public keys\n */\n signersMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('signers'),\n arguments: [tx.object(this.objects.dvn)],\n })\n }\n\n /**\n * Get all registered DVN signers\n * @returns Promise<Uint8Array[]> - Array of signer public keys as byte arrays\n */\n async signers(): Promise<Uint8Array[]> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.signersMoveCall(tx)\n },\n (result) => {\n const parsed = bcs.vector(bcs.vector(bcs.u8())).parse(result[0].value)\n return parsed.map((signer) => Buffer.from(signer))\n }\n )\n }\n\n /**\n * Get supported option types for a destination EID\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID\n * @returns Transaction result containing supported option types\n */\n supportedOptionTypesMoveCall(tx: Transaction, dstEid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('supported_option_types'),\n arguments: [tx.object(this.objects.dvn), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get supported option types for a destination EID\n * @param dstEid - Destination endpoint ID\n * @returns Promise<Uint8Array> - Array of supported option types as bytes\n */\n async supportedOptionTypes(dstEid: number): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.supportedOptionTypesMoveCall(tx, dstEid)\n },\n (result) => {\n const parsed = bcs.vector(bcs.u8()).parse(result[0].value)\n return Buffer.from(parsed)\n }\n )\n }\n\n /**\n * Get DVN Verifier ID (VID)\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the VID\n */\n vidMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('vid'),\n arguments: [tx.object(this.objects.dvn)],\n })\n }\n\n /**\n * Get DVN VID (Verifier ID)\n * @returns Promise<number> - The DVN verifier ID\n */\n async vid(): Promise<number> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.vidMoveCall(tx)\n },\n (result) => bcs.U32.parse(result[0].value)\n )\n }\n\n /**\n * Get DVN worker capability address\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the worker capability address\n */\n workerCapAddressMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('worker_cap_address'),\n arguments: [tx.object(this.objects.dvn)],\n })\n }\n\n /**\n * Get DVN worker capability address\n * @returns Promise<string> - The worker capability address\n */\n async workerCapAddress(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.workerCapAddressMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get DVN worker fee library address\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the worker fee library address\n */\n workerFeeLibMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('worker_fee_lib'),\n arguments: [tx.object(this.objects.dvn)],\n })\n }\n\n /**\n * Get DVN worker fee library address\n * @returns Promise<string> - The worker fee library address\n */\n async workerFeeLib(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.workerFeeLibMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get admin capability ID from admin address\n * @param tx - The transaction to add the move call to\n * @param admin - The admin address\n * @returns Transaction result containing the admin capability ID\n */\n adminCapIdMoveCall(tx: Transaction, admin: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('admin_cap_id'),\n arguments: [tx.object(this.objects.dvn), asAddress(tx, admin)],\n })\n }\n\n /**\n * Get admin capability ID from admin address\n * @param admin - The admin address\n * @returns Promise<string> - The admin capability ID\n */\n async adminCapId(admin: string): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.adminCapIdMoveCall(tx, admin)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Check if PTB builder has been initialized\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the PTB builder initialization status\n */\n isPtbBuilderInitializedMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_ptb_builder_initialized'),\n arguments: [tx.object(this.objects.dvn)],\n })\n }\n\n /**\n * Check if PTB builder has been initialized\n * @returns Promise<boolean> - True if the PTB builder has been initialized\n */\n async isPtbBuilderInitialized(): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isPtbBuilderInitializedMoveCall(tx)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get DVN object address from worker registry using this DVN's worker capability (as a move call)\n * This function chains Move calls to decode worker info and extract the DVN object address\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the DVN object address\n */\n getDvnObjectAddressMoveCall(tx: Transaction): TransactionResult {\n // Step 1: Get this DVN's worker capability address\n const workerCapAddress = this.workerCapAddressMoveCall(tx)\n\n // Step 2: Get worker info bytes from registry\n const workerInfoBytes = this.moduleManager\n .getWorkerRegistry(this.client)\n .getWorkerInfoMoveCall(tx, workerCapAddress)\n\n // Step 3: Decode worker info using worker_common::worker_info_v1::decode\n const workerInfo = tx.moveCall({\n target: `${this.moduleManager.packages.workerCommon}::worker_info_v1::decode`,\n arguments: [workerInfoBytes],\n })\n\n // Step 4: Extract worker_info field from decoded WorkerInfoV1\n const dvnInfoBytes = tx.moveCall({\n target: `${this.moduleManager.packages.workerCommon}::worker_info_v1::worker_info`,\n arguments: [workerInfo],\n })\n\n // Step 5: Decode DVN info using dvn::dvn_info_v1::decode\n const dvnInfo = tx.moveCall({\n target: `${this.packageId}::dvn_info_v1::decode`,\n arguments: [dvnInfoBytes],\n })\n\n // Step 6: Extract dvn_object address from decoded DVNInfoV1\n return tx.moveCall({\n target: `${this.packageId}::dvn_info_v1::dvn_object`,\n arguments: [dvnInfo],\n })\n }\n\n /**\n * Get DVN object address from worker registry using this DVN's worker capability\n * This function uses Move calls to decode worker info and extract the DVN object address\n * @returns Promise<string> - The DVN object address\n * @throws Will throw an error if worker info is not found or if decoding fails\n */\n async getDvnObjectAddress(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getDvnObjectAddressMoveCall(tx)\n },\n (result) => {\n // The result is the DVN object address directly from the Move call chain\n return bcs.Address.parse(result[0].value)\n }\n )\n }\n\n // === Witness Functions ===\n\n /**\n * Create a LayerZero witness for DVN package whitelist registration\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the LayerZero witness\n */\n createLayerZeroWitnessMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::dvn_witness::new`,\n arguments: [],\n })\n }\n\n // === Hash Functions ===\n\n /**\n * Create a verify hash for packet verification\n * @param tx - The transaction to add the move call to\n * @param packetHeader - The packet header as bytes\n * @param payloadHash - The payload hash as bytes\n * @param confirmations - Required confirmations count\n * @param target - Target address for verification\n * @param vid - Verifier ID\n * @param expiration - Signature expiration timestamp\n * @returns Transaction result containing the verify hash\n */\n createVerifyHashMoveCall(\n tx: Transaction,\n packetHeader: Uint8Array | TransactionArgument,\n payloadHash: Uint8Array | TransactionArgument,\n confirmations: bigint | number | string | TransactionArgument,\n target: string | TransactionArgument,\n vid: number | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('create_verify_hash', 'hashes'),\n arguments: [\n asBytes(tx, packetHeader),\n asBytes(tx, payloadHash),\n asU64(tx, confirmations),\n asAddress(tx, target),\n asU32(tx, vid),\n asU64(tx, expiration),\n ],\n })\n }\n\n /**\n * Create a verify hash for packet verification\n * @param packetHeader - The packet header as bytes\n * @param payloadHash - The payload hash as bytes\n * @param confirmations - Required confirmations count\n * @param target - Target address for verification\n * @param vid - Verifier ID\n * @param expiration - Signature expiration timestamp\n * @returns Promise<Uint8Array> - The verify hash as bytes\n */\n async createVerifyHash(\n packetHeader: Uint8Array,\n payloadHash: Uint8Array,\n confirmations: bigint,\n target: string,\n vid: number,\n expiration: bigint\n ): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.createVerifyHashMoveCall(tx, packetHeader, payloadHash, confirmations, target, vid, expiration)\n },\n (result) => {\n const bytes32Struct = Bytes32Bcs.parse(result[0].value)\n return Buffer.from(bytes32Struct.bytes)\n }\n )\n }\n\n /**\n * Create a set DVN signer hash for signature verification\n * @param tx - The transaction to add the move call to\n * @param signer - The signer public key as bytes\n * @param active - Whether to activate or deactivate the signer\n * @param vid - Verifier ID\n * @param expiration - Signature expiration timestamp\n * @returns Transaction result containing the set DVN signer hash\n */\n createSetDvnSignerHashMoveCall(\n tx: Transaction,\n signer: Uint8Array | TransactionArgument,\n active: boolean | TransactionArgument,\n vid: number | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('create_set_dvn_signer_hash', 'hashes'),\n arguments: [asBytes(tx, signer), asBool(tx, active), asU32(tx, vid), asU64(tx, expiration)],\n })\n }\n\n /**\n * Create a set DVN signer hash for signature verification\n * @param signer - The signer public key as bytes\n * @param active - Whether to activate or deactivate the signer\n * @param vid - Verifier ID\n * @param expiration - Signature expiration timestamp\n * @returns Promise<Uint8Array> - The set DVN signer hash as bytes\n */\n async createSetDvnSignerHash(\n signer: Uint8Array,\n active: boolean,\n vid: number,\n expiration: bigint\n ): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.createSetDvnSignerHashMoveCall(tx, signer, active, vid, expiration)\n },\n (result) => {\n const bytes32Struct = Bytes32Bcs.parse(result[0].value)\n return Buffer.from(bytes32Struct.bytes)\n }\n )\n }\n\n /**\n * Create a set quorum hash for signature verification\n * @param tx - The transaction to add the move call to\n * @param quorum - The new quorum threshold\n * @param vid - Verifier ID\n * @param expiration - Signature expiration timestamp\n * @returns Transaction result containing the set quorum hash\n */\n createSetQuorumHashMoveCall(\n tx: Transaction,\n quorum: bigint | number | string | TransactionArgument,\n vid: number | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('create_set_quorum_hash', 'hashes'),\n arguments: [asU64(tx, quorum), asU32(tx, vid), asU64(tx, expiration)],\n })\n }\n\n /**\n * Create a set quorum hash for signature verification\n * @param quorum - The new quorum threshold\n * @param vid - Verifier ID\n * @param expiration - Signature expiration timestamp\n * @returns Promise<Uint8Array> - The set quorum hash as bytes\n */\n async createSetQuorumHash(quorum: bigint, vid: number, expiration: bigint): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.createSetQuorumHashMoveCall(tx, quorum, vid, expiration)\n },\n (result) => {\n const bytes32Struct = Bytes32Bcs.parse(result[0].value)\n return Buffer.from(bytes32Struct.bytes)\n }\n )\n }\n\n /**\n * Create a quorum change admin hash for signature verification\n * @param tx - The transaction to add the move call to\n * @param admin - The admin address to change\n * @param active - Whether to activate or deactivate the admin\n * @param vid - Verifier ID\n * @param expiration - Signature expiration timestamp\n * @returns Transaction result containing the quorum change admin hash\n */\n createQuorumChangeAdminHashMoveCall(\n tx: Transaction,\n admin: string | TransactionArgument,\n active: boolean | TransactionArgument,\n vid: number | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('create_quorum_change_admin_hash', 'hashes'),\n arguments: [asAddress(tx, admin), asBool(tx, active), asU32(tx, vid), asU64(tx, expiration)],\n })\n }\n\n /**\n * Create a quorum change admin hash for signature verification\n * @param admin - The admin address to change\n * @param active - Whether to activate or deactivate the admin\n * @param vid - Verifier ID\n * @param expiration - Signature expiration timestamp\n * @returns Promise<Uint8Array> - The quorum change admin hash as bytes\n */\n async createQuorumChangeAdminHash(\n admin: string,\n active: boolean,\n vid: number,\n expiration: bigint\n ): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.createQuorumChangeAdminHashMoveCall(tx, admin, active, vid, expiration)\n },\n (result) => {\n const bytes32Struct = Bytes32Bcs.parse(result[0].value)\n return Buffer.from(bytes32Struct.bytes)\n }\n )\n }\n\n /**\n * Create a set allowlist hash for signature verification\n * @param tx - The transaction to add the move call to\n * @param oapp - The OApp address to allowlist/remove\n * @param allowed - Whether to allow or remove from allowlist\n * @param vid - Verifier ID\n * @param expiration - Signature expiration timestamp\n * @returns Transaction result containing the set allowlist hash\n */\n createSetAllowlistHashMoveCall(\n tx: Transaction,\n oapp: string | TransactionArgument,\n allowed: boolean | TransactionArgument,\n vid: number | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('create_set_allowlist_hash', 'hashes'),\n arguments: [asAddress(tx, oapp), asBool(tx, allowed), asU32(tx, vid), asU64(tx, expiration)],\n })\n }\n\n /**\n * Create a set allowlist hash for signature verification\n * @param oapp - The OApp address to allowlist/remove\n * @param allowed - Whether to allow or remove from allowlist\n * @param vid - Verifier ID\n * @param expiration - Signature expiration timestamp\n * @returns Promise<Uint8Array> - The set allowlist hash as bytes\n */\n async createSetAllowlistHash(oapp: string, allowed: boolean, vid: number, expiration: bigint): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.createSetAllowlistHashMoveCall(tx, oapp, allowed, vid, expiration)\n },\n (result) => {\n const bytes32Struct = Bytes32Bcs.parse(result[0].value)\n return Buffer.from(bytes32Struct.bytes)\n }\n )\n }\n\n /**\n * Create a set denylist hash for signature verification\n * @param tx - The transaction to add the move call to\n * @param oapp - The OApp address to denylist/remove\n * @param denied - Whether to deny or remove from denylist\n * @param vid - Verifier ID\n * @param expiration - Signature expiration timestamp\n * @returns Transaction result containing the set denylist hash\n */\n createSetDenylistHashMoveCall(\n tx: Transaction,\n oapp: string | TransactionArgument,\n denied: boolean | TransactionArgument,\n vid: number | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('create_set_denylist_hash', 'hashes'),\n arguments: [asAddress(tx, oapp), asBool(tx, denied), asU32(tx, vid), asU64(tx, expiration)],\n })\n }\n\n /**\n * Create a set denylist hash for signature verification\n * @param oapp - The OApp address to denylist/remove\n * @param denied - Whether to deny or remove from denylist\n * @param vid - Verifier ID\n * @param expiration - Signature expiration timestamp\n * @returns Promise<Uint8Array> - The set denylist hash as bytes\n */\n async createSetDenylistHash(oapp: string, denied: boolean, vid: number, expiration: bigint): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.createSetDenylistHashMoveCall(tx, oapp, denied, vid, expiration)\n },\n (result) => {\n const bytes32Struct = Bytes32Bcs.parse(result[0].value)\n return Buffer.from(bytes32Struct.bytes)\n }\n )\n }\n\n /**\n * Create a set pause hash for signature verification\n * @param tx - The transaction to add the move call to\n * @param paused - Whether to pause or unpause the DVN\n * @param vid - Verifier ID\n * @param expiration - Signature expiration timestamp\n * @returns Transaction result containing the set pause hash\n */\n createSetPauseHashMoveCall(\n tx: Transaction,\n paused: boolean | TransactionArgument,\n vid: number | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('create_set_pause_hash', 'hashes'),\n arguments: [asBool(tx, paused), asU32(tx, vid), asU64(tx, expiration)],\n })\n }\n\n /**\n * Create a set pause hash for signature verification\n * @param paused - Whether to pause or unpause the DVN\n * @param vid - Verifier ID\n * @param expiration - Signature expiration timestamp\n * @returns Promise<Uint8Array> - The set pause hash as bytes\n */\n async createSetPauseHash(paused: boolean, vid: number, expiration: bigint): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.createSetPauseHashMoveCall(tx, paused, vid, expiration)\n },\n (result) => {\n const bytes32Struct = Bytes32Bcs.parse(result[0].value)\n return Buffer.from(bytes32Struct.bytes)\n }\n )\n }\n\n /**\n * Create a set PTB builder move calls hash for signature verification\n * @param tx - The transaction to add the move call to\n * @param targetPtbBuilder - Target PTB builder address\n * @param getFeeMoveCalls - Get fee move calls transaction argument\n * @param assignJobMoveCalls - Assign job move calls transaction argument\n * @param vid - Verifier ID\n * @param expiration - Signature expiration timestamp\n * @returns Transaction result containing the set PTB builder move calls hash\n */\n createSetPtbBuilderMoveCallsHashMoveCall(\n tx: Transaction,\n targetPtbBuilder: string | TransactionArgument,\n getFeeMoveCalls: TransactionArgument,\n assignJobMoveCalls: TransactionArgument,\n vid: number | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('create_set_ptb_builder_move_calls_hash', 'hashes'),\n arguments: [\n asAddress(tx, targetPtbBuilder),\n getFeeMoveCalls,\n assignJobMoveCalls,\n asU32(tx, vid),\n asU64(tx, expiration),\n ],\n })\n }\n\n /**\n * Populate verify with DVN verification and ULN verify call\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param targetMessageLib - The target message library address (usually ULN302)\n * @param targetVerification - The verification object address for the target message library\n * @param packetHeader - The packet header as bytes\n * @param payloadHash - The payload hash as bytes\n * @param confirmations - Required confirmations count\n * @param expiration - Signature expiration timestamp\n * @param signatures - DVN multisig signatures\n */\n populateVerify(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n targetMessageLib: string,\n targetVerification: string,\n packetHeader: Uint8Array | TransactionArgument,\n payloadHash: Uint8Array | TransactionArgument,\n confirmations: bigint | number | string | TransactionArgument,\n expiration: bigint | number | string | TransactionArgument,\n signatures: Uint8Array | TransactionArgument\n ): void {\n // Step 1: Call DVN's verifyMoveCall to get the verification call\n const dvnCall = this.verifyMoveCall(\n tx,\n adminCap,\n targetMessageLib,\n packetHeader,\n payloadHash,\n confirmations,\n expiration,\n signatures\n )\n\n // Step 2: Get the message library object address based on targetMessageLib\n const messageLibObjectAddress = this.#getUlnObjectAddress(targetMessageLib)\n\n tx.moveCall({\n target: this.#getUlnVerifyTarget(targetMessageLib),\n arguments: [tx.object(messageLibObjectAddress), asObject(tx, targetVerification), dvnCall],\n })\n }\n\n /**\n * Get message library object address based on targetMessageLib package address\n * @param targetMessageLib - The target message library package address\n * @returns Message library object address\n * @throws Error if targetMessageLib doesn't match any known message library\n * @private\n */\n #getUlnObjectAddress(targetMessageLib: string): string {\n // Check if targetMessageLib equals ULN302 package address\n if (targetMessageLib === this.moduleManager.packages.uln302) {\n return this.objects.uln302\n }\n\n throw new Error('Target message library not match objects')\n }\n\n /**\n * Get ULN verify target path based on targetMessageLib package address\n * @param targetMessageLib - The target message library package address\n * @returns Message library verify target path\n * @throws Error if targetMessageLib doesn't match any known message library\n * @private\n */\n #getUlnVerifyTarget(targetMessageLib: string): string {\n if (targetMessageLib === this.moduleManager.packages.uln302) {\n return `${targetMessageLib}::uln_302::verify`\n }\n\n throw new Error('Target message library not match any target')\n }\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { ObjectOptions } from '../../types'\n\nconst MODULE_NAME = 'dvn_fee_lib'\n\nexport const DVNFeeLibErrorCode = {\n // DVN Fee Lib related errors - aligned with Move constants\n EEidNotSupported: 1,\n EInvalidDVNOptions: 2,\n} as const\n\nexport class DVNFeeLib {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Witness Functions ===\n\n /**\n * Create a LayerZero witness for DVN Fee Lib package whitelist registration\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the LayerZero witness\n */\n createLayerZeroWitnessMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::dvn_fee_lib_witness::new`,\n arguments: [],\n })\n }\n\n // === Set Functions ===\n\n /**\n * Create get fee call for DVN fee calculation\n * Note: This is typically called by the DVN, not directly by users\n * This initiates the fee calculation process by creating a child call to the price feed\n * @param tx - The transaction to add the move call to\n * @param call - The call transaction result containing fee parameters\n * @returns Transaction result containing the fee calculation call\n */\n getFeeMoveCall(tx: Transaction, call: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_fee'),\n arguments: [tx.object(this.objects.dvnFeeLib), call],\n })\n }\n\n /**\n * Confirm get fee call with price feed integration\n * Note: This is typically called by the DVN, not directly by users\n * This completes the fee calculation by processing the price feed result and applying premium\n * @param tx - The transaction to add the move call to\n * @param feelibCall - The fee library call transaction result\n * @param priceFeedCall - The price feed call transaction result\n */\n confirmGetFeeMoveCall(tx: Transaction, feelibCall: TransactionArgument, priceFeedCall: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('confirm_get_fee'),\n arguments: [tx.object(this.objects.dvnFeeLib), feelibCall, priceFeedCall],\n })\n }\n\n // === View Functions ===\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { asAddress, asAddressVector, asBytesVector, asObject, asU16, asU32, asU64 } from '../../utils'\n\nconst MODULE_NAME = 'dvn_layerzero'\n\nexport const DVNLayerzeroErrorCode = {\n // DVNLayerzero related errors (matching dvn_layerzero.move)\n DVNLayerzero_EWorkerCapNotFromPackage: 1,\n} as const\n\nexport class DvnLayerZero {\n public packageId: string\n public readonly client: IotaClient\n\n constructor(\n packageId: string,\n client: IotaClient,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n }\n\n // === Set Functions ===\n\n /**\n * Initialize DVN LayerZero instance\n * Creates and shares a new DVN with the specified configuration\n * @param tx - The transaction to add the move call to\n * @param workerCap - Worker capability object ID or transaction argument\n * @param vid - Verifier ID for the DVN or transaction argument\n * @param depositAddress - Address for fee deposits or transaction argument\n * @param supportedMessageLibs - Array of supported message library addresses or transaction argument\n * @param priceFeed - Price feed object address or transaction argument\n * @param workerFeeLib - Worker fee library address or transaction argument\n * @param defaultMultiplierBps - Default multiplier in basis points or transaction argument\n * @param admins - Array of admin addresses or transaction argument\n * @param signers - Array of signer public keys as bytes or transaction argument\n * @param quorum - Required signature threshold or transaction argument\n */\n initDvnMoveCall(\n tx: Transaction,\n workerCap: string | TransactionArgument,\n vid: number | TransactionArgument,\n depositAddress: string | TransactionArgument,\n supportedMessageLibs: string[] | TransactionArgument,\n priceFeed: string | TransactionArgument,\n workerFeeLib: string | TransactionArgument,\n defaultMultiplierBps: number | TransactionArgument,\n admins: string[] | TransactionArgument,\n signers: Uint8Array[] | TransactionArgument,\n quorum: bigint | number | string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('init_dvn'),\n arguments: [\n asObject(tx, workerCap),\n asU32(tx, vid),\n asAddress(tx, depositAddress),\n asAddressVector(tx, supportedMessageLibs),\n asAddress(tx, priceFeed),\n asAddress(tx, workerFeeLib),\n asU16(tx, defaultMultiplierBps),\n asAddressVector(tx, admins),\n asBytesVector(tx, signers),\n asU64(tx, quorum),\n tx.object(this.moduleManager.objects.workerRegistry),\n ],\n })\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name: string = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { DstConfigBcs } from '../../bcs'\nimport { ModuleManager } from '../../module-manager'\nimport { DstConfig, NativeDropParams, ObjectOptions } from '../../types'\nimport {\n asAddress,\n asArgWithTx,\n asBool,\n asBytes,\n asBytes32,\n asObject,\n asU128,\n asU16,\n asU32,\n asU64,\n executeSimulate,\n} from '../../utils'\n\nconst MODULE_NAME = 'executor_worker'\n\nexport const ExecutorErrorCode = {\n // Executor related errors (with Executor_ prefix)\n Executor_EEidNotSupported: 1,\n Executor_EInvalidNativeDropAmount: 2,\n\n // ExecutorInfoV1 related errors (matching executor_info_v1.move)\n ExecutorInfoV1_EInvalidData: 1,\n ExecutorInfoV1_EInvalidVersion: 2,\n} as const\n\nexport class Executor {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Witness Functions ===\n\n /**\n * Create a LayerZero witness for Executor package whitelist registration\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the LayerZero witness\n */\n createLayerZeroWitnessMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::executor_witness::new`,\n arguments: [],\n })\n }\n\n // Job Assignment and Fee Functions\n\n /**\n * Assign execution job for Executor (called via PTB with Call created by send function in ULN302)\n * @param tx - The transaction to add the move call to\n * @param call - The call transaction result from ULN302\n * @returns Transaction result containing the job assignment call\n */\n assignJobMoveCall(tx: Transaction, call: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('assign_job'),\n arguments: [tx.object(this.objects.executor), call],\n })\n }\n\n /**\n * Confirm assign job operation with fee calculation\n * @param tx - The transaction to add the move call to\n * @param executorCall - The executor call transaction result\n * @param feelibCall - The fee library call transaction result\n */\n confirmAssignJobMoveCall(\n tx: Transaction,\n executorCall: TransactionArgument,\n feelibCall: TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('confirm_assign_job'),\n arguments: [tx.object(this.objects.executor), executorCall, feelibCall],\n })\n }\n\n /**\n * Get fee for execution (using Call created by quote function in ULN302)\n * @param tx - The transaction to add the move call to\n * @param call - The call transaction result from ULN302\n * @returns Transaction result containing the fee calculation call\n */\n getFeeMoveCall(tx: Transaction, call: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_fee'),\n arguments: [tx.object(this.objects.executor), call],\n })\n }\n\n /**\n * Confirm get fee operation with fee library\n * @param tx - The transaction to add the move call to\n * @param executorCall - The executor call transaction result\n * @param feelibCall - The fee library call transaction result\n */\n confirmGetFeeMoveCall(tx: Transaction, executorCall: TransactionArgument, feelibCall: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('confirm_get_fee'),\n arguments: [tx.object(this.objects.executor), executorCall, feelibCall],\n })\n }\n\n // Execution Functions\n\n /**\n * Execute LayerZero receive operation (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param messagingChannel - The messaging channel object ID\n * @param srcEid - Source endpoint ID\n * @param sender - Sender address as bytes\n * @param nonce - Message nonce\n * @param guid - Globally unique identifier as bytes\n * @param message - Message payload as bytes\n * @param extraData - Additional execution data (optional)\n * @param value - Native token value to transfer\n * @returns Transaction result containing the execution call capability\n */\n executeLzReceiveMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n messagingChannel: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: bigint | number | string | TransactionArgument,\n guid: Uint8Array | TransactionArgument,\n message: Uint8Array | TransactionArgument,\n extraData: Uint8Array | TransactionArgument = new Uint8Array(),\n value = 0n\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('execute_lz_receive'),\n arguments: [\n tx.object(this.objects.executor),\n asObject(tx, adminCap),\n tx.object(this.objects.endpointV2),\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n asBytes32(tx, guid, this.moduleManager.getUtils()),\n asBytes(tx, message),\n asBytes(tx, extraData),\n asArgWithTx(tx, value, (tx, val) => this.moduleManager.getUtils().createOptionIotaL1Call(tx, val)),\n ],\n })\n }\n\n /**\n * Execute LayerZero compose operation (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param composeQueue - The compose queue object ID\n * @param from - Source address\n * @param guid - Globally unique identifier as bytes\n * @param index - Compose message index\n * @param message - Message payload as bytes\n * @param extraData - Additional execution data (optional)\n * @param value - Native token value to transfer\n * @returns Transaction result containing the execution call capability\n */\n executeLzComposeMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n composeQueue: string | TransactionArgument,\n from: string | TransactionArgument,\n guid: Uint8Array | TransactionArgument,\n index: number | TransactionArgument,\n message: Uint8Array | TransactionArgument,\n extraData: Uint8Array | TransactionArgument = new Uint8Array(),\n value = 0n\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('execute_lz_compose'),\n arguments: [\n tx.object(this.objects.executor),\n asObject(tx, adminCap),\n tx.object(this.objects.endpointV2),\n asObject(tx, composeQueue),\n asAddress(tx, from),\n asBytes32(tx, guid, this.moduleManager.getUtils()),\n asU16(tx, index),\n asBytes(tx, message),\n asBytes(tx, extraData),\n asArgWithTx(tx, value, (tx, val) => this.moduleManager.getUtils().createOptionIotaL1Call(tx, val)),\n ],\n })\n }\n\n // Alert Functions\n\n /**\n * Record a failed lz_receive execution for off-chain processing (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param srcEid - Source endpoint ID\n * @param sender - Sender address as bytes\n * @param nonce - Message nonce\n * @param receiver - Receiver address\n * @param guid - Globally unique identifier as bytes\n * @param gas - Gas limit used for the execution attempt\n * @param value - Native token value included with the message\n * @param message - Message payload as bytes\n * @param extraData - Additional execution data\n * @param reason - Error message or failure reason\n */\n lzReceiveAlertMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: bigint | number | string | TransactionArgument,\n receiver: string | TransactionArgument,\n guid: Uint8Array | TransactionArgument,\n gas: bigint | number | string | TransactionArgument,\n value: bigint | number | string | TransactionArgument,\n message: Uint8Array | TransactionArgument,\n extraData: Uint8Array | TransactionArgument,\n reason: string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('lz_receive_alert'),\n arguments: [\n tx.object(this.objects.executor),\n asObject(tx, adminCap),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n asAddress(tx, receiver),\n asBytes32(tx, guid, this.moduleManager.getUtils()),\n asU64(tx, gas),\n asU64(tx, value),\n asBytes(tx, message),\n asBytes(tx, extraData),\n asArgWithTx(tx, reason, (tx, val) => tx.pure.string(val)),\n ],\n })\n }\n\n /**\n * Record a failed lz_compose execution for off-chain processing (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param from - Source address\n * @param to - Destination address\n * @param guid - Globally unique identifier as bytes\n * @param index - Compose message index\n * @param gas - Gas limit used for the execution attempt\n * @param value - Native token value included with the compose\n * @param message - Compose message payload as bytes\n * @param extraData - Additional execution data\n * @param reason - Error message or failure reason\n */\n lzComposeAlertMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n from: string | TransactionArgument,\n to: string | TransactionArgument,\n guid: Uint8Array | TransactionArgument,\n index: number | TransactionArgument,\n gas: bigint | number | string | TransactionArgument,\n value: bigint | number | string | TransactionArgument,\n message: Uint8Array | TransactionArgument,\n extraData: Uint8Array | TransactionArgument,\n reason: string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('lz_compose_alert'),\n arguments: [\n tx.object(this.objects.executor),\n asObject(tx, adminCap),\n asAddress(tx, from),\n asAddress(tx, to),\n asBytes32(tx, guid, this.moduleManager.getUtils()),\n asU16(tx, index),\n asU64(tx, gas),\n asU64(tx, value),\n asBytes(tx, message),\n asBytes(tx, extraData),\n asArgWithTx(tx, reason, (tx, val) => tx.pure.string(val)),\n ],\n })\n }\n\n // Native Drop Functions\n\n /**\n * Native drop function (admin only)\n * Takes a Coin<IOTA> from caller and distributes it to recipients according to params\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param srcEid - Source endpoint ID\n * @param sender - Sender address as bytes\n * @param dstEid - Destination endpoint ID\n * @param oapp - OApp address\n * @param nonce - Message nonce\n * @param nativeDropParams - Array of native drop parameters\n * @param paymentCoin - Payment coin for the drop\n */\n nativeDropMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n dstEid: number | TransactionArgument,\n oapp: string | TransactionArgument,\n nonce: bigint | number | string | TransactionArgument,\n nativeDropParams: NativeDropParams[],\n paymentCoin: TransactionArgument\n ): void {\n // Create individual NativeDropParams move calls for each parameter\n const dropParamCalls = nativeDropParams.map((param) =>\n tx.moveCall({\n target: this.#target('new_native_drop_params', 'native_drop_type'),\n arguments: [asAddress(tx, param.receiver), asU64(tx, param.amount)],\n })\n )\n\n tx.moveCall({\n target: this.#target('native_drop'),\n arguments: [\n tx.object(this.objects.executor),\n asObject(tx, adminCap),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU32(tx, dstEid),\n asAddress(tx, oapp),\n asU64(tx, nonce),\n tx.makeMoveVec({\n type: `${this.packageId}::native_drop_type::NativeDropParams`,\n elements: dropParamCalls,\n }),\n paymentCoin,\n ],\n })\n }\n\n // === Set Functions ===\n\n /**\n * Set default multiplier basis points for fee calculation (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param multiplierBps - The multiplier in basis points\n */\n setDefaultMultiplierBpsMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n multiplierBps: number | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_default_multiplier_bps'),\n arguments: [tx.object(this.objects.executor), asObject(tx, adminCap), asU16(tx, multiplierBps)],\n })\n }\n\n /**\n * Set deposit address for executor fees (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param depositAddress - The new deposit address\n */\n setDepositAddressMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n depositAddress: string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_deposit_address'),\n arguments: [tx.object(this.objects.executor), asObject(tx, adminCap), asAddress(tx, depositAddress)],\n })\n }\n\n /**\n * Set destination configuration for executor (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param dstEid - Destination endpoint ID\n * @param config - Destination configuration parameters\n */\n setDstConfigMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n dstEid: number | TransactionArgument,\n config: DstConfig\n ): void {\n const configCall = tx.moveCall({\n target: this.#target('create_dst_config', 'executor_type'),\n arguments: [\n asU64(tx, config.lzReceiveBaseGas),\n asU64(tx, config.lzComposeBaseGas),\n asU16(tx, config.multiplierBps),\n asU128(tx, config.floorMarginUsd),\n asU128(tx, config.nativeCap),\n ],\n })\n tx.moveCall({\n target: this.#target('set_dst_config'),\n arguments: [tx.object(this.objects.executor), asObject(tx, adminCap), asU32(tx, dstEid), configCall],\n })\n }\n\n /**\n * Set price feed for executor (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param priceFeed - The price feed address\n */\n setPriceFeedMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n priceFeed: string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_price_feed'),\n arguments: [tx.object(this.objects.executor), asObject(tx, adminCap), asAddress(tx, priceFeed)],\n })\n }\n\n /**\n * Set PTB builder move calls for executor worker operations (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param targetPtbBuilder - Target PTB builder address\n * @param getFeeMoveCalls - Get fee move calls transaction argument\n * @param assignJobMoveCalls - Assign job move calls transaction argument\n * @returns Transaction result containing the set PTB builder call\n */\n setPtbBuilderMoveCallsMoveCall(\n tx: Transaction,\n targetPtbBuilder: string | TransactionArgument,\n getFeeMoveCalls: TransactionArgument,\n assignJobMoveCalls: TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('set_ptb_builder_move_calls'),\n arguments: [\n tx.object(this.objects.executor),\n asObject(tx, this.objects.executorOwnerCap),\n asAddress(tx, targetPtbBuilder),\n getFeeMoveCalls, // First element of Executor PTB result tuple\n assignJobMoveCalls, // Second element of Executor PTB result tuple\n ],\n })\n }\n\n /**\n * Set supported option types for a destination EID (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param dstEid - Destination endpoint ID\n * @param optionTypes - Array of supported option type values\n */\n setSupportedOptionTypesMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n dstEid: number | TransactionArgument,\n optionTypes: number[]\n ): void {\n tx.moveCall({\n target: this.#target('set_supported_option_types'),\n arguments: [\n tx.object(this.objects.executor),\n asObject(tx, adminCap),\n asU32(tx, dstEid),\n tx.pure(bcs.vector(bcs.u8()).serialize(optionTypes)),\n ],\n })\n }\n\n /**\n * Set worker fee library for executor (admin only)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID\n * @param workerFeeLib - The worker fee library address\n */\n setWorkerFeeLibMoveCall(\n tx: Transaction,\n adminCap: string | TransactionArgument,\n workerFeeLib: string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_worker_fee_lib'),\n arguments: [tx.object(this.objects.executor), asObject(tx, adminCap), asAddress(tx, workerFeeLib)],\n })\n }\n\n /**\n * Set admin role (grant or revoke) (owner only)\n * @param tx - The transaction to add the move call to\n * @param ownerCap - The owner capability object ID\n * @param admin - The admin address\n * @param active - Whether to grant or revoke admin role\n */\n setAdminMoveCall(\n tx: Transaction,\n ownerCap: string | TransactionArgument,\n admin: string | TransactionArgument,\n active: boolean | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_admin'),\n arguments: [\n tx.object(this.objects.executor),\n asObject(tx, ownerCap),\n asAddress(tx, admin),\n asBool(tx, active),\n ],\n })\n }\n\n /**\n * Set supported message library (owner only)\n * @param tx - The transaction to add the move call to\n * @param ownerCap - The owner capability object ID\n * @param messageLib - The message library address\n * @param supported - Whether to support or remove support for the message library\n */\n setSupportedMessageLibMoveCall(\n tx: Transaction,\n ownerCap: string | TransactionArgument,\n messageLib: string | TransactionArgument,\n supported: boolean | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_supported_message_lib'),\n arguments: [\n tx.object(this.objects.executor),\n asObject(tx, ownerCap),\n asAddress(tx, messageLib),\n asBool(tx, supported),\n ],\n })\n }\n\n /**\n * Set allowlist status for an OApp sender (owner only)\n * @param tx - The transaction to add the move call to\n * @param ownerCap - The owner capability object ID\n * @param oapp - The OApp address\n * @param allowed - Whether to allow or remove from allowlist\n */\n setAllowlistMoveCall(\n tx: Transaction,\n ownerCap: string | TransactionArgument,\n oapp: string | TransactionArgument,\n allowed: boolean | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_allowlist'),\n arguments: [\n tx.object(this.objects.executor),\n asObject(tx, ownerCap),\n asAddress(tx, oapp),\n asBool(tx, allowed),\n ],\n })\n }\n\n /**\n * Set denylist status for an OApp sender (owner only)\n * @param tx - The transaction to add the move call to\n * @param ownerCap - The owner capability object ID\n * @param oapp - The OApp address\n * @param denied - Whether to deny or remove from denylist\n */\n setDenylistMoveCall(\n tx: Transaction,\n ownerCap: string | TransactionArgument,\n oapp: string | TransactionArgument,\n denied: boolean | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_denylist'),\n arguments: [\n tx.object(this.objects.executor),\n asObject(tx, ownerCap),\n asAddress(tx, oapp),\n asBool(tx, denied),\n ],\n })\n }\n\n /**\n * Set worker paused state (owner only)\n * @param tx - The transaction to add the move call to\n * @param ownerCap - The owner capability object ID\n * @param paused - Whether to pause or unpause the worker\n */\n setPausedMoveCall(\n tx: Transaction,\n ownerCap: string | TransactionArgument,\n paused: boolean | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_paused'),\n arguments: [tx.object(this.objects.executor), asObject(tx, ownerCap), asBool(tx, paused)],\n })\n }\n\n // === View Functions ===\n\n /**\n * Get the size of the allowlist\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the allowlist size\n */\n allowlistSizeMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('allowlist_size'),\n arguments: [tx.object(this.objects.executor)],\n })\n }\n\n /**\n * Get the size of the allowlist\n * @returns Promise<bigint> - The number of addresses in the allowlist\n */\n async allowlistSize(): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.allowlistSizeMoveCall(tx)\n },\n (result) => BigInt(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Get default multiplier basis points\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the default multiplier bps\n */\n defaultMultiplierBpsMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('default_multiplier_bps'),\n arguments: [tx.object(this.objects.executor)],\n })\n }\n\n /**\n * Get default multiplier basis points\n * @returns Promise<number> - The default multiplier in basis points\n */\n async defaultMultiplierBps(): Promise<number> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.defaultMultiplierBpsMoveCall(tx)\n },\n (result) => bcs.U16.parse(result[0].value)\n )\n }\n\n /**\n * Get executor deposit address for fee collection\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the deposit address\n */\n depositAddressMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('deposit_address'),\n arguments: [tx.object(this.objects.executor)],\n })\n }\n\n /**\n * Get executor deposit address for fee collection\n * @returns Promise<string> - The deposit address\n */\n async depositAddress(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.depositAddressMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get destination configuration for executor\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID\n * @returns Transaction result containing the destination configuration\n */\n dstConfigMoveCall(tx: Transaction, dstEid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('dst_config'),\n arguments: [tx.object(this.objects.executor), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get destination configuration for executor\n * @param dstEid - Destination endpoint ID\n * @returns Promise<DstConfig> - The destination configuration\n */\n async dstConfig(dstEid: number): Promise<DstConfig> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.dstConfigMoveCall(tx, dstEid)\n },\n (result) => this.parseDstConfig(result[0].value)\n )\n }\n\n /**\n * Check if an address has ACL (Access Control List) permission\n * @param tx - The transaction to add the move call to\n * @param account - The account address to check\n * @returns Transaction result containing the ACL permission status\n */\n hasAclMoveCall(tx: Transaction, account: string): TransactionResult {\n return tx.moveCall({\n target: this.#target('has_acl'),\n arguments: [tx.object(this.objects.executor), asAddress(tx, account)],\n })\n }\n\n /**\n * Check if an address has ACL (Access Control List) permission\n * @param account - The account address to check\n * @returns Promise<boolean> - True if the address has ACL permission\n */\n async hasAcl(account: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.hasAclMoveCall(tx, account)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get all registered executor admins\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing array of admin addresses\n */\n adminsMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('admins'),\n arguments: [tx.object(this.objects.executor)],\n })\n }\n\n /**\n * Get all registered executor admins\n * @returns Promise<string[]> - Array of admin addresses\n */\n async admins(): Promise<string[]> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.adminsMoveCall(tx)\n },\n (result) => {\n const parsed = bcs.vector(bcs.Address).parse(result[0].value)\n return parsed\n }\n )\n }\n\n /**\n * Check if an admin cap is valid (sync Move call)\n * @param tx - The transaction to add the move call to\n * @param adminCap - The admin capability object ID to check\n * @returns TransactionResult - Result containing admin status\n */\n isAdminMoveCall(tx: Transaction, adminCap: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_admin'),\n arguments: [tx.object(this.objects.executor), asObject(tx, adminCap)],\n })\n }\n\n /**\n * Check if an admin cap is valid (async simulation)\n * @param adminCap - The admin capability object ID to check\n * @returns Promise<boolean> - True if the admin cap is valid\n */\n async isAdmin(adminCap: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isAdminMoveCall(tx, adminCap)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Check if an address is an admin\n * @param tx - The transaction to add the move call to\n * @param admin - The admin address to check\n * @returns Transaction result containing the admin status\n */\n isAdminAddressMoveCall(tx: Transaction, admin: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_admin_address'),\n arguments: [tx.object(this.objects.executor), asAddress(tx, admin)],\n })\n }\n\n /**\n * Check if an address is an admin\n * @param admin - The admin address to check\n * @returns Promise<boolean> - True if the address is an admin\n */\n async isAdminAddress(admin: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isAdminAddressMoveCall(tx, admin)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Check if a message library is supported by this executor\n * @param tx - The transaction to add the move call to\n * @param messageLib - The message library address to check\n * @returns Transaction result containing the support status\n */\n isSupportedMessageLibMoveCall(tx: Transaction, messageLib: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_supported_message_lib'),\n arguments: [tx.object(this.objects.executor), asAddress(tx, messageLib)],\n })\n }\n\n /**\n * Check if a message library is supported by this executor\n * @param messageLib - The message library address to check\n * @returns Promise<boolean> - True if the message library is supported\n */\n async isSupportedMessageLib(messageLib: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isSupportedMessageLibMoveCall(tx, messageLib)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Check if an address is allowlisted\n * @param tx - The transaction to add the move call to\n * @param account - The account address to check\n * @returns Transaction result containing the allowlist status\n */\n isAllowlistedMoveCall(tx: Transaction, account: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_allowlisted'),\n arguments: [tx.object(this.objects.executor), asAddress(tx, account)],\n })\n }\n\n /**\n * Check if an address is in the allowlist\n * @param account - The account address to check\n * @returns Promise<boolean> - True if the address is allowlisted\n */\n async isAllowlisted(account: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isAllowlistedMoveCall(tx, account)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Check if an address is denylisted\n * @param tx - The transaction to add the move call to\n * @param account - The account address to check\n * @returns Transaction result containing the denylist status\n */\n isDenylistedMoveCall(tx: Transaction, account: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_denylisted'),\n arguments: [tx.object(this.objects.executor), asAddress(tx, account)],\n })\n }\n\n /**\n * Check if an address is in the denylist\n * @param account - The account address to check\n * @returns Promise<boolean> - True if the address is denylisted\n */\n async isDenylisted(account: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isDenylistedMoveCall(tx, account)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Check if executor worker is paused\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the paused status\n */\n isPausedMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_paused'),\n arguments: [tx.object(this.objects.executor)],\n })\n }\n\n /**\n * Check if executor worker is paused\n * @returns Promise<boolean> - True if the worker is paused\n */\n async isPaused(): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isPausedMoveCall(tx)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get executor price feed address\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the price feed address\n */\n priceFeedMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('price_feed'),\n arguments: [tx.object(this.objects.executor)],\n })\n }\n\n /**\n * Get executor price feed address\n * @returns Promise<string> - The price feed address\n */\n async priceFeed(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.priceFeedMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get supported option types for a destination EID\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID\n * @returns Transaction result containing supported option types\n */\n supportedOptionTypesMoveCall(tx: Transaction, dstEid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('supported_option_types'),\n arguments: [tx.object(this.objects.executor), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get supported option types for a destination EID\n * @param dstEid - Destination endpoint ID\n * @returns Promise<number[]> - Array of supported option types as bytes\n */\n async supportedOptionTypes(dstEid: number): Promise<number[]> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.supportedOptionTypesMoveCall(tx, dstEid)\n },\n (result) => {\n const parsed = bcs.vector(bcs.u8()).parse(result[0].value)\n return Array.from(parsed)\n }\n )\n }\n\n /**\n * Get executor worker capability address\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the worker capability address\n */\n workerCapAddressMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('worker_cap_address'),\n arguments: [tx.object(this.objects.executor)],\n })\n }\n\n /**\n * Get executor worker capability address\n * @returns Promise<string> - The worker capability address\n */\n async workerCapAddress(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.workerCapAddressMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get executor worker fee library address\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the worker fee library address\n */\n workerFeeLibMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('worker_fee_lib'),\n arguments: [tx.object(this.objects.executor)],\n })\n }\n\n /**\n * Get executor worker fee library address\n * @returns Promise<string> - The worker fee library address\n */\n async workerFeeLib(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.workerFeeLibMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get admin capability ID from admin address\n * @param tx - The transaction to add the move call to\n * @param admin - The admin address\n * @returns Transaction result containing the admin capability ID\n */\n adminCapIdMoveCall(tx: Transaction, admin: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('admin_cap_id'),\n arguments: [tx.object(this.objects.executor), asAddress(tx, admin)],\n })\n }\n\n /**\n * Get admin capability ID from admin address\n * @param admin - The admin address\n * @returns Promise<string> - The admin capability ID\n */\n async adminCapId(admin: string): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.adminCapIdMoveCall(tx, admin)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get Executor object address from worker registry using this Executor's worker capability (as a move call)\n * This function chains Move calls to decode worker info and extract the Executor object address\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the Executor object address\n */\n getExecutorObjectAddressMoveCall(tx: Transaction): TransactionResult {\n // Step 1: Get this Executor's worker capability address\n const workerCapAddress = this.workerCapAddressMoveCall(tx)\n\n // Step 2: Get worker info bytes from registry\n const workerInfoBytes = this.moduleManager\n .getWorkerRegistry(this.client)\n .getWorkerInfoMoveCall(tx, workerCapAddress)\n\n // Step 3: Decode worker info using worker_common::worker_info_v1::decode\n const workerInfo = tx.moveCall({\n target: `${this.moduleManager.packages.workerCommon}::worker_info_v1::decode`,\n arguments: [workerInfoBytes],\n })\n\n // Step 4: Extract worker_info field from decoded WorkerInfoV1\n const executorInfoBytes = tx.moveCall({\n target: `${this.moduleManager.packages.workerCommon}::worker_info_v1::worker_info`,\n arguments: [workerInfo],\n })\n\n // Step 5: Decode Executor info using executor::executor_info_v1::decode\n const executorInfo = tx.moveCall({\n target: `${this.packageId}::executor_info_v1::decode`,\n arguments: [executorInfoBytes],\n })\n\n // Step 6: Extract executor_object address from decoded ExecutorInfoV1\n return tx.moveCall({\n target: `${this.packageId}::executor_info_v1::executor_object`,\n arguments: [executorInfo],\n })\n }\n\n /**\n * Get Executor object address from worker registry using this Executor's worker capability\n * This function uses Move calls to decode worker info and extract the Executor object address\n * @returns Promise<string> - The Executor object address\n * @throws Will throw an error if worker info is not found or if decoding fails\n */\n async getExecutorObjectAddress(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getExecutorObjectAddressMoveCall(tx)\n },\n (result) => {\n // The result is the Executor object address directly from the Move call chain\n return bcs.Address.parse(result[0].value)\n }\n )\n }\n\n // === Private Helper Functions ===\n\n private parseDstConfig(data: Uint8Array): DstConfig {\n const config = DstConfigBcs.parse(data)\n return {\n lzReceiveBaseGas: BigInt(config.lz_receive_base_gas),\n lzComposeBaseGas: BigInt(config.lz_compose_base_gas),\n multiplierBps: config.multiplier_bps,\n floorMarginUsd: BigInt(config.floor_margin_usd),\n nativeCap: BigInt(config.native_cap),\n }\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { ObjectOptions } from '../../types'\n\nconst MODULE_NAME = 'executor_fee_lib'\n\nexport const ExecutorFeeLibErrorCode = {\n // Executor Fee Lib related errors (matching executor_fee_lib.move)\n ExecutorFeeLib_EEidNotSupported: 1,\n\n // ExecutorOption related errors (matching executor_option.move)\n ExecutorOption_ENoOptions: 1,\n ExecutorOption_EUnsupportedOptionType: 2,\n ExecutorOption_EZeroLzReceiveGasProvided: 3,\n ExecutorOption_EZeroLzComposeGasProvided: 4,\n ExecutorOption_ENativeAmountExceedsCap: 5,\n ExecutorOption_EInvalidLzReceiveOption: 6,\n ExecutorOption_EInvalidNativeDropOption: 7,\n ExecutorOption_EInvalidLzComposeOption: 8,\n} as const\n\nexport class ExecutorFeeLib {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Witness Functions ===\n\n /**\n * Create a LayerZero witness for Executor Fee Lib package whitelist registration\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the LayerZero witness\n */\n createLayerZeroWitnessMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::executor_fee_lib_witness::new`,\n arguments: [],\n })\n }\n\n // === Set Functions ===\n\n /**\n * Create get fee move call for executor fee calculation\n * Note: This is typically called by the Executor, not directly by users\n * @param tx - The transaction to add the move call to\n * @param call - The call transaction result containing fee parameters\n * @returns Transaction result containing the fee calculation call\n */\n getFeeMoveCall(tx: Transaction, call: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_fee'),\n arguments: [tx.object(this.objects.executorFeeLib), call],\n })\n }\n\n /**\n * Confirm get fee move call with price feed integration\n * Note: This is typically called by the Executor, not directly by users\n * @param tx - The transaction to add the move call to\n * @param feelibCall - The fee library call transaction result\n * @param priceFeedCall - The price feed call transaction result\n */\n confirmGetFeeMoveCall(tx: Transaction, feelibCall: TransactionArgument, priceFeedCall: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('confirm_get_fee'),\n arguments: [tx.object(this.objects.executorFeeLib), feelibCall, priceFeedCall],\n })\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { asAddress, asAddressVector, asObject, asU16 } from '../../utils'\n\nconst MODULE_NAME = 'executor_layerzero'\n\nexport const ExecutorLayerzeroErrorCode = {\n // ExecutorLayerzero related errors (matching executor_layerzero.move)\n ExecutorLayerzero_EWorkerCapNotFromPackage: 1,\n} as const\n\nexport class ExecutorLayerZero {\n public packageId: string\n public readonly client: IotaClient\n\n constructor(\n packageId: string,\n client: IotaClient,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n }\n\n // === Set Functions ===\n\n /**\n * Initialize Executor LayerZero instance\n * Creates and shares a new Executor with the specified configuration\n * @param tx - The transaction to add the move call to\n * @param workerCap - Worker capability object ID or transaction argument\n * @param depositAddress - Address for fee deposits or transaction argument\n * @param supportedMessageLibs - Array of supported message library addresses or transaction argument\n * @param priceFeed - Price feed object address or transaction argument\n * @param workerFeeLib - Worker fee library address or transaction argument\n * @param defaultMultiplierBps - Default multiplier in basis points or transaction argument\n * @param owner - Owner address for the executor or transaction argument\n * @param admins - Array of admin addresses or transaction argument\n */\n initExecutorMoveCall(\n tx: Transaction,\n workerCap: string | TransactionArgument,\n depositAddress: string | TransactionArgument,\n supportedMessageLibs: string[] | TransactionArgument,\n priceFeed: string | TransactionArgument,\n workerFeeLib: string | TransactionArgument,\n defaultMultiplierBps: number | TransactionArgument,\n owner: string | TransactionArgument,\n admins: string[] | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('init_executor'),\n arguments: [\n asObject(tx, workerCap),\n asAddress(tx, depositAddress),\n asAddressVector(tx, supportedMessageLibs),\n asAddress(tx, priceFeed),\n asAddress(tx, workerFeeLib),\n asU16(tx, defaultMultiplierBps),\n asAddress(tx, owner),\n asAddressVector(tx, admins),\n tx.object(this.moduleManager.objects.workerRegistry),\n ],\n })\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name: string = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ArbitrumPriceExtBcs, ModelTypeBcs, PriceBcs } from '../../bcs'\nimport { ModuleManager } from '../../module-manager'\nimport { ArbitrumPriceExt, ModelType, ObjectOptions, Price } from '../../types'\nimport { asAddress, asBool, asObject, asU128, asU32, asU64, executeSimulate } from '../../utils'\n\nconst MODULE_NAME = 'price_feed'\n\nexport const PriceFeedErrorCode = {\n // PriceFeed related errors\n PRICE_FEED_EInvalidDenominator: 1,\n PRICE_FEED_ENoPrice: 2,\n PRICE_FEED_ENotAnOPStack: 3,\n PRICE_FEED_EOnlyPriceUpdater: 4,\n PRICE_FEED_EPriceUpdaterCapNotFound: 5,\n} as const\n\nexport class PriceFeed {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Helper Functions ===\n\n /**\n * Create price configuration object\n * @param tx - The transaction to add the move call to\n * @param priceRatio - Price ratio value or transaction argument\n * @param gasPriceInUnit - Gas price in unit or transaction argument\n * @param gasPerByte - Gas per byte value or transaction argument\n * @returns Transaction result containing the price object\n */\n createPriceMoveCall(\n tx: Transaction,\n priceRatio: bigint | number | string | TransactionArgument,\n gasPriceInUnit: bigint | number | string | TransactionArgument,\n gasPerByte: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('create_price'),\n arguments: [asU128(tx, priceRatio), asU64(tx, gasPriceInUnit), asU32(tx, gasPerByte)],\n })\n }\n\n /**\n * Create Arbitrum price extension object\n * @param tx - The transaction to add the move call to\n * @param gasPerL2Tx - Gas per L2 transaction or transaction argument\n * @param gasPerL1CallDataByte - Gas per L1 call data byte or transaction argument\n * @returns Transaction result containing the Arbitrum price extension object\n */\n createArbitrumPriceExtMoveCall(\n tx: Transaction,\n gasPerL2Tx: bigint | number | string | TransactionArgument,\n gasPerL1CallDataByte: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('create_arbitrum_price_ext'),\n arguments: [asU64(tx, gasPerL2Tx), asU32(tx, gasPerL1CallDataByte)],\n })\n }\n\n /**\n * Get price model type move call result\n * @param tx - The transaction to add the move call to\n * @param modelType - The price model type enum value\n * @returns Transaction result containing the model type\n */\n getModelTypeMoveCall(tx: Transaction, modelType: ModelType): TransactionResult {\n switch (modelType) {\n case ModelType.DEFAULT:\n return tx.moveCall({\n target: this.#target('model_type_default'),\n arguments: [],\n })\n case ModelType.ARB_STACK:\n return tx.moveCall({\n target: this.#target('model_type_arbitrum'),\n arguments: [],\n })\n case ModelType.OP_STACK:\n return tx.moveCall({\n target: this.#target('model_type_optimism'),\n arguments: [],\n })\n default:\n throw new Error(`Invalid model type: ${JSON.stringify(modelType)}`)\n }\n }\n\n // === Set Functions ===\n\n /**\n * Set price updater role for an address (admin only)\n * Note: This function will automatically create a price updater capability for new updaters\n * @param tx - The transaction to add the move call to\n * @param updater - The updater address or transaction argument\n * @param active - Whether to activate or deactivate the updater role or transaction argument\n */\n setPriceUpdaterMoveCall(\n tx: Transaction,\n updater: string | TransactionArgument,\n active: boolean | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_price_updater'),\n arguments: [\n tx.object(this.objects.priceFeed),\n tx.object(this.objects.priceFeedOwnerCap),\n asAddress(tx, updater),\n asBool(tx, active),\n ],\n })\n }\n\n /**\n * Set price ratio denominator for price calculations (admin only)\n * Note: denominator must be greater than 0, otherwise the transaction will fail\n * @param tx - The transaction to add the move call to\n * @param denominator - The price ratio denominator value or transaction argument (must be > 0)\n */\n setPriceRatioDenominatorMoveCall(\n tx: Transaction,\n denominator: bigint | number | string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_price_ratio_denominator'),\n arguments: [\n tx.object(this.objects.priceFeed),\n tx.object(this.objects.priceFeedOwnerCap),\n asU128(tx, denominator),\n ],\n })\n }\n\n /**\n * Set Arbitrum compression percentage (admin only)\n * @param tx - The transaction to add the move call to\n * @param compressionPercent - The compression percentage for Arbitrum or transaction argument\n */\n setArbitrumCompressionPercentMoveCall(\n tx: Transaction,\n compressionPercent: bigint | number | string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_arbitrum_compression_percent'),\n arguments: [\n tx.object(this.objects.priceFeed),\n tx.object(this.objects.priceFeedOwnerCap),\n asU128(tx, compressionPercent),\n ],\n })\n }\n\n /**\n * Set price model type for a destination EID (admin only)\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID or transaction argument\n * @param modelType - The price model type to set\n */\n setEidToModelTypeMoveCall(tx: Transaction, dstEid: number | TransactionArgument, modelType: ModelType): void {\n const modelTypeCall = this.getModelTypeMoveCall(tx, modelType)\n\n tx.moveCall({\n target: this.#target('set_eid_to_model_type'),\n arguments: [\n tx.object(this.objects.priceFeed),\n tx.object(this.objects.priceFeedOwnerCap),\n asU32(tx, dstEid),\n modelTypeCall,\n ],\n })\n }\n\n /**\n * Set price for a destination EID (price updater capability required)\n * @param tx - The transaction to add the move call to\n * @param updaterCap - The price updater capability object or transaction argument\n * @param dstEid - Destination endpoint ID or transaction argument\n * @param price - The price configuration to set\n */\n setPriceMoveCall(\n tx: Transaction,\n updaterCap: string | TransactionArgument,\n dstEid: number | TransactionArgument,\n price: Price\n ): void {\n const priceCall = this.createPriceMoveCall(tx, price.priceRatio, price.gasPriceInUnit, price.gasPerByte)\n\n tx.moveCall({\n target: this.#target('set_price'),\n arguments: [tx.object(this.objects.priceFeed), asObject(tx, updaterCap), asU32(tx, dstEid), priceCall],\n })\n }\n\n /**\n * Set price for Arbitrum with additional extension parameters (price updater capability required)\n * @param tx - The transaction to add the move call to\n * @param updaterCap - The price updater capability object or transaction argument\n * @param dstEid - Destination endpoint ID\n * @param price - The base price configuration\n * @param arbitrumPriceExt - Additional Arbitrum-specific price parameters\n */\n setPriceForArbitrumMoveCall(\n tx: Transaction,\n updaterCap: string | TransactionArgument,\n dstEid: number | TransactionArgument,\n price: Price,\n arbitrumPriceExt: ArbitrumPriceExt\n ): void {\n const priceCall = this.createPriceMoveCall(tx, price.priceRatio, price.gasPriceInUnit, price.gasPerByte)\n const arbitrumPriceExtCall = this.createArbitrumPriceExtMoveCall(\n tx,\n arbitrumPriceExt.gasPerL2Tx,\n arbitrumPriceExt.gasPerL1CallDataByte\n )\n\n tx.moveCall({\n target: this.#target('set_price_for_arbitrum'),\n arguments: [\n tx.object(this.objects.priceFeed),\n asObject(tx, updaterCap),\n asU32(tx, dstEid),\n priceCall,\n arbitrumPriceExtCall,\n ],\n })\n }\n\n /**\n * Set native token price in USD (price updater capability required)\n * @param tx - The transaction to add the move call to\n * @param updaterCap - The price updater capability object or transaction argument\n * @param nativeTokenPriceUsd - The native token price in USD\n */\n setNativeTokenPriceUsdMoveCall(\n tx: Transaction,\n updaterCap: string | TransactionArgument,\n nativeTokenPriceUsd: bigint | number | string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_native_token_price_usd'),\n arguments: [tx.object(this.objects.priceFeed), asObject(tx, updaterCap), asU128(tx, nativeTokenPriceUsd)],\n })\n }\n\n // === Witness Functions ===\n\n /**\n * Create a LayerZero witness for PriceFeed package whitelist registration\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the LayerZero witness\n */\n createLayerZeroWitnessMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: `${this.packageId}::price_feed_witness::new`,\n arguments: [],\n })\n }\n\n // === Worker Function ===\n\n /**\n * Estimate fee by endpoint ID using a call result\n * @param tx - The transaction to add the move call to\n * @param call - The call transaction result containing fee parameters\n */\n estimateFeeByEidMoveCall(tx: Transaction, call: TransactionResult): void {\n tx.moveCall({\n target: this.#target('estimate_fee_by_eid'),\n arguments: [tx.object(this.objects.priceFeed), call],\n })\n }\n\n // === View Functions ===\n\n /**\n * Get owner capability address\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the owner capability address\n */\n getOwnerCapMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_owner_cap'),\n arguments: [tx.object(this.objects.priceFeed)],\n })\n }\n\n /**\n * Get price updater capability address for a specific updater\n * @param tx - The transaction to add the move call to\n * @param updater - The updater address to get capability for\n * @returns Transaction result containing the price updater capability address\n */\n getPriceUpdaterCapMoveCall(tx: Transaction, updater: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_price_updater_cap'),\n arguments: [tx.object(this.objects.priceFeed), asAddress(tx, updater)],\n })\n }\n\n /**\n * Get the owner capability address of this PriceFeed\n * @returns Promise<string> - The owner capability address\n */\n async ownerCap(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getOwnerCapMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get price updater capability address for a specific updater\n * @param updater - The updater address to get capability for\n * @returns Promise<string> - The price updater capability address\n */\n async priceUpdaterCap(updater: string): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getPriceUpdaterCapMoveCall(tx, updater)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Check if an address is a price updater\n * @param tx - The transaction to add the move call to\n * @param updater - The updater address to check\n * @returns Transaction result containing the price updater status\n */\n isPriceUpdaterMoveCall(tx: Transaction, updater: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_price_updater'),\n arguments: [tx.object(this.objects.priceFeed), asAddress(tx, updater)],\n })\n }\n\n /**\n * Check if an address is a price updater\n * @param updater - The updater address to check\n * @returns Promise<boolean> - True if the address is a price updater\n */\n async isPriceUpdater(updater: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isPriceUpdaterMoveCall(tx, updater)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get price ratio denominator\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the price ratio denominator\n */\n priceRatioDenominatorMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_price_ratio_denominator'),\n arguments: [tx.object(this.objects.priceFeed)],\n })\n }\n\n /**\n * Get price ratio denominator\n * @returns Promise<bigint> - The price ratio denominator value\n */\n async priceRatioDenominator(): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.priceRatioDenominatorMoveCall(tx)\n },\n (result) => BigInt(bcs.U128.parse(result[0].value))\n )\n }\n\n /**\n * Get Arbitrum compression percentage\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the compression percentage\n */\n arbitrumCompressionPercentMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_arbitrum_compression_percent'),\n arguments: [tx.object(this.objects.priceFeed)],\n })\n }\n\n /**\n * Get Arbitrum compression percentage\n * @returns Promise<bigint> - The compression percentage value\n */\n async arbitrumCompressionPercent(): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.arbitrumCompressionPercentMoveCall(tx)\n },\n (result) => BigInt(bcs.U128.parse(result[0].value))\n )\n }\n\n /**\n * Get model type for a destination EID\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID\n * @returns Transaction result containing the model type\n */\n modelTypeMoveCall(tx: Transaction, dstEid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_model_type'),\n arguments: [tx.object(this.objects.priceFeed), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get model type for a destination EID\n * @param dstEid - Destination endpoint ID\n * @returns Promise<PriceModelType> - The price model type\n */\n async modelType(dstEid: number): Promise<ModelType> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.modelTypeMoveCall(tx, dstEid)\n },\n (result) => {\n const enumValue = ModelTypeBcs.parse(result[0].value) as { $kind: string }\n switch (enumValue.$kind) {\n case 'DEFAULT':\n return ModelType.DEFAULT\n case 'ARB_STACK':\n return ModelType.ARB_STACK\n case 'OP_STACK':\n return ModelType.OP_STACK\n default:\n throw new Error(`Invalid model type: ${JSON.stringify(enumValue)}`)\n }\n }\n )\n }\n\n /**\n * Get native token price in USD\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the native token price in USD\n */\n nativeTokenPriceUsdMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('native_token_price_usd'),\n arguments: [tx.object(this.objects.priceFeed)],\n })\n }\n\n /**\n * Get native token price in USD\n * @returns Promise<bigint> - The native token price in USD\n */\n async nativeTokenPriceUsd(): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.nativeTokenPriceUsdMoveCall(tx)\n },\n (result) => BigInt(bcs.U128.parse(result[0].value))\n )\n }\n\n /**\n * Get Arbitrum price extension parameters\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing Arbitrum price extension\n */\n arbitrumPriceExtMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('arbitrum_price_ext'),\n arguments: [tx.object(this.objects.priceFeed)],\n })\n }\n\n /**\n * Get Arbitrum price extension parameters\n * @returns Promise<ArbitrumPriceExt> - The Arbitrum price extension configuration\n */\n async arbitrumPriceExt(): Promise<ArbitrumPriceExt> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.arbitrumPriceExtMoveCall(tx)\n },\n (result) => {\n const parsed = ArbitrumPriceExtBcs.parse(result[0].value) as {\n gas_per_l2_tx: string | number | bigint\n gas_per_l1_call_data_byte: number\n }\n return {\n gasPerL2Tx: BigInt(parsed.gas_per_l2_tx),\n gasPerL1CallDataByte: parsed.gas_per_l1_call_data_byte,\n }\n }\n )\n }\n\n /**\n * Get price for a specific destination EID\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID\n * @returns Transaction result containing the price configuration\n */\n priceMoveCall(tx: Transaction, dstEid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_price'),\n arguments: [tx.object(this.objects.priceFeed), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get price for a specific destination EID\n * @param dstEid - Destination endpoint ID\n * @returns Promise<Price> - The price configuration for the destination\n */\n async price(dstEid: number): Promise<Price> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.priceMoveCall(tx, dstEid)\n },\n (result) => {\n const parsed = PriceBcs.parse(result[0].value) as {\n price_ratio: string | number | bigint\n gas_price_in_unit: string | number | bigint\n gas_per_byte: number\n }\n return {\n priceRatio: BigInt(parsed.price_ratio),\n gasPriceInUnit: BigInt(parsed.gas_price_in_unit),\n gasPerByte: parsed.gas_per_byte,\n }\n }\n )\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { ObjectOptions } from '../../types'\nimport { asAddress, asBool, asU64, executeSimulate } from '../../utils'\n\nconst MODULE_NAME = 'treasury'\n\nexport const TreasuryErrorCode = {\n // Treasury related errors (matching treasury.move)\n TREASURY_EInvalidFeeRecipient: 1,\n TREASURY_EInvalidNativeFeeBp: 2,\n TREASURY_EZroNotEnabled: 3,\n} as const\n\nexport class Treasury {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Set Functions ===\n\n /**\n * Set fee recipient address for treasury (admin only)\n * @param tx - The transaction to add the move call to\n * @param feeRecipient - The new fee recipient address or transaction argument\n */\n setFeeRecipientMoveCall(tx: Transaction, feeRecipient: string | TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_fee_recipient'),\n arguments: [\n tx.object(this.objects.treasury),\n tx.object(this.objects.treasuryAdminCap),\n asAddress(tx, feeRecipient),\n ],\n })\n }\n\n /**\n * Set native fee basis points for treasury (admin only)\n * @param tx - The transaction to add the move call to\n * @param nativeFeeBp - The native fee in basis points or transaction argument\n */\n setNativeFeeBpMoveCall(tx: Transaction, nativeFeeBp: bigint | number | string | TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_native_fee_bp'),\n arguments: [\n tx.object(this.objects.treasury),\n tx.object(this.objects.treasuryAdminCap),\n asU64(tx, nativeFeeBp),\n ],\n })\n }\n\n /**\n * Set ZRO token fee for treasury (admin only)\n * @param tx - The transaction to add the move call to\n * @param zroFee - The ZRO token fee amount or transaction argument\n */\n setZroFeeMoveCall(tx: Transaction, zroFee: bigint | number | string | TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_zro_fee'),\n arguments: [tx.object(this.objects.treasury), tx.object(this.objects.treasuryAdminCap), asU64(tx, zroFee)],\n })\n }\n\n /**\n * Enable or disable ZRO token fees (admin only)\n * @param tx - The transaction to add the move call to\n * @param zroEnabled - Whether ZRO token fees are enabled or transaction argument\n */\n setZroEnabledMoveCall(tx: Transaction, zroEnabled: boolean | TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_zro_enabled'),\n arguments: [\n tx.object(this.objects.treasury),\n tx.object(this.objects.treasuryAdminCap),\n asBool(tx, zroEnabled),\n ],\n })\n }\n\n /**\n * Enable or disable treasury fees (admin only)\n * @param tx - The transaction to add the move call to\n * @param feeEnabled - Whether treasury fees are enabled or transaction argument\n */\n setFeeEnabledMoveCall(tx: Transaction, feeEnabled: boolean | TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_fee_enabled'),\n arguments: [\n tx.object(this.objects.treasury),\n tx.object(this.objects.treasuryAdminCap),\n asBool(tx, feeEnabled),\n ],\n })\n }\n\n // === View Functions ===\n\n /**\n * Calculate treasury fees for a transaction\n * @param tx - The transaction to add the move call to\n * @param totalNativeFee - Total native fee amount or transaction argument\n * @param payInZro - Whether to pay in ZRO tokens or transaction argument\n * @returns Transaction result containing calculated fees\n */\n getFeeMoveCall(\n tx: Transaction,\n totalNativeFee: bigint | number | string | TransactionArgument,\n payInZro: boolean | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_fee'),\n arguments: [tx.object(this.objects.treasury), asU64(tx, totalNativeFee), asBool(tx, payInZro)],\n })\n }\n\n /**\n * Calculate treasury fees for a transaction\n * @param totalNativeFee - Total native fee amount\n * @param payInZro - Whether to pay in ZRO tokens\n * @returns Promise<[bigint, bigint]> - Tuple of [nativeFee, zroFee]\n */\n async getFee(totalNativeFee: bigint, payInZro: boolean): Promise<[bigint, bigint]> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getFeeMoveCall(tx, totalNativeFee, payInZro)\n },\n (result) => {\n // Parse the tuple (u64, u64) returned by get_fee\n const nativeFee = BigInt(bcs.U64.parse(result[0].value))\n const zroFee = BigInt(bcs.U64.parse(result[1].value))\n return [nativeFee, zroFee]\n }\n )\n }\n\n /**\n * Get treasury fee recipient address\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the fee recipient address\n */\n feeRecipientMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('fee_recipient'),\n arguments: [tx.object(this.objects.treasury)],\n })\n }\n\n /**\n * Get treasury fee recipient address\n * @returns Promise<string> - The fee recipient address\n */\n async feeRecipient(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.feeRecipientMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get native fee basis points\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the native fee basis points\n */\n nativeFeeBpMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('native_fee_bp'),\n arguments: [tx.object(this.objects.treasury)],\n })\n }\n\n /**\n * Get native fee basis points\n * @returns Promise<bigint> - The native fee in basis points\n */\n async nativeFeeBp(): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.nativeFeeBpMoveCall(tx)\n },\n (result) => BigInt(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Get ZRO token fee amount\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the ZRO fee\n */\n zroFeeMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('zro_fee'),\n arguments: [tx.object(this.objects.treasury)],\n })\n }\n\n /**\n * Get ZRO token fee amount\n * @returns Promise<bigint> - The ZRO token fee\n */\n async zroFee(): Promise<bigint> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.zroFeeMoveCall(tx)\n },\n (result) => BigInt(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Check if ZRO token fees are enabled\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the ZRO enabled status\n */\n zroEnabledMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('zro_enabled'),\n arguments: [tx.object(this.objects.treasury)],\n })\n }\n\n /**\n * Check if ZRO token fees are enabled\n * @returns Promise<boolean> - True if ZRO fees are enabled\n */\n async zroEnabled(): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.zroEnabledMoveCall(tx)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Check if treasury fees are enabled\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the fee enabled status\n */\n feeEnabledMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('fee_enabled'),\n arguments: [tx.object(this.objects.treasury)],\n })\n }\n\n /**\n * Check if treasury fees are enabled\n * @returns Promise<boolean> - True if treasury fees are enabled\n */\n async feeEnabled(): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.feeEnabledMoveCall(tx)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n // === Private Functions ===\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name: string = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { ObjectOptions } from '../../types'\nimport { asAddress, executeSimulate } from '../../utils'\n\nconst MODULE_NAME = 'worker_registry'\n\nexport const WorkerRegistryErrorCode = {\n // WorkerRegistry related errors (matching worker_registry.move)\n EWorkerInfoInvalid: 1,\n EWorkerInfoNotFound: 2,\n} as const\n\n/**\n * WorkerRegistry provides access to the worker registry contract functionality\n * This module maintains mappings between worker addresses and their associated information.\n */\nexport class WorkerRegistry {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n /**\n * Create a new WorkerRegistry instance\n * @param packageId - The package ID of the worker registry contract\n * @param client - The Iota client instance\n * @param objects - Object options containing contract object IDs\n * @param moduleManager - Module manager for handling dependencies\n */\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === View Functions ===\n\n /**\n * Get worker info for a specific worker address (as a move call)\n * This creates a move call that can be used in a PTB (Programmable Transaction Block)\n * @param tx - The transaction to add the move call to\n * @param worker - The worker address or transaction argument\n * @returns TransactionResult - The move call result containing worker info bytes\n * @throws Will throw an error if worker info is not found (EWorkerInfoNotFound)\n */\n getWorkerInfoMoveCall(tx: Transaction, worker: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_worker_info'),\n arguments: [tx.object(this.objects.workerRegistry), asAddress(tx, worker)],\n })\n }\n\n /**\n * Get worker info for a specific worker address\n * Executes the get_worker_info function and returns the worker information bytes\n * @param worker - The worker address to get info for\n * @returns Promise<Uint8Array> - The worker information bytes containing encoded worker data\n * @throws Will throw an error if worker info is not found (EWorkerInfoNotFound)\n */\n async getWorkerInfo(worker: string): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getWorkerInfoMoveCall(tx, worker)\n },\n (result) => {\n return result[0].value\n }\n )\n }\n\n /**\n * Check if worker info exists for a specific worker address\n * This is a convenience method that catches EWorkerInfoNotFound errors\n * @param worker - The worker address to check\n * @returns Promise<boolean> - True if worker info exists, false if not found\n * @throws Will re-throw any errors other than EWorkerInfoNotFound\n */\n async hasWorkerInfo(worker: string): Promise<boolean> {\n try {\n await this.getWorkerInfo(worker)\n return true\n } catch (error) {\n // If the error is EWorkerInfoNotFound, return false\n if (error instanceof Error && error.message.includes('EWorkerInfoNotFound')) {\n return false\n }\n // Re-throw other errors\n throw error\n }\n }\n\n // === Private Functions ===\n\n /**\n * Generate the target string for move calls\n * @param functionName - The function name to call\n * @returns The fully qualified target string for the move call\n */\n #target(functionName: string): string {\n return `${this.packageId}::${MODULE_NAME}::${functionName}`\n }\n}\n","import { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { ObjectOptions } from '../../types'\nimport { asObject } from '../../utils'\n\nconst MODULE_NAME = 'dvn_ptb_builder'\n\nexport class DvnPtbBuilder {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Set Functions ===\n\n /**\n * Creates a transaction to build DVN PTB\n * @param tx - The transaction to add the move call to\n * @param dvnAddress - DVN object address or transaction argument\n * @param feelibAddress - DVN fee lib object address or transaction argument\n * @param priceFeedAddress - Price feed object address or transaction argument\n * @returns Transaction result containing get_fee and assign_job move calls\n */\n buildDvnPtbMoveCall(\n tx: Transaction,\n dvnAddress: string | TransactionArgument,\n feelibAddress: string | TransactionArgument,\n priceFeedAddress: string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('build_dvn_ptb'),\n arguments: [asObject(tx, dvnAddress), asObject(tx, feelibAddress), asObject(tx, priceFeedAddress)],\n })\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { ObjectOptions } from '../../types'\nimport { asAddress, asBool, asU32, executeSimulate } from '../../utils'\n\nexport const EndpointPtbBuilderErrorCode = {\n // EndpointPtbBuilder related errors (matching endpoint_ptb_builder.move)\n EndpointPtbBuilder_EBuilderNotFound: 1,\n EndpointPtbBuilder_EBuilderRegistered: 2,\n EndpointPtbBuilder_EBuilderUnsupported: 3,\n EndpointPtbBuilder_EInvalidBounds: 4,\n EndpointPtbBuilder_EInvalidBuilderAddress: 5,\n EndpointPtbBuilder_EInvalidLibrary: 6,\n EndpointPtbBuilder_EUnauthorized: 7,\n} as const\n\nconst ModuleName = 'endpoint_ptb_builder'\n\nexport class EndpointPtbBuilder {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Set Functions ===\n\n /**\n * Creates a transaction to register a message library PTB builder\n * @param tx - The transaction to add the move call to\n * @param builderInfo - PTB builder info result from getPtbBuilderInfoMoveCall or transaction argument\n */\n registerMsglibPtbBuilderMoveCall(tx: Transaction, builderInfo: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('register_msglib_ptb_builder'),\n arguments: [\n tx.object(this.objects.endpointPtbBuilder),\n tx.object(this.objects.endpointPtbBuilderAdminCap),\n tx.object(this.objects.endpointV2),\n builderInfo,\n ],\n })\n }\n\n /**\n * Creates a transaction to set the default message library PTB builder\n * @param tx - The transaction to add the move call to\n * @param messageLib - Target message library address\n * @param ptbBuilder - PTB builder address\n */\n setDefaultMsglibPtbBuilderMoveCall(\n tx: Transaction,\n messageLib: string | TransactionArgument,\n ptbBuilder: string | TransactionArgument\n ): void {\n tx.moveCall({\n target: this.#target('set_default_msglib_ptb_builder'),\n arguments: [\n tx.object(this.objects.endpointPtbBuilder),\n tx.object(this.objects.endpointPtbBuilderAdminCap),\n asAddress(tx, messageLib),\n asAddress(tx, ptbBuilder),\n ],\n })\n }\n\n /**\n * Creates a transaction to set message library PTB builder for an OApp\n * @param tx - The transaction to add the move call to\n * @param call - Call object for setting msglib PTB builder\n */\n setMsglibPtbBuilderMoveCall(tx: Transaction, call: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_msglib_ptb_builder'),\n arguments: [tx.object(this.objects.endpointPtbBuilder), call],\n })\n }\n\n // ======== PTB Building Functions ========\n\n /**\n * Build quote PTB by call for fee calculation\n * @param tx - The transaction to add the move call to\n * @param endpointQuoteCall - Endpoint quote call result\n * @returns Transaction result containing the quote PTB\n */\n buildQuotePtbByCallMoveCall(tx: Transaction, endpointQuoteCall: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('build_quote_ptb_by_call'),\n arguments: [\n tx.object(this.objects.endpointPtbBuilder),\n tx.object(this.objects.endpointV2),\n endpointQuoteCall,\n ],\n })\n }\n\n /**\n * Build send PTB by call for message transmission\n * @param tx - The transaction to add the move call to\n * @param endpointSendCall - Endpoint send call result\n * @returns Transaction result containing the send PTB\n */\n buildSendPtbByCallMoveCall(tx: Transaction, endpointSendCall: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('build_send_ptb_by_call'),\n arguments: [\n tx.object(this.objects.endpointPtbBuilder),\n tx.object(this.objects.endpointV2),\n endpointSendCall,\n ],\n })\n }\n\n /**\n * Build set config PTB by call for configuration updates\n * @param tx - The transaction to add the move call to\n * @param messageLibSetConfigCall - Endpoint set config call result\n * @returns Transaction result containing the set config PTB\n */\n buildSetConfigPtbByCallMoveCall(tx: Transaction, messageLibSetConfigCall: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('build_set_config_ptb_by_call'),\n arguments: [tx.object(this.objects.endpointPtbBuilder), messageLibSetConfigCall],\n })\n }\n\n /**\n * Build quote PTB for on-chain composition\n * @param tx - The transaction to add the move call to\n * @param sender - Sender address\n * @param dstEid - Destination endpoint ID\n * @returns Transaction result containing the quote PTB\n */\n buildQuotePtbMoveCall(\n tx: Transaction,\n sender: string | TransactionArgument,\n dstEid: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('build_quote_ptb'),\n arguments: [\n tx.object(this.objects.endpointPtbBuilder),\n tx.object(this.objects.endpointV2),\n asAddress(tx, sender),\n asU32(tx, dstEid),\n ],\n })\n }\n\n /**\n * Build send PTB for on-chain composition\n * @param tx - The transaction to add the move call to\n * @param sender - Sender address\n * @param dstEid - Destination endpoint ID\n * @param refund - Whether to include refund step\n * @returns Transaction result containing the send PTB\n */\n buildSendPtbMoveCall(\n tx: Transaction,\n sender: string | TransactionArgument,\n dstEid: number | TransactionArgument,\n refund: boolean | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('build_send_ptb'),\n arguments: [\n tx.object(this.objects.endpointPtbBuilder),\n tx.object(this.objects.endpointV2),\n asAddress(tx, sender),\n asU32(tx, dstEid),\n asBool(tx, refund),\n ],\n })\n }\n\n /**\n * Build set config PTB for on-chain composition\n * @param tx - The transaction to add the move call to\n * @param sender - Sender address\n * @param lib - Message library address\n * @returns Transaction result containing the set config PTB\n */\n buildSetConfigPtbMoveCall(\n tx: Transaction,\n sender: string | TransactionArgument,\n lib: string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('build_set_config_ptb'),\n arguments: [\n tx.object(this.objects.endpointPtbBuilder),\n tx.object(this.objects.endpointV2),\n asAddress(tx, sender),\n asAddress(tx, lib),\n ],\n })\n }\n\n // ======== Call ID Functions ========\n\n /**\n * Get endpoint quote call ID\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the endpoint quote call ID\n */\n endpointQuoteCallIdMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('endpoint_quote_call_id'),\n arguments: [],\n })\n }\n\n /**\n * Get endpoint quote call ID as a hex string\n * @returns Promise<string> - The endpoint quote call ID in hex format\n */\n async endpointQuoteCallId(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.endpointQuoteCallIdMoveCall(tx)\n },\n (result) => Buffer.from(bcs.vector(bcs.u8()).parse(result[0].value)).toString('hex')\n )\n }\n\n /**\n * Get endpoint send call ID\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the endpoint send call ID\n */\n endpointSendCallIdMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('endpoint_send_call_id'),\n arguments: [],\n })\n }\n\n /**\n * Get endpoint send call ID as a hex string\n * @returns Promise<string> - The endpoint send call ID in hex format\n */\n async endpointSendCallId(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.endpointSendCallIdMoveCall(tx)\n },\n (result) => Buffer.from(bcs.vector(bcs.u8()).parse(result[0].value)).toString('hex')\n )\n }\n\n /**\n * Get message lib quote call ID\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the message lib quote call ID\n */\n messageLibQuoteCallIdMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('message_lib_quote_call_id'),\n arguments: [],\n })\n }\n\n /**\n * Get message lib quote call ID as a hex string\n * @returns Promise<string> - The message lib quote call ID in hex format\n */\n async messageLibQuoteCallId(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.messageLibQuoteCallIdMoveCall(tx)\n },\n (result) => Buffer.from(bcs.vector(bcs.u8()).parse(result[0].value)).toString('hex')\n )\n }\n\n /**\n * Get message lib send call ID\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the message lib send call ID\n */\n messageLibSendCallIdMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('message_lib_send_call_id'),\n arguments: [],\n })\n }\n\n /**\n * Get message lib send call ID as a hex string\n * @returns Promise<string> - The message lib send call ID in hex format\n */\n async messageLibSendCallId(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.messageLibSendCallIdMoveCall(tx)\n },\n (result) => Buffer.from(bcs.vector(bcs.u8()).parse(result[0].value)).toString('hex')\n )\n }\n\n /**\n * Get message lib set config call ID\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the message lib set config call ID\n */\n messageLibSetConfigCallIdMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('message_lib_set_config_call_id'),\n arguments: [],\n })\n }\n\n /**\n * Get message lib set config call ID as a hex string\n * @returns Promise<string> - The message lib set config call ID in hex format\n */\n async messageLibSetConfigCallId(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.messageLibSetConfigCallIdMoveCall(tx)\n },\n (result) => Buffer.from(bcs.vector(bcs.u8()).parse(result[0].value)).toString('hex')\n )\n }\n\n // ======== View Functions ========\n\n /**\n * Get the default message library PTB builder for a given library\n * @param tx - The transaction to add the move call to\n * @param lib - Message library address\n * @returns Transaction result containing the default PTB builder address\n */\n getDefaultMsglibPtbBuilderMoveCall(tx: Transaction, lib: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_default_msglib_ptb_builder'),\n arguments: [tx.object(this.objects.endpointPtbBuilder), asAddress(tx, lib)],\n })\n }\n\n /**\n * Get the default message library PTB builder\n * @param lib - Message library address\n * @returns Promise<string> - The default PTB builder address\n */\n async getDefaultMsglibPtbBuilder(lib: string): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getDefaultMsglibPtbBuilderMoveCall(tx, lib)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get the OApp-specific message library PTB builder\n * @param tx - The transaction to add the move call to\n * @param oapp - OApp address or transaction argument\n * @param lib - Message library address or transaction argument\n * @returns Transaction result containing the OApp-specific PTB builder address\n */\n getOappMsglibPtbBuilderMoveCall(\n tx: Transaction,\n oapp: string | TransactionArgument,\n lib: string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_oapp_msglib_ptb_builder'),\n arguments: [tx.object(this.objects.endpointPtbBuilder), asAddress(tx, oapp), asAddress(tx, lib)],\n })\n }\n\n /**\n * Get the OApp-specific message library PTB builder\n * @param oapp - OApp address\n * @param lib - Message library address\n * @returns Promise<string> - The OApp PTB builder address\n */\n async getOappMsglibPtbBuilder(oapp: string, lib: string): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getOappMsglibPtbBuilderMoveCall(tx, oapp, lib)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get the effective message library PTB builder (OApp-specific or default)\n * @param tx - The transaction to add the move call to\n * @param oapp - OApp address\n * @param lib - Message library address\n * @returns Transaction result containing the effective PTB builder address\n */\n getEffectiveMsglibPtbBuilderMoveCall(\n tx: Transaction,\n oapp: string | TransactionArgument,\n lib: string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_effective_msglib_ptb_builder'),\n arguments: [tx.object(this.objects.endpointPtbBuilder), asAddress(tx, oapp), asAddress(tx, lib)],\n })\n }\n\n /**\n * Get the effective message library PTB builder\n * @param oapp - OApp address\n * @param lib - Message library address\n * @returns Promise<string> - The effective PTB builder address\n */\n async getEffectiveMsglibPtbBuilder(oapp: string, lib: string): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getEffectiveMsglibPtbBuilderMoveCall(tx, oapp, lib)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get detailed information about a registered message library PTB builder\n * @param tx - The transaction to add the move call to\n * @param builder - PTB builder address\n * @returns Transaction result containing the PTB builder information\n */\n getMsglibPtbBuilderInfoMoveCall(tx: Transaction, builder: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_msglib_ptb_builder_info'),\n arguments: [tx.object(this.objects.endpointPtbBuilder), asAddress(tx, builder)],\n })\n }\n\n /**\n * Check if a message library PTB builder is registered\n * @param tx - The transaction to add the move call to\n * @param builder - PTB builder address\n * @returns Transaction result containing boolean registration status\n */\n isMsglibPtbBuilderRegisteredMoveCall(tx: Transaction, builder: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_msglib_ptb_builder_registered'),\n arguments: [tx.object(this.objects.endpointPtbBuilder), asAddress(tx, builder)],\n })\n }\n\n /**\n * Checks if a PTB builder is registered\n * @param builder - PTB builder address\n * @returns Promise<boolean> - Whether the builder is registered\n */\n async isMsglibPtbBuilderRegistered(builder: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isMsglibPtbBuilderRegisteredMoveCall(tx, builder)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get the count of registered message library PTB builders\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the count of registered builders\n */\n registeredMsglibPtbBuildersCountMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('registered_msglib_ptb_builders_count'),\n arguments: [tx.object(this.objects.endpointPtbBuilder)],\n })\n }\n\n /**\n * Get the total number of registered PTB builders\n * @returns Promise<number> - The count of registered builders\n */\n async registeredMsglibPtbBuildersCount(): Promise<number> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.registeredMsglibPtbBuildersCountMoveCall(tx)\n },\n (result) => Number(bcs.U64.parse(result[0].value))\n )\n }\n\n // === Private Functions ===\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string): string {\n return `${this.packageId}::${ModuleName}::${name}`\n }\n}\n","import { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { ObjectOptions } from '../../types'\nimport { asObject } from '../../utils'\n\nconst MODULE_NAME = 'executor_ptb_builder'\n\nexport class ExecutorPtbBuilder {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Set Functions ===\n\n /**\n * Creates a transaction to build Executor PTB\n * @param tx - The transaction to add the move call to\n * @param executorAddress - Executor object address or transaction argument\n * @param feelibAddress - Executor fee lib object address or transaction argument\n * @param priceFeedAddress - Price feed object address or transaction argument\n * @returns Transaction result containing get_fee and assign_job move calls\n */\n buildExecutorPtbMoveCall(\n tx: Transaction,\n executorAddress: string | TransactionArgument,\n feelibAddress: string | TransactionArgument,\n priceFeedAddress: string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('build_executor_ptb'),\n arguments: [asObject(tx, executorAddress), asObject(tx, feelibAddress), asObject(tx, priceFeedAddress)],\n })\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { ObjectOptions } from '../../types'\nimport { asAddress, executeSimulate } from '../../utils'\n\nconst MODULE_NAME = 'package_whitelist_validator'\n\nexport const ValidatorErrorCode = {\n // PTB Whitelist related errors\n EInvalidWitness: 1,\n} as const\n\nexport class PackageWhitelistValidator {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Whitelist Management Functions ===\n\n /**\n * Add a package to the whitelist using a LayerZero witness\n * This function is permissionless and allows packages to self-register\n * by providing a valid LayerZeroWitness type\n * @param tx - The transaction to add the move call to\n * @param witness - The LayerZero witness from the package\n * @template T - The witness type that must be named \"_witness::LayerZeroWitness\"\n */\n addWhitelistMoveCall(tx: Transaction, witness: TransactionArgument, witnessType: string): void {\n tx.moveCall({\n target: this.#target('add_whitelist'),\n typeArguments: [witnessType],\n arguments: [tx.object(this.objects.packageWhitelistValidator), witness],\n })\n }\n\n // === View Functions ===\n\n /**\n * Check if a package is whitelisted\n * @param tx - The transaction to add the move call to\n * @param packageAddress - The package address to check\n * @returns Transaction result containing the whitelist status\n */\n isWhitelistedMoveCall(tx: Transaction, packageAddress: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_whitelisted'),\n arguments: [tx.object(this.objects.packageWhitelistValidator), asAddress(tx, packageAddress)],\n })\n }\n\n /**\n * Validate multiple packages at once\n * @param tx - The transaction to add the move call to\n * @param packageAddresses - Array of package addresses to validate\n * @returns Transaction result containing the validation status\n */\n validateMoveCall(tx: Transaction, packageAddresses: string[]): TransactionResult {\n return tx.moveCall({\n target: this.#target('validate'),\n arguments: [\n tx.object(this.objects.packageWhitelistValidator),\n tx.pure(bcs.vector(bcs.Address).serialize(packageAddresses)),\n ],\n })\n }\n\n /**\n * Check if a package is whitelisted\n * @param packageAddress - The package address to check\n * @returns Promise<boolean> - True if the package is whitelisted\n */\n async isWhitelisted(packageAddress: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isWhitelistedMoveCall(tx, packageAddress)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n // === Utility Functions ===\n\n /**\n * Extract package ID from a witness type name\n * @param witnessTypeName - The full type name of the witness\n * @returns string | null - The package ID if extraction is successful\n */\n extractPackageFromWitness(witnessTypeName: string): string | null {\n // Pattern: \"0x123abc::my_package_witness::LayerZeroWitness\"\n const parts = witnessTypeName.split('::')\n if (parts.length >= 3) {\n const packageId = parts[0]\n if (packageId.startsWith('0x') && packageId.length > 2) {\n return packageId\n }\n }\n return null\n }\n\n // === Batch Operations ===\n\n /**\n * Validate multiple packages at once using the contract's validate function\n * @param packageAddresses - Array of package addresses to validate\n * @returns Promise<boolean> - True if all packages are whitelisted\n */\n async validate(packageAddresses: string[]): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.validateMoveCall(tx, packageAddresses)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { OAppInfoV1Bcs, VectorMoveCallBCS } from '../../bcs'\nimport {\n Argument,\n BuilderPlaceholderInfo,\n DEFAULT_SIMULATION_TIMES,\n LzComposeVersion,\n MoveCall,\n OAppInfoVersion,\n SimulateResult,\n} from '../../types'\nimport { simulateTransaction } from '../../utils/transaction'\nimport { normalizeIotaPackageId } from '../../utils/type-name'\n\nconst MOVE_CALL_MODULE_NAME = 'move_call'\n\nexport const PtbBuilderErrorCode = {\n // MoveCallsBuilder related errors (matching move_calls_builder.move)\n MoveCallsBuilder_EInvalidMoveCallResult: 1,\n MoveCallsBuilder_EResultIDNotFound: 2,\n\n // Argument related errors (matching argument.move)\n Argument_EInvalidArgument: 1,\n} as const\n\nexport class PtbBuilder {\n public packageId: string\n public readonly client: IotaClient\n\n constructor(packageId: string, client: IotaClient) {\n this.packageId = packageId\n this.client = client\n }\n\n /**\n * Simulate a transaction and decode the resulting move calls\n * @param tx - The transaction to simulate\n * @param sender - Optional sender address for simulation context\n * @returns Promise resolving to array of decoded move calls\n */\n async simulatePtb(tx: Transaction, sender?: string): Promise<MoveCall[]> {\n const ptbCallsResult = await simulateTransaction(this.client, tx, sender)\n return this.#decodeMoveCalls(ptbCallsResult[0])\n }\n\n /**\n * Simulate a LayerZero receive transaction and decode the move calls\n * Handles versioned receive data and decodes based on version\n * @param tx - The transaction to simulate\n * @param sender - Optional sender address for simulation context\n * @returns Promise resolving to array of decoded move calls\n * @throws Error if unsupported version is encountered\n */\n async simulateLzReceivePtb(tx: Transaction, sender?: string): Promise<MoveCall[]> {\n const ptbCallsResult = await simulateTransaction(this.client, tx, sender)\n const buffer = Buffer.from(bcs.vector(bcs.u8()).parse(ptbCallsResult[0].value))\n\n const version = buffer.readInt16BE()\n if (version === OAppInfoVersion.VERSION_1) {\n return this.#decodeMoveCallsFromOAppInfoV1(new Uint8Array(buffer.subarray(2)))\n }\n throw new Error(`Unknown version: ${version}`)\n }\n\n /**\n * Simulate a LayerZero compose transaction and decode the move calls\n * Handles versioned compose data and decodes based on version\n * @param tx - The transaction to simulate\n * @param sender - Optional sender address for simulation context\n * @returns Promise resolving to array of decoded move calls\n * @throws Error if unsupported version is encountered\n */\n async simulateLzComposePtb(tx: Transaction, sender?: string): Promise<MoveCall[]> {\n const ptbCallsResult = await simulateTransaction(this.client, tx, sender)\n const buffer = Buffer.from(bcs.vector(bcs.u8()).parse(ptbCallsResult[0].value))\n const version = buffer.readInt16BE()\n if (version === LzComposeVersion.VERSION_1) {\n return this.#decodeMoveCallsBytes(new Uint8Array(buffer.subarray(2)))\n }\n throw new Error(`Unknown version: ${version}`)\n }\n\n /**\n * Builds PTB with move-calls simulated from the transaction\n *\n * This method processes an array of move calls, handling both regular calls and builder calls\n * (which require simulation to expand into actual move calls). It ensures all object arguments\n * are properly validated for PTB compatibility.\n *\n * @param tx - The transaction to append move calls to\n * @param moveCalls - Array of move calls to process and build\n * @param resolutionIDs - Cache mapping call IDs to their transaction results for argument resolution (defaults to empty Map)\n * @param sender - Optional sender address for simulation context (defaults to undefined)\n * @param maxSimulationTimes - Maximum number of simulations allowed for builder calls (defaults to DEFAULT_SIMULATION_TIMES)\n * @param nestedResult - Array storing results from previous calls for NestedResult argument resolution (internal use, defaults to empty array)\n * @param baseOffset - Base offset for calculating nested result indices (internal use, defaults to 0)\n *\n * @returns Promise<[number, MoveCall[]]> - [moveCallCount, finalMoveCalls] tuple\n *\n * @throws Error if simulation limit is exceeded, nested results are unavailable, or objects are not PTB-compatible\n */\n async buildPtb(\n tx: Transaction,\n moveCalls: MoveCall[],\n resolutionIDs = new Map<string, TransactionResult>(), // ID -> TransactionResult\n sender: string | undefined = undefined,\n maxSimulationTimes = DEFAULT_SIMULATION_TIMES,\n // -- below are internal use only --\n nestedResult: TransactionResult[] = [],\n baseOffset = 0\n ): Promise<[number, MoveCall[]]> {\n const finalMoveCalls: MoveCall[] = [] // This array collects all move calls for validation\n const moveCallCount = await this.#buildMoveCalls(\n tx,\n moveCalls,\n resolutionIDs,\n sender,\n maxSimulationTimes,\n finalMoveCalls,\n nestedResult,\n baseOffset\n )\n\n return [moveCallCount, finalMoveCalls]\n }\n\n /**\n * Internal method to recursively build and process move calls\n * Handles both regular and builder calls with simulation and argument resolution\n * @param tx - The transaction to add move calls to\n * @param moveCalls - Array of move calls to process\n * @param resolutionIDs - Map for resolving call ID arguments\n * @param sender - Optional sender address for simulation\n * @param remainingSimulation - Remaining simulation attempts allowed\n * @param finalMoveCalls - Array collecting all final move calls\n * @param nestedResult - Array of transaction results for nested argument resolution\n * @param baseOffset - Base offset for calculating nested result indices\n * @returns Promise resolving to the number of move calls processed\n * @private\n */\n async #buildMoveCalls(\n tx: Transaction,\n moveCalls: MoveCall[],\n resolutionIDs: Map<string, TransactionResult>, // ID -> TransactionResult\n sender: string | undefined = undefined,\n // -- below are internal use only --\n remainingSimulation: number,\n finalMoveCalls: MoveCall[],\n nestedResult: TransactionResult[] = [],\n baseOffset = 0\n ): Promise<number> {\n if (!moveCalls.length) return 0\n let builderMoveCallCount = 0 // current builder move_calls count\n const placeholderInfos: BuilderPlaceholderInfo[] = []\n for (let currentMoveCallIndex = 0; currentMoveCallIndex < moveCalls.length; currentMoveCallIndex++) {\n const moveCall = moveCalls[currentMoveCallIndex]\n // Create a copy to avoid mutating the original\n const processedMoveCall = {\n ...moveCall,\n arguments: moveCall.arguments.map((arg) => {\n // Adjust the index by the base offset and the placeholder count\n if ('NestedResult' in arg) {\n const [callIndex, resultIndex] = arg.NestedResult\n const newCallIndex = this.#calculateOffset(callIndex, baseOffset, placeholderInfos)\n const result: Argument = { NestedResult: [newCallIndex, resultIndex] }\n return result\n }\n return arg\n }),\n }\n\n if (!moveCall.is_builder_call) {\n finalMoveCalls.push(processedMoveCall)\n this.#appendMoveCall(tx, processedMoveCall, resolutionIDs, nestedResult, true)\n } else {\n builderMoveCallCount++\n\n if (remainingSimulation <= 0) {\n throw new Error('remainingSimulation is not enough')\n }\n remainingSimulation--\n // The simluate tx is simluated to get the actual move calls of the contract to be replaced in the next layer\n const simulateTx = Transaction.from(tx)\n this.#appendMoveCall(simulateTx, processedMoveCall, resolutionIDs, nestedResult, false)\n const newMoveCalls = await this.simulatePtb(simulateTx, sender)\n\n // Replace the placeholder move calls with the actual move calls\n const placeholderMoveCallCount = await this.#buildMoveCalls(\n tx,\n newMoveCalls,\n resolutionIDs,\n sender,\n remainingSimulation,\n finalMoveCalls,\n nestedResult,\n this.#calculateOffset(currentMoveCallIndex, baseOffset, placeholderInfos)\n )\n placeholderInfos.push({ index: currentMoveCallIndex, moveCallCount: placeholderMoveCallCount })\n }\n }\n const placeholderMoveCallCount = placeholderInfos.reduce((acc, item) => acc + item.moveCallCount, 0)\n return moveCalls.length - builderMoveCallCount + placeholderMoveCallCount\n }\n\n /**\n * Append a move call to the transaction with argument resolution\n * Handles different argument types and records results for future reference\n * @param tx - The transaction to add the move call to\n * @param moveCall - The move call to append\n * @param resolutionIDs - Map for resolving call ID arguments\n * @param nestedResult - Array to store transaction results\n * @param directCall - Whether this is a direct call (affects result recording)\n * @private\n */\n #appendMoveCall(\n tx: Transaction,\n moveCall: MoveCall,\n resolutionIDs: Map<string, TransactionResult>, // ID -> TransactionResult\n nestedResult: TransactionResult[],\n directCall: boolean\n ): void {\n const moveCallParam = {\n target: `${moveCall.function.package}::${moveCall.function.module_name}::${moveCall.function.name}`,\n arguments: moveCall.arguments.map((arg) => {\n if ('Object' in arg) {\n return tx.object(arg.Object)\n } else if ('Pure' in arg) {\n return tx.pure(arg.Pure)\n } else if ('NestedResult' in arg) {\n const [callIndex, resultIndex] = arg.NestedResult\n const moveCallResult = nestedResult[callIndex]\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition,@typescript-eslint/strict-boolean-expressions\n if (!moveCallResult || typeof moveCallResult[resultIndex] === 'undefined') {\n throw new Error(`NestedResult resultIndex ${resultIndex} not available in call ${callIndex}`)\n }\n return moveCallResult[resultIndex]\n } else if ('ID' in arg) {\n // Replace the call parameters with the result from the call cache\n const result = resolutionIDs.get(Buffer.from(arg.ID).toString('hex'))\n if (result === undefined) {\n throw new Error(\n `Call substitution not found for \"${Buffer.from(arg.ID).toString('hex')}\" in cache`\n )\n }\n return result\n }\n throw new Error(`Unknown argument variant: ${JSON.stringify(arg)}`)\n }),\n typeArguments: moveCall.type_arguments,\n }\n\n if (directCall) {\n const result = tx.moveCall(moveCallParam)\n // The nestedResult index is actually equal to the move_call's nested result index in the move_call_builder\n nestedResult.push(result)\n // Record output calls for downstream parameter replacement if there are output calls\n if (moveCall.result_ids.length > 0) {\n for (let i = 0; i < moveCall.result_ids.length; i++) {\n const outputID = moveCall.result_ids[i]\n // Validate that the result has enough outputs\n if (i >= result.length) {\n throw new Error(\n `Move call result doesn't have output at index ${i} for call \"${Buffer.from(outputID).toString('hex')}\"`\n )\n }\n const resultID = Buffer.from(outputID).toString('hex')\n if (resolutionIDs.has(resultID)) {\n throw new Error(`Move call result already exists for call \"${resultID}\"`)\n }\n resolutionIDs.set(resultID, result[i] as unknown as TransactionResult)\n }\n }\n } else {\n tx.moveCall(moveCallParam)\n }\n }\n\n /**\n * Decode move calls from a simulation result\n * @param viewResult - The simulation result containing move calls\n * @returns Array of decoded move calls\n * @throws Error if the result type doesn't match expected format\n * @private\n */\n #decodeMoveCalls(viewResult: SimulateResult): MoveCall[] {\n const { value, type } = viewResult\n const vectorCallType =\n `vector<${normalizeIotaPackageId(this.packageId, true, true)}::${MOVE_CALL_MODULE_NAME}::MoveCall>`.toLowerCase()\n if (type.toLowerCase() !== vectorCallType) {\n throw new Error(`not match the type: ${type.toLowerCase()} - expected ${vectorCallType}`)\n }\n return this.#decodeMoveCallsBytes(value)\n }\n\n #decodeMoveCallsFromOAppInfoV1(bytes: Uint8Array): MoveCall[] {\n const oappInfo = OAppInfoV1Bcs.parse(bytes)\n return this.#decodeMoveCallsBytes(new Uint8Array(oappInfo.lz_receive_info).subarray(2)) // remove the version prefix\n }\n\n /**\n * Decode move calls from raw bytes\n * @param bytes - The raw bytes containing encoded move calls\n * @returns Array of decoded move calls\n * @private\n */\n #decodeMoveCallsBytes(bytes: Uint8Array): MoveCall[] {\n const moveCalls = VectorMoveCallBCS.parse(bytes)\n return moveCalls.map((moveCall) => ({\n function: {\n package: moveCall.function.package,\n module_name: moveCall.function.module_name,\n name: moveCall.function.name,\n },\n arguments: moveCall.arguments.map((arg) => {\n if (arg.ID !== undefined) {\n return { ID: arg.ID }\n } else if (arg.Object !== undefined) {\n return { Object: arg.Object }\n } else if (arg.Pure !== undefined) {\n return { Pure: new Uint8Array(arg.Pure) }\n } else {\n // Must be NestedResult since we've handled other cases\n return {\n NestedResult: [arg.NestedResult.call_index, arg.NestedResult.result_index] as [number, number],\n }\n }\n }),\n type_arguments: moveCall.type_arguments,\n result_ids: moveCall.result_ids.map((id) => Buffer.from(id)),\n is_builder_call: moveCall.is_builder_call,\n })) as MoveCall[]\n }\n\n /**\n * Calculate the offset for nested result indices accounting for builder expansions\n * @param index - The original index to calculate offset for\n * @param baseOffset - The base offset to add\n * @param placeholderInfos - Information about placeholder expansions\n * @returns The calculated offset index\n * @private\n */\n #calculateOffset(index: number, baseOffset: number, placeholderInfos: BuilderPlaceholderInfo[]): number {\n let placeholderCount = 0\n let placeholderMoveCallCount = 0\n for (const placeholder of placeholderInfos) {\n // builder move_call will not return any nested result, so only check index > placeholder.index\n if (index > placeholder.index) {\n placeholderMoveCallCount += placeholder.moveCallCount\n placeholderCount++\n }\n }\n return index - placeholderCount + placeholderMoveCallCount + baseOffset\n }\n}\n","import { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { ObjectOptions } from '../../types'\n\nconst MODULE_NAME = 'simple_msglib_ptb_builder'\n\nexport class SimpleMessageLibPtbBuilder {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === View Functions ===\n\n /**\n * Creates a transaction to get PTB builder info\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing PTB builder information\n */\n getPtbBuilderInfoMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_ptb_builder_info'),\n arguments: [\n tx.object(this.objects.simpleMessageLibPtbBuilder),\n tx.object(this.objects.endpointV2),\n tx.object(this.objects.simpleMessageLib),\n ],\n })\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { ObjectOptions } from '../../types'\nimport { asAddress, executeSimulate } from '../../utils'\n\nconst MODULE_NAME = 'uln_302_ptb_builder'\n\nexport const Uln302PtbBuilderErrorCode = {\n // ULN302 PTB Builder related errors (matching uln_302_ptb_builder.move)\n Uln302PtbBuilder_EWorkerPtbsNotFound: 1,\n} as const\n\nexport class Uln302PtbBuilder {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Set Functions ===\n\n /**\n * Set worker PTBs for ULN302 PTB builder\n * @param tx - The transaction to add the move call to\n * @param call - Call object from worker's set_worker_ptbs or transaction argument\n */\n setWorkerPtbsMoveCall(tx: Transaction, call: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_worker_ptbs'),\n arguments: [tx.object(this.objects.uln302PtbBuilder), call],\n })\n }\n\n // === View Functions ===\n\n /**\n * Creates a transaction to get PTB builder info\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing PTB builder information\n */\n getPtbBuilderInfoMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_ptb_builder_info'),\n arguments: [\n tx.object(this.objects.uln302PtbBuilder),\n tx.object(this.objects.uln302),\n tx.object(this.objects.treasury),\n tx.object(this.objects.endpointV2),\n ],\n })\n }\n\n /**\n * Check if worker PTBs are set for a specific worker capability\n * @param tx - The transaction to add the move call to\n * @param workerCap - Worker capability address to check or transaction argument\n * @returns Transaction result containing boolean indicating if PTBs are set\n */\n isWorkerPtbsSetMoveCall(tx: Transaction, workerCap: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_worker_ptbs_set'),\n arguments: [tx.object(this.objects.uln302PtbBuilder), asAddress(tx, workerCap)],\n })\n }\n\n /**\n * Check if worker PTBs are set for a specific worker capability\n * @param workerCap - Worker capability address to check\n * @returns Promise<boolean> - True if worker PTBs are set\n */\n async isWorkerPtbsSet(workerCap: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isWorkerPtbsSetMoveCall(tx, workerCap)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get worker PTBs for a specific worker capability\n * @param tx - The transaction to add the move call to\n * @param workerCap - Worker capability address or transaction argument\n * @returns Transaction result containing the worker PTBs\n */\n getWorkerPtbsMoveCall(tx: Transaction, workerCap: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_worker_ptbs'),\n arguments: [tx.object(this.objects.uln302PtbBuilder), asAddress(tx, workerCap)],\n })\n }\n\n // === Call ID Functions ===\n\n /**\n * Get the call ID for executor get fee operations\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the executor get fee call ID\n */\n executorGetFeeCallIdMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('executor_get_fee_call_id'),\n arguments: [],\n })\n }\n\n /**\n * Get the executor get fee call ID as a hex string\n * @returns Promise<string> - The executor get fee call ID in hex format\n */\n async executorGetFeeCallId(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.executorGetFeeCallIdMoveCall(tx)\n },\n (result) => Buffer.from(bcs.vector(bcs.u8()).parse(result[0].value)).toString('hex')\n )\n }\n\n /**\n * Get the call ID for DVN get fee multi-call operations\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the DVN get fee multi-call ID\n */\n dvnGetFeeMultiCallIdMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('dvn_get_fee_multi_call_id'),\n arguments: [],\n })\n }\n\n /**\n * Get the DVN get fee multi-call ID as a hex string\n * @returns Promise<string> - The DVN get fee multi-call ID in hex format\n */\n async dvnGetFeeMultiCallId(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.dvnGetFeeMultiCallIdMoveCall(tx)\n },\n (result) => Buffer.from(bcs.vector(bcs.u8()).parse(result[0].value)).toString('hex')\n )\n }\n\n /**\n * Get the call ID for executor assign job operations\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the executor assign job call ID\n */\n executorAssignJobCallIdMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('executor_assign_job_call_id'),\n arguments: [],\n })\n }\n\n /**\n * Get the executor assign job call ID as a hex string\n * @returns Promise<string> - The executor assign job call ID in hex format\n */\n async executorAssignJobCallId(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.executorAssignJobCallIdMoveCall(tx)\n },\n (result) => Buffer.from(bcs.vector(bcs.u8()).parse(result[0].value)).toString('hex')\n )\n }\n\n /**\n * Get the call ID for DVN assign job multi-call operations\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the DVN assign job multi-call ID\n */\n dvnAssignJobMultiCallIdMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('dvn_assign_job_multi_call_id'),\n arguments: [],\n })\n }\n\n /**\n * Get the DVN assign job multi-call ID as a hex string\n * @returns Promise<string> - The DVN assign job multi-call ID in hex format\n */\n async dvnAssignJobMultiCallId(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.dvnAssignJobMultiCallIdMoveCall(tx)\n },\n (result) => Buffer.from(bcs.vector(bcs.u8()).parse(result[0].value)).toString('hex')\n )\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { ObjectOptions } from '../../types'\n\nconst MODULE_NAME = 'blocked_msglib_ptb_builder'\n\nexport class BlockedMessageLibPtbBuilder {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === View Functions ===\n\n /**\n * Creates a transaction to get PTB builder info\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing PTB builder information\n */\n getPtbBuilderInfoMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_ptb_builder_info'),\n arguments: [tx.object(this.objects.blockedMessageLibPtbBuilder), tx.object(this.objects.blockedMessageLib)],\n })\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { EndpointId } from '@layerzerolabs/lz-definitions'\n\nimport { ModuleManager } from '../../module-manager'\nimport { MessagingFee, ObjectOptions } from '../../types'\nimport {\n IPTBValidator,\n asAddress,\n asBool,\n asBytes,\n asBytes32,\n asU32,\n asU64,\n asU8,\n executeSimulate,\n isTransactionArgument,\n} from '../../utils'\n\nconst MODULE_NAME = 'counter'\n\nexport const CounterErrorCode = {\n // Counter related errors (matching counter.move)\n Counter_EInvalidMsgType: 0,\n Counter_EInvalidValue: 1,\n Counter_EInvalidNonce: 2,\n Counter_EOnlyEndpoint: 3,\n Counter_ESelfComposeOnly: 4,\n Counter_EInvalidOApp: 5,\n\n // OptionsBuilder related errors (matching options_builder.move)\n OptionsBuilder_EInvalidSize: 1,\n} as const\n\nexport class Counter {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // === Set Functions ===\n\n /**\n * Initialize counter with LayerZero receive and compose information\n * @param tx - The transaction to add the move call to\n * @param lzReceiveInfo - LayerZero receive information transaction argument\n * @param lzComposeInfo - LayerZero compose information transaction argument\n */\n initCounterMoveCall(tx: Transaction, lzReceiveInfo: TransactionArgument, lzComposeInfo: TransactionArgument): void {\n tx.moveCall({\n target: this.#target('init_counter'),\n arguments: [\n tx.object(this.objects.counter),\n tx.object(this.objects.counterOapp),\n tx.object(this.objects.counterAdminCap),\n tx.object(this.objects.endpointV2),\n lzReceiveInfo,\n lzComposeInfo,\n ],\n })\n }\n\n /**\n * Quote messaging fees for sending counter increment\n * @param dstEid - Destination endpoint ID\n * @param msgType - Message type (SEND or SEND_AND_CALL)\n * @param options - Execution options as bytes\n * @param payInZero - Whether to pay in ZRO tokens\n * @returns Promise<MessagingFee> - The calculated messaging fees\n */\n async quote(\n dstEid: EndpointId | TransactionArgument,\n msgType: number | TransactionArgument,\n options: Uint8Array | TransactionArgument,\n payInZero: boolean | TransactionArgument,\n validators?: IPTBValidator[]\n ): Promise<MessagingFee> {\n const tx = new Transaction()\n const quoteCall = tx.moveCall({\n target: this.#target('quote'),\n arguments: [\n tx.object(this.objects.counter),\n tx.object(this.objects.counterOapp),\n asU32(tx, dstEid),\n asU8(tx, msgType),\n asBytes(tx, options),\n asBool(tx, payInZero),\n ],\n })\n return this.moduleManager.getEndpoint().quote(tx, quoteCall, undefined, validators)\n }\n\n /**\n * Increment counter on destination chain\n * @param tx - The transaction to add the move call to\n * @param sender - Sender address for ZRO token operations\n * @param dstEid - Destination endpoint ID\n * @param msgType - Message type (SEND or SEND_AND_CALL)\n * @param options - Execution options as bytes\n * @param nativeFee - Native token fee amount\n * @param zroFee - ZRO token fee amount\n * @param refundAddress - Address for fee refunds\n */\n async incrementMoveCall(\n tx: Transaction,\n sender: string,\n dstEid: EndpointId | TransactionArgument,\n msgType: number | TransactionArgument,\n options: Uint8Array | TransactionArgument,\n nativeFee: bigint | TransactionArgument,\n zroFee: bigint | TransactionArgument,\n refundAddress: string | TransactionArgument,\n validators?: IPTBValidator[]\n ): Promise<void> {\n const [nativeToken] = tx.splitCoins(tx.gas, [asU64(tx, nativeFee)])\n const zroToken = isTransactionArgument(zroFee)\n ? zroFee\n : await this.moduleManager.getZro().splitOptionZroTokenMoveCall(tx, sender, zroFee)\n const incrementCall = tx.moveCall({\n target: this.#target('increment'),\n arguments: [\n tx.object(this.objects.counter),\n tx.object(this.objects.counterOapp),\n asU32(tx, dstEid),\n asU8(tx, msgType),\n asBytes(tx, options),\n nativeToken,\n zroToken,\n asAddress(tx, refundAddress),\n ],\n })\n await this.moduleManager.getEndpoint().populateSendTransaction(tx, incrementCall, sender, validators)\n }\n\n /**\n * Set composer information for counter\n * @param tx - The transaction to add the move call to\n * @param composerInfo - Composer information including lz_compose execution information as bytes\n */\n setComposerInfoMoveCall(tx: Transaction, composerInfo: Uint8Array | TransactionArgument): void {\n tx.moveCall({\n target: this.#target('set_composer_info'),\n arguments: [\n tx.object(this.objects.counter),\n tx.object(this.objects.counterOapp),\n tx.object(this.objects.counterAdminCap),\n tx.object(this.objects.endpointV2),\n asBytes(tx, composerInfo),\n ],\n })\n }\n\n // === View Functions ===\n\n /**\n * Get counter EID\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the counter EID\n */\n getEidMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('eid'),\n arguments: [tx.object(this.objects.counter)],\n })\n }\n\n /**\n * Get counter EID\n * @returns Promise<number> - The counter EID\n */\n async getEid(): Promise<number> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getEidMoveCall(tx)\n },\n (result) => bcs.U32.parse(result[0].value)\n )\n }\n\n /**\n * Get call capability address for counter\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the call capability address\n */\n getCallCapAddressMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('call_cap_address'),\n arguments: [tx.object(this.objects.counter)],\n })\n }\n\n /**\n * Get call capability address for counter\n * @returns Promise<string> - The call capability address\n */\n async getCallCapAddress(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getCallCapAddressMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get composer address for counter\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the composer address\n */\n getComposerAddressMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('composer_address'),\n arguments: [tx.object(this.objects.counter)],\n })\n }\n\n /**\n * Get composer address for counter\n * @returns Promise<string> - The composer address\n */\n async getComposerAddress(): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getComposerAddressMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get current counter value\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the counter value\n */\n getCountMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_count'),\n arguments: [tx.object(this.objects.counter)],\n })\n }\n\n /**\n * Get current counter value\n * @returns Promise<number> - The current counter value\n */\n async getCount(): Promise<number> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getCountMoveCall(tx)\n },\n (result) => Number(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Get composed counter value\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the composed counter value\n */\n getComposedCountMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_composed_count'),\n arguments: [tx.object(this.objects.counter)],\n })\n }\n\n /**\n * Get composed counter value\n * @returns Promise<number> - The composed counter value\n */\n async getComposedCount(): Promise<number> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getComposedCountMoveCall(tx)\n },\n (result) => Number(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Get outbound counter value for a destination\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID\n * @returns Transaction result containing the outbound counter value\n */\n getOutboundCountMoveCall(tx: Transaction, dstEid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_outbound_count'),\n arguments: [tx.object(this.objects.counter), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get outbound counter value for a destination\n * @param dstEid - Destination endpoint ID\n * @returns Promise<number> - The outbound counter value\n */\n async getOutboundCount(dstEid: number): Promise<number> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getOutboundCountMoveCall(tx, dstEid)\n },\n (result) => Number(bcs.U64.parse(result[0].value))\n )\n }\n\n /**\n * Get inbound counter value from a source\n * @param tx - The transaction to add the move call to\n * @param srcEid - Source endpoint ID\n * @returns Transaction result containing the inbound counter value\n */\n getInboundCountMoveCall(tx: Transaction, srcEid: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_inbound_count'),\n arguments: [tx.object(this.objects.counter), asU32(tx, srcEid)],\n })\n }\n\n /**\n * Get inbound counter value from a source\n * @param srcEid - Source endpoint ID\n * @returns Promise<number> - The inbound counter value\n */\n async getInboundCount(srcEid: number): Promise<number> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getInboundCountMoveCall(tx, srcEid)\n },\n (result) => Number(bcs.U64.parse(result[0].value))\n )\n }\n\n nextNonceMoveCall(\n tx: Transaction,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('next_nonce'),\n arguments: [\n tx.object(this.objects.counter),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n ],\n })\n }\n\n async nextNonce(srcEid: number, sender: Uint8Array): Promise<number> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.nextNonceMoveCall(tx, srcEid, sender)\n },\n (result) => Number(bcs.U64.parse(result[0].value))\n )\n }\n\n getMaxReceivedNonceMoveCall(\n tx: Transaction,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('get_max_received_nonce'),\n arguments: [\n tx.object(this.objects.counter),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n ],\n })\n }\n\n async getMaxReceivedNonce(srcEid: number, sender: Uint8Array): Promise<number> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getMaxReceivedNonceMoveCall(tx, srcEid, sender)\n },\n (result) => Number(bcs.U64.parse(result[0].value))\n )\n }\n\n isOrderedNonceMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_ordered_nonce'),\n arguments: [tx.object(this.objects.counter)],\n })\n }\n\n async isOrderedNonce(): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isOrderedNonceMoveCall(tx)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n // === PTB Builder Functions ===\n\n lzReceiveInfoMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('lz_receive_info', 'counter_ptb_builder'),\n arguments: [\n tx.object(this.objects.counter),\n tx.object(this.objects.counterOapp),\n tx.object(this.objects.endpointV2),\n tx.object(this.objects.endpointPtbBuilder),\n ],\n })\n }\n\n lzComposeInfoMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('lz_compose_info', 'counter_ptb_builder'),\n arguments: [\n tx.object(this.objects.counter),\n tx.object(this.objects.counterOapp),\n tx.object(this.objects.endpointV2),\n tx.object(this.objects.endpointPtbBuilder),\n ],\n })\n }\n\n // === Private Functions ===\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to 'counter')\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { OAppInfoV1Bcs } from '../../bcs'\nimport { ModuleManager } from '../../module-manager'\nimport { ObjectOptions } from '../../types'\nimport { OAppInfoV1 } from '../../types/oapp'\nimport {\n asAddress,\n asBytes,\n asBytes32,\n asObject,\n asU16,\n asU32,\n asU64,\n executeSimulate,\n isTransactionArgument,\n} from '../../utils'\n\nconst MODULE_NAME = 'oapp'\n\nexport const OAppErrorCode = {\n // OApp related errors (matching oapp.move)\n OApp_EInvalidAdminCap: 1,\n OApp_EInvalidOAppCap: 2,\n OApp_EInvalidRefundAddress: 3,\n OApp_EInvalidSendingCall: 4,\n OApp_EOnlyEndpoint: 5,\n OApp_EOnlyPeer: 6,\n OApp_ESendingInProgress: 7,\n\n // OAppPeer related errors (matching oapp_peer.move)\n OAppPeer_EPeerNotFound: 0,\n OAppPeer_EInvalidPeer: 1,\n\n // EnforcedOptions related errors (matching enforced_options.move)\n EnforcedOptions_EEnforcedOptionsNotFound: 1,\n EnforcedOptions_EInvalidOptionsLength: 2,\n EnforcedOptions_EInvalidOptionsType: 3,\n\n // OAppInfoV1 related errors (matching oapp_info_v1.move)\n OAppInfoV1_EInvalidData: 1,\n OAppInfoV1_EInvalidVersion: 2,\n} as const\n\nexport class OApp {\n public packageId: string\n public oappCallCapId: string\n public readonly client: IotaClient\n public oappInfo: OAppInfoV1 | null = null\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n oappCallCapId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.oappCallCapId = oappCallCapId\n this.client = client\n this.objects = objects\n }\n\n // === Set Functions ===\n\n /**\n * Set enforced options for OApp messaging\n * @param tx - The transaction to add the move call to\n * @param eid - Endpoint ID or transaction argument\n * @param msgType - Message type or transaction argument\n * @param options - Enforced options as bytes or transaction argument\n */\n async setEnforcedOptionsMoveCall(\n tx: Transaction,\n eid: number | TransactionArgument,\n msgType: number | TransactionArgument,\n options: Uint8Array | TransactionArgument\n ): Promise<void> {\n const oappInfo = await this.#oappInfo()\n const adminCap = await this.getAdminCap(oappInfo.oapp_object)\n tx.moveCall({\n target: this.#target('set_enforced_options'),\n arguments: [\n asObject(tx, oappInfo.oapp_object),\n asObject(tx, adminCap),\n asU32(tx, eid),\n asU16(tx, msgType),\n asBytes(tx, options),\n ],\n })\n }\n\n /**\n * Set peer OApp on another chain\n * @param tx - The transaction to add the move call to\n * @param eid - Peer endpoint ID or transaction argument\n * @param peer - Peer OApp address as bytes or transaction argument\n */\n async setPeerMoveCall(\n tx: Transaction,\n eid: number | TransactionArgument,\n peer: Uint8Array | TransactionArgument\n ): Promise<void> {\n const oappInfo = await this.#oappInfo()\n const adminCap = await this.getAdminCap(oappInfo.oapp_object)\n const messagingChannel = await this.moduleManager.getEndpoint().getMessagingChannel(this.oappCallCapId)\n tx.moveCall({\n target: this.#target('set_peer'),\n arguments: [\n asObject(tx, oappInfo.oapp_object),\n asObject(tx, adminCap),\n asObject(tx, this.objects.endpointV2),\n asObject(tx, messagingChannel),\n asU32(tx, eid),\n asBytes32(tx, peer, this.moduleManager.getUtils()),\n ],\n })\n }\n\n // === View Functions ===\n\n /**\n * Get admin capability address for OApp\n * @param tx - The transaction to add the move call to\n * @param oapp - The OApp object ID or transaction argument\n * @returns Transaction result containing the admin capability address\n */\n getAdminCapMoveCall(tx: Transaction, oapp: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('admin_cap'),\n arguments: [asObject(tx, oapp)],\n })\n }\n\n /**\n * Get admin capability address for OApp\n * @param oapp - The OApp object ID\n * @returns Promise<string> - The admin capability address\n */\n async getAdminCap(oapp: string): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getAdminCapMoveCall(tx, oapp)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Get OApp CallCap identifier\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the OApp CallCap identifier\n */\n async getOAppCapIdMoveCall(tx: Transaction): Promise<TransactionResult> {\n const oappInfo = await this.#oappInfo()\n return tx.moveCall({\n target: this.#target('oapp_cap_id'),\n arguments: [asObject(tx, oappInfo.oapp_object)],\n })\n }\n\n /**\n * Get OApp CallCap identifier\n * @returns Promise<string> - The OApp CallCap identifier\n */\n async getOAppCapId(): Promise<string> {\n return executeSimulate(\n this.client,\n async (tx) => {\n await this.getOAppCapIdMoveCall(tx)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Combine enforced options with extra options for message execution\n * @param tx - The transaction to add the move call to\n * @param eid - Destination endpoint ID or transaction argument\n * @param msgType - Message type or transaction argument\n * @param extraOptions - Extra options to combine with enforced options or transaction argument\n * @returns Transaction result containing combined options\n */\n async combineOptionsMoveCall(\n tx: Transaction,\n eid: number | TransactionArgument,\n msgType: number | TransactionArgument,\n extraOptions: Uint8Array | TransactionArgument\n ): Promise<TransactionResult> {\n const oappInfo = await this.#oappInfo()\n return tx.moveCall({\n target: this.#target('combine_options'),\n arguments: [\n asObject(tx, oappInfo.oapp_object),\n asU32(tx, eid),\n asU16(tx, msgType),\n asBytes(tx, extraOptions),\n ],\n })\n }\n\n /**\n * Combine enforced options with extra options for message execution\n * @param eid - Destination endpoint ID\n * @param msgType - Message type\n * @param extraOptions - Extra options to combine with enforced options\n * @returns Promise<Uint8Array> - Combined options as bytes\n */\n async combineOptions(eid: number, msgType: number, extraOptions: Uint8Array): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n async (tx) => {\n await this.combineOptionsMoveCall(tx, eid, msgType, extraOptions)\n },\n (result) => new Uint8Array(bcs.vector(bcs.u8()).parse(result[0].value))\n )\n }\n\n /**\n * Get enforced options for a specific destination and message type\n * @param tx - The transaction to add the move call to\n * @param eid - Destination endpoint ID or transaction argument\n * @param msgType - Message type or transaction argument\n * @returns Transaction result containing enforced options\n */\n async getEnforcedOptionsMoveCall(\n tx: Transaction,\n eid: number | TransactionArgument,\n msgType: number | TransactionArgument\n ): Promise<TransactionResult> {\n const oappInfo = await this.#oappInfo()\n return tx.moveCall({\n target: this.#target('get_enforced_options'),\n arguments: [asObject(tx, oappInfo.oapp_object), asU32(tx, eid), asU16(tx, msgType)],\n })\n }\n\n /**\n * Get enforced options for a specific destination and message type\n * @param eid - Destination endpoint ID\n * @param msgType - Message type\n * @returns Promise<Uint8Array> - Enforced options as bytes\n */\n async getEnforcedOptions(eid: number, msgType: number): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n async (tx) => {\n await this.getEnforcedOptionsMoveCall(tx, eid, msgType)\n },\n (result) => new Uint8Array(bcs.vector(bcs.u8()).parse(result[0].value))\n )\n }\n\n /**\n * Check if a peer is configured for a specific destination chain\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID or transaction argument\n * @returns Transaction result containing boolean result\n */\n async hasPeerMoveCall(tx: Transaction, dstEid: number | TransactionArgument): Promise<TransactionResult> {\n const oappInfo = await this.#oappInfo()\n return tx.moveCall({\n target: this.#target('has_peer'),\n arguments: [asObject(tx, oappInfo.oapp_object), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Check if a peer is configured for a specific destination chain\n * @param dstEid - Destination endpoint ID\n * @returns Promise<boolean> - True if peer is configured, false otherwise\n */\n async hasPeer(dstEid: number): Promise<boolean> {\n return executeSimulate(\n this.client,\n async (tx) => {\n await this.hasPeerMoveCall(tx, dstEid)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get the configured peer address for a specific destination chain\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID or transaction argument\n * @returns Transaction result containing peer address\n */\n async getPeerMoveCall(tx: Transaction, dstEid: number | TransactionArgument): Promise<TransactionResult> {\n const oappInfo = await this.#oappInfo()\n return tx.moveCall({\n target: this.#target('get_peer'),\n arguments: [asObject(tx, oappInfo.oapp_object), asU32(tx, dstEid)],\n })\n }\n\n /**\n * Get the configured peer address for a specific destination chain\n * @param dstEid - Destination endpoint ID\n * @returns Promise<Uint8Array> - Peer address as bytes32\n */\n async getPeer(dstEid: number): Promise<Uint8Array> {\n return executeSimulate(\n this.client,\n async (tx) => {\n await this.getPeerMoveCall(tx, dstEid)\n },\n (result) => {\n return new Uint8Array(bcs.vector(bcs.u8()).parse(result[0].value))\n }\n )\n }\n\n /**\n * Get OApp information V1 structure\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the OApp information V1\n */\n getOAppInfoV1MoveCall(tx: Transaction): TransactionResult {\n const endpoint = this.moduleManager.getEndpoint()\n const oappInfoRaw = endpoint.getOappInfoMoveCall(tx, this.oappCallCapId) // the new OAppInfo used to be named as lz_receive_info\n return tx.moveCall({\n target: this.#target('decode', 'oapp_info_v1'),\n arguments: [oappInfoRaw],\n })\n }\n\n /**\n * Get OApp information V1 structure\n * @returns Promise<OAppInfoV1> - The OApp information V1\n */\n async getOAppInfoV1(): Promise<OAppInfoV1> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.getOAppInfoV1MoveCall(tx)\n },\n (result) => {\n return OAppInfoV1Bcs.parse(result[0].value)\n }\n )\n }\n\n getOAppInfoV1ExtraInfoMoveCall(tx: Transaction, oappInfo: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('extra_info', 'oapp_info_v1'),\n arguments: [oappInfo],\n })\n }\n\n // === Endpoint Call Functions ===\n\n /**\n * Register OApp with the endpoint\n * @param tx - The transaction to add the move call to\n * @param oappObjectId - The OApp object ID\n * @param oappInfo - OApp information as bytes (optional)\n * @returns Transaction result containing the messaging channel address\n */\n async registerOAppMoveCall(\n tx: Transaction,\n oappObjectId: string,\n oappInfo?: Uint8Array | TransactionArgument\n ): Promise<TransactionResult> {\n let oappInfoArg: TransactionArgument\n if (isTransactionArgument(oappInfo)) {\n oappInfoArg = oappInfo\n } else if (oappInfo) {\n // For Some(vector<u8>), convert Uint8Array to number[] and wrap in Option\n oappInfoArg = tx.pure.option('vector<u8>', Array.from(oappInfo))\n } else {\n // For None\n oappInfoArg = tx.pure.option('vector<u8>', null)\n }\n const adminCap = await this.getAdminCap(oappObjectId)\n return tx.moveCall({\n target: this.#target('register_oapp', 'endpoint_calls'),\n arguments: [\n asObject(tx, oappObjectId),\n asObject(tx, adminCap),\n asObject(tx, this.objects.endpointV2),\n oappInfoArg,\n ],\n })\n }\n\n /**\n * Set delegate for OApp\n * @param tx - The transaction to add the move call to\n * @param newDelegate - New delegate address\n */\n async setDelegateMoveCall(tx: Transaction, newDelegate: string | TransactionArgument): Promise<void> {\n const oappInfo = await this.#oappInfo()\n const adminCap = await this.getAdminCap(oappInfo.oapp_object)\n tx.moveCall({\n target: this.#target('set_delegate', 'endpoint_calls'),\n arguments: [\n asObject(tx, oappInfo.oapp_object),\n asObject(tx, adminCap),\n asObject(tx, this.objects.endpointV2),\n asAddress(tx, newDelegate),\n ],\n })\n }\n\n /**\n * Set OApp information in the endpoint\n * @param tx - The transaction to add the move call to\n * @param oappInfo - OApp information as bytes\n * @param oappObjectId - Optional OApp object ID (uses configured oapp if not provided)\n */\n async setOAppInfoMoveCall(\n tx: Transaction,\n oappInfo: Uint8Array | TransactionArgument,\n oappObjectId?: string\n ): Promise<void> {\n if (oappObjectId === undefined) {\n const oappInfoObj = await this.#oappInfo()\n oappObjectId = oappInfoObj.oapp_object\n }\n const adminCap = await this.getAdminCap(oappObjectId)\n tx.moveCall({\n target: this.#target('set_oapp_info', 'endpoint_calls'),\n arguments: [\n asObject(tx, oappObjectId),\n asObject(tx, adminCap),\n asObject(tx, this.objects.endpointV2),\n asBytes(tx, oappInfo),\n ],\n })\n }\n\n /**\n * Initialize channel with remote OApp\n * @param tx - The transaction to add the move call to\n * @param remoteEid - Remote endpoint ID\n * @param remoteOApp - Remote OApp address as bytes32\n */\n async initChannelMoveCall(\n tx: Transaction,\n remoteEid: number | TransactionArgument,\n remoteOApp: Uint8Array | TransactionArgument\n ): Promise<void> {\n const oappInfo = await this.#oappInfo()\n const adminCap = await this.getAdminCap(oappInfo.oapp_object)\n const messagingChannel = await this.moduleManager.getEndpoint().getMessagingChannel(this.oappCallCapId)\n tx.moveCall({\n target: this.#target('init_channel', 'endpoint_calls'),\n arguments: [\n asObject(tx, oappInfo.oapp_object),\n asObject(tx, adminCap),\n asObject(tx, this.objects.endpointV2),\n asObject(tx, messagingChannel),\n asU32(tx, remoteEid),\n asBytes32(tx, remoteOApp, this.moduleManager.getUtils()),\n ],\n })\n }\n\n /**\n * Clear a message from the messaging channel\n * @param tx - The transaction to add the move call to\n * @param srcEid - Source endpoint ID\n * @param sender - Sender address as bytes32\n * @param nonce - Message nonce\n * @param guid - Message GUID as bytes32\n * @param message - Message payload\n */\n async clearMoveCall(\n tx: Transaction,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: number | bigint | TransactionArgument,\n guid: Uint8Array | TransactionArgument,\n message: Uint8Array | TransactionArgument\n ): Promise<void> {\n const oappInfo = await this.#oappInfo()\n const adminCap = await this.getAdminCap(oappInfo.oapp_object)\n const messagingChannel = await this.moduleManager.getEndpoint().getMessagingChannel(this.oappCallCapId)\n tx.moveCall({\n target: this.#target('clear', 'endpoint_calls'),\n arguments: [\n asObject(tx, oappInfo.oapp_object),\n asObject(tx, adminCap),\n asObject(tx, this.objects.endpointV2),\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n asBytes32(tx, guid, this.moduleManager.getUtils()),\n asBytes(tx, message),\n ],\n })\n }\n\n /**\n * Skip a message in the messaging channel\n * @param tx - The transaction to add the move call to\n * @param srcEid - Source endpoint ID\n * @param sender - Sender address as bytes32\n * @param nonce - Message nonce\n */\n async skipMoveCall(\n tx: Transaction,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: number | bigint | TransactionArgument\n ): Promise<void> {\n const oappInfo = await this.#oappInfo()\n const adminCap = await this.getAdminCap(oappInfo.oapp_object)\n const messagingChannel = await this.moduleManager.getEndpoint().getMessagingChannel(this.oappCallCapId)\n tx.moveCall({\n target: this.#target('skip', 'endpoint_calls'),\n arguments: [\n asObject(tx, oappInfo.oapp_object),\n asObject(tx, adminCap),\n asObject(tx, this.objects.endpointV2),\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n ],\n })\n }\n\n /**\n * Nilify a message in the messaging channel\n * @param tx - The transaction to add the move call to\n * @param srcEid - Source endpoint ID\n * @param sender - Sender address as bytes32\n * @param nonce - Message nonce\n * @param payloadHash - Payload hash as bytes32\n */\n async nilifyMoveCall(\n tx: Transaction,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: number | bigint | TransactionArgument,\n payloadHash: Uint8Array | TransactionArgument\n ): Promise<void> {\n const oappInfo = await this.#oappInfo()\n const adminCap = await this.getAdminCap(oappInfo.oapp_object)\n const messagingChannel = await this.moduleManager.getEndpoint().getMessagingChannel(this.oappCallCapId)\n tx.moveCall({\n target: this.#target('nilify', 'endpoint_calls'),\n arguments: [\n asObject(tx, oappInfo.oapp_object),\n asObject(tx, adminCap),\n asObject(tx, this.objects.endpointV2),\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n asBytes32(tx, payloadHash, this.moduleManager.getUtils()),\n ],\n })\n }\n\n /**\n * Burn a message in the messaging channel\n * @param tx - The transaction to add the move call to\n * @param srcEid - Source endpoint ID\n * @param sender - Sender address as bytes32\n * @param nonce - Message nonce\n * @param payloadHash - Payload hash as bytes32\n */\n async burnMoveCall(\n tx: Transaction,\n srcEid: number | TransactionArgument,\n sender: Uint8Array | TransactionArgument,\n nonce: number | bigint | TransactionArgument,\n payloadHash: Uint8Array | TransactionArgument\n ): Promise<void> {\n const oappInfo = await this.#oappInfo()\n const adminCap = await this.getAdminCap(oappInfo.oapp_object)\n const messagingChannel = await this.moduleManager.getEndpoint().getMessagingChannel(this.oappCallCapId)\n tx.moveCall({\n target: this.#target('burn', 'endpoint_calls'),\n arguments: [\n asObject(tx, oappInfo.oapp_object),\n asObject(tx, adminCap),\n asObject(tx, this.objects.endpointV2),\n asObject(tx, messagingChannel),\n asU32(tx, srcEid),\n asBytes32(tx, sender, this.moduleManager.getUtils()),\n asU64(tx, nonce),\n asBytes32(tx, payloadHash, this.moduleManager.getUtils()),\n ],\n })\n }\n\n /**\n * Set send library for a destination chain\n * @param tx - The transaction to add the move call to\n * @param dstEid - Destination endpoint ID\n * @param sendLibrary - Send library address\n */\n async setSendLibraryMoveCall(\n tx: Transaction,\n dstEid: number | TransactionArgument,\n sendLibrary: string | TransactionArgument\n ): Promise<void> {\n const oappInfo = await this.#oappInfo()\n const adminCap = await this.getAdminCap(oappInfo.oapp_object)\n tx.moveCall({\n target: this.#target('set_send_library', 'endpoint_calls'),\n arguments: [\n asObject(tx, oappInfo.oapp_object),\n asObject(tx, adminCap),\n asObject(tx, this.objects.endpointV2),\n asU32(tx, dstEid),\n asAddress(tx, sendLibrary),\n ],\n })\n }\n\n /**\n * Set receive library for a source chain\n * @param tx - The transaction to add the move call to\n * @param srcEid - Source endpoint ID\n * @param receiveLibrary - Receive library address\n * @param gracePeriod - Grace period in seconds\n */\n async setReceiveLibraryMoveCall(\n tx: Transaction,\n srcEid: number | TransactionArgument,\n receiveLibrary: string | TransactionArgument,\n gracePeriod: number | bigint | TransactionArgument\n ): Promise<void> {\n const oappInfo = await this.#oappInfo()\n const adminCap = await this.getAdminCap(oappInfo.oapp_object)\n tx.moveCall({\n target: this.#target('set_receive_library', 'endpoint_calls'),\n arguments: [\n asObject(tx, oappInfo.oapp_object),\n asObject(tx, adminCap),\n asObject(tx, this.objects.endpointV2),\n asU32(tx, srcEid),\n asAddress(tx, receiveLibrary),\n asU64(tx, gracePeriod),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Set receive library timeout for a source chain\n * @param tx - The transaction to add the move call to\n * @param srcEid - Source endpoint ID\n * @param receiveLibrary - Receive library address\n * @param expiry - Expiry timestamp in seconds\n */\n async setReceiveLibraryTimeoutMoveCall(\n tx: Transaction,\n srcEid: number | TransactionArgument,\n receiveLibrary: string | TransactionArgument,\n expiry: number | bigint | TransactionArgument\n ): Promise<void> {\n const oappInfo = await this.#oappInfo()\n const adminCap = await this.getAdminCap(oappInfo.oapp_object)\n tx.moveCall({\n target: this.#target('set_receive_library_timeout', 'endpoint_calls'),\n arguments: [\n asObject(tx, oappInfo.oapp_object),\n asObject(tx, adminCap),\n asObject(tx, this.objects.endpointV2),\n asU32(tx, srcEid),\n asAddress(tx, receiveLibrary),\n asU64(tx, expiry),\n tx.object.clock(),\n ],\n })\n }\n\n /**\n * Set configuration for a message library\n * @param tx - The transaction to add the move call to\n * @param lib - Library address\n * @param eid - Endpoint ID\n * @param configType - Configuration type\n * @param config - Configuration data as bytes\n * @returns Transaction result containing Call<MessageLibSetConfigParam, Void>\n */\n async setConfigMoveCall(\n tx: Transaction,\n lib: string | TransactionArgument,\n eid: number | TransactionArgument,\n configType: number | TransactionArgument,\n config: Uint8Array | TransactionArgument\n ): Promise<TransactionResult> {\n const oappInfo = await this.#oappInfo()\n const adminCap = await this.getAdminCap(oappInfo.oapp_object)\n return tx.moveCall({\n target: this.#target('set_config', 'endpoint_calls'),\n typeArguments: [],\n arguments: [\n asObject(tx, oappInfo.oapp_object),\n asObject(tx, adminCap),\n asObject(tx, this.objects.endpointV2),\n asAddress(tx, lib),\n asU32(tx, eid),\n asU32(tx, configType),\n asBytes(tx, config),\n ],\n })\n }\n\n /**\n * Refresh the cached OApp information by fetching the latest data\n * @returns Promise<void> - Completes when the OApp info is refreshed\n */\n async refreshOAppInfo(): Promise<void> {\n this.oappInfo = await this.getOAppInfoV1()\n }\n\n // === Private Functions ===\n\n /**\n * Get OApp info, throwing if not set\n * @returns The OApp info\n * @throws Error if OApp info is not set\n * @private\n */\n async #oappInfo(): Promise<OAppInfoV1> {\n if (!this.oappInfo) {\n this.oappInfo = await this.getOAppInfoV1()\n }\n return this.oappInfo\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\n\nimport { ModuleManager } from '../module-manager'\nimport {\n EndpointExecutionState,\n EndpointExecutionStateType,\n ExecutableParams,\n InitializableParams,\n ObjectOptions,\n UlnVerifiableParams,\n UlnVerificationState,\n UlnVerificationStateType,\n VerifiableParams,\n} from '../types'\nimport { asBytes, asObject, asU32, asU64, executeSimulate } from '../utils'\n\nconst MODULE_NAME_ENDPOINT_VIEWS = 'endpoint_views'\nconst MODULE_NAME_ULN_302_VIEWS = 'uln_302_views'\n\n/**\n * LayerZero Views SDK\n *\n * Provides view functions for checking the state of LayerZero messages\n * and their executability/verification status without modifying state.\n */\nexport class LayerZeroViews {\n public packageId: string\n public readonly client: IotaClient\n private readonly objects: ObjectOptions\n\n constructor(\n packageId: string,\n client: IotaClient,\n objects: ObjectOptions,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.objects = objects\n }\n\n // ======== Endpoint View Functions ========\n\n /**\n * Checks if a message path is initializable (channel exists).\n *\n * @param params - Parameters containing messaging channel, source EID, and sender\n * @returns Promise<boolean> - True if the path is initializable\n */\n async initializable(params: InitializableParams): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n tx.moveCall({\n target: this.#endpointViewsTarget('initializable'),\n arguments: [\n asObject(tx, params.messagingChannel),\n asU32(tx, params.srcEid),\n asBytes(tx, params.sender),\n ],\n })\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Checks if a message is verifiable by the endpoint.\n *\n * @param params - Parameters containing messaging channel, source EID, sender, and nonce\n * @returns Promise<boolean> - True if the message is verifiable\n */\n async verifiable(params: VerifiableParams): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n tx.moveCall({\n target: this.#endpointViewsTarget('verifiable'),\n arguments: [\n asObject(tx, params.messagingChannel),\n asU32(tx, params.srcEid),\n asBytes(tx, params.sender),\n asU64(tx, params.nonce),\n ],\n })\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Determines the execution state of a message.\n *\n * @param params - Parameters containing messaging channel, source EID, sender, and nonce\n * @returns Promise<EndpointExecutionStateType> - The current execution state\n */\n async executable(params: ExecutableParams): Promise<EndpointExecutionStateType> {\n return executeSimulate(\n this.client,\n (tx) => {\n tx.moveCall({\n target: this.#endpointViewsTarget('executable'),\n arguments: [\n asObject(tx, params.messagingChannel),\n asU32(tx, params.srcEid),\n asBytes(tx, params.sender),\n asU64(tx, params.nonce),\n ],\n })\n },\n (result) => bcs.U8.parse(result[0].value) as EndpointExecutionStateType\n )\n }\n\n // ======== ULN 302 View Functions ========\n\n /**\n * Checks the verification state of a message through the ULN 302.\n *\n * @param params - Parameters containing ULN, verification, messaging channel, packet header, and payload hash\n * @returns Promise<UlnVerificationStateType> - The current verification state\n */\n async ulnVerifiable(params: UlnVerifiableParams): Promise<UlnVerificationStateType> {\n return executeSimulate(\n this.client,\n (tx) => {\n tx.moveCall({\n target: this.#uln302ViewsTarget('verifiable'),\n arguments: [\n tx.object(this.objects.uln302),\n asObject(tx, params.verification),\n tx.object(this.objects.endpointV2),\n asObject(tx, params.messagingChannel),\n asBytes(tx, params.packetHeaderBytes),\n asBytes(tx, params.payloadHash),\n ],\n })\n },\n (result) => bcs.U8.parse(result[0].value) as UlnVerificationStateType\n )\n }\n\n // ======== Utility Functions ========\n\n /**\n * Gets the human-readable name for an endpoint execution state\n * @param state - The endpoint execution state enum value\n * @returns Human-readable string representation of the execution state\n */\n static getExecutionStateName(state: EndpointExecutionStateType): string {\n switch (state) {\n case EndpointExecutionState.STATE_NOT_EXECUTABLE:\n return 'NOT_EXECUTABLE'\n case EndpointExecutionState.STATE_VERIFIED_BUT_NOT_EXECUTABLE:\n return 'VERIFIED_BUT_NOT_EXECUTABLE'\n case EndpointExecutionState.STATE_EXECUTABLE:\n return 'EXECUTABLE'\n case EndpointExecutionState.STATE_EXECUTED:\n return 'EXECUTED'\n default:\n return 'UNKNOWN'\n }\n }\n\n /**\n * Gets the human-readable name for a ULN verification state\n * @param state - The ULN verification state enum value\n * @returns Human-readable string representation of the verification state\n */\n static getVerificationStateName(state: UlnVerificationStateType): string {\n switch (state) {\n case UlnVerificationState.STATE_VERIFYING:\n return 'VERIFYING'\n case UlnVerificationState.STATE_VERIFIABLE:\n return 'VERIFIABLE'\n case UlnVerificationState.STATE_VERIFIED:\n return 'VERIFIED'\n case UlnVerificationState.STATE_NOT_INITIALIZABLE:\n return 'NOT_INITIALIZABLE'\n default:\n return 'UNKNOWN'\n }\n }\n\n // ======== Private Helper Methods ========\n\n /**\n * Generate the full target path for endpoint view functions\n * @param functionName - The function name to call\n * @returns The full module path for the move call\n */\n #endpointViewsTarget(functionName: string): string {\n return `${this.packageId}::${MODULE_NAME_ENDPOINT_VIEWS}::${functionName}`\n }\n\n /**\n * Generate the full target path for ULN302 view functions\n * @param functionName - The function name to call\n * @returns The full module path for the move call\n */\n #uln302ViewsTarget(functionName: string): string {\n return `${this.packageId}::${MODULE_NAME_ULN_302_VIEWS}::${functionName}`\n }\n}\n","import { bcs } from '@iota/iota-sdk/bcs'\nimport { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { asObject, executeSimulate } from '../utils'\n\nconst DEFAULT_MODULE_NAME = 'call'\n\nexport const CallErrorCode = {\n // Call related errors (matching call.move)\n Call_ECallNotActive: 1,\n Call_ECallNotCompleted: 2,\n Call_ECallNotCreating: 3,\n Call_ECallNotRoot: 4,\n Call_ECallNotWaiting: 5,\n Call_EInvalidChild: 6,\n Call_EInvalidNonce: 7,\n Call_EInvalidParent: 8,\n Call_EParameterNotMutable: 9,\n Call_EUnauthorized: 10,\n\n // CallCap related errors (matching call_cap.move)\n CallCap_EBadWitness: 1,\n\n // MultiCall related errors (matching dynamic-call/multi-call/multi_call.move)\n MultiCall_ENoMoreCalls: 1,\n MultiCall_EUnauthorized: 2,\n} as const\n\nexport class Call {\n public packageId: string\n public readonly client: IotaClient\n\n constructor(packageId: string, client: IotaClient) {\n this.packageId = packageId\n this.client = client\n }\n\n // === Set function ===\n\n /**\n * Create a new CallCap for a user (direct interaction)\n * Creates a user-based CallCap that uses its own UID as the identifier\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the new individual CallCap\n */\n newIndividualCapMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('new_individual_cap', 'call_cap'),\n arguments: [],\n })\n }\n\n /**\n * Create a void result for calls with no meaningful return value\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing a void result\n */\n voidMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('void'),\n arguments: [],\n })\n }\n\n // === View function ===\n\n /**\n * Get the result from a call\n * @param tx - The transaction to add the move call to\n * @param paramType - The parameter type for the call\n * @param resultType - The result type for the call\n * @param call - The call transaction result or transaction argument\n * @returns Transaction result containing the call result\n */\n resultMoveCall(\n tx: Transaction,\n paramType: string,\n resultType: string,\n call: TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('result'),\n typeArguments: [paramType, resultType],\n arguments: [call],\n })\n }\n\n /**\n * Get the recipient from a call\n * @param tx - The transaction to add the move call to\n * @param paramType - The parameter type for the call\n * @param resultType - The result type for the call\n * @param call - The call transaction result or transaction argument\n * @returns Transaction result containing the call recipient\n */\n recipientMoveCall(\n tx: Transaction,\n paramType: string,\n resultType: string,\n call: TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('recipient'),\n typeArguments: [paramType, resultType],\n arguments: [call],\n })\n }\n\n /**\n * Get the unique identifier for a CallCap\n * Returns the appropriate identifier based on the source type\n * @param tx - The transaction to add the move call to\n * @param callCap - The CallCap object ID or transaction argument\n * @returns Transaction result containing the CallCap identifier\n */\n callCapIdMoveCall(tx: Transaction, callCap: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('id', 'call_cap'),\n arguments: [asObject(tx, callCap)],\n })\n }\n\n /**\n * Get the unique identifier for a CallCap\n * Returns the appropriate identifier based on the source type\n * @param callCap - The CallCap object ID\n * @returns Promise resolving to the CallCap identifier as a string\n */\n async getCallCapId(callCap: string): Promise<string> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.callCapIdMoveCall(tx, callCap)\n },\n (result) => bcs.Address.parse(result[0].value)\n )\n }\n\n /**\n * Check if this is an Individual CallCap\n * @param tx - The transaction to add the move call to\n * @param callCap - The CallCap object ID or transaction argument\n * @returns Transaction result containing a boolean indicating if it's an Individual CallCap\n */\n isIndividualCapMoveCall(tx: Transaction, callCap: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_individual', 'call_cap'),\n arguments: [asObject(tx, callCap)],\n })\n }\n\n /**\n * Check if this is an Individual CallCap\n * @param callCap - The CallCap object ID\n * @returns Promise resolving to true if it's an Individual CallCap\n */\n async isIndividualCap(callCap: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isIndividualCapMoveCall(tx, callCap)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Check if this is a Package CallCap\n * @param tx - The transaction to add the move call to\n * @param callCap - The CallCap object ID or transaction argument\n * @returns Transaction result containing a boolean indicating if it's a Package CallCap\n */\n isPackageCapMoveCall(tx: Transaction, callCap: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_package', 'call_cap'),\n arguments: [asObject(tx, callCap)],\n })\n }\n\n /**\n * Check if this is a Package CallCap\n * @param callCap - The CallCap object ID\n * @returns Promise resolving to true if it's a Package CallCap\n */\n async isPackageCap(callCap: string): Promise<boolean> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.isPackageCapMoveCall(tx, callCap)\n },\n (result) => bcs.Bool.parse(result[0].value)\n )\n }\n\n /**\n * Get the package address for a Package CallCap\n * Returns None if this is a User CallCap\n * @param tx - The transaction to add the move call to\n * @param callCap - The CallCap object ID or transaction argument\n * @returns Transaction result containing the package address option\n */\n packageAddressMoveCall(tx: Transaction, callCap: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('package_address', 'call_cap'),\n arguments: [asObject(tx, callCap)],\n })\n }\n\n /**\n * Get the package address for a Package CallCap\n * Returns null if this is an Individual CallCap\n * @param callCap - The CallCap object ID\n * @returns Promise resolving to the package address or null if Individual CallCap\n */\n async getPackageAddress(callCap: string): Promise<string | null> {\n return executeSimulate(\n this.client,\n (tx) => {\n this.packageAddressMoveCall(tx, callCap)\n },\n (result) => {\n try {\n // Try to parse as Option<address>\n const option = bcs.option(bcs.Address).parse(result[0].value)\n return option ?? null\n } catch {\n // If parsing fails, it might be None\n return null\n }\n }\n )\n }\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to DEFAULT_MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = DEFAULT_MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n}\n","import { CoinStruct, IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { asAddress, asBool, asBytes, asBytes32, asObject, asU128, asU16, asU256, asU32, asU64, asU8 } from '../utils'\n\nconst BYTES32_MODULE_NAME = 'bytes32'\nconst BUFFER_READER_MODULE_NAME = 'buffer_reader'\nconst BUFFER_WRITER_MODULE_NAME = 'buffer_writer'\nconst PACKAGE_MODULE_NAME = 'package'\n\nexport const UtilsErrorCode = {\n // Utils related errors (with Utils_ prefix)\n Utils_EInvalidLength: 1,\n} as const\n\nexport class Utils {\n public packageId: string\n public readonly client: IotaClient\n\n constructor(packageId: string, client: IotaClient) {\n this.packageId = packageId\n this.client = client\n }\n\n // === bytes32 Functions ===\n\n /**\n * Create a bytes32 from a byte array\n * @param tx - The transaction to add the move call to\n * @param peer - The byte array to convert to bytes32 or transaction argument\n * @returns Transaction result containing the bytes32 value\n */\n fromBytesMoveCall(tx: Transaction, peer: Uint8Array | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('from_bytes'),\n arguments: [asBytes(tx, peer)],\n })\n }\n\n /**\n * Create a bytes32 from a byte array with left padding\n * @param tx - The transaction to add the move call to\n * @param bytes - The byte array to convert with left padding or transaction argument\n * @returns Transaction result containing the left-padded bytes32 value\n */\n fromBytesLeftPaddedMoveCall(tx: Transaction, bytes: Uint8Array | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('from_bytes_left_padded'),\n arguments: [asBytes(tx, bytes)],\n })\n }\n\n /**\n * Create a bytes32 from a byte array with right padding\n * @param tx - The transaction to add the move call to\n * @param bytes - The byte array to convert with right padding or transaction argument\n * @returns Transaction result containing the right-padded bytes32 value\n */\n fromBytesRightPaddedMoveCall(tx: Transaction, bytes: Uint8Array | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('from_bytes_right_padded'),\n arguments: [asBytes(tx, bytes)],\n })\n }\n\n /**\n * Create a bytes32 from an address\n * @param tx - The transaction to add the move call to\n * @param address - The address to convert to bytes32 or transaction argument\n * @returns Transaction result containing the bytes32 representation of the address\n */\n fromAddressMoveCall(tx: Transaction, address: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('from_address'),\n arguments: [asAddress(tx, address)],\n })\n }\n\n /**\n * Create a bytes32 from an object ID\n * @param tx - The transaction to add the move call to\n * @param id - The object ID to convert to bytes32 or transaction argument\n * @returns Transaction result containing the bytes32 representation of the ID\n */\n fromIdMoveCall(tx: Transaction, id: string | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('from_id'),\n arguments: [asObject(tx, id)],\n })\n }\n\n /**\n * Create a zero bytes32 value (all zeros)\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing a zero bytes32\n */\n zeroBytes32MoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('zero_bytes32'),\n })\n }\n\n /**\n * Create a bytes32 with all bits set to 1 (0xff...)\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing a bytes32 with all bits set\n */\n ffBytes32MoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('ff_bytes32'),\n })\n }\n\n /**\n * Check if a bytes32 value is zero (all zeros)\n * @param tx - The transaction to add the move call to\n * @param bytes32 - The bytes32 value to check or transaction argument\n * @returns Transaction result containing a boolean indicating if the value is zero\n */\n isZeroMoveCall(tx: Transaction, bytes32: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_zero'),\n arguments: [bytes32],\n })\n }\n\n /**\n * Check if a bytes32 value has all bits set to 1\n * @param tx - The transaction to add the move call to\n * @param bytes32 - The bytes32 value to check or transaction argument\n * @returns Transaction result containing a boolean indicating if all bits are set\n */\n isFfMoveCall(tx: Transaction, bytes32: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('is_ff'),\n arguments: [bytes32],\n })\n }\n\n /**\n * Convert a bytes32 to a byte array\n * @param tx - The transaction to add the move call to\n * @param bytes32 - The bytes32 value to convert or transaction argument\n * @returns Transaction result containing the byte array representation\n */\n toBytesMoveCall(tx: Transaction, bytes32: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('to_bytes'),\n arguments: [bytes32],\n })\n }\n\n /**\n * Convert a bytes32 to an address\n * @param tx - The transaction to add the move call to\n * @param bytes32 - The bytes32 value to convert or transaction argument\n * @returns Transaction result containing the address representation\n */\n toAddressMoveCall(tx: Transaction, bytes32: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('to_address'),\n arguments: [bytes32],\n })\n }\n\n /**\n * Convert a bytes32 to an object ID\n * @param tx - The transaction to add the move call to\n * @param bytes32 - The bytes32 value to convert or transaction argument\n * @returns Transaction result containing the object ID representation\n */\n toIdMoveCall(tx: Transaction, bytes32: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('to_id'),\n arguments: [bytes32],\n })\n }\n\n // === Reader Buffer Functions ===\n\n /**\n * Create a new buffer reader from a byte array\n * @param tx - The transaction to add the move call to\n * @param buffer - The byte array to create the reader from or transaction argument\n * @returns Transaction result containing the buffer reader\n */\n newReaderMoveCall(tx: Transaction, buffer: Uint8Array | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('create', BUFFER_READER_MODULE_NAME),\n arguments: [asBytes(tx, buffer)],\n })\n }\n\n /**\n * Get the current position of the buffer reader\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance or transaction argument\n * @returns Transaction result containing the current position\n */\n positionMoveCall(tx: Transaction, reader: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('position', BUFFER_READER_MODULE_NAME),\n arguments: [reader],\n })\n }\n\n /**\n * Get the remaining length of data in the buffer reader\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance or transaction argument\n * @returns Transaction result containing the remaining length\n */\n remainingLengthMoveCall(tx: Transaction, reader: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('remaining_length', BUFFER_READER_MODULE_NAME),\n arguments: [reader],\n })\n }\n\n /**\n * Skip a specified number of bytes in the buffer reader\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance or transaction argument\n * @param len - The number of bytes to skip or transaction argument\n * @returns Transaction result containing the updated reader\n */\n skipMoveCall(tx: Transaction, reader: TransactionArgument, len: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('skip', BUFFER_READER_MODULE_NAME),\n arguments: [reader, asU64(tx, len)],\n })\n }\n\n /**\n * Set the position of the buffer reader\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance or transaction argument\n * @param position - The position to set or transaction argument\n * @returns Transaction result containing the updated reader\n */\n setPositionMoveCall(\n tx: Transaction,\n reader: TransactionArgument,\n position: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('set_position', BUFFER_READER_MODULE_NAME),\n arguments: [reader, asU64(tx, position)],\n })\n }\n\n /**\n * Rewind the buffer reader by a specified number of bytes\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance or transaction argument\n * @param len - The number of bytes to rewind or transaction argument\n * @returns Transaction result containing the updated reader\n */\n rewindMoveCall(tx: Transaction, reader: TransactionArgument, len: number | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('rewind', BUFFER_READER_MODULE_NAME),\n arguments: [reader, asU64(tx, len)],\n })\n }\n\n /**\n * Read a boolean value from the buffer reader\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance\n * @returns Transaction result containing the boolean value\n */\n readBoolMoveCall(tx: Transaction, reader: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('read_bool', BUFFER_READER_MODULE_NAME),\n arguments: [reader],\n })\n }\n\n /**\n * Read a u8 value from the buffer reader\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance\n * @returns Transaction result containing the u8 value\n */\n readU8MoveCall(tx: Transaction, reader: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('read_u8', BUFFER_READER_MODULE_NAME),\n arguments: [reader],\n })\n }\n\n /**\n * Read a u16 value from the buffer reader\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance\n * @returns Transaction result containing the u16 value\n */\n readU16MoveCall(tx: Transaction, reader: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('read_u16', BUFFER_READER_MODULE_NAME),\n arguments: [reader],\n })\n }\n\n /**\n * Read a u32 value from the buffer reader\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance\n * @returns Transaction result containing the u32 value\n */\n readU32MoveCall(tx: Transaction, reader: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('read_u32', BUFFER_READER_MODULE_NAME),\n arguments: [reader],\n })\n }\n\n /**\n * Read a u64 value from the buffer reader\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance\n * @returns Transaction result containing the u64 value\n */\n readU64MoveCall(tx: Transaction, reader: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('read_u64', BUFFER_READER_MODULE_NAME),\n arguments: [reader],\n })\n }\n\n /**\n * Read a u128 value from the buffer reader\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance\n * @returns Transaction result containing the u128 value\n */\n readU128MoveCall(tx: Transaction, reader: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('read_u128', BUFFER_READER_MODULE_NAME),\n arguments: [reader],\n })\n }\n\n /**\n * Read a u256 value from the buffer reader\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance\n * @returns Transaction result containing the u256 value\n */\n readU256MoveCall(tx: Transaction, reader: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('read_u256', BUFFER_READER_MODULE_NAME),\n arguments: [reader],\n })\n }\n\n /**\n * Read a bytes32 value from the buffer reader\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance\n * @returns Transaction result containing the bytes32 value\n */\n readBytes32MoveCall(tx: Transaction, reader: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('read_bytes32', BUFFER_READER_MODULE_NAME),\n arguments: [reader],\n })\n }\n\n /**\n * Read an address value from the buffer reader\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance\n * @returns Transaction result containing the address value\n */\n readAddressMoveCall(tx: Transaction, reader: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('read_address', BUFFER_READER_MODULE_NAME),\n arguments: [reader],\n })\n }\n\n /**\n * Read a fixed-length byte array from the buffer reader\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance or transaction argument\n * @param len - The length of bytes to read or transaction argument\n * @returns Transaction result containing the byte array\n */\n readFixedLenBytesMoveCall(\n tx: Transaction,\n reader: TransactionArgument,\n len: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('read_fixed_len_bytes', BUFFER_READER_MODULE_NAME),\n arguments: [reader, asU64(tx, len)],\n })\n }\n\n /**\n * Read all remaining bytes from the buffer reader until the end\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance or transaction argument\n * @returns Transaction result containing the remaining bytes\n */\n readBytesUntilEndMoveCall(tx: Transaction, reader: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('read_bytes_until_end', BUFFER_READER_MODULE_NAME),\n arguments: [reader],\n })\n }\n\n /**\n * Get the total buffer length of the reader\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance or transaction argument\n * @returns Transaction result containing the total buffer length\n */\n readerBufferLengthMoveCall(tx: Transaction, reader: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('length', BUFFER_READER_MODULE_NAME),\n arguments: [reader],\n })\n }\n\n /**\n * Convert the buffer reader to a byte array\n * @param tx - The transaction to add the move call to\n * @param reader - The buffer reader instance or transaction argument\n * @returns Transaction result containing the byte array representation\n */\n readerToBytesMoveCall(tx: Transaction, reader: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('to_bytes', BUFFER_READER_MODULE_NAME),\n arguments: [reader],\n })\n }\n\n // Writer functions\n\n /**\n * Create a new empty buffer writer\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing the buffer writer\n */\n newWriterMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: this.#target('new', BUFFER_WRITER_MODULE_NAME),\n })\n }\n\n /**\n * Create a buffer writer with initial data\n * @param tx - The transaction to add the move call to\n * @param buffer - The initial byte array data for the writer or transaction argument\n * @returns Transaction result containing the buffer writer\n */\n createWriterMoveCall(tx: Transaction, buffer: Uint8Array | TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('create', BUFFER_WRITER_MODULE_NAME),\n arguments: [asBytes(tx, buffer)],\n })\n }\n\n /**\n * Get the total buffer length of the writer\n * @param tx - The transaction to add the move call to\n * @param writer - The buffer writer instance\n * @returns Transaction result containing the total buffer length\n */\n writerBufferLengthMoveCall(tx: Transaction, writer: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('length', BUFFER_WRITER_MODULE_NAME),\n arguments: [writer],\n })\n }\n\n /**\n * Convert the buffer writer to a byte array\n * @param tx - The transaction to add the move call to\n * @param writer - The buffer writer instance\n * @returns Transaction result containing the byte array representation\n */\n writerToBytesMoveCall(tx: Transaction, writer: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: this.#target('to_bytes', BUFFER_WRITER_MODULE_NAME),\n arguments: [writer],\n })\n }\n\n /**\n * Write a boolean value to the buffer writer\n * @param tx - The transaction to add the move call to\n * @param writer - The buffer writer instance or transaction argument\n * @param value - The boolean value to write or transaction argument\n * @returns Transaction result containing the updated writer\n */\n writeBoolMoveCall(\n tx: Transaction,\n writer: TransactionArgument,\n value: boolean | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('write_bool', BUFFER_WRITER_MODULE_NAME),\n arguments: [writer, asBool(tx, value)],\n })\n }\n\n /**\n * Write a u8 value to the buffer writer\n * @param tx - The transaction to add the move call to\n * @param writer - The buffer writer instance or transaction argument\n * @param value - The u8 value to write or transaction argument\n * @returns Transaction result containing the updated writer\n */\n writeU8MoveCall(\n tx: Transaction,\n writer: TransactionArgument,\n value: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('write_u8', BUFFER_WRITER_MODULE_NAME),\n arguments: [writer, asU8(tx, value)],\n })\n }\n\n /**\n * Write a u16 value to the buffer writer\n * @param tx - The transaction to add the move call to\n * @param writer - The buffer writer instance or transaction argument\n * @param value - The u16 value to write or transaction argument\n * @returns Transaction result containing the updated writer\n */\n writeU16MoveCall(\n tx: Transaction,\n writer: TransactionArgument,\n value: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('write_u16', BUFFER_WRITER_MODULE_NAME),\n arguments: [writer, asU16(tx, value)],\n })\n }\n\n /**\n * Write a u32 value to the buffer writer\n * @param tx - The transaction to add the move call to\n * @param writer - The buffer writer instance or transaction argument\n * @param value - The u32 value to write or transaction argument\n * @returns Transaction result containing the updated writer\n */\n writeU32MoveCall(\n tx: Transaction,\n writer: TransactionArgument,\n value: number | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('write_u32', BUFFER_WRITER_MODULE_NAME),\n arguments: [writer, asU32(tx, value)],\n })\n }\n\n /**\n * Write a u64 value to the buffer writer\n * @param tx - The transaction to add the move call to\n * @param writer - The buffer writer instance or transaction argument\n * @param value - The u64 value to write or transaction argument\n * @returns Transaction result containing the updated writer\n */\n writeU64MoveCall(\n tx: Transaction,\n writer: TransactionArgument,\n value: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('write_u64', BUFFER_WRITER_MODULE_NAME),\n arguments: [writer, asU64(tx, value)],\n })\n }\n\n /**\n * Write a u128 value to the buffer writer\n * @param tx - The transaction to add the move call to\n * @param writer - The buffer writer instance or transaction argument\n * @param value - The u128 value to write or transaction argument\n * @returns Transaction result containing the updated writer\n */\n writeU128MoveCall(\n tx: Transaction,\n writer: TransactionArgument,\n value: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('write_u128', BUFFER_WRITER_MODULE_NAME),\n arguments: [writer, asU128(tx, value)],\n })\n }\n\n /**\n * Write a u256 value to the buffer writer\n * @param tx - The transaction to add the move call to\n * @param writer - The buffer writer instance or transaction argument\n * @param value - The u256 value to write or transaction argument\n * @returns Transaction result containing the updated writer\n */\n writeU256MoveCall(\n tx: Transaction,\n writer: TransactionArgument,\n value: bigint | number | string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('write_u256', BUFFER_WRITER_MODULE_NAME),\n arguments: [writer, asU256(tx, value)],\n })\n }\n\n /**\n * Write a byte array to the buffer writer\n * @param tx - The transaction to add the move call to\n * @param writer - The buffer writer instance or transaction argument\n * @param bytes - The byte array to write or transaction argument\n * @returns Transaction result containing the updated writer\n */\n writeBytesMoveCall(\n tx: Transaction,\n writer: TransactionArgument,\n bytes: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('write_bytes', BUFFER_WRITER_MODULE_NAME),\n arguments: [writer, asBytes(tx, bytes)],\n })\n }\n\n /**\n * Write an address to the buffer writer\n * @param tx - The transaction to add the move call to\n * @param writer - The buffer writer instance or transaction argument\n * @param address - The address to write or transaction argument\n * @returns Transaction result containing the updated writer\n */\n writeAddressMoveCall(\n tx: Transaction,\n writer: TransactionArgument,\n address: string | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('write_address', BUFFER_WRITER_MODULE_NAME),\n arguments: [writer, asAddress(tx, address)],\n })\n }\n\n /**\n * Write a bytes32 value to the buffer writer\n * @param tx - The transaction to add the move call to\n * @param writer - The buffer writer instance or transaction argument\n * @param bytes32 - The bytes32 value to write (as Uint8Array) or transaction argument\n * @returns Transaction result containing the updated writer\n */\n writeBytes32MoveCall(\n tx: Transaction,\n writer: TransactionArgument,\n bytes32: Uint8Array | TransactionArgument\n ): TransactionResult {\n return tx.moveCall({\n target: this.#target('write_bytes32', BUFFER_WRITER_MODULE_NAME),\n arguments: [writer, asBytes32(tx, bytes32, this)],\n })\n }\n\n // === Package Functions ===\n\n /**\n * Get the original package address where a type was first defined\n * @param tx - The transaction to add the move call to\n * @param typeArgument - The type to get the original package address for\n * @returns Transaction result containing the original package address\n */\n originalPackageOfTypeMoveCall(tx: Transaction, typeArgument: string): TransactionResult {\n return tx.moveCall({\n target: this.#target('original_package_of_type', PACKAGE_MODULE_NAME),\n typeArguments: [typeArgument],\n })\n }\n\n /**\n * Get the current package address where a type is defined\n * @param tx - The transaction to add the move call to\n * @param typeArgument - The type to get the current package address for\n * @returns Transaction result containing the current package address\n */\n packageOfTypeMoveCall(tx: Transaction, typeArgument: string): TransactionResult {\n return tx.moveCall({\n target: this.#target('package_of_type', PACKAGE_MODULE_NAME),\n typeArguments: [typeArgument],\n })\n }\n\n // === Other Package Utils Functions ===\n\n /**\n * Create an Option<Coin<IOTA>> from a value\n * @param tx - The transaction to add the move call to\n * @param value - The amount of IOTA to wrap in the option\n * @returns Transaction result containing option::none for zero values, option::some otherwise\n * @note TransactionArguments always create option::some (runtime values cannot be evaluated)\n */\n createOptionIotaL1Call(\n tx: Transaction,\n value: bigint | number | string | TransactionArgument\n ): TransactionResult {\n if (this.isZeroValue(value)) {\n return this._createOptionNone(tx)\n }\n\n return this._createOptionSome(tx, value)\n }\n\n /**\n * Check if a static value (non-TransactionArgument) is zero\n */\n private isZeroValue(value: bigint | number | string | TransactionArgument): boolean {\n if (typeof value === 'bigint' || typeof value === 'number' || typeof value === 'string') {\n return this._isZeroValue(value)\n }\n\n return false\n }\n\n /**\n * Check if a primitive value equals zero\n */\n private _isZeroValue(value: bigint | number | string): boolean {\n switch (typeof value) {\n case 'bigint':\n return value === 0n\n case 'number':\n return value === 0\n case 'string':\n return value === '0' || Number(value) === 0\n default:\n return false\n }\n }\n\n /**\n * Create option::none for Coin<IOTA>\n */\n private _createOptionNone(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: '0x1::option::none',\n typeArguments: ['0x2::coin::Coin<0x2::iota::IOTA>'],\n arguments: [],\n })\n }\n\n /**\n * Create option::some for Coin<IOTA>\n */\n private _createOptionSome(\n tx: Transaction,\n value: bigint | number | string | TransactionArgument\n ): TransactionResult {\n const coin = tx.splitCoins(tx.gas, [asU64(tx, value)])\n return tx.moveCall({\n target: '0x1::option::some',\n typeArguments: ['0x2::coin::Coin<0x2::iota::IOTA>'],\n arguments: [coin],\n })\n }\n\n /**\n * Splits specified amount of coins from user's wallet\n * @param tx - The transaction to add the move call to\n * @param coinType - The type of coin to split\n * @param owner - Address of the user whose coins to split\n * @param amount - Amount of coins to split (in smallest units)\n * @param limit - Maximum total number of coins to collect across all pages (default: 200)\n * @param pageSize - Maximum number of coins to fetch per page (default: 50)\n * @returns Promise resolving to split coin as TransactionResult\n * @throws Error if insufficient coins balance or no coins found\n */\n async splitCoinMoveCall(\n tx: Transaction,\n coinType: string,\n owner: string,\n amount: bigint,\n limit = 200,\n pageSize = 50\n ): Promise<TransactionResult> {\n const sufficientCoins = await this.#fetchSufficientCoins(owner, coinType, amount, limit, pageSize)\n const totalBalance = sufficientCoins.reduce((sum, coin) => sum + BigInt(coin.balance), 0n)\n\n // Use single coin if available, otherwise merge multiple coins\n const primaryCoin = sufficientCoins.find((coin) => BigInt(coin.balance) >= amount) ?? sufficientCoins[0]\n const primaryCoinObj = tx.object(primaryCoin.coinObjectId)\n\n // Merge additional coins if needed\n if (primaryCoin === sufficientCoins[0] && sufficientCoins.length > 1) {\n tx.mergeCoins(\n primaryCoinObj,\n sufficientCoins.slice(1).map((coin) => tx.object(coin.coinObjectId))\n )\n }\n\n // Split the required amount\n const splitCoin = tx.splitCoins(primaryCoinObj, [asU64(tx, amount)])\n\n // Destroy zero-value remainder if total balance equals requested amount\n if (totalBalance === amount) {\n this.#destroyZeroCoin(tx, primaryCoinObj, coinType)\n }\n\n return splitCoin\n }\n\n // === Internal Functions ===\n\n /**\n * Generate the full target path for move calls\n * @param name - The function name to call\n * @param module_name - The module name (defaults to BYTES32_MODULE_NAME)\n * @returns The full module path for the move call\n * @private\n */\n #target(name: string, module_name = BYTES32_MODULE_NAME): string {\n return `${this.packageId}::${module_name}::${name}`\n }\n\n /**\n * Destroy a zero-value coin to clean up wallet state\n * @param tx - The transaction to add the move call to\n * @param coinObj - The coin object to destroy\n * @param coinType - The coin type\n * @private\n */\n #destroyZeroCoin(tx: Transaction, coinObj: TransactionArgument, coinType: string): void {\n tx.moveCall({\n target: '0x2::coin::destroy_zero',\n arguments: [coinObj],\n typeArguments: [coinType],\n })\n }\n\n /**\n * Fetches coins incrementally until sufficient balance is reached\n * This method paginates through the user's ZRO coins to collect enough balance\n * @param owner - Address of the user whose ZRO coins to fetch\n * @param coinType - ZRO coin type string\n * @param amount - Required amount to reach\n * @param limit - Maximum total number of coins to collect across all pages\n * @param pageSize - Maximum coins to fetch per page\n * @returns Promise resolving to array of coin objects with sufficient total balance\n */\n async #fetchSufficientCoins(\n owner: string,\n coinType: string,\n amount: bigint,\n limit: number,\n pageSize: number\n ): Promise<CoinStruct[]> {\n const coins: CoinStruct[] = []\n let accumulatedBalance = 0n\n let cursor: string | null = null\n\n do {\n const coinsResponse = await this.client.getCoins({ owner, coinType, cursor, limit: pageSize })\n if (coinsResponse.data.length === 0) {\n break\n }\n\n for (const coin of coinsResponse.data) {\n coins.push(coin)\n accumulatedBalance += BigInt(coin.balance)\n\n // Stop if we have enough balance\n if (accumulatedBalance >= amount) {\n return coins\n }\n\n // Throw error if we have reached the maximum coin limit\n if (coins.length >= limit) {\n throw new Error(\n `Insufficient ${coinType} balance: reached maximum coin limit (${limit}) but still need ${amount - accumulatedBalance} more`\n )\n }\n }\n\n cursor = coinsResponse.hasNextPage ? coinsResponse.nextCursor ?? null : null\n } while (cursor != null)\n\n // If we've exhausted all coins but still don't have sufficient balance\n if (accumulatedBalance < amount) {\n throw new Error(\n `Insufficient ${coinType} balance: only found ${accumulatedBalance} but need ${amount} (shortfall: ${amount - accumulatedBalance})`\n )\n }\n\n return coins\n }\n}\n","import { IotaClient } from '@iota/iota-sdk/client'\nimport { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'\n\nimport { ModuleManager } from '../module-manager'\n\nexport class Zro {\n public packageId: string\n public readonly client: IotaClient\n public zroType: string\n\n constructor(\n packageId: string,\n client: IotaClient,\n private readonly moduleManager: ModuleManager\n ) {\n this.packageId = packageId\n this.client = client\n this.zroType = `${this.packageId}::zro::ZRO`\n }\n\n // === Utils function ===\n\n /**\n * Split ZRO tokens and wrap in an Option type for use in LayerZero operations\n * If value is 0, returns Option::None, otherwise returns Option::Some with the split tokens\n * @param tx - The transaction to add the move call to\n * @param userAddress - Address of the user whose ZRO tokens to split\n * @param value - Amount of ZRO tokens to split (0 for None option)\n * @param maxCoins - Maximum total number of coins to collect across all pages (default: 200)\n * @param maxCoinsPerPage - Maximum number of coins to fetch per page (default: 50)\n * @returns Promise resolving to transaction result containing Option<Coin<ZRO>>\n * @throws Error if insufficient ZRO balance\n */\n async splitOptionZroTokenMoveCall(\n tx: Transaction,\n userAddress: string,\n value: bigint,\n maxCoins = 200,\n maxCoinsPerPage = 50\n ): Promise<TransactionResult> {\n if (value === 0n) {\n return this.noneOptionMoveCall(tx)\n }\n const zroCoin = await this.splitZroTokenMoveCall(tx, userAddress, value, maxCoins, maxCoinsPerPage)\n return this.someOptionMoveCall(tx, zroCoin)\n }\n\n /**\n * Splits specified amount of ZRO tokens from user's wallet\n * This method fetches coins and merges them as needed to get sufficient balance\n * @param tx - The transaction to add the move call to\n * @param owner - Address of the user whose ZRO coins to split\n * @param amount - Amount of ZRO tokens to split (in smallest units, considering 9 decimals)\n * @param limit - Maximum total number of coins to collect across all pages (default: 200)\n * @param pageSize - Maximum number of coins to fetch per page (default: 50)\n * @returns Promise resolving to split ZRO coin as TransactionResult\n * @throws Error if insufficient ZRO balance or no coins found\n */\n async splitZroTokenMoveCall(\n tx: Transaction,\n owner: string,\n amount: bigint,\n limit = 200,\n pageSize = 50\n ): Promise<TransactionResult> {\n return this.moduleManager.getUtils().splitCoinMoveCall(tx, this.zroType, owner, amount, limit, pageSize)\n }\n\n /**\n * Creates an Option::Some moveCall containing a ZRO coin\n * @param tx - The transaction to add the move call to\n * @param zroCoin - ZRO coin to wrap in Option or transaction argument\n * @returns Transaction result containing Option<Coin<ZRO>> type with Some value\n */\n someOptionMoveCall(tx: Transaction, zroCoin: TransactionArgument): TransactionResult {\n return tx.moveCall({\n target: `0x1::option::some`,\n typeArguments: [`0x2::coin::Coin<${this.zroType}>`],\n arguments: [zroCoin],\n })\n }\n\n /**\n * Creates an Option::None moveCall for ZRO coin type\n * @param tx - The transaction to add the move call to\n * @returns Transaction result containing Option<Coin<ZRO>> type with None value\n */\n noneOptionMoveCall(tx: Transaction): TransactionResult {\n return tx.moveCall({\n target: `0x1::option::none`,\n typeArguments: [`0x2::coin::Coin<${this.zroType}>`],\n })\n }\n}\n","import { createHash } from 'crypto'\n\nimport { IotaClient } from '@iota/iota-sdk/client'\n\nimport {\n BlockedMessageLib,\n BlockedMessageLibPtbBuilder,\n Call,\n Counter,\n DVN,\n DVNFeeLib,\n DvnLayerZero,\n DvnPtbBuilder,\n Endpoint,\n EndpointPtbBuilder,\n Executor,\n ExecutorFeeLib,\n ExecutorLayerZero,\n ExecutorPtbBuilder,\n LayerZeroViews,\n OApp,\n PackageWhitelistValidator,\n PriceFeed,\n PtbBuilder,\n SimpleMessageLib,\n SimpleMessageLibPtbBuilder,\n Treasury,\n Uln302,\n Uln302PtbBuilder,\n Utils,\n WorkerRegistry,\n Zro,\n} from './modules'\nimport { ModuleOptions, ObjectOptions, PackageOptions } from './types'\nimport { Modules } from './types/modules'\n\n/**\n * Module Manager - Centralized management for all SDK modules\n * Uses unified storage for both core modules and cached modules with options\n */\nexport class ModuleManager {\n public packages: PackageOptions\n public objects: ObjectOptions\n\n private storage = new Map<string, unknown>()\n\n constructor(packages: PackageOptions, objects: ObjectOptions) {\n this.packages = packages\n this.objects = objects\n }\n\n /**\n * Generate a cache key using hash for modules with options\n */\n private generateCacheKey(moduleName: string, options?: ModuleOptions): string {\n if (!options) {\n return `${moduleName}:default`\n }\n\n // Create hash from JSON string\n const jsonStr = JSON.stringify(options, Object.keys(options).sort())\n const hash = createHash('sha256').update(jsonStr).digest('hex').substring(0, 16)\n\n return `${moduleName}:${hash}`\n }\n\n private setCoreModules(modules: { [key: string]: unknown }): void {\n Object.entries(modules).forEach(([name, instance]) => {\n this.setModule(name, undefined, instance)\n })\n }\n\n /**\n * Get module instance (with options), throws error if not found\n */\n getModule<T>(moduleName: string, options?: ModuleOptions): T {\n const key = this.generateCacheKey(moduleName, options)\n const module = this.storage.get(key) as T | undefined\n if (module === undefined) {\n const optionsStr = options ? ` with options ${JSON.stringify(options)}` : ''\n throw new Error(`Module '${moduleName}'${optionsStr} not found`)\n }\n return module\n }\n\n /**\n * Store module instance (with options)\n */\n setModule<T>(moduleName: string, options: ModuleOptions | undefined, instance: T): void {\n const key = this.generateCacheKey(moduleName, options)\n this.storage.set(key, instance)\n }\n\n /**\n * Check if module (with options) exists\n */\n hasModule(moduleName: string, options?: ModuleOptions): boolean {\n const key = this.generateCacheKey(moduleName, options)\n return this.storage.has(key)\n }\n\n /**\n * Get module instance or create new one using factory function\n */\n getOrCreateModule<T>(moduleName: string, options: ModuleOptions | undefined, factory: () => T): T {\n // Check if module exists first\n if (this.hasModule(moduleName, options)) {\n return this.getModule<T>(moduleName, options)\n }\n\n // Create new instance and store it\n const instance = factory()\n this.setModule(moduleName, options, instance)\n return instance\n }\n\n /**\n * Get all core modules as an object\n */\n getAllCoreModules(): { [key: string]: unknown } {\n const result: { [key: string]: unknown } = {}\n const coreModuleKeys = Array.from(this.storage.keys()).filter((key) => key.endsWith(':default'))\n\n for (const key of coreModuleKeys) {\n const moduleName = key.replace(':default', '')\n result[moduleName] = this.storage.get(key)\n }\n\n return result\n }\n\n /**\n * Clear all modules and cache\n */\n clear(): void {\n this.storage.clear()\n }\n\n /**\n * Remove a module with specific options\n */\n removeModule(moduleName: string, options?: ModuleOptions): boolean {\n const key = this.generateCacheKey(moduleName, options)\n return this.storage.delete(key)\n }\n\n /**\n * Initialize all standard LayerZero modules\n * @param packages - Package addresses configuration\n * @param objects - Object addresses configuration\n * @param client - Iota client instance\n * @param context - Context object to be populated with module references\n */\n initializeCoreModules(packages: PackageOptions, objects: ObjectOptions, client: IotaClient): void {\n this.setCoreModules({\n [Modules.Endpoint]: new Endpoint(packages.endpointV2, client, objects, this),\n [Modules.SimpleMessageLib]: new SimpleMessageLib(packages.simpleMessageLib, client, objects, this),\n [Modules.BlockedMessageLib]: new BlockedMessageLib(packages.blockedMessageLib, client, objects, this),\n [Modules.Uln302]: new Uln302(packages.uln302, client, objects, this),\n [Modules.Utils]: new Utils(packages.utils, client),\n [Modules.Zro]: new Zro(packages.zro, client, this),\n [Modules.Call]: new Call(packages.call, client),\n [Modules.Treasury]: new Treasury(packages.treasury, client, objects, this),\n [Modules.LayerZeroViews]: new LayerZeroViews(packages.layerzeroViews, client, objects, this),\n [Modules.PtbBuilder]: new PtbBuilder(packages.ptbMoveCall, client),\n })\n }\n\n // === Core Module Getters ===\n\n getEndpoint(): Endpoint {\n return this.getModule(Modules.Endpoint)\n }\n\n getSimpleMessageLib(): SimpleMessageLib {\n return this.getModule(Modules.SimpleMessageLib)\n }\n\n getBlockedMessageLib(): BlockedMessageLib {\n return this.getModule(Modules.BlockedMessageLib)\n }\n\n getUln302(): Uln302 {\n return this.getModule(Modules.Uln302)\n }\n\n getUtils(): Utils {\n return this.getModule(Modules.Utils)\n }\n\n getZro(): Zro {\n return this.getModule(Modules.Zro)\n }\n\n getCall(): Call {\n return this.getModule(Modules.Call)\n }\n\n getTreasury(): Treasury {\n return this.getModule(Modules.Treasury)\n }\n\n getLayerZeroViews(): LayerZeroViews {\n return this.getModule(Modules.LayerZeroViews)\n }\n\n getPtbBuilder(): PtbBuilder {\n return this.getModule(Modules.PtbBuilder)\n }\n\n getOApp(client: IotaClient, callCapId: string, options?: ModuleOptions): OApp {\n return this.getOrCreateModule(Modules.Oapp + callCapId, options, () => {\n const packageId = options?.packageId ?? this.packages.oapp\n const objects = this.mergeObjectsOptions(options)\n return new OApp(packageId, callCapId, client, objects, this)\n })\n }\n\n // === Non-core Module Getters (created on-demand with caching) ===\n\n getCounter(client: IotaClient, options?: ModuleOptions): Counter {\n return this.getOrCreateModule(Modules.Counter, options, () => {\n const packageId = options?.packageId ?? this.packages.counterV2\n const objects = this.mergeObjectsOptions(options)\n return new Counter(packageId, client, objects, this)\n })\n }\n\n getExecutor(client: IotaClient, options?: ModuleOptions): Executor {\n return this.getOrCreateModule(Modules.Executor, options, () => {\n const packageId = options?.packageId ?? this.packages.executor\n const objects = this.mergeObjectsOptions(options)\n return new Executor(packageId, client, objects, this)\n })\n }\n\n getDvn(client: IotaClient, options?: ModuleOptions): DVN {\n return this.getOrCreateModule(Modules.Dvn, options, () => {\n const packageId = options?.packageId ?? this.packages.dvn\n const objects = this.mergeObjectsOptions(options)\n return new DVN(packageId, client, objects, this)\n })\n }\n\n getDvnFeeLib(client: IotaClient, options?: ModuleOptions): DVNFeeLib {\n return this.getOrCreateModule(Modules.DvnFeeLib, options, () => {\n const packageId = options?.packageId ?? this.packages.dvnFeeLib\n const objects = this.mergeObjectsOptions(options)\n return new DVNFeeLib(packageId, client, objects, this)\n })\n }\n\n getExecutorFeeLib(client: IotaClient, options?: ModuleOptions): ExecutorFeeLib {\n return this.getOrCreateModule(Modules.ExecutorFeeLib, options, () => {\n const packageId = options?.packageId ?? this.packages.executorFeeLib\n const objects = this.mergeObjectsOptions(options)\n return new ExecutorFeeLib(packageId, client, objects, this)\n })\n }\n\n getPriceFeed(client: IotaClient, options?: ModuleOptions): PriceFeed {\n return this.getOrCreateModule(Modules.PriceFeed, options, () => {\n const packageId = options?.packageId ?? this.packages.priceFeed\n const objects = this.mergeObjectsOptions(options)\n return new PriceFeed(packageId, client, objects, this)\n })\n }\n\n getDvnLayerZero(client: IotaClient, options?: ModuleOptions): DvnLayerZero {\n return this.getOrCreateModule(Modules.DvnLayerZero, options, () => {\n const packageId = options?.packageId ?? this.packages.dvnLayerzero\n return new DvnLayerZero(packageId, client, this)\n })\n }\n\n getExecutorLayerZero(client: IotaClient, options?: ModuleOptions): ExecutorLayerZero {\n return this.getOrCreateModule(Modules.ExecutorLayerZero, options, () => {\n const packageId = options?.packageId ?? this.packages.executorLayerzero\n return new ExecutorLayerZero(packageId, client, this)\n })\n }\n\n getDvnPtbBuilder(client: IotaClient, options?: ModuleOptions): DvnPtbBuilder {\n return this.getOrCreateModule(Modules.DvnPtbBuilder, options, () => {\n const packageId = options?.packageId ?? this.packages.dvnPtbBuilder\n const objects = this.mergeObjectsOptions(options)\n return new DvnPtbBuilder(packageId, client, objects, this)\n })\n }\n\n getExecutorPtbBuilder(client: IotaClient, options?: ModuleOptions): ExecutorPtbBuilder {\n return this.getOrCreateModule(Modules.ExecutorPtbBuilder, options, () => {\n const packageId = options?.packageId ?? this.packages.executorPtbBuilder\n const objects = this.mergeObjectsOptions(options)\n return new ExecutorPtbBuilder(packageId, client, objects, this)\n })\n }\n\n getPackageWhitelistValidator(client: IotaClient, options?: ModuleOptions): PackageWhitelistValidator {\n return this.getOrCreateModule(Modules.PackageWhitelistValidator, options, () => {\n const packageId = options?.packageId ?? this.packages.packageWhitelistValidator\n const objects = this.mergeObjectsOptions(options)\n return new PackageWhitelistValidator(packageId, client, objects, this)\n })\n }\n\n getUln302PtbBuilder(client: IotaClient, options?: ModuleOptions): Uln302PtbBuilder {\n return this.getOrCreateModule(Modules.Uln302PtbBuilder, options, () => {\n const packageId = options?.packageId ?? this.packages.uln302PtbBuilder\n const objects = this.mergeObjectsOptions(options)\n return new Uln302PtbBuilder(packageId, client, objects, this)\n })\n }\n\n getEndpointPtbBuilder(client: IotaClient, options?: ModuleOptions): EndpointPtbBuilder {\n return this.getOrCreateModule(Modules.EndpointPtbBuilder, options, () => {\n const packageId = options?.packageId ?? this.packages.endpointPtbBuilder\n const objects = this.mergeObjectsOptions(options)\n return new EndpointPtbBuilder(packageId, client, objects, this)\n })\n }\n\n getSimpleMessageLibPtbBuilder(client: IotaClient, options?: ModuleOptions): SimpleMessageLibPtbBuilder {\n return this.getOrCreateModule(Modules.SimpleMessageLibPtbBuilder, options, () => {\n const packageId = options?.packageId ?? this.packages.simpleMessageLibPtbBuilder\n const objects = this.mergeObjectsOptions(options)\n return new SimpleMessageLibPtbBuilder(packageId, client, objects, this)\n })\n }\n getBlockedMessageLibPtbBuilder(client: IotaClient, options?: ModuleOptions): BlockedMessageLibPtbBuilder {\n return this.getOrCreateModule(Modules.BlockedMessageLibPtbBuilder, options, () => {\n const packageId = options?.packageId ?? this.packages.blockedMessageLibPtbBuilder\n const objects = this.mergeObjectsOptions(options)\n return new BlockedMessageLibPtbBuilder(packageId, client, objects, this)\n })\n }\n\n getWorkerRegistry(client: IotaClient, options?: ModuleOptions): WorkerRegistry {\n return this.getOrCreateModule(Modules.WorkerRegistry, options, () => {\n const packageId = options?.packageId ?? this.packages.workerRegistry\n const objects = this.mergeObjectsOptions(options)\n return new WorkerRegistry(packageId, client, objects, this)\n })\n }\n\n // === Private Utility Methods ===\n\n /**\n * Merge objects configuration with options, avoiding unnecessary object spreading\n */\n private mergeObjectsOptions(options?: ModuleOptions): ObjectOptions {\n // If no options or options.objects is empty, return original objects\n if (!options?.objects || Object.keys(options.objects).length === 0) {\n return this.objects\n }\n\n // Only perform object spreading when there are actual properties to merge\n return { ...this.objects, ...options.objects }\n }\n}\n","// WARNING: Do not change this code. It is auto generated.\n// If you want some new feature, please update generate-addresses.ts.\nimport {Stage} from '@layerzerolabs/lz-definitions'\nexport const PACKAGE_UTILS_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x56a262afe5db9b34426f343160481290d010551ca15b427b1fb4b0010e3b69ed',\n [Stage.TESTNET]: '0x379b562468eed5cf259a2f279527f92d231e52bb260c5169230b0a87f6a52c82',\n [Stage.SANDBOX]: '0x986917c43005e1aa172200e8014e4aa93b11ea725cb2d22d997c08128cc816a0',\n}\n\nexport const PACKAGE_ENDPOINT_V2_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xb8e0cd76cb8916c48c03320e43d46c3775edd6f17ce7fbfad6c751289dcb1735',\n [Stage.TESTNET]: '0xfca1ac6ffcae8ce9d937e94f30c930f9ce295b29496ed975d272efec511e2495',\n [Stage.SANDBOX]: '0xb9b4c9e5f18f700aea9a06de50c0cd9cffdd5c83a2641cc8b13503ef5849fc57',\n}\n\nexport const PACKAGE_COUNTER_V2_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x980f5583d170c4cd532f1ef9df3186b2bb52e8d9912d87e9edd3a3f30c39a11c',\n [Stage.TESTNET]: '0xc61940122ab9ec04318346582a0ccdaea0ff81ed51429be54d48d5eac6f45de0',\n [Stage.SANDBOX]: '0x52204bda3907fe4ef1b2de828dfba80e187527b5b68ac0f83afd9f6d1d3f59a7',\n}\n\nexport const PACKAGE_SIMPLE_MESSAGE_LIB_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xecf3d32cc8bbb4b3069825fc11310e535efb40738c9b6cf3e12eabd08b9eecdb',\n [Stage.TESTNET]: '0x1ac164f11ef54614d01b8f41fa5bfbf61654216cd8b323a00991cd63879afbb5',\n [Stage.SANDBOX]: '0x1c9444bec20d62ab54c6e0e6074e6af9b3d64f5690bb2130ca23dae7d80345f4',\n}\n\nexport const PACKAGE_ULN_302_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x042e3bb837e5528e495124542495b9df5016acd011d89838ae529db5a814499e',\n [Stage.TESTNET]: '0xf87812112d8ad8329269d7445be936057651dcf96a692f32ee1d8de82296cc7d',\n [Stage.SANDBOX]: '0x1b46ab8e61dcdbf16efa585eeb6a7e569d70ab45e6271b338bb5c5036eaa1f19',\n}\n\nexport const PACKAGE_ULN_302_PTB_BUILDER_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x2791eb9c498c5f6f39d4480743dbb86164deda1055c1606f22b53c58d4ebde20',\n [Stage.TESTNET]: '0x853d4f8158636eb0b2c3e1ad8e0f95a1c0b5866047171bc0aeb25c981f6e3f83',\n [Stage.SANDBOX]: '0xefda72ea159f560c08cc69a12fbc535d5f9ea1ee88faa1ceb2ed59624d028ed4',\n}\n\nexport const PACKAGE_DVN_PTB_BUILDER_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x2cfcc7736d63eac8542f057448fdd98252c4302052ea3b698da621deb69912e7',\n [Stage.TESTNET]: '0xb62e273025560bf24612e16f4341e45f940e1907bfd3025eeeeaf191c402f77d',\n [Stage.SANDBOX]: '0x8c31f1ea054d7ee8d7138c0febd1d89679c7062155a34f45349acdae6c56e561',\n}\n\nexport const PACKAGE_EXECUTOR_PTB_BUILDER_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xd2ebf8bddcb4429ee7c37a5c438cc49b93251c4c7c5ce1792ca2853f77a1da71',\n [Stage.TESTNET]: '0xa24f49966879c2a6dc8c407218ea153383ae6dec28669b25818fe73f79be4212',\n [Stage.SANDBOX]: '0xcf16c06fde3447621c5599063f7ae9913ab863b7cd4b014ded7f69377f9031a8',\n}\n\nexport const PACKAGE_EXECUTOR_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xf38b350161c5d41fa7e95f1f1fc7884c645f8c087e0c4f1e9894843131d3d6da',\n [Stage.TESTNET]: '0xab64bfcce4c5c357019e3b215f2502b6c7e60b6879ff5718240c7c157885708f',\n [Stage.SANDBOX]: '0xbfd58ca9030fec9d17b7d086db207553a63a6948fcdd28ae2006501961ccd002',\n}\n\nexport const PACKAGE_ZRO_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xed5b4c39fa2e3c518e0ce03a40f9a05ac37f46b770c8f158f6984c6d8bf05698',\n [Stage.TESTNET]: '0x50e04dda960d432cc5f98f5c51ec65e73d313f0e6c1ad13146215946524a56f3',\n [Stage.SANDBOX]: '0x220ba7e163636ae7cce2a2d0111e15bef59ba9a98ec8606abeccf5b39853f9ed',\n}\n\nexport const PACKAGE_CALL_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x0a8ff628914b6f968a96754c9724b5d739dd0960d83bf76f98556919bc275866',\n [Stage.TESTNET]: '0x927e622637832f38e879a9cd7436b85c8e1a129f09f1ff20c364d67c2cb2f9fa',\n [Stage.SANDBOX]: '0xf85f59353a3bf6a140c4b10ad80528294653af16ed5d72653b1875cd05fc426e',\n}\n\nexport const PACKAGE_ENDPOINT_PTB_BUILDER_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x5d194608ce6b7dd7ff95c6f232aad6dc5955814366951792cfd10da506743fa1',\n [Stage.TESTNET]: '0xb7057d8d0a01c8a120bd5f74d78eebe35c40e6800a8f0247d95b519000e24da1',\n [Stage.SANDBOX]: '0xa1412b70969544e8e4ebcea408df5d4b325818a10195a0858740bacef16a04e5',\n}\n\nexport const PACKAGE_SIMPLE_MESSAGE_LIB_PTB_BUILDER_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x612a2eddcf0b06b5daeb0ebabaabf8c47732305cfe3be7103b1ea5d4fd5571e1',\n [Stage.TESTNET]: '0x092deaab52a07c9e752c90ecfcfc809860d493b9047f81d5ad51479e1b7fcc35',\n [Stage.SANDBOX]: '0xb3b0a003edaebbfc65a17ecde81d14fcf906d172d93cb6d96daf471dd7770bd5',\n}\n\nexport const PACKAGE_PTB_MOVE_CALL_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x82f74d1641ded950ebb3d616570f25c00f2e5191784115dcb4ae6a7455608b2d',\n [Stage.TESTNET]: '0xd06e7fd09f49fcd6bfb82a846c575625784d236aa9db17b715d27e2be708a935',\n [Stage.SANDBOX]: '0xcfa83c0a5ff3391a54d80defa85d906bb6503053c748cd7aa9cd22028fdf8ad4',\n}\n\nexport const PACKAGE_DVN_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x46b4cd0b7f3be8d8c319cb49c616d979050ea5116a985cf4dde575e1dbc8e8d0',\n [Stage.TESTNET]: '0xcf9c9179230ef3dfde78f8ad3749060b530c8b5ca53fde8af9c1f016276583f6',\n [Stage.SANDBOX]: '0xd942507caede4d705cd7265fc30ef31f4f9308239a66b53126ceda9793505005',\n}\n\nexport const PACKAGE_DVN_FEE_LIB_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x4f59b392c336e2b9dfdcad832b6ba37d17ee0a52cfe107bb69fc6aa0c08fa675',\n [Stage.TESTNET]: '0x3c585acf9b51d0ad7cca084a11bb9a27b0d283075f0bbaccc04abc442201108d',\n [Stage.SANDBOX]: '0x1353232e504a6ac3dbe528ece0d24d5a6088ac19606ebce43957ea82a4c7a7c4',\n}\n\nexport const PACKAGE_EXECUTOR_FEE_LIB_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x803fa6c8aa39c7849a98f120ed9ceb1ab56de164af62052d100587828f66b2f1',\n [Stage.TESTNET]: '0xda132e9bedd921ce3b2f3efeab87f3a348671c2b9994347166dc522a078b8507',\n [Stage.SANDBOX]: '0x2d48b241fcbe479983d4a1ba17059638797f8d1b0e8e8287b29c645004f10fa9',\n}\n\nexport const PACKAGE_PRICE_FEED_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xae65a3712fb096ef53cf3889783de57c8da32ceb68cba8cd7b06820e6cf78b7d',\n [Stage.TESTNET]: '0xe23152186cc998c2a1c8f2ed07d6607a69efd8b0ab4594789dd99fd49761f7f7',\n [Stage.SANDBOX]: '0xd89547314f5364b1459eefeb1c76a8d8ada5816bf4eb375872b3dfd68fb84666',\n}\n\nexport const PACKAGE_TREASURY_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xc93b2fac150a13f99004720dda94096d1ebafcf019828e97d331c2765a13d6a7',\n [Stage.TESTNET]: '0x1ed346021e3787c6d6b45f9927eab5a4f5f2c97ba22bf19d1ac8ba3277607dee',\n [Stage.SANDBOX]: '0x71c7edcfb043793885e106307aba0de487225e954b63455d3507b03e2c7abe9f',\n}\n\nexport const PACKAGE_OAPP_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x2b14fe07b7f84736d91fbe596ba3f6fe5a9ee2db738dc986a8a64c81ef188937',\n [Stage.TESTNET]: '0x05fb5547cce6f480ea92d9b77c9ca7056080c89896ddb394f26eb6db3fa9fdb6',\n [Stage.SANDBOX]: '0xe078d545a18f95fcc1bca37bbfc16ef4b64d6b407ddc6573aa7dc61b6fe5c1f2',\n}\n\nexport const PACKAGE_LAYERZERO_VIEWS_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xa6e21c41a5db94c69827dbb1e32fd4d99c3416357fd93df5ea9449b9f7f16662',\n [Stage.TESTNET]: '0xf8b4b6ce775fb606463d5e9a698f256725ff8eb929e752dfead59e8d02bd02d0',\n [Stage.SANDBOX]: '0x675c2be864c957bfd05c4b7e2bad5ceee9d91a8d69c05838e434d5f8f2b5c748',\n}\n\nexport const PACKAGE_DVN_LAYERZERO_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xa560697328ccb5dc3f3f8e8a2c41e282827060da7a29971d933e9aa405c2ba7f',\n [Stage.TESTNET]: '0x8a3a8ef1789a0863a5eef1a3c1eb777d188a74f34850589c57d2245837e424fd',\n [Stage.SANDBOX]: '0x9aeeac44b0662861ee9f11e2cd336e493d3966e50c2fe1769dc68db0c787f7c2',\n}\n\nexport const PACKAGE_EXECUTOR_LAYERZERO_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x29b691f9496eea6df8f4d77ceacee5949e92e7e51b2e3c2e6cd70eef5237e99a',\n [Stage.TESTNET]: '0xaa4f32d13d9cb55f9153cbaabda6e5e410626da6d05061d45581692e06931dd2',\n [Stage.SANDBOX]: '0x74af41b9680e6b0b0ea446b4a0843708bace0a64823915de9db60060ef5b48c0',\n}\n\nexport const PACKAGE_PACKAGE_WHITELIST_VALIDATOR_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x4237925ef818b257654a34d1fdd6347fcab007a2cb2b2d5e63235e45e79b74e0',\n [Stage.TESTNET]: '0x43713bc8ac3c792aeba65d0894c20ff57f65bb81bd6522a0b167518e4fa0b2a3',\n [Stage.SANDBOX]: '0x8274315b90f65cb6ff467ba041a911d242f2d3499bce1b7f43d22a795ea35ca5',\n}\n\nexport const PACKAGE_BLOCKED_MESSAGE_LIB_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x29fa6fd23683c0e04875b200e0ccfddb7d210c3b60572746e1e1be93d05fdc7f',\n [Stage.TESTNET]: '0xe44dc1f231db440b9b03fc9054c78535335404889d1d7bbe3e635fb2ac148907',\n [Stage.SANDBOX]: '0xd961cbea1a87c52bf6d1d1c763bdb0cbdb03e86fb4a5a6a3f38a831473f99070',\n}\n\nexport const PACKAGE_BLOCKED_MESSAGE_LIB_PTB_BUILDER_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x4a96f58ba85d69fbaa759fdcd0cc2c1db8d309c4d3f4aa1f3aa9c139ccdfcba6',\n [Stage.TESTNET]: '0xcfb06208c26517e1968bedbd03dd7a0f292cd6d980f59938ad14d450e2cba7e3',\n [Stage.SANDBOX]: '0x84e9885161369cce1ebe46055eadb8cb06e96c5e283090f22f06aa1a4c93861d',\n}\n\nexport const PACKAGE_WORKER_REGISTRY_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xc3bcb65a09f2c113af3665396d2020f1736fd4d2c0bef92051956eec1b8dd14d',\n [Stage.TESTNET]: '0x461c2b478178a199708b5a5cde1f3d4777eff002f8bffa4a9ec88c96d7546ff4',\n [Stage.SANDBOX]: '0xf780a50fba7bd68a613d81842e79abb55eb01d1d8cb37fc2ee9a137e0da2dd83',\n}\n\nexport const PACKAGE_WORKER_COMMON_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xd33a7a231aebbf1b3d82705e0c7a68d9a9b36edf9235062eafce909e58f33bac',\n [Stage.TESTNET]: '0x219b63e3d70a628f7e4728c663798788d3651b704d96a0e158d9a32f49975bb4',\n [Stage.SANDBOX]: '0x411a283dd2a7a719b86f1c8a255b993f6f30303ca9c46f044de58a00999d8049',\n}\n\nexport const OBJECT_ENDPOINT_V2_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x85bc4fc5934a8558dea9660db612b13985212b5327db7216f36bc001d48fda49',\n [Stage.TESTNET]: '0x63c99ce9839a3259f2299666157f639882e4911250ee3016d190fa6944561f98',\n [Stage.SANDBOX]: '0x673a089bbaf1b5cde81d6cc7eb513bb90c434ccceea966ce5fecf4c64833327c',\n}\n\nexport const OBJECT_SIMPLE_MESSAGE_LIB_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xffa3e7f7ec52de9653a21215ea9f1daef42df8827b2d602f17c7b8f94f66cc0d',\n [Stage.TESTNET]: '0xa48db6ccef9ebce87df4871f9a0490e1e0004425b04ef82e380de16d77bbd68c',\n [Stage.SANDBOX]: '0xd11dd85a46bc2cfc310a573e9a4bf2df4835678fa5d3cb4aad56720fd2fa4818',\n}\n\nexport const OBJECT_SIMPLE_MESSAGE_LIB_ADMIN_CAP_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x67e0f1fc2e910cd9609c9f894f09096307120c4361b87c231cf3d700f7de6064',\n [Stage.TESTNET]: '0x7cb055768413d84e12db194fe7d75895ad4af33c1f68a1e36567de4a2e9f9a1d',\n [Stage.SANDBOX]: '0xbbea16233a99ba150c49d76122823e34068fae44cfeae51ff95f400ee706f598',\n}\n\nexport const OBJECT_SIMPLE_MESSAGE_LIB_PTB_BUILDER_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x7fd9d7273fdfd00bd14631bc90ef4a0a0991577b9d5443a49beb10bdf6e83ccb',\n [Stage.TESTNET]: '0x86d10cc54dbe82be6d0cdd42fc463448242c5c74e769e5a5c3cbd7f81145ee5e',\n [Stage.SANDBOX]: '0xb5cedc783cee73694a258a709e9933109421d5d538b3c15342ab97e91b840d6d',\n}\n\nexport const OBJECT_ULN_302_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x8b8083bc0e96840f20d5d0488381ef1788dd5f8a668eb5c63faccad04092a7aa',\n [Stage.TESTNET]: '0xca3eb88711d4ab5587605439ea5b968d2ba1908b9162f34e9f116e5ec7edeb16',\n [Stage.SANDBOX]: '0x7b2325d0969a93132bc98ab055861b8b290de6adbeaf6f6c60a36d01ee90d887',\n}\n\nexport const OBJECT_ULN_302_ADMIN_CAP_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xe6aa7783d8ce5627b1fcf11566de881dbb19ef77c5ffa1e5f8f41f72cd461e95',\n [Stage.TESTNET]: '0xd819d08fcee7cd707bc3b5e81d4613c51e021921e6c654b3178ad66c4bbe20e1',\n [Stage.SANDBOX]: '0xacce14d2a735fc80ad045c1b5fd5839a94402561793b18c35a393e4cecb12633',\n}\n\nexport const OBJECT_ULN_302_VERIFICATION_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x7080ff946569bcdb73283d6287ee9d57692331625c13eebf0f1bdd878986333d',\n [Stage.TESTNET]: '0x898a41148ba0b90e7de598d95775ec886aa961ae3ee7a35436760a1736dce085',\n [Stage.SANDBOX]: '0x34626e9e9408632ebab96f0b1d0bfe3b858bbf592db76831313f1accdd9f23c4',\n}\n\nexport const OBJECT_ULN_302_PTB_BUILDER_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xe2ea3e67f82c382d37607a8b2c3bb148892e7e295c76700f2fa918a788ad116b',\n [Stage.TESTNET]: '0x9b23a4b6acc34d68469ed572402e30bbb0a8ac45c6a8176cd393726135b1e91d',\n [Stage.SANDBOX]: '0x82342772b2bad04bf955b3be09ece1753480a2ad792ecbf5cd9f5496c0f030e4',\n}\n\nexport const OBJECT_TREASURY_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x33dd631aced43bbef97e31a7d32aa7857aef0af45f688e39fc945a6ada42b0d6',\n [Stage.TESTNET]: '0x172c0be00589891ab0e788400d07a283e921f4c5be2eb576b9c9028667f429db',\n [Stage.SANDBOX]: '0xe3f994bc5e518da8b71ce8a2f1a342dbad38bb8d6d3b3c6b4f54bfde0bd2dbe9',\n}\n\nexport const OBJECT_TREASURY_ADMIN_CAP_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x543322809e60e1dee9eef525ba2e29d137b098e9cf8cde251084e9eb66b22403',\n [Stage.TESTNET]: '0x5d477160cab1a9c67278cc9cf1ba18ecabaab3dadc4ad12fa257bfde26f9d0c6',\n [Stage.SANDBOX]: '0x687a5e7b88aa06182251456e06668e1b1a2346e66711584d982e8774d4c36502',\n}\n\nexport const OBJECT_BLOCKED_MESSAGE_LIB_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x4e3e65cd51b786df83c6d0c345a65bdab6c034134de8a2faecc24353c4f2719e',\n [Stage.TESTNET]: '0x130cc395965b5ce13678931c64eb7544f299fcb983ab3edfe0dea1fda3ac42c1',\n [Stage.SANDBOX]: '0xb9fd9e28be59ecc2bcf4d89c209affdc353c420c6fde70dbee70eb0ec8a53774',\n}\n\nexport const OBJECT_BLOCKED_MESSAGE_LIB_PTB_BUILDER_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x6f4d38efbbd8f3671747ed4b8025c81964737bbc3aa08b7e28a5910bc54ea222',\n [Stage.TESTNET]: '0x412d39144ffb970b753c4323d37aeea790a1bc989aa7719fea07312c5375aeda',\n [Stage.SANDBOX]: '0x84f0929015395bd9de1096c38899e360dc22e34a22a78e1cc5654777b303ccb8',\n}\n\nexport const OBJECT_COUNTER_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x475a3b468b41650530a6991dfe661eefc5af7d49c08a8f00b36ce7bdec079fb6',\n [Stage.TESTNET]: '0x1569ca97dbd2a1d166ccffc889d34a7557858f2495120c239f6ed5695bec0244',\n [Stage.SANDBOX]: '0xd91d318734da31b578117dc63cfc9d9611833b251a963776fb75320db963c7b7',\n}\n\nexport const OBJECT_COUNTER_OAPP_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x8715f1204664aa3a9e54da051540256681d0fc624871de8cfac762b0a8bc1872',\n [Stage.TESTNET]: '0xf39755510363d8cdb14b51077bcba453fd83aa6e6a8a61b9824bf58493594d44',\n [Stage.SANDBOX]: '0x92fc6eda1b57a9d864865cfe74227fe54ff4332a0ec73704c5899afd8df25c73',\n}\n\nexport const OBJECT_COUNTER_ADMIN_CAP_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x19a370eb8c7bd47b750636fe8db1eb2a8c1468f29f4cdcb60144d4b68573252f',\n [Stage.TESTNET]: '0x22f25707bd1359b849684e9a5c7495450874b8f84bd1b097b1d001e6ef069606',\n [Stage.SANDBOX]: '0x73125e450652dc2f5b4deb1abd3607997180867a3901a1d120f703822c4c7261',\n}\n\nexport const OBJECT_ENDPOINT_ADMIN_CAP_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x4b670581c3e69b1308bd07fefcafc7f3cd8dfedfe928ee696a4335c5f74836a5',\n [Stage.TESTNET]: '0xd4ee737e4f4fff0a223b2ed8200d6dec4e2a740f8b653ab189bd2b714777ca6f',\n [Stage.SANDBOX]: '0x82108d37167b65732ec2433466f451252e39c7156c3bbd53871582c49474b336',\n}\n\nexport const OBJECT_ENDPOINT_PTB_BUILDER_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xde94709cc44a171f524c82c927448d26213f03daa00fa41ad39157a67a6183c2',\n [Stage.TESTNET]: '0x5b5db107c426b67d82af322a7c1b92118e1d120cc39a450a57fb9fc7c3a49964',\n [Stage.SANDBOX]: '0x708ad80639a0a4e4cfa7c32751c720402fc80b3740095e30d4d546fd70c58b3e',\n}\n\nexport const OBJECT_ENDPOINT_PTB_BUILDER_ADMIN_CAP_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x0b47b611d41cc61a64a8cb8d5881fd5f0db8e3fa68058063b61ab8a86a27da6e',\n [Stage.TESTNET]: '0x64cb9ee799ea0de581be7cf6956d91012969f255783af74b49e6a560bc21b438',\n [Stage.SANDBOX]: '0xef6495e2d9a15b8e75e0ed6dd93c86f193b45bbbda5ba048be18bfe9e78b2e77',\n}\n\nexport const OBJECT_DVN_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x75b513e1474a6c51e0eb941c575ed770eecd30ffce9cad029c911ab780789ba7',\n [Stage.TESTNET]: '0x38eae904a49f930f7115ff1b6470715e5ba0f55cdf8d4b49a3e3793eff9d2427',\n [Stage.SANDBOX]: '0x1b3ac57c14b40d3e620cf76158ebec2fff46aa0f99bc8056c9b9d8e99613a347',\n}\n\nexport const OBJECT_DVN_CAP_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x48756a15372d76fd4bbc33092b68604470760f7667ee06d8261fbc7a6a58a200',\n [Stage.TESTNET]: '0x4ea35fdffb8a7ba83d22431236f1cf237c26ba459c3a0a70862b7cc180b7360c',\n [Stage.SANDBOX]: '0xada77cda0f37c32402d99b84af827f9db29f050e0dec5acc3db527345bbbefad',\n}\n\nexport const OBJECT_DVN_FEE_LIB_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x05b032d805bc6af775eb83890ee5fc8c712facac851a8b13d4a85c725872a934',\n [Stage.TESTNET]: '0xea02e95cef21b9e511ab4ceb79831ec6be44a67300e2d52c559b6a346ac37d5c',\n [Stage.SANDBOX]: '0x489f6946c515fda761c08f9422d7708066d7345684e8d872be4d2acf1f33ff6f',\n}\n\nexport const OBJECT_EXECUTOR_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x87862030fcd8cb44e67ee8ea02506e28290b6e0669e75efb8c09d587a40438f6',\n [Stage.TESTNET]: '0xa2eb5f1df687dc901dbcc1bf174a105fac158d1fac633cd109e800c0923d8a55',\n [Stage.SANDBOX]: '0xcde4d609292ac9bcfc5c78825a7cfc9b34c352cacdc19fb689c9ca5e64133a24',\n}\n\nexport const OBJECT_EXECUTOR_CAP_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xbc23672d1a280dcdd23e134810ce97026365518836c3ed6fd36eabf9c6bf12f3',\n [Stage.TESTNET]: '0xf7ab24b540b94151989db2fe6e929d1fa008fd671f6021bdffa0feff1d672094',\n [Stage.SANDBOX]: '0x929df673ebcee9b9fabb5640989865e79f98aa73f3906f902591bcfd9e9a0a3c',\n}\n\nexport const OBJECT_EXECUTOR_OWNER_CAP_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x970adbe155b57f92cf0a4b1995cf8e5f492f27009e6fe9317d4925814d8bf681',\n [Stage.TESTNET]: '0x5fdee24419b650b6abed341155b36b3387ebb84bbb2c9772cd5f7b3cdabb18b0',\n [Stage.SANDBOX]: '0x4cac390300508a374d4037beef725d745958deed699d15f3b83a3c304f663d50',\n}\n\nexport const OBJECT_EXECUTOR_FEE_LIB_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x9d032d974f45519d4f6c0aa023361281e9cff0a78a8c286fe5000b3646e1cef6',\n [Stage.TESTNET]: '0x4164680bd255efae23fd420687e162ec50523f0bd55d0d87de33bd96c59a6396',\n [Stage.SANDBOX]: '0x611f1251a4af52419bdd46a3efa4506456abfee36fa798846889d54e88a3a07f',\n}\n\nexport const OBJECT_PRICE_FEED_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x2c4a9f9e55bcbf0ddb9b3a3caf6f39b9c719b39629c2c2b284c8b5d5e5cd8c1d',\n [Stage.TESTNET]: '0xfbb2014cd2babdc54d33c5980d13de169a55722f9ad686180438a6cd7b536928',\n [Stage.SANDBOX]: '0xfae092b61bdb81963c2a65a8e8ca7c4e144f02a75cfcf77c2fb6ae638e44980a',\n}\n\nexport const OBJECT_PRICE_FEED_OWNER_CAP_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0xba49e5f85bc59a40583f27674eafbcb907c2b49583ed908b4a0afaf7651fc675',\n [Stage.TESTNET]: '0x28acc246c5693f83415b9a4ba345e43865470e2b34d8e060f23e3167ad2f6cff',\n [Stage.SANDBOX]: '0x354df6dd296f0380fdf104b411dc404e73ce87031e574cd38edf125cc8e33869',\n}\n\nexport const OBJECT_PACKAGE_WHITELIST_VALIDATOR_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x586fed1d31f45658d94faa386be82264b0485f8cb2f1ca092da90a255cbd580b',\n [Stage.TESTNET]: '0x1270e2859c59f141e618d4e39bd75aaba244e6da01ed4df1cfaa8b4522dd767d',\n [Stage.SANDBOX]: '0x36125f73530e7093400c4f5dcb70253f4c3c1fac4a30f57fb15bbe07c309c3ff',\n}\n\nexport const OBJECT_WORKER_REGISTRY_ADDRESS: { [stage in Stage]?: string } = {\n [Stage.MAINNET]: '0x224d6b1846351c4c6a0869f071739ea1ba8fe6f3c7d53f26ed0807fdde829da1',\n [Stage.TESTNET]: '0xdc75bd7cadcb930660e398c4a44bb94bc43df6df2edae48a317819450881c519',\n [Stage.SANDBOX]: '0x2d63558ea28706576102717e52797b71f8962e84e3e7477894e2004017d6b586',\n}\n","import { Stage } from '@layerzerolabs/lz-definitions'\n\nimport * as AddressConstants from './generated/addresses'\nimport { ObjectOptions, PackageOptions } from './types'\n\n/**\n * Address mapping configuration for packages\n */\nconst PACKAGE_ADDRESS_MAP: { [K in keyof PackageOptions]: Partial<{ [S in Stage]: string }> } = {\n utils: AddressConstants.PACKAGE_UTILS_ADDRESS,\n endpointV2: AddressConstants.PACKAGE_ENDPOINT_V2_ADDRESS,\n counterV2: AddressConstants.PACKAGE_COUNTER_V2_ADDRESS,\n simpleMessageLib: AddressConstants.PACKAGE_SIMPLE_MESSAGE_LIB_ADDRESS,\n uln302: AddressConstants.PACKAGE_ULN_302_ADDRESS,\n uln302PtbBuilder: AddressConstants.PACKAGE_ULN_302_PTB_BUILDER_ADDRESS,\n blockedMessageLib: AddressConstants.PACKAGE_BLOCKED_MESSAGE_LIB_ADDRESS,\n blockedMessageLibPtbBuilder: AddressConstants.PACKAGE_BLOCKED_MESSAGE_LIB_PTB_BUILDER_ADDRESS,\n dvnPtbBuilder: AddressConstants.PACKAGE_DVN_PTB_BUILDER_ADDRESS,\n executorPtbBuilder: AddressConstants.PACKAGE_EXECUTOR_PTB_BUILDER_ADDRESS,\n executor: AddressConstants.PACKAGE_EXECUTOR_ADDRESS,\n zro: AddressConstants.PACKAGE_ZRO_ADDRESS,\n call: AddressConstants.PACKAGE_CALL_ADDRESS,\n endpointPtbBuilder: AddressConstants.PACKAGE_ENDPOINT_PTB_BUILDER_ADDRESS,\n simpleMessageLibPtbBuilder: AddressConstants.PACKAGE_SIMPLE_MESSAGE_LIB_PTB_BUILDER_ADDRESS,\n ptbMoveCall: AddressConstants.PACKAGE_PTB_MOVE_CALL_ADDRESS,\n dvn: AddressConstants.PACKAGE_DVN_ADDRESS,\n dvnFeeLib: AddressConstants.PACKAGE_DVN_FEE_LIB_ADDRESS,\n dvnLayerzero: AddressConstants.PACKAGE_DVN_LAYERZERO_ADDRESS,\n executorFeeLib: AddressConstants.PACKAGE_EXECUTOR_FEE_LIB_ADDRESS,\n executorLayerzero: AddressConstants.PACKAGE_EXECUTOR_LAYERZERO_ADDRESS,\n priceFeed: AddressConstants.PACKAGE_PRICE_FEED_ADDRESS,\n treasury: AddressConstants.PACKAGE_TREASURY_ADDRESS,\n oapp: AddressConstants.PACKAGE_OAPP_ADDRESS,\n layerzeroViews: AddressConstants.PACKAGE_LAYERZERO_VIEWS_ADDRESS,\n packageWhitelistValidator: AddressConstants.PACKAGE_PACKAGE_WHITELIST_VALIDATOR_ADDRESS,\n workerRegistry: AddressConstants.PACKAGE_WORKER_REGISTRY_ADDRESS,\n workerCommon: AddressConstants.PACKAGE_WORKER_COMMON_ADDRESS,\n}\n\n/**\n * Address mapping configuration for objects\n */\nconst OBJECT_ADDRESS_MAP: { [K in keyof ObjectOptions]: Partial<{ [S in Stage]: string }> } = {\n endpointV2: AddressConstants.OBJECT_ENDPOINT_V2_ADDRESS,\n simpleMessageLib: AddressConstants.OBJECT_SIMPLE_MESSAGE_LIB_ADDRESS,\n simpleMessageLibAdminCap: AddressConstants.OBJECT_SIMPLE_MESSAGE_LIB_ADMIN_CAP_ADDRESS,\n simpleMessageLibPtbBuilder: AddressConstants.OBJECT_SIMPLE_MESSAGE_LIB_PTB_BUILDER_ADDRESS,\n uln302: AddressConstants.OBJECT_ULN_302_ADDRESS,\n uln302AdminCap: AddressConstants.OBJECT_ULN_302_ADMIN_CAP_ADDRESS,\n uln302PtbBuilder: AddressConstants.OBJECT_ULN_302_PTB_BUILDER_ADDRESS,\n uln302Verification: AddressConstants.OBJECT_ULN_302_VERIFICATION_ADDRESS,\n treasury: AddressConstants.OBJECT_TREASURY_ADDRESS,\n treasuryAdminCap: AddressConstants.OBJECT_TREASURY_ADMIN_CAP_ADDRESS,\n blockedMessageLib: AddressConstants.OBJECT_BLOCKED_MESSAGE_LIB_ADDRESS,\n blockedMessageLibPtbBuilder: AddressConstants.OBJECT_BLOCKED_MESSAGE_LIB_PTB_BUILDER_ADDRESS,\n counter: AddressConstants.OBJECT_COUNTER_ADDRESS,\n counterOapp: AddressConstants.OBJECT_COUNTER_OAPP_ADDRESS,\n counterAdminCap: AddressConstants.OBJECT_COUNTER_ADMIN_CAP_ADDRESS,\n endpointAdminCap: AddressConstants.OBJECT_ENDPOINT_ADMIN_CAP_ADDRESS,\n endpointPtbBuilder: AddressConstants.OBJECT_ENDPOINT_PTB_BUILDER_ADDRESS,\n endpointPtbBuilderAdminCap: AddressConstants.OBJECT_ENDPOINT_PTB_BUILDER_ADMIN_CAP_ADDRESS,\n dvn: AddressConstants.OBJECT_DVN_ADDRESS,\n dvnCap: AddressConstants.OBJECT_DVN_CAP_ADDRESS,\n dvnFeeLib: AddressConstants.OBJECT_DVN_FEE_LIB_ADDRESS,\n executor: AddressConstants.OBJECT_EXECUTOR_ADDRESS,\n executorCap: AddressConstants.OBJECT_EXECUTOR_CAP_ADDRESS,\n executorOwnerCap: AddressConstants.OBJECT_EXECUTOR_OWNER_CAP_ADDRESS,\n executorFeeLib: AddressConstants.OBJECT_EXECUTOR_FEE_LIB_ADDRESS,\n priceFeed: AddressConstants.OBJECT_PRICE_FEED_ADDRESS,\n priceFeedOwnerCap: AddressConstants.OBJECT_PRICE_FEED_OWNER_CAP_ADDRESS,\n packageWhitelistValidator: AddressConstants.OBJECT_PACKAGE_WHITELIST_VALIDATOR_ADDRESS,\n workerRegistry: AddressConstants.OBJECT_WORKER_REGISTRY_ADDRESS,\n}\n\n/**\n * Simple Resource Manager for address resolution\n */\nexport class ResourceManager {\n /**\n * Build package configuration with address mappings for a given stage\n */\n static mergeDefaultPackageConfig(stage: Stage, customPackages?: Partial<PackageOptions>): PackageOptions {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const config = {} as PackageOptions\n for (const [key, stageMap] of Object.entries(PACKAGE_ADDRESS_MAP)) {\n const typedKey = key as keyof PackageOptions\n config[typedKey] = stageMap[stage] ?? ''\n }\n return { ...config, ...customPackages }\n }\n\n /**\n * Build object configuration with address mappings for a given stage\n */\n static mergeDefaultObjectConfig(stage: Stage, customObjects?: Partial<ObjectOptions>): ObjectOptions {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n const config = {} as ObjectOptions\n for (const [key, stageMap] of Object.entries(OBJECT_ADDRESS_MAP)) {\n const typedKey = key as keyof ObjectOptions\n config[typedKey] = stageMap[stage] ?? ''\n }\n return { ...config, ...customObjects }\n }\n}\n","import { IotaClient } from '@iota/iota-sdk/client'\n\nimport { Chain, Stage } from '@layerzerolabs/lz-definitions'\n\nimport { ModuleManager } from './module-manager'\nimport {\n BlockedMessageLib,\n BlockedMessageLibPtbBuilder,\n Call,\n Counter,\n DVN,\n DVNFeeLib,\n DvnLayerZero,\n DvnPtbBuilder,\n Endpoint,\n EndpointPtbBuilder,\n Executor,\n ExecutorFeeLib,\n ExecutorLayerZero,\n ExecutorPtbBuilder,\n LayerZeroViews,\n OApp,\n PackageWhitelistValidator,\n PriceFeed,\n PtbBuilder,\n SimpleMessageLib,\n SimpleMessageLibPtbBuilder,\n Treasury,\n Uln302,\n Uln302PtbBuilder,\n Utils,\n WorkerRegistry,\n Zro,\n} from './modules'\nimport { ResourceManager } from './resource'\nimport { ModuleOptions, ObjectOptions, PackageOptions, SdkOptions } from './types'\n\nexport * from './generated/addresses'\n\n/**\n * The SDK class provides methods to interact with LayerZero on Iota.\n * Uses ModuleManager for centralized module management.\n */\nexport class SDK {\n public chain: Chain\n public stage: Stage\n public client: IotaClient\n public packages: PackageOptions\n public objects: ObjectOptions\n private moduleManager: ModuleManager\n\n /**\n * Creates an instance of the SDK.\n */\n constructor(options: SdkOptions) {\n this.chain = options.chain ?? Chain.IOTAL1\n this.stage = options.stage ?? Stage.MAINNET\n this.client = options.client\n\n this.packages = ResourceManager.mergeDefaultPackageConfig(this.stage, options.packages)\n this.objects = ResourceManager.mergeDefaultObjectConfig(this.stage, options.objects)\n\n // Initialize all standard modules\n this.moduleManager = new ModuleManager(this.packages, this.objects)\n this.moduleManager.initializeCoreModules(this.packages, this.objects, this.client)\n }\n\n // === Core Module Getters (from ModuleManager) ===\n\n getEndpoint(): Endpoint {\n return this.moduleManager.getEndpoint()\n }\n\n getSimpleMessageLib(): SimpleMessageLib {\n return this.moduleManager.getSimpleMessageLib()\n }\n\n getBlockedMessageLib(): BlockedMessageLib {\n return this.moduleManager.getBlockedMessageLib()\n }\n\n getUln302(): Uln302 {\n return this.moduleManager.getUln302()\n }\n\n getUtils(): Utils {\n return this.moduleManager.getUtils()\n }\n\n getZro(): Zro {\n return this.moduleManager.getZro()\n }\n\n getCall(): Call {\n return this.moduleManager.getCall()\n }\n\n getPtbBuilder(): PtbBuilder {\n return this.moduleManager.getPtbBuilder()\n }\n\n getTreasury(): Treasury {\n return this.moduleManager.getTreasury()\n }\n\n getLayerZeroViews(): LayerZeroViews {\n return this.moduleManager.getLayerZeroViews()\n }\n\n getOApp(callCapId: string, options?: ModuleOptions): OApp {\n return this.moduleManager.getOApp(this.client, callCapId, options)\n }\n\n // === Non-Core Module Getters (created on-demand with caching) ===\n\n getCounter(options?: ModuleOptions): Counter {\n return this.moduleManager.getCounter(this.client, options)\n }\n\n getExecutor(options?: ModuleOptions): Executor {\n return this.moduleManager.getExecutor(this.client, options)\n }\n\n getDvn(options?: ModuleOptions): DVN {\n return this.moduleManager.getDvn(this.client, options)\n }\n\n getDvnFeeLib(options?: ModuleOptions): DVNFeeLib {\n return this.moduleManager.getDvnFeeLib(this.client, options)\n }\n\n getExecutorFeeLib(options?: ModuleOptions): ExecutorFeeLib {\n return this.moduleManager.getExecutorFeeLib(this.client, options)\n }\n\n getPriceFeed(options?: ModuleOptions): PriceFeed {\n return this.moduleManager.getPriceFeed(this.client, options)\n }\n\n getDvnLayerZero(options?: ModuleOptions): DvnLayerZero {\n return this.moduleManager.getDvnLayerZero(this.client, options)\n }\n\n getExecutorLayerZero(options?: ModuleOptions): ExecutorLayerZero {\n return this.moduleManager.getExecutorLayerZero(this.client, options)\n }\n\n getDvnPtbBuilder(options?: ModuleOptions): DvnPtbBuilder {\n return this.moduleManager.getDvnPtbBuilder(this.client, options)\n }\n\n getExecutorPtbBuilder(options?: ModuleOptions): ExecutorPtbBuilder {\n return this.moduleManager.getExecutorPtbBuilder(this.client, options)\n }\n\n getPackageWhitelistValidator(options?: ModuleOptions): PackageWhitelistValidator {\n return this.moduleManager.getPackageWhitelistValidator(this.client, options)\n }\n\n getUln302PtbBuilder(options?: ModuleOptions): Uln302PtbBuilder {\n return this.moduleManager.getUln302PtbBuilder(this.client, options)\n }\n\n getEndpointPtbBuilder(options?: ModuleOptions): EndpointPtbBuilder {\n return this.moduleManager.getEndpointPtbBuilder(this.client, options)\n }\n\n getSimpleMessageLibPtbBuilder(options?: ModuleOptions): SimpleMessageLibPtbBuilder {\n return this.moduleManager.getSimpleMessageLibPtbBuilder(this.client, options)\n }\n\n getBlockedMessageLibPtbBuilder(options?: ModuleOptions): BlockedMessageLibPtbBuilder {\n return this.moduleManager.getBlockedMessageLibPtbBuilder(this.client, options)\n }\n\n getWorkerRegistry(options?: ModuleOptions): WorkerRegistry {\n return this.moduleManager.getWorkerRegistry(this.client, options)\n }\n\n getOrCreateModule<T>(moduleName: string, options: ModuleOptions | undefined, factory: () => T): T {\n return this.moduleManager.getOrCreateModule(moduleName, options, factory)\n }\n}\n"]}