@layerzerolabs/protocol-starknet-v2 0.0.34

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 (504) hide show
  1. package/.turbo/turbo-build.log +186 -0
  2. package/.turbo/turbo-lint.log +71 -0
  3. package/.turbo/turbo-test.log +937 -0
  4. package/README.md +41 -0
  5. package/Scarb.lock +211 -0
  6. package/Scarb.toml +2 -0
  7. package/dist/4XD3ZRZ4.cjs +301 -0
  8. package/dist/4XD3ZRZ4.cjs.map +1 -0
  9. package/dist/4Z5IPBC3.js +299 -0
  10. package/dist/4Z5IPBC3.js.map +1 -0
  11. package/dist/5NEZDLVQ.cjs +474 -0
  12. package/dist/5NEZDLVQ.cjs.map +1 -0
  13. package/dist/6JYCOKDE.js +472 -0
  14. package/dist/6JYCOKDE.js.map +1 -0
  15. package/dist/7C4PFMIZ.cjs +1288 -0
  16. package/dist/7C4PFMIZ.cjs.map +1 -0
  17. package/dist/7ZSGGZUE.js +1229 -0
  18. package/dist/7ZSGGZUE.js.map +1 -0
  19. package/dist/ARHOGUYH.cjs +2136 -0
  20. package/dist/ARHOGUYH.cjs.map +1 -0
  21. package/dist/CRCRIUFX.js +1264 -0
  22. package/dist/CRCRIUFX.js.map +1 -0
  23. package/dist/DB7CQSED.cjs +430 -0
  24. package/dist/DB7CQSED.cjs.map +1 -0
  25. package/dist/DFXLWHYP.cjs +1266 -0
  26. package/dist/DFXLWHYP.cjs.map +1 -0
  27. package/dist/EOLZCMCK.js +988 -0
  28. package/dist/EOLZCMCK.js.map +1 -0
  29. package/dist/FFDPTOWG.cjs +331 -0
  30. package/dist/FFDPTOWG.cjs.map +1 -0
  31. package/dist/FOJGEAIO.js +2134 -0
  32. package/dist/FOJGEAIO.js.map +1 -0
  33. package/dist/IWIUMVGB.js +629 -0
  34. package/dist/IWIUMVGB.js.map +1 -0
  35. package/dist/MUEN6AWV.cjs +697 -0
  36. package/dist/MUEN6AWV.cjs.map +1 -0
  37. package/dist/ORE6VBZ4.cjs +990 -0
  38. package/dist/ORE6VBZ4.cjs.map +1 -0
  39. package/dist/OUFKWPZ7.js +732 -0
  40. package/dist/OUFKWPZ7.js.map +1 -0
  41. package/dist/T2QTYQXJ.js +1229 -0
  42. package/dist/T2QTYQXJ.js.map +1 -0
  43. package/dist/UPJTM7BR.cjs +631 -0
  44. package/dist/UPJTM7BR.cjs.map +1 -0
  45. package/dist/VNVNX2P3.cjs +1231 -0
  46. package/dist/VNVNX2P3.cjs.map +1 -0
  47. package/dist/VUOMXK5T.js +6 -0
  48. package/dist/VUOMXK5T.js.map +1 -0
  49. package/dist/WISWRTDG.js +1286 -0
  50. package/dist/WISWRTDG.js.map +1 -0
  51. package/dist/WU5L7YIQ.cjs +1231 -0
  52. package/dist/WU5L7YIQ.cjs.map +1 -0
  53. package/dist/X3B5JDMZ.js +695 -0
  54. package/dist/X3B5JDMZ.js.map +1 -0
  55. package/dist/XYNBDBBV.cjs +297 -0
  56. package/dist/XYNBDBBV.cjs.map +1 -0
  57. package/dist/Y5JFPCYJ.cjs +734 -0
  58. package/dist/Y5JFPCYJ.cjs.map +1 -0
  59. package/dist/YEHL7IYO.js +295 -0
  60. package/dist/YEHL7IYO.js.map +1 -0
  61. package/dist/YJF4D23A.cjs +8 -0
  62. package/dist/YJF4D23A.cjs.map +1 -0
  63. package/dist/YTS44OEA.js +428 -0
  64. package/dist/YTS44OEA.js.map +1 -0
  65. package/dist/Z2NIUZMW.js +329 -0
  66. package/dist/Z2NIUZMW.js.map +1 -0
  67. package/dist/abis/blocked-message-lib.cjs +13 -0
  68. package/dist/abis/blocked-message-lib.cjs.map +1 -0
  69. package/dist/abis/blocked-message-lib.d.ts +338 -0
  70. package/dist/abis/blocked-message-lib.d.ts.map +1 -0
  71. package/dist/abis/blocked-message-lib.js +4 -0
  72. package/dist/abis/blocked-message-lib.js.map +1 -0
  73. package/dist/abis/dvn-fee-lib.cjs +13 -0
  74. package/dist/abis/dvn-fee-lib.cjs.map +1 -0
  75. package/dist/abis/dvn-fee-lib.d.ts +214 -0
  76. package/dist/abis/dvn-fee-lib.d.ts.map +1 -0
  77. package/dist/abis/dvn-fee-lib.js +4 -0
  78. package/dist/abis/dvn-fee-lib.js.map +1 -0
  79. package/dist/abis/dvn.cjs +13 -0
  80. package/dist/abis/dvn.cjs.map +1 -0
  81. package/dist/abis/dvn.d.ts +952 -0
  82. package/dist/abis/dvn.d.ts.map +1 -0
  83. package/dist/abis/dvn.js +4 -0
  84. package/dist/abis/dvn.js.map +1 -0
  85. package/dist/abis/endpoint-v2.cjs +13 -0
  86. package/dist/abis/endpoint-v2.cjs.map +1 -0
  87. package/dist/abis/endpoint-v2.d.ts +1580 -0
  88. package/dist/abis/endpoint-v2.d.ts.map +1 -0
  89. package/dist/abis/endpoint-v2.js +4 -0
  90. package/dist/abis/endpoint-v2.js.map +1 -0
  91. package/dist/abis/executor-fee-lib.cjs +13 -0
  92. package/dist/abis/executor-fee-lib.cjs.map +1 -0
  93. package/dist/abis/executor-fee-lib.d.ts +217 -0
  94. package/dist/abis/executor-fee-lib.d.ts.map +1 -0
  95. package/dist/abis/executor-fee-lib.js +4 -0
  96. package/dist/abis/executor-fee-lib.js.map +1 -0
  97. package/dist/abis/executor.cjs +13 -0
  98. package/dist/abis/executor.cjs.map +1 -0
  99. package/dist/abis/executor.d.ts +914 -0
  100. package/dist/abis/executor.d.ts.map +1 -0
  101. package/dist/abis/executor.js +4 -0
  102. package/dist/abis/executor.js.map +1 -0
  103. package/dist/abis/o-app.cjs +13 -0
  104. package/dist/abis/o-app.cjs.map +1 -0
  105. package/dist/abis/o-app.d.ts +311 -0
  106. package/dist/abis/o-app.d.ts.map +1 -0
  107. package/dist/abis/o-app.js +4 -0
  108. package/dist/abis/o-app.js.map +1 -0
  109. package/dist/abis/oft-adapter.cjs +13 -0
  110. package/dist/abis/oft-adapter.cjs.map +1 -0
  111. package/dist/abis/oft-adapter.d.ts +722 -0
  112. package/dist/abis/oft-adapter.d.ts.map +1 -0
  113. package/dist/abis/oft-adapter.js +4 -0
  114. package/dist/abis/oft-adapter.js.map +1 -0
  115. package/dist/abis/oft.cjs +13 -0
  116. package/dist/abis/oft.cjs.map +1 -0
  117. package/dist/abis/oft.d.ts +922 -0
  118. package/dist/abis/oft.d.ts.map +1 -0
  119. package/dist/abis/oft.js +4 -0
  120. package/dist/abis/oft.js.map +1 -0
  121. package/dist/abis/omni-counter.cjs +13 -0
  122. package/dist/abis/omni-counter.cjs.map +1 -0
  123. package/dist/abis/omni-counter.d.ts +459 -0
  124. package/dist/abis/omni-counter.d.ts.map +1 -0
  125. package/dist/abis/omni-counter.js +4 -0
  126. package/dist/abis/omni-counter.js.map +1 -0
  127. package/dist/abis/price-feed.cjs +13 -0
  128. package/dist/abis/price-feed.cjs.map +1 -0
  129. package/dist/abis/price-feed.d.ts +505 -0
  130. package/dist/abis/price-feed.d.ts.map +1 -0
  131. package/dist/abis/price-feed.js +4 -0
  132. package/dist/abis/price-feed.js.map +1 -0
  133. package/dist/abis/simple-message-lib.cjs +13 -0
  134. package/dist/abis/simple-message-lib.cjs.map +1 -0
  135. package/dist/abis/simple-message-lib.d.ts +535 -0
  136. package/dist/abis/simple-message-lib.d.ts.map +1 -0
  137. package/dist/abis/simple-message-lib.js +4 -0
  138. package/dist/abis/simple-message-lib.js.map +1 -0
  139. package/dist/abis/treasury.cjs +13 -0
  140. package/dist/abis/treasury.cjs.map +1 -0
  141. package/dist/abis/treasury.d.ts +240 -0
  142. package/dist/abis/treasury.d.ts.map +1 -0
  143. package/dist/abis/treasury.js +4 -0
  144. package/dist/abis/treasury.js.map +1 -0
  145. package/dist/abis/ultra-light-node.cjs +13 -0
  146. package/dist/abis/ultra-light-node.cjs.map +1 -0
  147. package/dist/abis/ultra-light-node.d.ts +900 -0
  148. package/dist/abis/ultra-light-node.d.ts.map +1 -0
  149. package/dist/abis/ultra-light-node.js +4 -0
  150. package/dist/abis/ultra-light-node.js.map +1 -0
  151. package/dist/index.cjs +78 -0
  152. package/dist/index.cjs.map +1 -0
  153. package/dist/index.d.ts +15 -0
  154. package/dist/index.d.ts.map +1 -0
  155. package/dist/index.js +17 -0
  156. package/dist/index.js.map +1 -0
  157. package/dist/scripts/build-abi.cjs +28 -0
  158. package/dist/scripts/build-abi.cjs.map +1 -0
  159. package/dist/scripts/build-abi.d.ts +2 -0
  160. package/dist/scripts/build-abi.d.ts.map +1 -0
  161. package/dist/scripts/build-abi.js +26 -0
  162. package/dist/scripts/build-abi.js.map +1 -0
  163. package/layerzero/README.md +244 -0
  164. package/layerzero/Scarb.lock +203 -0
  165. package/layerzero/Scarb.toml +30 -0
  166. package/layerzero/snfoundry.toml +11 -0
  167. package/layerzero/src/common/constants.cairo +26 -0
  168. package/layerzero/src/common/conversions.cairo +16 -0
  169. package/layerzero/src/common/guid.cairo +20 -0
  170. package/layerzero/src/common/packet_v1_codec.cairo +307 -0
  171. package/layerzero/src/common/structs/messaging.cairo +40 -0
  172. package/layerzero/src/common/structs/packet.cairo +31 -0
  173. package/layerzero/src/endpoint/constants.cairo +14 -0
  174. package/layerzero/src/endpoint/endpoint.cairo +688 -0
  175. package/layerzero/src/endpoint/errors.cairo +108 -0
  176. package/layerzero/src/endpoint/events.cairo +124 -0
  177. package/layerzero/src/endpoint/interfaces/endpoint.cairo +286 -0
  178. package/layerzero/src/endpoint/interfaces/layerzero_composer.cairo +62 -0
  179. package/layerzero/src/endpoint/interfaces/layerzero_receiver.cairo +63 -0
  180. package/layerzero/src/endpoint/message_lib_manager/errors.cairo +95 -0
  181. package/layerzero/src/endpoint/message_lib_manager/events.cairo +90 -0
  182. package/layerzero/src/endpoint/message_lib_manager/interface.cairo +449 -0
  183. package/layerzero/src/endpoint/message_lib_manager/message_lib_manager.cairo +720 -0
  184. package/layerzero/src/endpoint/message_lib_manager/structs.cairo +33 -0
  185. package/layerzero/src/endpoint/messaging_channel/errors.cairo +37 -0
  186. package/layerzero/src/endpoint/messaging_channel/events.cairo +58 -0
  187. package/layerzero/src/endpoint/messaging_channel/interface.cairo +171 -0
  188. package/layerzero/src/endpoint/messaging_channel/messaging_channel.cairo +453 -0
  189. package/layerzero/src/endpoint/messaging_composer/errors.cairo +46 -0
  190. package/layerzero/src/endpoint/messaging_composer/events.cairo +67 -0
  191. package/layerzero/src/endpoint/messaging_composer/interface.cairo +132 -0
  192. package/layerzero/src/endpoint/messaging_composer/messaging_composer.cairo +223 -0
  193. package/layerzero/src/lib.cairo +189 -0
  194. package/layerzero/src/message_lib/blocked_message_lib.cairo +114 -0
  195. package/layerzero/src/message_lib/interface.cairo +63 -0
  196. package/layerzero/src/message_lib/sml/errors.cairo +23 -0
  197. package/layerzero/src/message_lib/sml/events.cairo +32 -0
  198. package/layerzero/src/message_lib/sml/simple_message_lib.cairo +312 -0
  199. package/layerzero/src/message_lib/structs.cairo +22 -0
  200. package/layerzero/src/message_lib/uln/errors.cairo +128 -0
  201. package/layerzero/src/message_lib/uln/events.cairo +97 -0
  202. package/layerzero/src/message_lib/uln/interface.cairo +83 -0
  203. package/layerzero/src/message_lib/uln/options.cairo +64 -0
  204. package/layerzero/src/message_lib/uln/structs/executor_config.cairo +35 -0
  205. package/layerzero/src/message_lib/uln/structs/payment_info.cairo +7 -0
  206. package/layerzero/src/message_lib/uln/structs/uln_config.cairo +155 -0
  207. package/layerzero/src/message_lib/uln/structs/uln_config_storage_node.cairo +91 -0
  208. package/layerzero/src/message_lib/uln/structs/verification.cairo +7 -0
  209. package/layerzero/src/message_lib/uln/ultra_light_node.cairo +965 -0
  210. package/layerzero/src/oapps/common/oapp_options_type_3/errors.cairo +22 -0
  211. package/layerzero/src/oapps/common/oapp_options_type_3/events.cairo +6 -0
  212. package/layerzero/src/oapps/common/oapp_options_type_3/interface.cairo +34 -0
  213. package/layerzero/src/oapps/common/oapp_options_type_3/oapp_options_type_3.cairo +120 -0
  214. package/layerzero/src/oapps/common/oapp_options_type_3/structs.cairo +6 -0
  215. package/layerzero/src/oapps/counter/constants.cairo +3 -0
  216. package/layerzero/src/oapps/counter/counter.cairo +170 -0
  217. package/layerzero/src/oapps/counter/interface.cairo +27 -0
  218. package/layerzero/src/oapps/counter/structs.cairo +20 -0
  219. package/layerzero/src/oapps/message_inspector/interface.cairo +21 -0
  220. package/layerzero/src/oapps/oapp/errors.cairo +72 -0
  221. package/layerzero/src/oapps/oapp/events.cairo +9 -0
  222. package/layerzero/src/oapps/oapp/interface.cairo +67 -0
  223. package/layerzero/src/oapps/oapp/oapp.cairo +70 -0
  224. package/layerzero/src/oapps/oapp/oapp_core.cairo +448 -0
  225. package/layerzero/src/oapps/oft/errors.cairo +42 -0
  226. package/layerzero/src/oapps/oft/events.cairo +33 -0
  227. package/layerzero/src/oapps/oft/interface.cairo +87 -0
  228. package/layerzero/src/oapps/oft/oft.cairo +188 -0
  229. package/layerzero/src/oapps/oft/oft_adapter.cairo +175 -0
  230. package/layerzero/src/oapps/oft/oft_compose_msg_codec.cairo +128 -0
  231. package/layerzero/src/oapps/oft/oft_core.cairo +542 -0
  232. package/layerzero/src/oapps/oft/oft_msg_codec.cairo +131 -0
  233. package/layerzero/src/oapps/oft/structs.cairo +72 -0
  234. package/layerzero/src/treasury/errors.cairo +22 -0
  235. package/layerzero/src/treasury/events.cairo +5 -0
  236. package/layerzero/src/treasury/interfaces/layerzero_treasury.cairo +54 -0
  237. package/layerzero/src/treasury/interfaces/lz_token_fee_lib.cairo +45 -0
  238. package/layerzero/src/treasury/interfaces/treasury_admin.cairo +39 -0
  239. package/layerzero/src/treasury/treasury.cairo +140 -0
  240. package/layerzero/src/workers/access_control.cairo +11 -0
  241. package/layerzero/src/workers/base/base.cairo +238 -0
  242. package/layerzero/src/workers/base/errors.cairo +24 -0
  243. package/layerzero/src/workers/base/events.cairo +43 -0
  244. package/layerzero/src/workers/base/interface.cairo +93 -0
  245. package/layerzero/src/workers/base/structs.cairo +10 -0
  246. package/layerzero/src/workers/common.cairo +59 -0
  247. package/layerzero/src/workers/dvn/constants.cairo +11 -0
  248. package/layerzero/src/workers/dvn/dvn.cairo +338 -0
  249. package/layerzero/src/workers/dvn/errors.cairo +80 -0
  250. package/layerzero/src/workers/dvn/events.cairo +30 -0
  251. package/layerzero/src/workers/dvn/fee_lib/dvn_fee_lib.cairo +152 -0
  252. package/layerzero/src/workers/dvn/fee_lib/interface.cairo +45 -0
  253. package/layerzero/src/workers/dvn/interface.cairo +131 -0
  254. package/layerzero/src/workers/dvn/options.cairo +125 -0
  255. package/layerzero/src/workers/dvn/structs.cairo +51 -0
  256. package/layerzero/src/workers/executor/errors.cairo +159 -0
  257. package/layerzero/src/workers/executor/events.cairo +32 -0
  258. package/layerzero/src/workers/executor/executor.cairo +392 -0
  259. package/layerzero/src/workers/executor/fee_lib/executor_fee_lib.cairo +160 -0
  260. package/layerzero/src/workers/executor/fee_lib/interface.cairo +87 -0
  261. package/layerzero/src/workers/executor/interface.cairo +131 -0
  262. package/layerzero/src/workers/executor/options.cairo +244 -0
  263. package/layerzero/src/workers/executor/structs.cairo +119 -0
  264. package/layerzero/src/workers/interface.cairo +32 -0
  265. package/layerzero/src/workers/price_feed/constants.cairo +7 -0
  266. package/layerzero/src/workers/price_feed/errors.cairo +28 -0
  267. package/layerzero/src/workers/price_feed/events.cairo +13 -0
  268. package/layerzero/src/workers/price_feed/interface.cairo +264 -0
  269. package/layerzero/src/workers/price_feed/price_feed.cairo +392 -0
  270. package/layerzero/src/workers/price_feed/structs.cairo +74 -0
  271. package/layerzero/tests/common/test_constants.cairo +21 -0
  272. package/layerzero/tests/common/test_guid.cairo +232 -0
  273. package/layerzero/tests/common/test_packet_v1_codec.cairo +372 -0
  274. package/layerzero/tests/common/utils.cairo +23 -0
  275. package/layerzero/tests/e2e/oft_utils.cairo +121 -0
  276. package/layerzero/tests/e2e/test_counter_with_sml.cairo +194 -0
  277. package/layerzero/tests/e2e/test_counter_with_uln.cairo +352 -0
  278. package/layerzero/tests/e2e/test_dvn.cairo +406 -0
  279. package/layerzero/tests/e2e/test_lz_token.cairo +354 -0
  280. package/layerzero/tests/e2e/test_oft_compose_with_uln.cairo +364 -0
  281. package/layerzero/tests/e2e/test_oft_with_sml.cairo +240 -0
  282. package/layerzero/tests/e2e/test_oft_with_uln.cairo +299 -0
  283. package/layerzero/tests/e2e/utils.cairo +490 -0
  284. package/layerzero/tests/endpoint/message_lib_manager/test_message_lib_manager.cairo +2051 -0
  285. package/layerzero/tests/endpoint/message_lib_manager/utils.cairo +45 -0
  286. package/layerzero/tests/endpoint/messaging_channel/test_messaging_channel.cairo +621 -0
  287. package/layerzero/tests/endpoint/messaging_channel/utils.cairo +96 -0
  288. package/layerzero/tests/endpoint/messaging_composer/test_messaging_composer.cairo +456 -0
  289. package/layerzero/tests/endpoint/messaging_composer/utils.cairo +75 -0
  290. package/layerzero/tests/endpoint/test_endpoint_commit.cairo +763 -0
  291. package/layerzero/tests/endpoint/test_endpoint_lzreceive.cairo +1253 -0
  292. package/layerzero/tests/endpoint/test_endpoint_quote.cairo +71 -0
  293. package/layerzero/tests/endpoint/test_endpoint_send.cairo +1327 -0
  294. package/layerzero/tests/endpoint/utils.cairo +129 -0
  295. package/layerzero/tests/fuzzable/blockchain_config.cairo +89 -0
  296. package/layerzero/tests/fuzzable/bytes32.cairo +16 -0
  297. package/layerzero/tests/fuzzable/contract_address.cairo +67 -0
  298. package/layerzero/tests/fuzzable/dst_config.cairo +37 -0
  299. package/layerzero/tests/fuzzable/eid.cairo +23 -0
  300. package/layerzero/tests/fuzzable/eth_address.cairo +17 -0
  301. package/layerzero/tests/fuzzable/expiry.cairo +27 -0
  302. package/layerzero/tests/fuzzable/felt_array.cairo +38 -0
  303. package/layerzero/tests/fuzzable/inbound_params.cairo +21 -0
  304. package/layerzero/tests/fuzzable/keys.cairo +16 -0
  305. package/layerzero/tests/fuzzable/model_type.cairo +27 -0
  306. package/layerzero/tests/fuzzable/origin.cairo +21 -0
  307. package/layerzero/tests/fuzzable/price.cairo +32 -0
  308. package/layerzero/tests/fuzzable/role_admin.cairo +29 -0
  309. package/layerzero/tests/fuzzable/small_byte_array.cairo +61 -0
  310. package/layerzero/tests/lib.cairo +177 -0
  311. package/layerzero/tests/message_lib/sml/test_simple_message_lib.cairo +224 -0
  312. package/layerzero/tests/message_lib/uln/test_uln_admin.cairo +2150 -0
  313. package/layerzero/tests/message_lib/uln/test_uln_config.cairo +527 -0
  314. package/layerzero/tests/message_lib/uln/test_uln_config_storage_node.cairo +69 -0
  315. package/layerzero/tests/message_lib/uln/test_uln_executor_config.cairo +173 -0
  316. package/layerzero/tests/message_lib/uln/test_uln_options.cairo +329 -0
  317. package/layerzero/tests/message_lib/uln/test_uln_quote.cairo +1038 -0
  318. package/layerzero/tests/message_lib/uln/test_uln_receive.cairo +715 -0
  319. package/layerzero/tests/message_lib/uln/test_uln_send.cairo +1155 -0
  320. package/layerzero/tests/message_lib/uln/utils.cairo +59 -0
  321. package/layerzero/tests/mocks/composer_target.cairo +76 -0
  322. package/layerzero/tests/mocks/endpoint.cairo +199 -0
  323. package/layerzero/tests/mocks/erc20/erc20.cairo +50 -0
  324. package/layerzero/tests/mocks/erc20/interface.cairo +8 -0
  325. package/layerzero/tests/mocks/message_inspector/message_inspector.cairo +17 -0
  326. package/layerzero/tests/mocks/message_lib_manager.cairo +98 -0
  327. package/layerzero/tests/mocks/messaging_channel/interface.cairo +23 -0
  328. package/layerzero/tests/mocks/messaging_channel/messaging_channel.cairo +138 -0
  329. package/layerzero/tests/mocks/messaging_composer.cairo +171 -0
  330. package/layerzero/tests/mocks/oapp_core/interface.cairo +53 -0
  331. package/layerzero/tests/mocks/oapp_core/oapp_core.cairo +142 -0
  332. package/layerzero/tests/mocks/oapp_options_type3.cairo +42 -0
  333. package/layerzero/tests/mocks/oft_core/interface.cairo +28 -0
  334. package/layerzero/tests/mocks/oft_core/oft_core.cairo +242 -0
  335. package/layerzero/tests/mocks/receiver.cairo +54 -0
  336. package/layerzero/tests/mocks/treasury/lz_token_fee_lib.cairo +57 -0
  337. package/layerzero/tests/mocks/treasury/treasury.cairo +74 -0
  338. package/layerzero/tests/mocks/uln_config/interface.cairo +12 -0
  339. package/layerzero/tests/mocks/uln_config/uln_config.cairo +35 -0
  340. package/layerzero/tests/mocks/workers/base.cairo +80 -0
  341. package/layerzero/tests/mocks/workers/dvn.cairo +115 -0
  342. package/layerzero/tests/mocks/workers/executor/decode/decode.cairo +97 -0
  343. package/layerzero/tests/mocks/workers/executor/decode/interface.cairo +59 -0
  344. package/layerzero/tests/mocks/workers/executor/executor.cairo +176 -0
  345. package/layerzero/tests/oapps/common/test_oapp_options_type_3.cairo +279 -0
  346. package/layerzero/tests/oapps/oft/test_oft_adapter.cairo +441 -0
  347. package/layerzero/tests/oapps/oft/test_oft_compose_msg_codec.cairo +139 -0
  348. package/layerzero/tests/oapps/oft/test_oft_core.cairo +751 -0
  349. package/layerzero/tests/oapps/oft/test_oft_msg_codec.cairo +268 -0
  350. package/layerzero/tests/oapps/test_counter.cairo +470 -0
  351. package/layerzero/tests/oapps/test_oapp_core.cairo +750 -0
  352. package/layerzero/tests/treasury/test_lz_token_fee_lib.cairo +63 -0
  353. package/layerzero/tests/treasury/test_treasury.cairo +458 -0
  354. package/layerzero/tests/treasury/utils.cairo +8 -0
  355. package/layerzero/tests/utils.cairo +48 -0
  356. package/layerzero/tests/workers/base/test_worker_base.cairo +1097 -0
  357. package/layerzero/tests/workers/base/utils.cairo +76 -0
  358. package/layerzero/tests/workers/dvn/fee_lib/test_dvn_fee_lib.cairo +361 -0
  359. package/layerzero/tests/workers/dvn/test_dvn.cairo +1101 -0
  360. package/layerzero/tests/workers/dvn/test_dvn_options.cairo +312 -0
  361. package/layerzero/tests/workers/dvn/utils.cairo +236 -0
  362. package/layerzero/tests/workers/executor/fee_lib/test_executor_fee_lib.cairo +223 -0
  363. package/layerzero/tests/workers/executor/test_decode.cairo +612 -0
  364. package/layerzero/tests/workers/executor/test_executor.cairo +1472 -0
  365. package/layerzero/tests/workers/executor/utils.cairo +296 -0
  366. package/layerzero/tests/workers/price_feed/test_price_feed.cairo +879 -0
  367. package/layerzero/tests/workers/price_feed/utils.cairo +37 -0
  368. package/libs/enumerable_set/Scarb.lock +24 -0
  369. package/libs/enumerable_set/Scarb.toml +17 -0
  370. package/libs/enumerable_set/src/enumerable_set.cairo +118 -0
  371. package/libs/enumerable_set/src/lib.cairo +4 -0
  372. package/libs/enumerable_set/tests/lib.cairo +5 -0
  373. package/libs/enumerable_set/tests/mocks/mock_enumerable_set.cairo +61 -0
  374. package/libs/enumerable_set/tests/test_enumerable_set.cairo +379 -0
  375. package/libs/lz_utils/Scarb.lock +24 -0
  376. package/libs/lz_utils/Scarb.toml +17 -0
  377. package/libs/lz_utils/src/bytes.cairo +33 -0
  378. package/libs/lz_utils/src/error.cairo +12 -0
  379. package/libs/lz_utils/src/keccak.cairo +28 -0
  380. package/libs/lz_utils/src/lib.cairo +3 -0
  381. package/libs/multisig/Scarb.lock +172 -0
  382. package/libs/multisig/Scarb.toml +23 -0
  383. package/libs/multisig/src/errors.cairo +84 -0
  384. package/libs/multisig/src/events.cairo +13 -0
  385. package/libs/multisig/src/interface.cairo +73 -0
  386. package/libs/multisig/src/lib.cairo +7 -0
  387. package/libs/multisig/src/multisig.cairo +241 -0
  388. package/libs/multisig/tests/lib.cairo +4 -0
  389. package/libs/multisig/tests/mocks/mock_multisig.cairo +57 -0
  390. package/libs/multisig/tests/test_multisig.cairo +452 -0
  391. package/package.json +41 -0
  392. package/src/scripts/build-abi.ts +51 -0
  393. package/target/CACHEDIR.TAG +3 -0
  394. package/target/dev/.fingerprint/alexandria_bytes-5ea6u5t70d7qi/alexandria_bytes +1 -0
  395. package/target/dev/.fingerprint/alexandria_data_structures-0aue3g6q80gs0/alexandria_data_structures +1 -0
  396. package/target/dev/.fingerprint/alexandria_math-h2fi7jdq4isuu/alexandria_math +1 -0
  397. package/target/dev/.fingerprint/core-lq3u730l5p1ag/core +1 -0
  398. package/target/dev/.fingerprint/core-vf7fc6rvic5vi/core +1 -0
  399. package/target/dev/.fingerprint/enumerable_set-eaerkg8njl85o/enumerable_set +1 -0
  400. package/target/dev/.fingerprint/enumerable_set-r54oje7t06ku8/enumerable_set +1 -0
  401. package/target/dev/.fingerprint/layerzero-oqgdqsaddpi2k/layerzero +1 -0
  402. package/target/dev/.fingerprint/lz_utils-kfkkeueiqg0pa/lz_utils +1 -0
  403. package/target/dev/.fingerprint/lz_utils-u4v1os6e7gkng/lz_utils +1 -0
  404. package/target/dev/.fingerprint/multisig-0fjetugejecge/multisig +1 -0
  405. package/target/dev/.fingerprint/multisig-6j5kqs436hm54/multisig +1 -0
  406. package/target/dev/.fingerprint/openzeppelin-ei1id1hu088lo/openzeppelin +1 -0
  407. package/target/dev/.fingerprint/openzeppelin-j9d5nd1qhfnu6/openzeppelin +1 -0
  408. package/target/dev/.fingerprint/openzeppelin_access-3oa41aikpaek0/openzeppelin_access +1 -0
  409. package/target/dev/.fingerprint/openzeppelin_access-p5h849v8so76q/openzeppelin_access +1 -0
  410. package/target/dev/.fingerprint/openzeppelin_account-4qhv5fks84g9u/openzeppelin_account +1 -0
  411. package/target/dev/.fingerprint/openzeppelin_account-hgbm8ln9ah7rm/openzeppelin_account +1 -0
  412. package/target/dev/.fingerprint/openzeppelin_finance-n70q9al0cps8i/openzeppelin_finance +1 -0
  413. package/target/dev/.fingerprint/openzeppelin_finance-nnd4f8703t3ak/openzeppelin_finance +1 -0
  414. package/target/dev/.fingerprint/openzeppelin_governance-3gnk21ubp5lis/openzeppelin_governance +1 -0
  415. package/target/dev/.fingerprint/openzeppelin_governance-rj1bfont4fij4/openzeppelin_governance +1 -0
  416. package/target/dev/.fingerprint/openzeppelin_introspection-3fja9hd1gvbcq/openzeppelin_introspection +1 -0
  417. package/target/dev/.fingerprint/openzeppelin_introspection-jc3nf5525eet6/openzeppelin_introspection +1 -0
  418. package/target/dev/.fingerprint/openzeppelin_merkle_tree-4en77ogr2r2l2/openzeppelin_merkle_tree +1 -0
  419. package/target/dev/.fingerprint/openzeppelin_merkle_tree-4t190frqs4db8/openzeppelin_merkle_tree +1 -0
  420. package/target/dev/.fingerprint/openzeppelin_presets-aqb0f6p9c0bp6/openzeppelin_presets +1 -0
  421. package/target/dev/.fingerprint/openzeppelin_presets-nseg8korhin8e/openzeppelin_presets +1 -0
  422. package/target/dev/.fingerprint/openzeppelin_security-g7p73ji1ih1qg/openzeppelin_security +1 -0
  423. package/target/dev/.fingerprint/openzeppelin_security-qp5328v80452u/openzeppelin_security +1 -0
  424. package/target/dev/.fingerprint/openzeppelin_token-jjf7tl9rphc6k/openzeppelin_token +1 -0
  425. package/target/dev/.fingerprint/openzeppelin_token-r6s43vlpj6rqk/openzeppelin_token +1 -0
  426. package/target/dev/.fingerprint/openzeppelin_upgrades-0dpbnre7engca/openzeppelin_upgrades +1 -0
  427. package/target/dev/.fingerprint/openzeppelin_upgrades-2sqgvbuv9s800/openzeppelin_upgrades +1 -0
  428. package/target/dev/.fingerprint/openzeppelin_utils-mj395ivff1ffo/openzeppelin_utils +1 -0
  429. package/target/dev/.fingerprint/openzeppelin_utils-oh1hse8sjumgm/openzeppelin_utils +1 -0
  430. package/target/dev/.fingerprint/starkware_utils-1qnnjnq0pf9u0/starkware_utils +1 -0
  431. package/target/dev/.fingerprint/starkware_utils-mh8e3te65lju4/starkware_utils +1 -0
  432. package/target/dev/enumerable_set.sierra.json +1 -0
  433. package/target/dev/incremental/alexandria_bytes-5ea6u5t70d7qi.bin +0 -0
  434. package/target/dev/incremental/alexandria_data_structures-0aue3g6q80gs0.bin +0 -0
  435. package/target/dev/incremental/alexandria_math-h2fi7jdq4isuu.bin +0 -0
  436. package/target/dev/incremental/core-lq3u730l5p1ag.bin +0 -0
  437. package/target/dev/incremental/core-vf7fc6rvic5vi.bin +0 -0
  438. package/target/dev/incremental/enumerable_set-eaerkg8njl85o.bin +0 -0
  439. package/target/dev/incremental/enumerable_set-r54oje7t06ku8.bin +0 -0
  440. package/target/dev/incremental/layerzero-oqgdqsaddpi2k.bin +0 -0
  441. package/target/dev/incremental/lz_utils-kfkkeueiqg0pa.bin +0 -0
  442. package/target/dev/incremental/lz_utils-u4v1os6e7gkng.bin +0 -0
  443. package/target/dev/incremental/multisig-0fjetugejecge.bin +0 -0
  444. package/target/dev/incremental/multisig-6j5kqs436hm54.bin +0 -0
  445. package/target/dev/incremental/openzeppelin-ei1id1hu088lo.bin +0 -0
  446. package/target/dev/incremental/openzeppelin-j9d5nd1qhfnu6.bin +0 -0
  447. package/target/dev/incremental/openzeppelin_access-3oa41aikpaek0.bin +0 -0
  448. package/target/dev/incremental/openzeppelin_access-p5h849v8so76q.bin +0 -0
  449. package/target/dev/incremental/openzeppelin_account-4qhv5fks84g9u.bin +0 -0
  450. package/target/dev/incremental/openzeppelin_account-hgbm8ln9ah7rm.bin +0 -0
  451. package/target/dev/incremental/openzeppelin_finance-n70q9al0cps8i.bin +0 -0
  452. package/target/dev/incremental/openzeppelin_finance-nnd4f8703t3ak.bin +0 -0
  453. package/target/dev/incremental/openzeppelin_governance-3gnk21ubp5lis.bin +0 -0
  454. package/target/dev/incremental/openzeppelin_governance-rj1bfont4fij4.bin +0 -0
  455. package/target/dev/incremental/openzeppelin_introspection-3fja9hd1gvbcq.bin +0 -0
  456. package/target/dev/incremental/openzeppelin_introspection-jc3nf5525eet6.bin +0 -0
  457. package/target/dev/incremental/openzeppelin_merkle_tree-4en77ogr2r2l2.bin +0 -0
  458. package/target/dev/incremental/openzeppelin_merkle_tree-4t190frqs4db8.bin +0 -0
  459. package/target/dev/incremental/openzeppelin_presets-aqb0f6p9c0bp6.bin +0 -0
  460. package/target/dev/incremental/openzeppelin_presets-nseg8korhin8e.bin +0 -0
  461. package/target/dev/incremental/openzeppelin_security-g7p73ji1ih1qg.bin +0 -0
  462. package/target/dev/incremental/openzeppelin_security-qp5328v80452u.bin +0 -0
  463. package/target/dev/incremental/openzeppelin_token-jjf7tl9rphc6k.bin +0 -0
  464. package/target/dev/incremental/openzeppelin_token-r6s43vlpj6rqk.bin +0 -0
  465. package/target/dev/incremental/openzeppelin_upgrades-0dpbnre7engca.bin +0 -0
  466. package/target/dev/incremental/openzeppelin_upgrades-2sqgvbuv9s800.bin +0 -0
  467. package/target/dev/incremental/openzeppelin_utils-mj395ivff1ffo.bin +0 -0
  468. package/target/dev/incremental/openzeppelin_utils-oh1hse8sjumgm.bin +0 -0
  469. package/target/dev/incremental/starkware_utils-1qnnjnq0pf9u0.bin +0 -0
  470. package/target/dev/incremental/starkware_utils-mh8e3te65lju4.bin +0 -0
  471. package/target/dev/layerzero.starknet_artifacts.json +1 -0
  472. package/target/dev/layerzero_BlockedMessageLib.compiled_contract_class.json +1 -0
  473. package/target/dev/layerzero_BlockedMessageLib.contract_class.json +1 -0
  474. package/target/dev/layerzero_Dvn.compiled_contract_class.json +1 -0
  475. package/target/dev/layerzero_Dvn.contract_class.json +1 -0
  476. package/target/dev/layerzero_DvnFeeLib.compiled_contract_class.json +1 -0
  477. package/target/dev/layerzero_DvnFeeLib.contract_class.json +1 -0
  478. package/target/dev/layerzero_Endpoint.compiled_contract_class.json +1 -0
  479. package/target/dev/layerzero_Endpoint.contract_class.json +1 -0
  480. package/target/dev/layerzero_Executor.compiled_contract_class.json +1 -0
  481. package/target/dev/layerzero_Executor.contract_class.json +1 -0
  482. package/target/dev/layerzero_ExecutorFeeLib.compiled_contract_class.json +1 -0
  483. package/target/dev/layerzero_ExecutorFeeLib.contract_class.json +1 -0
  484. package/target/dev/layerzero_OApp.compiled_contract_class.json +1 -0
  485. package/target/dev/layerzero_OApp.contract_class.json +1 -0
  486. package/target/dev/layerzero_OFT.compiled_contract_class.json +1 -0
  487. package/target/dev/layerzero_OFT.contract_class.json +1 -0
  488. package/target/dev/layerzero_OFTAdapter.compiled_contract_class.json +1 -0
  489. package/target/dev/layerzero_OFTAdapter.contract_class.json +1 -0
  490. package/target/dev/layerzero_OmniCounter.compiled_contract_class.json +1 -0
  491. package/target/dev/layerzero_OmniCounter.contract_class.json +1 -0
  492. package/target/dev/layerzero_PriceFeed.compiled_contract_class.json +1 -0
  493. package/target/dev/layerzero_PriceFeed.contract_class.json +1 -0
  494. package/target/dev/layerzero_SimpleMessageLib.compiled_contract_class.json +1 -0
  495. package/target/dev/layerzero_SimpleMessageLib.contract_class.json +1 -0
  496. package/target/dev/layerzero_Treasury.compiled_contract_class.json +1 -0
  497. package/target/dev/layerzero_Treasury.contract_class.json +1 -0
  498. package/target/dev/layerzero_UltraLightNode.compiled_contract_class.json +1 -0
  499. package/target/dev/layerzero_UltraLightNode.contract_class.json +1 -0
  500. package/target/dev/lz_utils.sierra.json +1 -0
  501. package/target/dev/multisig.sierra.json +1 -0
  502. package/tools/update_contracts.sh +19 -0
  503. package/tsconfig.json +20 -0
  504. package/tsup.config.ts +7 -0
@@ -0,0 +1,203 @@
1
+ # Code generated by scarb DO NOT EDIT.
2
+ version = 1
3
+
4
+ [[package]]
5
+ name = "alexandria_bytes"
6
+ version = "0.6.0"
7
+ source = "git+https://github.com/keep-starknet-strange/alexandria.git?rev=d45439ca26fe890f636c9b06492d075add3fcb29#d45439ca26fe890f636c9b06492d075add3fcb29"
8
+ dependencies = [
9
+ "alexandria_data_structures",
10
+ "alexandria_math",
11
+ ]
12
+
13
+ [[package]]
14
+ name = "alexandria_data_structures"
15
+ version = "0.6.0"
16
+ source = "git+https://github.com/keep-starknet-strange/alexandria.git?rev=d45439ca26fe890f636c9b06492d075add3fcb29#d45439ca26fe890f636c9b06492d075add3fcb29"
17
+
18
+ [[package]]
19
+ name = "alexandria_math"
20
+ version = "0.6.0"
21
+ source = "git+https://github.com/keep-starknet-strange/alexandria.git?rev=d45439ca26fe890f636c9b06492d075add3fcb29#d45439ca26fe890f636c9b06492d075add3fcb29"
22
+
23
+ [[package]]
24
+ name = "enumerable_set"
25
+ version = "0.1.0"
26
+
27
+ [[package]]
28
+ name = "layerzero"
29
+ version = "0.1.0"
30
+ dependencies = [
31
+ "alexandria_bytes",
32
+ "enumerable_set",
33
+ "lz_utils",
34
+ "multisig",
35
+ "openzeppelin",
36
+ "snforge_std",
37
+ "starkware_utils",
38
+ "starkware_utils_testing",
39
+ ]
40
+
41
+ [[package]]
42
+ name = "lz_utils"
43
+ version = "0.1.0"
44
+
45
+ [[package]]
46
+ name = "multisig"
47
+ version = "0.1.0"
48
+ dependencies = [
49
+ "enumerable_set",
50
+ "lz_utils",
51
+ "starkware_utils",
52
+ ]
53
+
54
+ [[package]]
55
+ name = "openzeppelin"
56
+ version = "2.0.0"
57
+ source = "registry+https://scarbs.xyz/"
58
+ checksum = "sha256:5e4fdecc957cfca7854d95912dc72d9f725517c063b116512900900add29fd77"
59
+ dependencies = [
60
+ "openzeppelin_access",
61
+ "openzeppelin_account",
62
+ "openzeppelin_finance",
63
+ "openzeppelin_governance",
64
+ "openzeppelin_introspection",
65
+ "openzeppelin_merkle_tree",
66
+ "openzeppelin_presets",
67
+ "openzeppelin_security",
68
+ "openzeppelin_token",
69
+ "openzeppelin_upgrades",
70
+ "openzeppelin_utils",
71
+ ]
72
+
73
+ [[package]]
74
+ name = "openzeppelin_access"
75
+ version = "2.0.0"
76
+ source = "registry+https://scarbs.xyz/"
77
+ checksum = "sha256:511681dd26d814ee2bc996d44ff8cb4aaa5ae9d14272130def7eb901cf004850"
78
+ dependencies = [
79
+ "openzeppelin_introspection",
80
+ ]
81
+
82
+ [[package]]
83
+ name = "openzeppelin_account"
84
+ version = "2.0.0"
85
+ source = "registry+https://scarbs.xyz/"
86
+ checksum = "sha256:fb3381c50d68b028d3801feb43df378e2bd62137b6884844f8f60aefe796188b"
87
+ dependencies = [
88
+ "openzeppelin_introspection",
89
+ "openzeppelin_utils",
90
+ ]
91
+
92
+ [[package]]
93
+ name = "openzeppelin_finance"
94
+ version = "2.0.0"
95
+ source = "registry+https://scarbs.xyz/"
96
+ checksum = "sha256:e9456ef69502a87c4c99bf50145351b50950f8b11244847d92935c466c4ba787"
97
+ dependencies = [
98
+ "openzeppelin_access",
99
+ "openzeppelin_token",
100
+ ]
101
+
102
+ [[package]]
103
+ name = "openzeppelin_governance"
104
+ version = "2.0.0"
105
+ source = "registry+https://scarbs.xyz/"
106
+ checksum = "sha256:056e6d6f3d48193b53f06283884f8a9675f986fc85425f6a40e8c1aeb3b3ecfa"
107
+ dependencies = [
108
+ "openzeppelin_access",
109
+ "openzeppelin_account",
110
+ "openzeppelin_introspection",
111
+ "openzeppelin_token",
112
+ "openzeppelin_utils",
113
+ ]
114
+
115
+ [[package]]
116
+ name = "openzeppelin_introspection"
117
+ version = "2.0.0"
118
+ source = "registry+https://scarbs.xyz/"
119
+ checksum = "sha256:87773ed6cd2318f169283ecbbb161890d1996260a80302d81ec45b70ee5e54c1"
120
+
121
+ [[package]]
122
+ name = "openzeppelin_merkle_tree"
123
+ version = "2.0.0"
124
+ source = "registry+https://scarbs.xyz/"
125
+ checksum = "sha256:47f80c9ce59557774243214f8e75c5e866f30f3d8daa755855f6ffd01c89ca89"
126
+
127
+ [[package]]
128
+ name = "openzeppelin_presets"
129
+ version = "2.0.0"
130
+ source = "registry+https://scarbs.xyz/"
131
+ checksum = "sha256:36c761ee923f1dc0887c0eab8c224b49ac242dbfe9163fbb0b08562042ab3d98"
132
+ dependencies = [
133
+ "openzeppelin_access",
134
+ "openzeppelin_account",
135
+ "openzeppelin_finance",
136
+ "openzeppelin_introspection",
137
+ "openzeppelin_token",
138
+ "openzeppelin_upgrades",
139
+ "openzeppelin_utils",
140
+ ]
141
+
142
+ [[package]]
143
+ name = "openzeppelin_security"
144
+ version = "2.0.0"
145
+ source = "registry+https://scarbs.xyz/"
146
+ checksum = "sha256:902932ec296c2f400e0ac7c579edeaafd6067b6ce6d9854c1191de28e396ffe3"
147
+
148
+ [[package]]
149
+ name = "openzeppelin_token"
150
+ version = "2.0.0"
151
+ source = "registry+https://scarbs.xyz/"
152
+ checksum = "sha256:6fe61f63b5a6706018265fb7373b6e5bd3ff829bdc760b2b90296b1e708d180c"
153
+ dependencies = [
154
+ "openzeppelin_access",
155
+ "openzeppelin_account",
156
+ "openzeppelin_introspection",
157
+ "openzeppelin_utils",
158
+ ]
159
+
160
+ [[package]]
161
+ name = "openzeppelin_upgrades"
162
+ version = "2.0.0"
163
+ source = "registry+https://scarbs.xyz/"
164
+ checksum = "sha256:560d57a9c3f3ec5a476e82fec8963c93c8df63a4ff9ff134f64ab8383bde3c61"
165
+
166
+ [[package]]
167
+ name = "openzeppelin_utils"
168
+ version = "2.0.0"
169
+ source = "registry+https://scarbs.xyz/"
170
+ checksum = "sha256:bf799c794139837f397975ffdf6a7ed5032d198bbf70e87a8f44f144a9dfc505"
171
+
172
+ [[package]]
173
+ name = "snforge_scarb_plugin"
174
+ version = "0.48.0"
175
+ source = "registry+https://scarbs.xyz/"
176
+ checksum = "sha256:8630dcf3fa4df36a3d45e6a2d053cf84c548ab154e829fece99373ae5852921c"
177
+
178
+ [[package]]
179
+ name = "snforge_std"
180
+ version = "0.48.0"
181
+ source = "registry+https://scarbs.xyz/"
182
+ checksum = "sha256:981139c83359089540652c44f4a1a888c77409eedaa148377927cc63a604b67b"
183
+ dependencies = [
184
+ "snforge_scarb_plugin",
185
+ ]
186
+
187
+ [[package]]
188
+ name = "starkware_utils"
189
+ version = "1.0.0"
190
+ source = "git+https://github.com/starkware-libs/starkware-starknet-utils?rev=8a5af9509d93815542b8a701cee22a1b9ec1fe34#8a5af9509d93815542b8a701cee22a1b9ec1fe34"
191
+ dependencies = [
192
+ "openzeppelin",
193
+ ]
194
+
195
+ [[package]]
196
+ name = "starkware_utils_testing"
197
+ version = "1.0.0"
198
+ source = "git+https://github.com/starkware-libs/starkware-starknet-utils?rev=8a5af9509d93815542b8a701cee22a1b9ec1fe34#8a5af9509d93815542b8a701cee22a1b9ec1fe34"
199
+ dependencies = [
200
+ "openzeppelin",
201
+ "snforge_std",
202
+ "starkware_utils",
203
+ ]
@@ -0,0 +1,30 @@
1
+ [package]
2
+ name = "layerzero"
3
+ version = "0.1.0"
4
+ edition = "2024_07"
5
+
6
+ # See more keys and their definitions at https://docs.swmansion.com/scarb/docs/reference/manifest.html
7
+
8
+ [dependencies]
9
+ starknet = "2.12.0"
10
+ starkware_utils = { git = "https://github.com/starkware-libs/starkware-starknet-utils", rev = "8a5af9509d93815542b8a701cee22a1b9ec1fe34" }
11
+ openzeppelin = "2.0.0"
12
+ alexandria_bytes = { git = "https://github.com/keep-starknet-strange/alexandria.git", rev = "d45439ca26fe890f636c9b06492d075add3fcb29" }
13
+ lz_utils = { path = "../libs/lz_utils" }
14
+ enumerable_set = { path = "../libs/enumerable_set" }
15
+ multisig = { path = "../libs/multisig" }
16
+
17
+ [dev-dependencies]
18
+ snforge_std = "0.48.0"
19
+ assert_macros = "2.12.0"
20
+ starkware_utils_testing = { git = "https://github.com/starkware-libs/starkware-starknet-utils", rev = "8a5af9509d93815542b8a701cee22a1b9ec1fe34" }
21
+
22
+ [[target.starknet-contract]]
23
+ sierra = true
24
+ casm = true
25
+
26
+ [scripts]
27
+ test = "snforge test"
28
+
29
+ [tool.scarb]
30
+ allow-prebuilt-plugins = ["snforge_scarb_plugin", "snforge_std"]
@@ -0,0 +1,11 @@
1
+ # Visit https://foundry-rs.github.io/starknet-foundry/appendix/snfoundry-toml.html
2
+ # and https://foundry-rs.github.io/starknet-foundry/projects/configuration.html for more information
3
+
4
+ # [sncast.default] # Define a profile name
5
+ # url = "https://free-rpc.nethermind.io/sepolia-juno/v0_7" # Url of the RPC provider
6
+ # accounts-file = "../account-file" # Path to the file with the account data
7
+ # account = "mainuser" # Account from `accounts_file` or default account file that will be used for the transactions
8
+ # keystore = "~/keystore" # Path to the keystore file
9
+ # wait-params = { timeout = 300, retry-interval = 10 } # Wait for submitted transaction parameters
10
+ # block-explorer = "StarkScan" # Block explorer service used to display links to transaction details
11
+ # show-explorer-links = true # Print links pointing to pages with transaction details in the chosen block explorer
@@ -0,0 +1,26 @@
1
+ //! Common constants
2
+
3
+ use core::num::traits::Pow;
4
+ use starknet::ContractAddress;
5
+
6
+ /// Contract address for the ETH ERC20 token on Starknet
7
+ pub const ETH_CONTRACT_ADDRESS: ContractAddress =
8
+ 0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7
9
+ .try_into()
10
+ .unwrap();
11
+
12
+ pub const ZERO_ADDRESS: ContractAddress = 0.try_into().unwrap();
13
+ pub const DEAD_ADDRESS: ContractAddress = 0xdead.try_into().unwrap();
14
+
15
+ /// Default basis points (100%)
16
+ pub const DEFAULT_BPS: u256 = 10000;
17
+
18
+ /// Native decimals rate
19
+ /// - STRK has 18 decimals
20
+ /// - https://docs.starknet.io/guides/becoming-a-validator/stake/
21
+ /// NOTE: You might need to change this if you want to deploy and EndpointV2Alt with a different
22
+ /// native token
23
+ pub const NATIVE_DECIMALS_RATE: u256 = 10_u256.pow(18);
24
+
25
+ /// Maximum v1 EID
26
+ pub const MAX_V1_EID: u32 = 30_000;
@@ -0,0 +1,16 @@
1
+ //! Common conversions
2
+
3
+ use alexandria_bytes::byte_array_ext::ByteArrayTraitExt;
4
+
5
+ /// Converts felt252 arrays to byte arrays in the event data
6
+ pub impl FeltArrayIntoByteArrayImpl of Into<Array<felt252>, ByteArray> {
7
+ fn into(self: Array<felt252>) -> ByteArray {
8
+ let mut byte_array = Default::default();
9
+
10
+ for felt in self.into_iter() {
11
+ byte_array.append_felt252(felt);
12
+ }
13
+
14
+ byte_array
15
+ }
16
+ }
@@ -0,0 +1,20 @@
1
+ /// GUID generation library
2
+ pub mod GUID {
3
+ use alexandria_bytes::byte_array_ext::ByteArrayTraitExt;
4
+ use lz_utils::bytes::Bytes32;
5
+ use lz_utils::keccak::keccak256;
6
+
7
+ pub fn generate(
8
+ nonce: u64, src_eid: u32, sender: Bytes32, dst_eid: u32, receiver: Bytes32,
9
+ ) -> Bytes32 {
10
+ let mut bytes: ByteArray = Default::default();
11
+
12
+ bytes.append_u64(nonce);
13
+ bytes.append_u32(src_eid);
14
+ bytes.append_u256(sender.value);
15
+ bytes.append_u32(dst_eid);
16
+ bytes.append_u256(receiver.value);
17
+
18
+ keccak256(@bytes)
19
+ }
20
+ }
@@ -0,0 +1,307 @@
1
+ /// Cairo implementation of the Solidity PacketV1Codec library
2
+ ///
3
+ /// Handles encoding and decoding of LayerZero packets
4
+ pub mod PacketV1Codec {
5
+ use alexandria_bytes::byte_array_ext::ByteArrayTraitExt;
6
+ use lz_utils::bytes::{Bytes32, ContractAddressIntoBytes32};
7
+ use lz_utils::error::{Error, format_error};
8
+ use lz_utils::keccak::keccak256;
9
+ use starknet::ContractAddress;
10
+ use starkware_utils::errors::assert_with_byte_array;
11
+ use crate::common::structs::packet::Packet;
12
+
13
+ // Constants
14
+ pub const PACKET_VERSION: u8 = 1;
15
+ pub const PACKET_HEADER_LENGTH: u32 = 81;
16
+
17
+ // Offsets for packet structure
18
+ // header (version + nonce + path)
19
+ pub const PACKET_VERSION_OFFSET: usize = 0;
20
+ pub const NONCE_OFFSET: usize = 1;
21
+ pub const SRC_EID_OFFSET: usize = 9;
22
+ pub const SENDER_OFFSET: usize = 13;
23
+ pub const DST_EID_OFFSET: usize = 45;
24
+ pub const RECEIVER_OFFSET: usize = 49;
25
+ // payload (guid + message)
26
+ pub const GUID_OFFSET: usize = 81;
27
+ pub const MESSAGE_OFFSET: usize = 113;
28
+
29
+ /// Struct for decoding the packet payload
30
+ pub struct PacketPayload {
31
+ pub guid: Bytes32,
32
+ pub message: ByteArray,
33
+ }
34
+
35
+ /// Same as [`Packet`] but with `Bytes32` sender
36
+ pub struct PacketSenderBytes {
37
+ pub nonce: u64,
38
+ pub src_eid: u32,
39
+ pub sender: Bytes32,
40
+ pub dst_eid: u32,
41
+ pub receiver: Bytes32,
42
+ pub guid: Bytes32,
43
+ pub message: ByteArray,
44
+ }
45
+
46
+ #[derive(Drop)]
47
+ pub enum PacketV1CodecError {
48
+ InvalidSenderAddress,
49
+ InvalidReceiverAddress,
50
+ InvalidPacketVersion,
51
+ InvalidPacketHeader,
52
+ InvalidEid,
53
+ }
54
+
55
+ impl ErrorNameImpl of Error<PacketV1CodecError> {
56
+ fn prefix() -> ByteArray {
57
+ "LZ_PACKET_V1_CODEC"
58
+ }
59
+
60
+ fn name(self: PacketV1CodecError) -> ByteArray {
61
+ match self {
62
+ PacketV1CodecError::InvalidSenderAddress => "INVALID_SENDER_ADDRESS",
63
+ PacketV1CodecError::InvalidReceiverAddress => "INVALID_RECEIVER_ADDRESS",
64
+ PacketV1CodecError::InvalidPacketVersion => "INVALID_PACKET_VERSION",
65
+ PacketV1CodecError::InvalidPacketHeader => "INVALID_PACKET_HEADER",
66
+ PacketV1CodecError::InvalidEid => "INVALID_EID",
67
+ }
68
+ }
69
+ }
70
+
71
+ pub fn err_invalid_sender_address(sender: Bytes32) -> ByteArray {
72
+ format_error(PacketV1CodecError::InvalidSenderAddress, format!("sender: {}", sender.value))
73
+ }
74
+
75
+ pub fn err_invalid_receiver_address(receiver: Bytes32) -> ByteArray {
76
+ format_error(
77
+ PacketV1CodecError::InvalidReceiverAddress, format!("receiver: {}", receiver.value),
78
+ )
79
+ }
80
+
81
+ pub fn err_invalid_packet_version(version: u8) -> ByteArray {
82
+ format_error(PacketV1CodecError::InvalidPacketVersion, format!("version: {}", version))
83
+ }
84
+
85
+ pub fn err_invalid_packet_header(expected_length: u32, actual_length: u32) -> ByteArray {
86
+ format_error(
87
+ PacketV1CodecError::InvalidPacketHeader,
88
+ format!("expected_length: {}, actual_length: {}", expected_length, actual_length),
89
+ )
90
+ }
91
+
92
+ pub fn err_invalid_eid(expected_eid: u32, actual_eid: u32) -> ByteArray {
93
+ format_error(
94
+ PacketV1CodecError::InvalidEid,
95
+ format!("expected_eid: {}, actual_eid: {}", expected_eid, actual_eid),
96
+ )
97
+ }
98
+
99
+ /// Encodes only the packet header (version + nonce + path) into a byte array
100
+ pub fn encode_header(packet: @Packet) -> ByteArray {
101
+ let sender_bytes32: Bytes32 = (*packet.sender).into();
102
+
103
+ // Packet header encoding format:
104
+ // 1 byte version
105
+ // 8 bytes nonce
106
+ // 4 bytes srcEid
107
+ // 32 bytes sender
108
+ // 4 bytes dstEid
109
+ // 32 bytes receiver
110
+ let mut header: ByteArray = Default::default();
111
+
112
+ header.append_u8(PACKET_VERSION);
113
+ header.append_u64(*packet.nonce);
114
+ header.append_u32(*packet.src_eid);
115
+ header.append_u256(sender_bytes32.value);
116
+ header.append_u32(*packet.dst_eid);
117
+ header.append_u256(*packet.receiver.value);
118
+
119
+ header
120
+ }
121
+
122
+ /// Encodes the packet payload (guid + message) into a byte array
123
+ pub fn encode_payload(packet: @Packet) -> ByteArray {
124
+ let mut payload: ByteArray = Default::default();
125
+
126
+ payload.append_u256(*packet.guid.value);
127
+ payload.append(packet.message);
128
+
129
+ payload
130
+ }
131
+
132
+ /// Encodes a packet struct into a byte array following the LayerZero packet format
133
+ pub fn encode(packet: @Packet) -> ByteArray {
134
+ // Packet encoding:
135
+ // PacketHeader + bytes32 guid + byteArray message
136
+ let mut encoded_header: ByteArray = encode_header(packet);
137
+ let mut encoded_payload: ByteArray = encode_payload(packet);
138
+ encoded_header.append(@encoded_payload);
139
+ encoded_header
140
+ }
141
+
142
+ /// Extracts the header from an encoded packet
143
+ pub fn header(packet: @ByteArray) -> ByteArray {
144
+ let (_, header_value) = packet.read_bytes(0, GUID_OFFSET);
145
+ header_value
146
+ }
147
+
148
+ /// Extracts the version from an encoded packet
149
+ pub fn version(packet: @ByteArray) -> u8 {
150
+ let (_, version_value) = packet.read_u8(PACKET_VERSION_OFFSET);
151
+ version_value
152
+ }
153
+
154
+ /// Extracts the nonce from an encoded packet
155
+ pub fn nonce(packet: @ByteArray) -> u64 {
156
+ let (_, nonce_value) = packet.read_u64(NONCE_OFFSET);
157
+ nonce_value
158
+ }
159
+
160
+ /// Extracts the source EID from an encoded packet
161
+ pub fn src_eid(packet: @ByteArray) -> u32 {
162
+ let (_, src_eid_value) = packet.read_u32(SRC_EID_OFFSET);
163
+ src_eid_value
164
+ }
165
+
166
+ /// Extracts the sender as Bytes32 from an encoded packet
167
+ pub fn sender(packet: @ByteArray) -> Bytes32 {
168
+ let (_, sender_value) = packet.read_u256(SENDER_OFFSET);
169
+ Bytes32 { value: sender_value }
170
+ }
171
+
172
+ /// Extracts the sender as ContractAddress from an encoded packet
173
+ pub fn sender_address(packet: @ByteArray) -> ContractAddress {
174
+ let sender_bytes32 = sender(packet);
175
+ let sender_address = sender_bytes32.try_into();
176
+ assert_with_byte_array(
177
+ sender_address.is_some(), err_invalid_sender_address(sender_bytes32),
178
+ );
179
+
180
+ sender_address.unwrap()
181
+ }
182
+
183
+ /// Extracts the destination EID from an encoded packet
184
+ pub fn dst_eid(packet: @ByteArray) -> u32 {
185
+ let (_, dst_eid_value) = packet.read_u32(DST_EID_OFFSET);
186
+ dst_eid_value
187
+ }
188
+
189
+ /// Extracts the receiver from an encoded packet
190
+ pub fn receiver(packet: @ByteArray) -> Bytes32 {
191
+ let (_, receiver_value) = packet.read_u256(RECEIVER_OFFSET);
192
+ Bytes32 { value: receiver_value }
193
+ }
194
+
195
+ /// Extracts the receiver as ContractAddress from an encoded packet
196
+ pub fn receiver_address(packet: @ByteArray) -> ContractAddress {
197
+ let receiver_bytes32 = receiver(packet);
198
+ let receiver_address = receiver_bytes32.try_into();
199
+ assert_with_byte_array(
200
+ receiver_address.is_some(), err_invalid_receiver_address(receiver_bytes32),
201
+ );
202
+
203
+ receiver_address.unwrap()
204
+ }
205
+
206
+ /// Extracts the GUID from an encoded packet
207
+ pub fn guid(packet: @ByteArray) -> Bytes32 {
208
+ let (_, guid_value) = packet.read_u256(GUID_OFFSET);
209
+ Bytes32 { value: guid_value }
210
+ }
211
+
212
+ /// Extracts the message from an encoded packet
213
+ /// * `ByteArray` - The message
214
+ pub fn message(packet: @ByteArray) -> ByteArray {
215
+ let message_length = packet.len() - MESSAGE_OFFSET;
216
+ let (_, message_value) = packet.read_bytes(MESSAGE_OFFSET, message_length);
217
+ message_value
218
+ }
219
+
220
+ /// Extracts the payload (guid + message) from an encoded packet
221
+ pub fn payload(packet: @ByteArray) -> ByteArray {
222
+ let payload_length = packet.len() - GUID_OFFSET;
223
+ let (_, payload_value) = packet.read_bytes(GUID_OFFSET, payload_length);
224
+ payload_value
225
+ }
226
+
227
+ /// Computes the keccak256 hash of the payload
228
+ pub fn payload_hash(packet: @ByteArray) -> Bytes32 {
229
+ let payload_bytes = payload(packet);
230
+ keccak256(@payload_bytes)
231
+ }
232
+
233
+ /// Decodes only the packet payload from a byte array into individual components
234
+ /// Returns: (guid, message)
235
+ pub fn decode_payload(encoded_packet: @ByteArray) -> PacketPayload {
236
+ PacketPayload { guid: guid(encoded_packet), message: message(encoded_packet) }
237
+ }
238
+
239
+ /// Decodes a complete encoded packet into a Packet struct
240
+ /// Note: This assumes the sender can be converted to ContractAddress
241
+ /// If conversion fails, it will panic - use decode_with_bytes32_sender for safer decoding
242
+ pub fn decode(encoded_packet: @ByteArray) -> Packet {
243
+ get_and_assert_version(encoded_packet);
244
+
245
+ let PacketSenderBytes {
246
+ nonce, src_eid, sender: sender_bytes32, dst_eid, receiver, guid, message,
247
+ } = decode_with_bytes32_sender(encoded_packet);
248
+
249
+ Packet {
250
+ nonce,
251
+ src_eid,
252
+ dst_eid,
253
+ receiver,
254
+ guid,
255
+ message,
256
+ sender: sender_bytes32.try_into().expect('Invalid sender address'),
257
+ }
258
+ }
259
+
260
+ /// Decodes a complete encoded packet into a Packet struct with Bytes32 sender
261
+ /// This is safer than decode() as it doesn't attempt address conversion
262
+ pub fn decode_with_bytes32_sender(encoded_packet: @ByteArray) -> PacketSenderBytes {
263
+ get_and_assert_version(encoded_packet);
264
+
265
+ PacketSenderBytes {
266
+ nonce: nonce(encoded_packet),
267
+ src_eid: src_eid(encoded_packet),
268
+ sender: sender(encoded_packet),
269
+ dst_eid: dst_eid(encoded_packet),
270
+ receiver: receiver(encoded_packet),
271
+ guid: guid(encoded_packet),
272
+ message: message(encoded_packet),
273
+ }
274
+ }
275
+
276
+ pub fn get_and_assert_version(packet_header: @ByteArray) -> u8 {
277
+ let header_version = version(packet_header);
278
+ assert_with_byte_array(
279
+ header_version == PACKET_VERSION, err_invalid_packet_version(header_version),
280
+ );
281
+
282
+ header_version
283
+ }
284
+
285
+ /// Asserts that a packet header is valid for the given local endpoint ID
286
+ /// Validates:
287
+ /// - Header length is exactly 81 bytes
288
+ /// - Packet version matches PACKET_VERSION
289
+ /// - Destination EID matches the local endpoint ID
290
+ pub fn assert_header(packet_header: @ByteArray, local_eid: u32) {
291
+ // Assert packet header is of right size (81 bytes)
292
+ let header_length = packet_header.len();
293
+ assert_with_byte_array(
294
+ header_length == PACKET_HEADER_LENGTH,
295
+ err_invalid_packet_header(PACKET_HEADER_LENGTH, header_length),
296
+ );
297
+
298
+ // Assert packet header version is the same as ULN
299
+ get_and_assert_version(packet_header);
300
+
301
+ // Assert the packet is for this endpoint
302
+ let packet_dst_eid = dst_eid(packet_header);
303
+ assert_with_byte_array(
304
+ packet_dst_eid == local_eid, err_invalid_eid(local_eid, packet_dst_eid),
305
+ );
306
+ }
307
+ }
@@ -0,0 +1,40 @@
1
+ //! Common messaging structs
2
+
3
+ use lz_utils::bytes::Bytes32;
4
+ use starknet::ContractAddress;
5
+
6
+ /// Parameters required to send a message
7
+ #[derive(Drop, Serde, Clone, PartialEq, Debug, Default)]
8
+ pub struct MessagingParams {
9
+ pub dst_eid: u32,
10
+ pub receiver: Bytes32,
11
+ pub message: ByteArray,
12
+ pub options: ByteArray,
13
+ pub pay_in_lz_token: bool,
14
+ }
15
+
16
+ #[derive(Drop, Serde, Default, PartialEq, Clone, Debug)]
17
+ pub struct MessagingFee {
18
+ pub native_fee: u256,
19
+ pub lz_token_fee: u256,
20
+ }
21
+
22
+ #[derive(Drop, Clone, Serde, PartialEq, Debug)]
23
+ pub struct Payee {
24
+ pub receiver: ContractAddress,
25
+ pub native_amount: u256,
26
+ pub lz_token_amount: u256,
27
+ }
28
+
29
+ #[derive(Drop, Serde, Default, PartialEq, Clone, Debug)]
30
+ pub struct MessageReceipt {
31
+ pub guid: Bytes32,
32
+ pub nonce: u64,
33
+ pub payees: Array<Payee>,
34
+ }
35
+
36
+ #[derive(Drop, Serde, PartialEq, Clone, Debug)]
37
+ pub struct MessageLibSendResult {
38
+ pub message_receipt: MessageReceipt,
39
+ pub encoded_packet: ByteArray,
40
+ }
@@ -0,0 +1,31 @@
1
+ //! Common structs - `Packet` and `Origin`
2
+
3
+ use lz_utils::bytes::Bytes32;
4
+ use starknet::ContractAddress;
5
+
6
+ #[derive(Clone, Drop, Serde)]
7
+ pub struct PacketHeader {
8
+ pub nonce: u64,
9
+ pub src_eid: u32,
10
+ pub sender: ContractAddress,
11
+ pub dst_eid: u32,
12
+ pub receiver: Bytes32,
13
+ }
14
+
15
+ #[derive(Clone, Drop, Serde)]
16
+ pub struct Packet {
17
+ pub nonce: u64,
18
+ pub src_eid: u32,
19
+ pub sender: ContractAddress,
20
+ pub dst_eid: u32,
21
+ pub receiver: Bytes32,
22
+ pub guid: Bytes32,
23
+ pub message: ByteArray,
24
+ }
25
+
26
+ #[derive(Clone, Drop, Serde, Debug, PartialEq, Default)]
27
+ pub struct Origin {
28
+ pub src_eid: u32,
29
+ pub sender: Bytes32,
30
+ pub nonce: u64,
31
+ }