@layerzerolabs/layerzero-v2-ton 3.0.12-ton.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/README.md +15 -0
  3. package/build/AllStorages.boc +0 -0
  4. package/build/AllStorages.compiled.json +1 -0
  5. package/build/AllStorages.fif +4164 -0
  6. package/build/AllStorages.test.boc +0 -0
  7. package/build/AllStorages.test.compiled.json +1 -0
  8. package/build/AllStorages.test.fif +1831 -0
  9. package/build/BaseContract.test.boc +0 -0
  10. package/build/BaseContract.test.compiled.json +1 -0
  11. package/build/BaseContract.test.fif +3553 -0
  12. package/build/Channel.boc +0 -0
  13. package/build/Channel.compiled.json +1 -0
  14. package/build/Channel.fif +5001 -0
  15. package/build/Channel.permissions.test.boc +0 -0
  16. package/build/Channel.permissions.test.compiled.json +1 -0
  17. package/build/Channel.permissions.test.fif +7569 -0
  18. package/build/ChannelBurn.test.boc +0 -0
  19. package/build/ChannelBurn.test.compiled.json +1 -0
  20. package/build/ChannelBurn.test.fif +7454 -0
  21. package/build/ChannelCommitPacket.test.boc +0 -0
  22. package/build/ChannelCommitPacket.test.compiled.json +1 -0
  23. package/build/ChannelCommitPacket.test.fif +7981 -0
  24. package/build/ChannelConfig.test.boc +0 -0
  25. package/build/ChannelConfig.test.compiled.json +1 -0
  26. package/build/ChannelConfig.test.fif +7442 -0
  27. package/build/ChannelInitialize.test.boc +0 -0
  28. package/build/ChannelInitialize.test.compiled.json +1 -0
  29. package/build/ChannelInitialize.test.fif +7289 -0
  30. package/build/ChannelMsglibIntegration.test.boc +0 -0
  31. package/build/ChannelMsglibIntegration.test.compiled.json +1 -0
  32. package/build/ChannelMsglibIntegration.test.fif +7404 -0
  33. package/build/ChannelMsglibSendCallback.test.boc +0 -0
  34. package/build/ChannelMsglibSendCallback.test.compiled.json +1 -0
  35. package/build/ChannelMsglibSendCallback.test.fif +7711 -0
  36. package/build/ChannelNilify.test.boc +0 -0
  37. package/build/ChannelNilify.test.compiled.json +1 -0
  38. package/build/ChannelNilify.test.fif +7672 -0
  39. package/build/ChannelReceive.test.boc +0 -0
  40. package/build/ChannelReceive.test.compiled.json +1 -0
  41. package/build/ChannelReceive.test.fif +7702 -0
  42. package/build/ChannelReceiveCallback.test.boc +0 -0
  43. package/build/ChannelReceiveCallback.test.compiled.json +1 -0
  44. package/build/ChannelReceiveCallback.test.fif +7549 -0
  45. package/build/ChannelReceiveView.test.boc +0 -0
  46. package/build/ChannelReceiveView.test.compiled.json +1 -0
  47. package/build/ChannelReceiveView.test.fif +7352 -0
  48. package/build/ChannelSend.test.boc +0 -0
  49. package/build/ChannelSend.test.compiled.json +1 -0
  50. package/build/ChannelSend.test.fif +7658 -0
  51. package/build/Classlib.test.boc +0 -0
  52. package/build/Classlib.test.compiled.json +1 -0
  53. package/build/Classlib.test.fif +4728 -0
  54. package/build/Connection.boc +0 -0
  55. package/build/Connection.compiled.json +1 -0
  56. package/build/Connection.fif +3503 -0
  57. package/build/Connection.test.boc +0 -0
  58. package/build/Connection.test.compiled.json +1 -0
  59. package/build/Connection.test.fif +6575 -0
  60. package/build/Controller.assertions.test.boc +0 -0
  61. package/build/Controller.assertions.test.compiled.json +1 -0
  62. package/build/Controller.assertions.test.fif +6130 -0
  63. package/build/Controller.boc +0 -0
  64. package/build/Controller.compiled.json +1 -0
  65. package/build/Controller.fif +3195 -0
  66. package/build/Controller.permissions.test.boc +0 -0
  67. package/build/Controller.permissions.test.compiled.json +1 -0
  68. package/build/Controller.permissions.test.fif +6237 -0
  69. package/build/Controller.test.boc +0 -0
  70. package/build/Controller.test.compiled.json +1 -0
  71. package/build/Controller.test.fif +6400 -0
  72. package/build/Counter.boc +0 -0
  73. package/build/Counter.compiled.json +1 -0
  74. package/build/Counter.fif +4809 -0
  75. package/build/Counter.permissions.test.boc +0 -0
  76. package/build/Counter.permissions.test.compiled.json +1 -0
  77. package/build/Counter.permissions.test.fif +7106 -0
  78. package/build/Counter.setters.test.boc +0 -0
  79. package/build/Counter.setters.test.compiled.json +1 -0
  80. package/build/Counter.setters.test.fif +7083 -0
  81. package/build/Counter.test.boc +0 -0
  82. package/build/Counter.test.compiled.json +1 -0
  83. package/build/Counter.test.fif +7540 -0
  84. package/build/Dvn.boc +0 -0
  85. package/build/Dvn.compiled.json +1 -0
  86. package/build/Dvn.fif +2923 -0
  87. package/build/Dvn.test.boc +0 -0
  88. package/build/Dvn.test.compiled.json +1 -0
  89. package/build/Dvn.test.fif +5753 -0
  90. package/build/Endpoint.boc +0 -0
  91. package/build/Endpoint.compiled.json +1 -0
  92. package/build/Endpoint.fif +3694 -0
  93. package/build/Endpoint.permissions.test.boc +0 -0
  94. package/build/Endpoint.permissions.test.compiled.json +1 -0
  95. package/build/Endpoint.permissions.test.fif +6211 -0
  96. package/build/Endpoint.test.boc +0 -0
  97. package/build/Endpoint.test.compiled.json +1 -0
  98. package/build/Endpoint.test.fif +6899 -0
  99. package/build/EndpointSetEpConfigDefaults.test.boc +0 -0
  100. package/build/EndpointSetEpConfigDefaults.test.compiled.json +1 -0
  101. package/build/EndpointSetEpConfigDefaults.test.fif +6529 -0
  102. package/build/Executor.boc +0 -0
  103. package/build/Executor.compiled.json +1 -0
  104. package/build/Executor.fif +2731 -0
  105. package/build/Executor.test.boc +0 -0
  106. package/build/Executor.test.compiled.json +1 -0
  107. package/build/Executor.test.fif +5822 -0
  108. package/build/LzClasses.test.boc +0 -0
  109. package/build/LzClasses.test.compiled.json +1 -0
  110. package/build/LzClasses.test.fif +4457 -0
  111. package/build/LzUtil.test.boc +0 -0
  112. package/build/LzUtil.test.compiled.json +1 -0
  113. package/build/LzUtil.test.fif +1831 -0
  114. package/build/MsgData.test.boc +0 -0
  115. package/build/MsgData.test.compiled.json +1 -0
  116. package/build/MsgData.test.fif +4318 -0
  117. package/build/MsglibPacketCodec.test.boc +0 -0
  118. package/build/MsglibPacketCodec.test.compiled.json +1 -0
  119. package/build/MsglibPacketCodec.test.fif +4851 -0
  120. package/build/MultiSig.boc +0 -0
  121. package/build/MultiSig.compiled.json +1 -0
  122. package/build/MultiSig.fif +727 -0
  123. package/build/MultiSigOrder.boc +0 -0
  124. package/build/MultiSigOrder.compiled.json +1 -0
  125. package/build/MultiSigOrder.fif +650 -0
  126. package/build/PipelinedOutOfOrder.test.boc +0 -0
  127. package/build/PipelinedOutOfOrder.test.compiled.json +1 -0
  128. package/build/PipelinedOutOfOrder.test.fif +2188 -0
  129. package/build/SmlConnection.boc +0 -0
  130. package/build/SmlConnection.compiled.json +1 -0
  131. package/build/SmlConnection.fif +2517 -0
  132. package/build/SmlConnection.permissions.test.boc +0 -0
  133. package/build/SmlConnection.permissions.test.compiled.json +1 -0
  134. package/build/SmlConnection.permissions.test.fif +5497 -0
  135. package/build/SmlConnection.test.boc +0 -0
  136. package/build/SmlConnection.test.compiled.json +1 -0
  137. package/build/SmlConnection.test.fif +5494 -0
  138. package/build/SmlManager.boc +0 -0
  139. package/build/SmlManager.compiled.json +1 -0
  140. package/build/SmlManager.fif +3904 -0
  141. package/build/SmlManager.permissions.test.boc +0 -0
  142. package/build/SmlManager.permissions.test.compiled.json +1 -0
  143. package/build/SmlManager.permissions.test.fif +6018 -0
  144. package/build/SmlManager.test.boc +0 -0
  145. package/build/SmlManager.test.compiled.json +1 -0
  146. package/build/SmlManager.test.fif +6047 -0
  147. package/build/Uln.boc +0 -0
  148. package/build/Uln.compiled.json +1 -0
  149. package/build/Uln.fif +4841 -0
  150. package/build/Uln.test.boc +0 -0
  151. package/build/Uln.test.compiled.json +1 -0
  152. package/build/Uln.test.fif +7077 -0
  153. package/build/UlnManager.boc +0 -0
  154. package/build/UlnManager.compiled.json +1 -0
  155. package/build/UlnManager.fif +3851 -0
  156. package/build/UlnManager.test.boc +0 -0
  157. package/build/UlnManager.test.compiled.json +1 -0
  158. package/build/UlnManager.test.fif +6571 -0
  159. package/build/UlnReceiveConfig.test.boc +0 -0
  160. package/build/UlnReceiveConfig.test.compiled.json +1 -0
  161. package/build/UlnReceiveConfig.test.fif +4413 -0
  162. package/build/UlnSend.test.boc +0 -0
  163. package/build/UlnSend.test.compiled.json +1 -0
  164. package/build/UlnSend.test.fif +6576 -0
  165. package/build/UlnSendConfig.test.boc +0 -0
  166. package/build/UlnSendConfig.test.compiled.json +1 -0
  167. package/build/UlnSendConfig.test.fif +4431 -0
  168. package/build/UlnSendWorkerFactory.test.boc +0 -0
  169. package/build/UlnSendWorkerFactory.test.compiled.json +1 -0
  170. package/build/UlnSendWorkerFactory.test.fif +6683 -0
  171. package/build/UlnUtil.test.boc +0 -0
  172. package/build/UlnUtil.test.compiled.json +1 -0
  173. package/build/UlnUtil.test.fif +5873 -0
  174. package/build/WorkerCore.test.boc +0 -0
  175. package/build/WorkerCore.test.compiled.json +1 -0
  176. package/build/WorkerCore.test.fif +5630 -0
  177. package/build/ZroMinter.boc +0 -0
  178. package/build/ZroMinter.compiled.json +1 -0
  179. package/build/ZroMinter.fif +2300 -0
  180. package/build/ZroWallet.boc +0 -0
  181. package/build/ZroWallet.compiled.json +1 -0
  182. package/build/ZroWallet.fif +2471 -0
  183. package/package.json +64 -0
  184. package/src/classes/lz/Attestation.fc +23 -0
  185. package/src/classes/lz/Config.fc +23 -0
  186. package/src/classes/lz/EpConfig.fc +91 -0
  187. package/src/classes/lz/MsglibInfo.fc +31 -0
  188. package/src/classes/lz/Packet.fc +202 -0
  189. package/src/classes/lz/Path.fc +56 -0
  190. package/src/classes/lz/ReceiveEpConfig.fc +24 -0
  191. package/src/classes/lz/SendEpConfig.fc +18 -0
  192. package/src/classes/lz/SmlJobAssigned.fc +20 -0
  193. package/src/classes/lz/Worker.fc +32 -0
  194. package/src/classes/msgdata/AddMsglib.fc +18 -0
  195. package/src/classes/msgdata/Amount.fc +16 -0
  196. package/src/classes/msgdata/Bool.fc +16 -0
  197. package/src/classes/msgdata/ChannelNonceInfo.fc +18 -0
  198. package/src/classes/msgdata/ClaimUnaccountedPoolFunds.fc +0 -0
  199. package/src/classes/msgdata/CoinsAmount.fc +16 -0
  200. package/src/classes/msgdata/CounterIncrement.fc +24 -0
  201. package/src/classes/msgdata/Deploy.fc +20 -0
  202. package/src/classes/msgdata/ExtendedMd.fc +20 -0
  203. package/src/classes/msgdata/GetMsglibCallback.fc +18 -0
  204. package/src/classes/msgdata/InitEndpoint.fc +16 -0
  205. package/src/classes/msgdata/InitSmlConnection.fc +16 -0
  206. package/src/classes/msgdata/InitUlnConnection.fc +18 -0
  207. package/src/classes/msgdata/LzReceiveStatus.fc +58 -0
  208. package/src/classes/msgdata/LzSend.fc +58 -0
  209. package/src/classes/msgdata/MdAddress.fc +18 -0
  210. package/src/classes/msgdata/MdEid.fc +18 -0
  211. package/src/classes/msgdata/MdObj.fc +18 -0
  212. package/src/classes/msgdata/MessagingReceipt.fc +22 -0
  213. package/src/classes/msgdata/MsglibSendCallback.fc +113 -0
  214. package/src/classes/msgdata/Nonce.fc +16 -0
  215. package/src/classes/msgdata/OptionsExtended.fc +20 -0
  216. package/src/classes/msgdata/OptionsV1.fc +27 -0
  217. package/src/classes/msgdata/OptionsV2.fc +34 -0
  218. package/src/classes/msgdata/PacketId.fc +18 -0
  219. package/src/classes/msgdata/PacketSent.fc +39 -0
  220. package/src/classes/msgdata/SetAddress.fc +16 -0
  221. package/src/classes/msgdata/SetEpConfig.fc +33 -0
  222. package/src/classes/msgdata/SetPeer.fc +18 -0
  223. package/src/classes/msgdata/SetSmlManagerConfig.fc +18 -0
  224. package/src/funC++/abstract/contractMainAbstract.fc +3 -0
  225. package/src/funC++/abstract/handlerAbstract.fc +12 -0
  226. package/src/funC++/actions/call.fc +51 -0
  227. package/src/funC++/actions/deploy.fc +118 -0
  228. package/src/funC++/actions/destroy.fc +28 -0
  229. package/src/funC++/actions/dispatch.fc +57 -0
  230. package/src/funC++/actions/event.fc +69 -0
  231. package/src/funC++/actions/payment.fc +52 -0
  232. package/src/funC++/actions/sendJettons.fc +76 -0
  233. package/src/funC++/actions/utils.fc +49 -0
  234. package/src/funC++/baseInterface.fc +16 -0
  235. package/src/funC++/classlib.fc +819 -0
  236. package/src/funC++/constants.fc +64 -0
  237. package/src/funC++/contractMain.fc +84 -0
  238. package/src/funC++/dataStructures/DeterministicInsertionCircularQueue.fc +155 -0
  239. package/src/funC++/dataStructures/PipelinedOutOfOrder.fc +93 -0
  240. package/src/funC++/handlerCore.fc +30 -0
  241. package/src/funC++/stdlib.fc +625 -0
  242. package/src/funC++/stringlib.fc +75 -0
  243. package/src/funC++/txnContext.fc +126 -0
  244. package/src/funC++/utils.fc +119 -0
  245. package/src/jettons/zro/minter.fc +120 -0
  246. package/src/jettons/zro/op-codes.fc +10 -0
  247. package/src/jettons/zro/params.fc +18 -0
  248. package/src/jettons/zro/utils.fc +33 -0
  249. package/src/jettons/zro/wallet.fc +261 -0
  250. package/tests/baseContractTest.fc +192 -0
  251. package/tests/testMain.fc +135 -0
@@ -0,0 +1,16 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::CoinsAmount::NAME = "coinsAmt"u;
5
+
6
+ ;; field names
7
+ const int md::CoinsAmount::amount = 0;
8
+
9
+ cell md::CoinsAmount::New(int amount) inline method_id {
10
+ return cl::declare(
11
+ md::CoinsAmount::NAME,
12
+ unsafeTuple([
13
+ [cl::t::coins, amount] ;; md::CoinsAmount::amount
14
+ ])
15
+ );
16
+ }
@@ -0,0 +1,24 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::CounterIncrement::NAME = "countIncr"u;
5
+
6
+ ;; field names
7
+ const int md::CounterIncrement::dstEid = 0;
8
+ const int md::CounterIncrement::incrementType = 1;
9
+ const int md::CounterIncrement::extraOptions = 2; ;; This is a reference to an 'options' md
10
+ const int md::CounterIncrement::nativeFee = 3;
11
+ const int md::CounterIncrement::zroFee = 4;
12
+
13
+ cell md::CounterIncrement::New(int dstEid, int incrementType, cell $extraOptions, int nativeFee, int zroFee) inline method_id {
14
+ return cl::declare(
15
+ md::CounterIncrement::NAME,
16
+ unsafeTuple([
17
+ [cl::t::uint32, dstEid], ;; md::CounterIncrement::dstEid
18
+ [cl::t::uint8, incrementType], ;; md::CounterIncrement::incrementType
19
+ [cl::t::objRef, $extraOptions], ;; md::CounterIncrement::extraOptions
20
+ [cl::t::coins, nativeFee], ;; md::CounterIncrement::nativeFee
21
+ [cl::t::coins, zroFee] ;; md::CounterIncrement::zroFee
22
+ ])
23
+ );
24
+ }
@@ -0,0 +1,20 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::Deploy::NAME = "deploy"u;
5
+
6
+ ;; field names
7
+ const int md::Deploy::initialDeposit = 0;
8
+ const int md::Deploy::dstEid = 1;
9
+ const int md::Deploy::dstOApp = 2;
10
+
11
+ cell md::Deploy::New(int initialDeposit, int dstEid, int dstOApp) inline method_id {
12
+ return cl::declare(
13
+ md::Deploy::NAME,
14
+ unsafeTuple([
15
+ [cl::t::coins, initialDeposit], ;; md::Deploy::initialDeposit
16
+ [cl::t::uint32, dstEid], ;; md::Deploy::dstEid
17
+ [cl::t::uint256, dstOApp] ;; md::Deploy::dstOApp
18
+ ])
19
+ );
20
+ }
@@ -0,0 +1,20 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::ExtendedMd::NAME = "extendedMd"u;
5
+
6
+ ;; field names
7
+ const int md::ExtendedMd::md = 0;
8
+ const int md::ExtendedMd::obj = 1;
9
+ const int md::ExtendedMd::forwardingAddress = 2;
10
+
11
+ cell md::ExtendedMd::New(cell $md, cell $obj, int forwardingAddress) inline method_id {
12
+ return cl::declare(
13
+ md::ExtendedMd::NAME,
14
+ unsafeTuple([
15
+ [cl::t::objRef, $md], ;; md::ExtendedMd::md
16
+ [cl::t::objRef, $obj], ;; md::ExtendedMd::obj
17
+ [cl::t::address, forwardingAddress] ;; md::ExtendedMd::forwardingAddress
18
+ ])
19
+ );
20
+ }
@@ -0,0 +1,18 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::getMsglibInfoCallback::NAME = "getMsgLbCb"u;
5
+
6
+ ;; field names
7
+ const int md::getMsglibInfoCallback::msglibAddress = 0;
8
+ const int md::getMsglibInfoCallback::connectionCode = 1;
9
+
10
+ cell md::getMsglibInfoCallback::New(int msglibAddress, cell connectionCode) inline method_id {
11
+ return cl::declare(
12
+ md::getMsglibInfoCallback::NAME,
13
+ unsafeTuple([
14
+ [cl::t::address, msglibAddress], ;; md::getMsglibInfoCallback::msglibAddress
15
+ [cl::t::cellRef, connectionCode] ;; md::getMsglibInfoCallback::connectionCode
16
+ ])
17
+ );
18
+ }
@@ -0,0 +1,16 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required md name
4
+ const int md::InitEndpoint::NAME = "initEp"u;
5
+
6
+ ;; field names
7
+ const int md::InitEndpoint::channelCode = 0;
8
+
9
+ cell md::InitEndpoint::New(cell channelCode) inline method_id {
10
+ return cl::declare(
11
+ md::InitEndpoint::NAME,
12
+ unsafeTuple([
13
+ [cl::t::cellRef, channelCode] ;; md::InitEndpoint::channelCode
14
+ ])
15
+ );
16
+ }
@@ -0,0 +1,16 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::InitSmlConnection::NAME = "initSmlCon"u;
5
+
6
+ ;; field names
7
+ const int md::InitSmlConnection::channelAddress = 0;
8
+
9
+ cell md::InitSmlConnection::New(int channelAddress) inline method_id {
10
+ return cl::declare(
11
+ md::InitSmlConnection::NAME,
12
+ unsafeTuple([
13
+ [cl::t::address, channelAddress] ;; md::InitSmlConnection::channelAddress
14
+ ])
15
+ );
16
+ }
@@ -0,0 +1,18 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::InitUlnConnection::NAME = "initUlnCon"u;
5
+
6
+ ;; field names
7
+ const int md::InitUlnConnection::ulnSendConfigOApp = 0;
8
+ const int md::InitUlnConnection::UlnReceiveConfigOApp = 1;
9
+
10
+ cell md::InitUlnConnection::New(cell $ulnSendConfigOApp, cell $UlnReceiveConfigOApp) inline method_id {
11
+ return cl::declare(
12
+ md::InitUlnConnection::NAME,
13
+ unsafeTuple([
14
+ [cl::t::objRef, $ulnSendConfigOApp], ;; md::InitUlnConnection::ulnSendConfigOApp
15
+ [cl::t::objRef, $UlnReceiveConfigOApp] ;; md::InitUlnConnection::UlnReceiveConfigOApp
16
+ ])
17
+ );
18
+ }
@@ -0,0 +1,58 @@
1
+ #include "../lz/Packet.fc";
2
+ #include "../../funC++/classlib.fc";
3
+
4
+ ;; required storage name
5
+ const int md::LzReceiveStatus::NAME = "LzRecvSts"u;
6
+
7
+ ;; field names
8
+ const int md::LzReceiveStatus::success = 0;
9
+ const int md::LzReceiveStatus::nonce = 1;
10
+ const int md::LzReceiveStatus::value = 2;
11
+ const int md::LzReceiveStatus::extraData = 3;
12
+ const int md::LzReceiveStatus::reason = 4;
13
+ const int md::LzReceiveStatus::sender = 5;
14
+ const int md::LzReceiveStatus::packet = 6;
15
+ const int md::LzReceiveStatus::executionStatus = 7;
16
+
17
+ cell md::LzReceiveStatus::New(int success, int nonce) inline method_id {
18
+ return cl::declare(
19
+ md::LzReceiveStatus::NAME,
20
+ unsafeTuple([
21
+ [cl::t::bool, success], ;; md::LzReceiveStatus::success
22
+ [cl::t::uint64, nonce], ;; md::LzReceiveStatus::nonce
23
+ [cl::t::coins, 0], ;; md::LzReceiveAlert::value
24
+ [cl::t::cellRef, empty_cell()], ;; md::LzReceiveAlert::extraData
25
+ [cl::t::cellRef, empty_cell()], ;; md::LzReceiveAlert::reason
26
+ [cl::t::address, NULLADDRESS], ;; md::LzReceiveAlert::sender
27
+ [cl::t::objRef, cl::nullObject()], ;; md::LzReceiveAlert::packet
28
+ [cl::t::uint8, 0] ;; md::LzReceiveAlert::executionStatus
29
+ ])
30
+ );
31
+ }
32
+
33
+ cell md::LzReceiveStatus::NewFull(
34
+ int success,
35
+ int nonce,
36
+ int value,
37
+ cell extraData,
38
+ cell reason,
39
+ int sender,
40
+ cell $packet,
41
+ int executionStatus
42
+ ) inline method_id {
43
+ lz::Packet::_assertValidLinkedList(extraData, lz::Packet::MAX_RECEIVE_MESSAGE_CELLS);
44
+ lz::Packet::_assertValidLinkedList(reason, lz::Packet::MAX_RECEIVE_MESSAGE_CELLS);
45
+ return cl::declare(
46
+ md::LzReceiveStatus::NAME,
47
+ unsafeTuple([
48
+ [cl::t::bool, success], ;; md::LzReceiveStatus::success
49
+ [cl::t::uint64, nonce], ;; md::LzReceiveStatus::nonce
50
+ [cl::t::coins, value], ;; md::LzReceiveAlert::sendRequestId
51
+ [cl::t::cellRef, extraData], ;; md::LzReceiveAlert::extraData
52
+ [cl::t::cellRef, reason], ;; md::LzReceiveAlert::reason
53
+ [cl::t::address, sender], ;; md::LzReceiveAlert::sender
54
+ [cl::t::objRef, $packet], ;; md::LzReceiveAlert::packet
55
+ [cl::t::uint8, executionStatus] ;; md::LzReceiveAlert::executionStatus
56
+ ])
57
+ );
58
+ }
@@ -0,0 +1,58 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::LzSend::NAME = "lzSend"u;
5
+
6
+ ;; field names
7
+ const int md::LzSend::sendRequestId = 0;
8
+ const int md::LzSend::sendMsglib = 1;
9
+ const int md::LzSend::sendMsglibConnection = 2;
10
+ const int md::LzSend::packet = 3;
11
+ const int md::LzSend::nativeFee = 4;
12
+ const int md::LzSend::zroFee = 5;
13
+ const int md::LzSend::extraOptions = 6;
14
+ const int md::LzSend::enforcedOptions = 7;
15
+ const int md::LzSend::callbackData = 8;
16
+
17
+ cell md::LzSend::New(
18
+ int nativeFee,
19
+ int zroFee,
20
+ cell $extraOptions,
21
+ cell $enforcedOptions,
22
+ cell $packet,
23
+ cell callbackData
24
+ ) inline method_id {
25
+ return cl::declare(
26
+ md::LzSend::NAME,
27
+ unsafeTuple([
28
+ [cl::t::uint64, 0], ;; md::LzSend::sendRequestId
29
+ [cl::t::address, NULLADDRESS], ;; md::lzSend::sendMsglib
30
+ [cl::t::address, NULLADDRESS], ;; md::lzSend::sendMsglibConnection
31
+ [cl::t::objRef, $packet], ;; md::LzSend::packet
32
+ [cl::t::coins, nativeFee], ;; md::LzSend::nativeFee
33
+ [cl::t::coins, zroFee], ;; md::LzSend::zroFee
34
+ [cl::t::objRef, $extraOptions], ;; md::LzSend::extraOptions
35
+ [cl::t::objRef, $enforcedOptions], ;; md::LzSend::enforcedOptions
36
+ [cl::t::objRef, callbackData] ;; md::LzSend::callbackData
37
+ ])
38
+ );
39
+ }
40
+
41
+ const md::lzSend::requestInfoWidth = _HEADER_WIDTH + 64 + 256 + 256;
42
+ ;; low-level hacking to set these 3 fields in LzSend
43
+ ;; saves about 7000 gas
44
+ cell md::lzSend::fillRequestInfo(
45
+ cell $lzSend,
46
+ int requestId,
47
+ int sendMsglib,
48
+ int sendMsglibConnection
49
+ ) inline {
50
+ slice lzSendSlice = $lzSend.begin_parse();
51
+ return begin_cell()
52
+ .store_slice(lzSendSlice.scutfirst(_HEADER_WIDTH, 0))
53
+ .store_uint64(requestId)
54
+ .store_uint256(sendMsglib)
55
+ .store_uint256(sendMsglibConnection)
56
+ .store_slice(lzSendSlice.sskipfirst(md::lzSend::requestInfoWidth, 0))
57
+ .end_cell();
58
+ }
@@ -0,0 +1,18 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::MdAddress::NAME = "MdAddr"u;
5
+
6
+ ;; field names
7
+ const int md::MdAddress::md = 0;
8
+ const int md::MdAddress::address = 1;
9
+
10
+ cell md::MdAddress::New(cell $md, int address) inline method_id {
11
+ return cl::declare(
12
+ md::MdAddress::NAME,
13
+ unsafeTuple([
14
+ [cl::t::objRef, $md], ;; md::MdAddress::md
15
+ [cl::t::address, address] ;; md::MdAddress::address
16
+ ])
17
+ );
18
+ }
@@ -0,0 +1,18 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::MdEid::NAME = "MdEid"u;
5
+
6
+ ;; field names
7
+ const int md::MdEid::md = 0;
8
+ const int md::MdEid::eid = 1;
9
+
10
+ cell md::MdEid::New(cell $md, int eid) inline method_id {
11
+ return cl::declare(
12
+ md::MdEid::NAME,
13
+ unsafeTuple([
14
+ [cl::t::objRef, $md], ;; md::MdEid::md
15
+ [cl::t::uint32, eid] ;; md::MdEid::eid
16
+ ])
17
+ );
18
+ }
@@ -0,0 +1,18 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::MdObj::NAME = "MdObj"u;
5
+
6
+ ;; field names
7
+ const int md::MdObj::md = 0;
8
+ const int md::MdObj::obj = 1;
9
+
10
+ cell md::MdObj::New(cell $md, cell $obj) inline method_id {
11
+ return cl::declare(
12
+ md::MdObj::NAME,
13
+ unsafeTuple([
14
+ [cl::t::objRef, $md], ;; md::MdObj::md
15
+ [cl::t::objRef, $obj] ;; md::MdObj::obj
16
+ ])
17
+ );
18
+ }
@@ -0,0 +1,22 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::MessagingReceipt::NAME = "msgreceipt"u;
5
+
6
+ ;; field names
7
+ const int md::MessagingReceipt::lzSend = 0;
8
+ const int md::MessagingReceipt::nativeFeeActual = 1;
9
+ const int md::MessagingReceipt::zroFeeActual = 2;
10
+ const int md::MessagingReceipt::errorCode = 3;
11
+
12
+ cell md::MessagingReceipt::New(cell $lzSend, int nativeFee, int zroFee, int errorCode) inline method_id {
13
+ return cl::declare(
14
+ md::MessagingReceipt::NAME,
15
+ unsafeTuple([
16
+ [cl::t::objRef, $lzSend], ;; md::MessagingReceipt::lzSend
17
+ [cl::t::coins, nativeFee], ;; md::MessagingReceipt::nativeFeeActual
18
+ [cl::t::coins, zroFee], ;; md::MessagingReceipt::zroFeeActual
19
+ [cl::t::uint16, errorCode] ;; md::MessagingReceipt::errorCode
20
+ ])
21
+ );
22
+ }
@@ -0,0 +1,113 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::MsglibSendCallback::NAME = "libSndCb"u;
5
+
6
+ ;; field names
7
+ const int md::MsglibSendCallback::nativeFee = 0;
8
+ const int md::MsglibSendCallback::zroFee = 1;
9
+ const int md::MsglibSendCallback::lzSend = 2;
10
+ const int md::MsglibSendCallback::packetEncoded = 3;
11
+ const int md::MsglibSendCallback::payees = 4;
12
+ const int md::MsglibSendCallback::nonceByteOffset = 5;
13
+ const int md::MsglibSendCallback::nonceBytes = 6;
14
+ const int md::MsglibSendCallback::guidByteOffset = 7;
15
+ const int md::MsglibSendCallback::guidBytes = 8;
16
+ const int md::MsglibSendCallback::msglibSendEvents = 9;
17
+ const int md::MsglibSendCallback::errorCode = 10;
18
+
19
+ cell md::MsglibSendCallback::New(
20
+ int nativeFee,
21
+ int zroFee,
22
+ cell $lzSend,
23
+ cell packetEncoded,
24
+ cell payees,
25
+ int nonceByteOffset,
26
+ int nonceBytes,
27
+ int guidByteOffset,
28
+ int guidBytes,
29
+ cell $msglibSendEvents,
30
+ int errorCode
31
+ ) inline method_id {
32
+ return cl::declare(
33
+ md::MsglibSendCallback::NAME,
34
+ unsafeTuple([
35
+ [cl::t::coins, nativeFee], ;; md::MsglibSendCallback::nativeFee
36
+ [cl::t::coins, zroFee], ;; md::MsglibSendCallback::zroFee
37
+ [cl::t::objRef, $lzSend], ;; md::MsglibSendCallback::lzSend
38
+ [cl::t::cellRef, packetEncoded], ;; md::MsglibSendCallback::packetEncoded
39
+ [cl::t::cellRef, payees], ;; md::MsglibSendCallback::payees
40
+ [cl::t::uint16, nonceByteOffset], ;; md::MsglibSendCallback::nonceByteOffset
41
+ [cl::t::uint8, nonceBytes], ;; md::MsglibSendCallback::nonceBytes
42
+ [cl::t::uint16, guidByteOffset], ;; md::MsglibSendCallback::guidByteOffset
43
+ [cl::t::uint8, guidBytes], ;; md::MsglibSendCallback::guidBytes
44
+ [cl::t::objRef, $msglibSendEvents], ;; md::MsglibSendCallback::msglibEvents
45
+ [cl::t::uint8, errorCode] ;; md::MsglibSendCallback::errorCode
46
+ ])
47
+ );
48
+ }
49
+
50
+ const int payeesTuple::addressIdx = 0;
51
+ const int payeesTuple::nativeAmountIdx = 1;
52
+ const int payees::addressBits = 256;
53
+ const int payees::nativeAmountBits = 64;
54
+ const int payees::payeeBits = payees::addressBits + payees::nativeAmountBits;
55
+
56
+ ;; Serializes 3 payees (256-bit address => 64-bit TON coin amount) per cell.
57
+ cell serializePayees(tuple payeesInfo) inline {
58
+ int numPayees = payeesInfo.tlen();
59
+ if (numPayees == 0) {
60
+ return empty_cell();
61
+ }
62
+
63
+ builder linkedList = begin_cell();
64
+ tuple curPayee = empty_tuple();
65
+ int idx = 1;
66
+ while (idx <= numPayees) {
67
+ curPayee = payeesInfo.tuple_at(numPayees - idx);
68
+ if (idx % 3 == 0) {
69
+ linkedList = begin_cell()
70
+ .store_ref(linkedList.end_cell())
71
+ .store_uint256(curPayee.int_at(payeesTuple::addressIdx))
72
+ .store_uint64(curPayee.int_at(payeesTuple::nativeAmountIdx));
73
+ } else {
74
+ linkedList = linkedList
75
+ .store_uint256(curPayee.int_at(payeesTuple::addressIdx))
76
+ .store_uint64(curPayee.int_at(payeesTuple::nativeAmountIdx));
77
+ }
78
+ idx += 1;
79
+ }
80
+
81
+ return linkedList.end_cell();
82
+ }
83
+
84
+ ;; deserializePayees will ignore any bits beyond 960
85
+ tuple deserializePayees(cell serializedPayees) inline {
86
+ slice payeesSlice = serializedPayees.begin_parse();
87
+ if (payeesSlice.slice_empty?()) {
88
+ return empty_tuple();
89
+ }
90
+ tuple payees = empty_tuple();
91
+ while (~ payeesSlice.slice_empty?()) {
92
+ payees = payees.tpush([payeesSlice~load_uint256(), payeesSlice~load_uint64()]);
93
+
94
+ ;; can you extract a second one?
95
+ if (payeesSlice.slice_bits() >= (payees::payeeBits)) {
96
+ payees = payees.tpush([payeesSlice~load_uint256(), payeesSlice~load_uint64()]);
97
+ }
98
+
99
+ ;; how about a third?
100
+ if (payeesSlice.slice_bits() >= (payees::payeeBits)) {
101
+ payees = payees.tpush([payeesSlice~load_uint256(), payeesSlice~load_uint64()]);
102
+ }
103
+
104
+ if (payeesSlice.slice_refs() > 0) {
105
+ payeesSlice = payeesSlice.preload_first_ref().begin_parse();
106
+ }
107
+ }
108
+ return payees;
109
+ }
110
+
111
+ ;; Pop the last payee off the output of deserializePayees
112
+ ;; and return the modified payee list and the popped payee.
113
+ (tuple, [int, int]) tpopPayee(tuple t) asm "TPOP";
@@ -0,0 +1,16 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::Nonce::NAME = "nonce"u;
5
+
6
+ ;; field names
7
+ const int md::Nonce::nonce = 0;
8
+
9
+ cell md::Nonce::New(int nonce) inline method_id {
10
+ return cl::declare(
11
+ md::Nonce::NAME,
12
+ unsafeTuple([
13
+ [cl::t::uint64, nonce] ;; md::Nonce::nonce
14
+ ])
15
+ );
16
+ }
@@ -0,0 +1,20 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::OptionsExtended::NAME = "OptionsExt"u;
5
+
6
+ ;; field names
7
+ const int md::OptionsExtended::eid = 0;
8
+ const int md::OptionsExtended::msgType = 1;
9
+ const int md::OptionsExtended::options = 2;
10
+
11
+ cell md::OptionsExtended::New(int eid, int msgType, cell $options) inline method_id {
12
+ return cl::declare(
13
+ md::OptionsExtended::NAME,
14
+ unsafeTuple([
15
+ [cl::t::uint32, eid], ;; md::OptionsExtended::eid
16
+ [cl::t::uint32, msgType], ;; md::OptionsExtended::msgType
17
+ [cl::t::objRef, $options] ;; md::OptionsExtended::options
18
+ ])
19
+ );
20
+ }
@@ -0,0 +1,27 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::OptionsV1::NAME = "OptionsV1"u;
5
+
6
+ ;; field names
7
+ const int md::OptionsV1::lzReceiveGas = 0;
8
+ const int md::OptionsV1::lzReceiveValue = 1;
9
+ const int md::OptionsV1::nativeDropAddress = 2;
10
+ const int md::OptionsV1::nativeDropAmount = 3;
11
+
12
+ cell md::OptionsV1::New(
13
+ int lzReceiveGas,
14
+ int lzReceiveValue,
15
+ int nativeDropAddress,
16
+ int nativeDropAmount
17
+ ) inline method_id {
18
+ return cl::declare(
19
+ md::OptionsV1::NAME,
20
+ unsafeTuple([
21
+ [cl::t::uint256, lzReceiveGas], ;; md::OptionsV1::lzReceiveGas
22
+ [cl::t::uint256, lzReceiveValue], ;; md::OptionsV1::lzReceiveValue
23
+ [cl::t::address, nativeDropAddress], ;; md::OptionsV1::nativeDropAddress
24
+ [cl::t::uint256, nativeDropAmount] ;; md::OptionsV1::nativeDropAmount
25
+ ])
26
+ );
27
+ }
@@ -0,0 +1,34 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::OptionsV2::NAME = "OptionsV2"u;
5
+
6
+ ;; field names
7
+ const int md::OptionsV2::lzReceiveGas = 0;
8
+ const int md::OptionsV2::lzReceiveValue = 1;
9
+ const int md::OptionsV2::lzComposeGas = 2;
10
+ const int md::OptionsV2::nativeDropAddress = 3;
11
+ const int md::OptionsV2::nativeDropAmount = 4;
12
+
13
+ ;; This is used to demonstrate that we are capable of having different options objects
14
+ ;; This is not finalized and the 'V2' shouldnt be considered a 'valid' options type in the protocol YET
15
+ ;; This is used for testing purposes currently
16
+
17
+ cell md::OptionsV2::New(
18
+ int lzReceiveGas,
19
+ int lzReceiveValue,
20
+ int lzComposeGas,
21
+ int nativeDropAddress,
22
+ int nativeDropAmount
23
+ ) inline method_id {
24
+ return cl::declare(
25
+ md::OptionsV2::NAME,
26
+ unsafeTuple([
27
+ [cl::t::uint256, lzReceiveGas], ;; md::OptionsV2::lzReceiveGas
28
+ [cl::t::uint256, lzReceiveValue], ;; md::OptionsV2::lzReceiveValue
29
+ [cl::t::uint256, lzComposeGas], ;; md::OptionsV2::lzComposeGas
30
+ [cl::t::address, nativeDropAddress], ;; md::OptionsV2::nativeDropAddress
31
+ [cl::t::uint256, nativeDropAmount] ;; md::OptionsV2::nativeDropAmount
32
+ ])
33
+ );
34
+ }
@@ -0,0 +1,18 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::PacketId::NAME = "pktId"u;
5
+
6
+ ;; field names
7
+ const int md::PacketId::path = 0;
8
+ const int md::PacketId::nonce = 1;
9
+
10
+ cell md::PacketId::New(cell $path, int nonce) inline method_id {
11
+ return cl::declare(
12
+ md::PacketId::NAME,
13
+ unsafeTuple([
14
+ [cl::t::objRef, $path], ;; md::PacketId::path
15
+ [cl::t::uint64, nonce] ;; md::PacketId::nonce
16
+ ])
17
+ );
18
+ }
@@ -0,0 +1,39 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::PacketSent::NAME = "pktSent"u;
5
+
6
+ ;; field names
7
+ const int md::PacketSent::nativeFee = 0;
8
+ const int md::PacketSent::zroFee = 1;
9
+ const int md::PacketSent::extraOptions = 2;
10
+ const int md::PacketSent::enforcedOptions = 3;
11
+ const int md::PacketSent::packetEncoded = 4;
12
+ const int md::PacketSent::nonce = 5;
13
+ const int md::PacketSent::msglibAddress = 6;
14
+ const int md::PacketSent::msglibSendEvents = 7;
15
+
16
+ cell md::PacketSent::New(
17
+ int nativeFee,
18
+ int zroFee,
19
+ cell $extraOptions,
20
+ cell $enforcedOptions,
21
+ cell packetEncoded,
22
+ int nonce,
23
+ int msglibAddress,
24
+ cell $msglibSendEvents
25
+ ) inline method_id {
26
+ return cl::declare(
27
+ md::PacketSent::NAME,
28
+ unsafeTuple([
29
+ [cl::t::coins, nativeFee], ;; md::PacketSent::nativeFee
30
+ [cl::t::coins, zroFee], ;; md::PacketSent::zroFee
31
+ [cl::t::objRef, $extraOptions], ;; md::PacketSent::extraOptions
32
+ [cl::t::objRef, $enforcedOptions], ;; md::PacketSent::enforcedOptions
33
+ [cl::t::cellRef, packetEncoded], ;; md::PacketSent::packetEncoded
34
+ [cl::t::uint64, nonce], ;; md::PacketSent::nonce
35
+ [cl::t::address, msglibAddress], ;; md::PacketSent::msglibAddress
36
+ [cl::t::objRef, $msglibSendEvents] ;; md::PacketSent::msglibEvents
37
+ ])
38
+ );
39
+ }
@@ -0,0 +1,16 @@
1
+ #include "../../funC++/classlib.fc";
2
+
3
+ ;; required storage name
4
+ const int md::SetAddress::NAME = "setAddress"u;
5
+
6
+ ;; field names
7
+ const int md::SetAddress::address = 0;
8
+
9
+ cell md::SetAddress::New(int address) inline method_id {
10
+ return cl::declare(
11
+ md::SetAddress::NAME,
12
+ unsafeTuple([
13
+ [cl::t::address, address] ;; md::SetAddress::owner
14
+ ])
15
+ );
16
+ }