@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,458 @@
1
+ import { bcs } from '@iota/iota-sdk/bcs'
2
+ import { IotaClient } from '@iota/iota-sdk/client'
3
+ import { Transaction, TransactionArgument, TransactionResult } from '@iota/iota-sdk/transactions'
4
+
5
+ import { EndpointId } from '@layerzerolabs/lz-definitions'
6
+
7
+ import { ModuleManager } from '../../module-manager'
8
+ import { MessagingFee, ObjectOptions } from '../../types'
9
+ import {
10
+ IPTBValidator,
11
+ asAddress,
12
+ asBool,
13
+ asBytes,
14
+ asBytes32,
15
+ asU32,
16
+ asU64,
17
+ asU8,
18
+ executeSimulate,
19
+ isTransactionArgument,
20
+ } from '../../utils'
21
+
22
+ const MODULE_NAME = 'counter'
23
+
24
+ export const CounterErrorCode = {
25
+ // Counter related errors (matching counter.move)
26
+ Counter_EInvalidMsgType: 0,
27
+ Counter_EInvalidValue: 1,
28
+ Counter_EInvalidNonce: 2,
29
+ Counter_EOnlyEndpoint: 3,
30
+ Counter_ESelfComposeOnly: 4,
31
+ Counter_EInvalidOApp: 5,
32
+
33
+ // OptionsBuilder related errors (matching options_builder.move)
34
+ OptionsBuilder_EInvalidSize: 1,
35
+ } as const
36
+
37
+ export class Counter {
38
+ public packageId: string
39
+ public readonly client: IotaClient
40
+ private readonly objects: ObjectOptions
41
+
42
+ constructor(
43
+ packageId: string,
44
+ client: IotaClient,
45
+ objects: ObjectOptions,
46
+ private readonly moduleManager: ModuleManager
47
+ ) {
48
+ this.packageId = packageId
49
+ this.client = client
50
+ this.objects = objects
51
+ }
52
+
53
+ // === Set Functions ===
54
+
55
+ /**
56
+ * Initialize counter with LayerZero receive and compose information
57
+ * @param tx - The transaction to add the move call to
58
+ * @param lzReceiveInfo - LayerZero receive information transaction argument
59
+ * @param lzComposeInfo - LayerZero compose information transaction argument
60
+ */
61
+ initCounterMoveCall(tx: Transaction, lzReceiveInfo: TransactionArgument, lzComposeInfo: TransactionArgument): void {
62
+ tx.moveCall({
63
+ target: this.#target('init_counter'),
64
+ arguments: [
65
+ tx.object(this.objects.counter),
66
+ tx.object(this.objects.counterOapp),
67
+ tx.object(this.objects.counterAdminCap),
68
+ tx.object(this.objects.endpointV2),
69
+ lzReceiveInfo,
70
+ lzComposeInfo,
71
+ ],
72
+ })
73
+ }
74
+
75
+ /**
76
+ * Quote messaging fees for sending counter increment
77
+ * @param dstEid - Destination endpoint ID
78
+ * @param msgType - Message type (SEND or SEND_AND_CALL)
79
+ * @param options - Execution options as bytes
80
+ * @param payInZero - Whether to pay in ZRO tokens
81
+ * @returns Promise<MessagingFee> - The calculated messaging fees
82
+ */
83
+ async quote(
84
+ dstEid: EndpointId | TransactionArgument,
85
+ msgType: number | TransactionArgument,
86
+ options: Uint8Array | TransactionArgument,
87
+ payInZero: boolean | TransactionArgument,
88
+ validators?: IPTBValidator[]
89
+ ): Promise<MessagingFee> {
90
+ const tx = new Transaction()
91
+ const quoteCall = tx.moveCall({
92
+ target: this.#target('quote'),
93
+ arguments: [
94
+ tx.object(this.objects.counter),
95
+ tx.object(this.objects.counterOapp),
96
+ asU32(tx, dstEid),
97
+ asU8(tx, msgType),
98
+ asBytes(tx, options),
99
+ asBool(tx, payInZero),
100
+ ],
101
+ })
102
+ return this.moduleManager.getEndpoint().quote(tx, quoteCall, undefined, validators)
103
+ }
104
+
105
+ /**
106
+ * Increment counter on destination chain
107
+ * @param tx - The transaction to add the move call to
108
+ * @param sender - Sender address for ZRO token operations
109
+ * @param dstEid - Destination endpoint ID
110
+ * @param msgType - Message type (SEND or SEND_AND_CALL)
111
+ * @param options - Execution options as bytes
112
+ * @param nativeFee - Native token fee amount
113
+ * @param zroFee - ZRO token fee amount
114
+ * @param refundAddress - Address for fee refunds
115
+ */
116
+ async incrementMoveCall(
117
+ tx: Transaction,
118
+ sender: string,
119
+ dstEid: EndpointId | TransactionArgument,
120
+ msgType: number | TransactionArgument,
121
+ options: Uint8Array | TransactionArgument,
122
+ nativeFee: bigint | TransactionArgument,
123
+ zroFee: bigint | TransactionArgument,
124
+ refundAddress: string | TransactionArgument,
125
+ validators?: IPTBValidator[]
126
+ ): Promise<void> {
127
+ const [nativeToken] = tx.splitCoins(tx.gas, [asU64(tx, nativeFee)])
128
+ const zroToken = isTransactionArgument(zroFee)
129
+ ? zroFee
130
+ : await this.moduleManager.getZro().splitOptionZroTokenMoveCall(tx, sender, zroFee)
131
+ const incrementCall = tx.moveCall({
132
+ target: this.#target('increment'),
133
+ arguments: [
134
+ tx.object(this.objects.counter),
135
+ tx.object(this.objects.counterOapp),
136
+ asU32(tx, dstEid),
137
+ asU8(tx, msgType),
138
+ asBytes(tx, options),
139
+ nativeToken,
140
+ zroToken,
141
+ asAddress(tx, refundAddress),
142
+ ],
143
+ })
144
+ await this.moduleManager.getEndpoint().populateSendTransaction(tx, incrementCall, sender, validators)
145
+ }
146
+
147
+ /**
148
+ * Set composer information for counter
149
+ * @param tx - The transaction to add the move call to
150
+ * @param composerInfo - Composer information including lz_compose execution information as bytes
151
+ */
152
+ setComposerInfoMoveCall(tx: Transaction, composerInfo: Uint8Array | TransactionArgument): void {
153
+ tx.moveCall({
154
+ target: this.#target('set_composer_info'),
155
+ arguments: [
156
+ tx.object(this.objects.counter),
157
+ tx.object(this.objects.counterOapp),
158
+ tx.object(this.objects.counterAdminCap),
159
+ tx.object(this.objects.endpointV2),
160
+ asBytes(tx, composerInfo),
161
+ ],
162
+ })
163
+ }
164
+
165
+ // === View Functions ===
166
+
167
+ /**
168
+ * Get counter EID
169
+ * @param tx - The transaction to add the move call to
170
+ * @returns Transaction result containing the counter EID
171
+ */
172
+ getEidMoveCall(tx: Transaction): TransactionResult {
173
+ return tx.moveCall({
174
+ target: this.#target('eid'),
175
+ arguments: [tx.object(this.objects.counter)],
176
+ })
177
+ }
178
+
179
+ /**
180
+ * Get counter EID
181
+ * @returns Promise<number> - The counter EID
182
+ */
183
+ async getEid(): Promise<number> {
184
+ return executeSimulate(
185
+ this.client,
186
+ (tx) => {
187
+ this.getEidMoveCall(tx)
188
+ },
189
+ (result) => bcs.U32.parse(result[0].value)
190
+ )
191
+ }
192
+
193
+ /**
194
+ * Get call capability address for counter
195
+ * @param tx - The transaction to add the move call to
196
+ * @returns Transaction result containing the call capability address
197
+ */
198
+ getCallCapAddressMoveCall(tx: Transaction): TransactionResult {
199
+ return tx.moveCall({
200
+ target: this.#target('call_cap_address'),
201
+ arguments: [tx.object(this.objects.counter)],
202
+ })
203
+ }
204
+
205
+ /**
206
+ * Get call capability address for counter
207
+ * @returns Promise<string> - The call capability address
208
+ */
209
+ async getCallCapAddress(): Promise<string> {
210
+ return executeSimulate(
211
+ this.client,
212
+ (tx) => {
213
+ this.getCallCapAddressMoveCall(tx)
214
+ },
215
+ (result) => bcs.Address.parse(result[0].value)
216
+ )
217
+ }
218
+
219
+ /**
220
+ * Get composer address for counter
221
+ * @param tx - The transaction to add the move call to
222
+ * @returns Transaction result containing the composer address
223
+ */
224
+ getComposerAddressMoveCall(tx: Transaction): TransactionResult {
225
+ return tx.moveCall({
226
+ target: this.#target('composer_address'),
227
+ arguments: [tx.object(this.objects.counter)],
228
+ })
229
+ }
230
+
231
+ /**
232
+ * Get composer address for counter
233
+ * @returns Promise<string> - The composer address
234
+ */
235
+ async getComposerAddress(): Promise<string> {
236
+ return executeSimulate(
237
+ this.client,
238
+ (tx) => {
239
+ this.getComposerAddressMoveCall(tx)
240
+ },
241
+ (result) => bcs.Address.parse(result[0].value)
242
+ )
243
+ }
244
+
245
+ /**
246
+ * Get current counter value
247
+ * @param tx - The transaction to add the move call to
248
+ * @returns Transaction result containing the counter value
249
+ */
250
+ getCountMoveCall(tx: Transaction): TransactionResult {
251
+ return tx.moveCall({
252
+ target: this.#target('get_count'),
253
+ arguments: [tx.object(this.objects.counter)],
254
+ })
255
+ }
256
+
257
+ /**
258
+ * Get current counter value
259
+ * @returns Promise<number> - The current counter value
260
+ */
261
+ async getCount(): Promise<number> {
262
+ return executeSimulate(
263
+ this.client,
264
+ (tx) => {
265
+ this.getCountMoveCall(tx)
266
+ },
267
+ (result) => Number(bcs.U64.parse(result[0].value))
268
+ )
269
+ }
270
+
271
+ /**
272
+ * Get composed counter value
273
+ * @param tx - The transaction to add the move call to
274
+ * @returns Transaction result containing the composed counter value
275
+ */
276
+ getComposedCountMoveCall(tx: Transaction): TransactionResult {
277
+ return tx.moveCall({
278
+ target: this.#target('get_composed_count'),
279
+ arguments: [tx.object(this.objects.counter)],
280
+ })
281
+ }
282
+
283
+ /**
284
+ * Get composed counter value
285
+ * @returns Promise<number> - The composed counter value
286
+ */
287
+ async getComposedCount(): Promise<number> {
288
+ return executeSimulate(
289
+ this.client,
290
+ (tx) => {
291
+ this.getComposedCountMoveCall(tx)
292
+ },
293
+ (result) => Number(bcs.U64.parse(result[0].value))
294
+ )
295
+ }
296
+
297
+ /**
298
+ * Get outbound counter value for a destination
299
+ * @param tx - The transaction to add the move call to
300
+ * @param dstEid - Destination endpoint ID
301
+ * @returns Transaction result containing the outbound counter value
302
+ */
303
+ getOutboundCountMoveCall(tx: Transaction, dstEid: number | TransactionArgument): TransactionResult {
304
+ return tx.moveCall({
305
+ target: this.#target('get_outbound_count'),
306
+ arguments: [tx.object(this.objects.counter), asU32(tx, dstEid)],
307
+ })
308
+ }
309
+
310
+ /**
311
+ * Get outbound counter value for a destination
312
+ * @param dstEid - Destination endpoint ID
313
+ * @returns Promise<number> - The outbound counter value
314
+ */
315
+ async getOutboundCount(dstEid: number): Promise<number> {
316
+ return executeSimulate(
317
+ this.client,
318
+ (tx) => {
319
+ this.getOutboundCountMoveCall(tx, dstEid)
320
+ },
321
+ (result) => Number(bcs.U64.parse(result[0].value))
322
+ )
323
+ }
324
+
325
+ /**
326
+ * Get inbound counter value from a source
327
+ * @param tx - The transaction to add the move call to
328
+ * @param srcEid - Source endpoint ID
329
+ * @returns Transaction result containing the inbound counter value
330
+ */
331
+ getInboundCountMoveCall(tx: Transaction, srcEid: number | TransactionArgument): TransactionResult {
332
+ return tx.moveCall({
333
+ target: this.#target('get_inbound_count'),
334
+ arguments: [tx.object(this.objects.counter), asU32(tx, srcEid)],
335
+ })
336
+ }
337
+
338
+ /**
339
+ * Get inbound counter value from a source
340
+ * @param srcEid - Source endpoint ID
341
+ * @returns Promise<number> - The inbound counter value
342
+ */
343
+ async getInboundCount(srcEid: number): Promise<number> {
344
+ return executeSimulate(
345
+ this.client,
346
+ (tx) => {
347
+ this.getInboundCountMoveCall(tx, srcEid)
348
+ },
349
+ (result) => Number(bcs.U64.parse(result[0].value))
350
+ )
351
+ }
352
+
353
+ nextNonceMoveCall(
354
+ tx: Transaction,
355
+ srcEid: number | TransactionArgument,
356
+ sender: Uint8Array | TransactionArgument
357
+ ): TransactionResult {
358
+ return tx.moveCall({
359
+ target: this.#target('next_nonce'),
360
+ arguments: [
361
+ tx.object(this.objects.counter),
362
+ asU32(tx, srcEid),
363
+ asBytes32(tx, sender, this.moduleManager.getUtils()),
364
+ ],
365
+ })
366
+ }
367
+
368
+ async nextNonce(srcEid: number, sender: Uint8Array): Promise<number> {
369
+ return executeSimulate(
370
+ this.client,
371
+ (tx) => {
372
+ this.nextNonceMoveCall(tx, srcEid, sender)
373
+ },
374
+ (result) => Number(bcs.U64.parse(result[0].value))
375
+ )
376
+ }
377
+
378
+ getMaxReceivedNonceMoveCall(
379
+ tx: Transaction,
380
+ srcEid: number | TransactionArgument,
381
+ sender: Uint8Array | TransactionArgument
382
+ ): TransactionResult {
383
+ return tx.moveCall({
384
+ target: this.#target('get_max_received_nonce'),
385
+ arguments: [
386
+ tx.object(this.objects.counter),
387
+ asU32(tx, srcEid),
388
+ asBytes32(tx, sender, this.moduleManager.getUtils()),
389
+ ],
390
+ })
391
+ }
392
+
393
+ async getMaxReceivedNonce(srcEid: number, sender: Uint8Array): Promise<number> {
394
+ return executeSimulate(
395
+ this.client,
396
+ (tx) => {
397
+ this.getMaxReceivedNonceMoveCall(tx, srcEid, sender)
398
+ },
399
+ (result) => Number(bcs.U64.parse(result[0].value))
400
+ )
401
+ }
402
+
403
+ isOrderedNonceMoveCall(tx: Transaction): TransactionResult {
404
+ return tx.moveCall({
405
+ target: this.#target('is_ordered_nonce'),
406
+ arguments: [tx.object(this.objects.counter)],
407
+ })
408
+ }
409
+
410
+ async isOrderedNonce(): Promise<boolean> {
411
+ return executeSimulate(
412
+ this.client,
413
+ (tx) => {
414
+ this.isOrderedNonceMoveCall(tx)
415
+ },
416
+ (result) => bcs.Bool.parse(result[0].value)
417
+ )
418
+ }
419
+
420
+ // === PTB Builder Functions ===
421
+
422
+ lzReceiveInfoMoveCall(tx: Transaction): TransactionResult {
423
+ return tx.moveCall({
424
+ target: this.#target('lz_receive_info', 'counter_ptb_builder'),
425
+ arguments: [
426
+ tx.object(this.objects.counter),
427
+ tx.object(this.objects.counterOapp),
428
+ tx.object(this.objects.endpointV2),
429
+ tx.object(this.objects.endpointPtbBuilder),
430
+ ],
431
+ })
432
+ }
433
+
434
+ lzComposeInfoMoveCall(tx: Transaction): TransactionResult {
435
+ return tx.moveCall({
436
+ target: this.#target('lz_compose_info', 'counter_ptb_builder'),
437
+ arguments: [
438
+ tx.object(this.objects.counter),
439
+ tx.object(this.objects.counterOapp),
440
+ tx.object(this.objects.endpointV2),
441
+ tx.object(this.objects.endpointPtbBuilder),
442
+ ],
443
+ })
444
+ }
445
+
446
+ // === Private Functions ===
447
+
448
+ /**
449
+ * Generate the full target path for move calls
450
+ * @param name - The function name to call
451
+ * @param module_name - The module name (defaults to 'counter')
452
+ * @returns The full module path for the move call
453
+ * @private
454
+ */
455
+ #target(name: string, module_name = MODULE_NAME): string {
456
+ return `${this.packageId}::${module_name}::${name}`
457
+ }
458
+ }
@@ -0,0 +1,3 @@
1
+ // OApp application modules
2
+ export * from './counter'
3
+ export * from './oapp'