@layerzerolabs/lz-evm-v1-0.7 1.5.76 → 1.5.78

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 (361) hide show
  1. package/contracts/Endpoint.sol +382 -0
  2. package/contracts/EndpointLite.sol +379 -0
  3. package/contracts/FeeHandler.sol +38 -0
  4. package/contracts/NonceContract.sol +23 -0
  5. package/contracts/NonceContractRadar.sol +31 -0
  6. package/contracts/PriceFeed.sol +193 -0
  7. package/contracts/Relayer.sol +217 -0
  8. package/contracts/RelayerV2.sol +364 -0
  9. package/contracts/RelayerV2Radar.sol +294 -0
  10. package/contracts/Treasury.sol +70 -0
  11. package/contracts/TreasuryV2.sol +76 -0
  12. package/contracts/TreasuryV2Radar.sol +68 -0
  13. package/contracts/UltraLightNode.sol +614 -0
  14. package/contracts/UltraLightNodeV2.sol +588 -0
  15. package/contracts/UltraLightNodeV2AltToken.sol +583 -0
  16. package/contracts/UltraLightNodeV2Radar.sol +671 -0
  17. package/contracts/arbitrum/interfaces/ArbSys.sol +99 -0
  18. package/contracts/example/AltTokenUA.sol +43 -0
  19. package/contracts/mocks/ContractOne.sol +11 -0
  20. package/contracts/mocks/ContractTwo.sol +17 -0
  21. package/contracts/mocks/GIN.sol +52 -0
  22. package/contracts/mocks/IsContract.sol +15 -0
  23. package/contracts/mocks/LayerZeroOracleBadMock.sol +93 -0
  24. package/contracts/mocks/LayerZeroOracleMock.sol +71 -0
  25. package/contracts/mocks/LayerZeroOracleMockV2.sol +76 -0
  26. package/contracts/mocks/LayerZeroTokenMock.sol +11 -0
  27. package/contracts/mocks/MockToken.sol +25 -0
  28. package/contracts/mocks/OmniCounter.sol +247 -0
  29. package/contracts/mocks/PacketData.sol +31 -0
  30. package/contracts/mocks/PingPong.sol +157 -0
  31. package/contracts/mocks/PriceFeedV2Mock.sol +188 -0
  32. package/contracts/mocks/Token.sol +26 -0
  33. package/contracts/mocks/UltraLightNodeV2Mock.sol +58 -0
  34. package/contracts/precrime/PreCrime.sol +90 -0
  35. package/contracts/precrime/example/inherit/CounterI.sol +74 -0
  36. package/contracts/precrime/example/inherit/CounterPrecrime.sol +182 -0
  37. package/contracts/precrime/example/view/CounterPrecrimeView.sol +177 -0
  38. package/contracts/precrime/example/view/CounterV.sol +46 -0
  39. package/contracts/precrime/example/view/CounterView.sol +61 -0
  40. package/contracts/proof/FPValidator.sol +177 -0
  41. package/contracts/proof/MPTValidator.sol +136 -0
  42. package/contracts/proof/MPTValidator01.sol +211 -0
  43. package/contracts/proof/MPTValidatorStgV3.sol +262 -0
  44. package/contracts/proof/MPTValidatorV2.sol +133 -0
  45. package/contracts/proof/MPTValidatorV4.sol +282 -0
  46. package/contracts/proof/MPTValidatorV5.sol +291 -0
  47. package/contracts/proof/utility/Buffer.sol +171 -0
  48. package/contracts/proof/utility/LayerZeroPacket.sol +178 -0
  49. package/contracts/proof/utility/RLPDecode.sol +382 -0
  50. package/contracts/proof/utility/UltraLightNodeEVMDecoder.sol +47 -0
  51. package/contracts/proxy/DefaultProxyAdmin.sol +84 -0
  52. package/contracts/proxy/TransparentUpgradeableProxy.sol +151 -0
  53. package/package.json +5 -89
  54. package/dist/index.cjs +0 -21990
  55. package/dist/index.cjs.map +0 -1
  56. package/dist/index.d.mts +0 -30777
  57. package/dist/index.d.ts +0 -2
  58. package/dist/index.js +0 -18
  59. package/dist/index.mjs +0 -21930
  60. package/dist/index.mjs.map +0 -1
  61. package/dist/ops.cjs +0 -698
  62. package/dist/ops.cjs.map +0 -1
  63. package/dist/ops.d.mts +0 -47
  64. package/dist/ops.d.ts +0 -47
  65. package/dist/ops.mjs +0 -687
  66. package/dist/ops.mjs.map +0 -1
  67. package/dist/tsconfig.tsbuildinfo +0 -1
  68. package/dist/typechain-types/Endpoint.d.ts +0 -642
  69. package/dist/typechain-types/Endpoint.js +0 -2
  70. package/dist/typechain-types/EndpointLite.d.ts +0 -634
  71. package/dist/typechain-types/EndpointLite.js +0 -2
  72. package/dist/typechain-types/FeeHandler.d.ts +0 -153
  73. package/dist/typechain-types/FeeHandler.js +0 -2
  74. package/dist/typechain-types/NonceContract.d.ts +0 -66
  75. package/dist/typechain-types/NonceContract.js +0 -2
  76. package/dist/typechain-types/NonceContractRadar.d.ts +0 -90
  77. package/dist/typechain-types/NonceContractRadar.js +0 -2
  78. package/dist/typechain-types/PriceFeed.d.ts +0 -476
  79. package/dist/typechain-types/PriceFeed.js +0 -2
  80. package/dist/typechain-types/Relayer.d.ts +0 -436
  81. package/dist/typechain-types/Relayer.js +0 -2
  82. package/dist/typechain-types/RelayerV2.sol/IStargateComposer.d.ts +0 -42
  83. package/dist/typechain-types/RelayerV2.sol/IStargateComposer.js +0 -2
  84. package/dist/typechain-types/RelayerV2.sol/RelayerV2.d.ts +0 -713
  85. package/dist/typechain-types/RelayerV2.sol/RelayerV2.js +0 -2
  86. package/dist/typechain-types/RelayerV2.sol/index.d.ts +0 -2
  87. package/dist/typechain-types/RelayerV2.sol/index.js +0 -2
  88. package/dist/typechain-types/RelayerV2Radar.d.ts +0 -548
  89. package/dist/typechain-types/RelayerV2Radar.js +0 -2
  90. package/dist/typechain-types/Treasury.d.ts +0 -269
  91. package/dist/typechain-types/Treasury.js +0 -2
  92. package/dist/typechain-types/TreasuryV2.d.ts +0 -285
  93. package/dist/typechain-types/TreasuryV2.js +0 -2
  94. package/dist/typechain-types/TreasuryV2Radar.d.ts +0 -269
  95. package/dist/typechain-types/TreasuryV2Radar.js +0 -2
  96. package/dist/typechain-types/UltraLightNode.d.ts +0 -954
  97. package/dist/typechain-types/UltraLightNode.js +0 -2
  98. package/dist/typechain-types/UltraLightNodeV2.d.ts +0 -916
  99. package/dist/typechain-types/UltraLightNodeV2.js +0 -2
  100. package/dist/typechain-types/UltraLightNodeV2AltToken.d.ts +0 -924
  101. package/dist/typechain-types/UltraLightNodeV2AltToken.js +0 -2
  102. package/dist/typechain-types/UltraLightNodeV2Radar.d.ts +0 -996
  103. package/dist/typechain-types/UltraLightNodeV2Radar.js +0 -2
  104. package/dist/typechain-types/arbitrum/index.d.ts +0 -2
  105. package/dist/typechain-types/arbitrum/index.js +0 -2
  106. package/dist/typechain-types/arbitrum/interfaces/ArbSys.d.ts +0 -177
  107. package/dist/typechain-types/arbitrum/interfaces/ArbSys.js +0 -2
  108. package/dist/typechain-types/arbitrum/interfaces/index.d.ts +0 -1
  109. package/dist/typechain-types/arbitrum/interfaces/index.js +0 -2
  110. package/dist/typechain-types/common.d.ts +0 -21
  111. package/dist/typechain-types/common.js +0 -2
  112. package/dist/typechain-types/factories/EndpointLite__factory.d.ts +0 -732
  113. package/dist/typechain-types/factories/EndpointLite__factory.js +0 -988
  114. package/dist/typechain-types/factories/Endpoint__factory.d.ts +0 -750
  115. package/dist/typechain-types/factories/Endpoint__factory.js +0 -1012
  116. package/dist/typechain-types/factories/FeeHandler__factory.d.ts +0 -127
  117. package/dist/typechain-types/factories/FeeHandler__factory.js +0 -203
  118. package/dist/typechain-types/factories/NonceContractRadar__factory.d.ts +0 -110
  119. package/dist/typechain-types/factories/NonceContractRadar__factory.js +0 -183
  120. package/dist/typechain-types/factories/NonceContract__factory.d.ts +0 -78
  121. package/dist/typechain-types/factories/NonceContract__factory.js +0 -142
  122. package/dist/typechain-types/factories/PriceFeed__factory.d.ts +0 -419
  123. package/dist/typechain-types/factories/PriceFeed__factory.js +0 -585
  124. package/dist/typechain-types/factories/RelayerV2.sol/IStargateComposer__factory.d.ts +0 -18
  125. package/dist/typechain-types/factories/RelayerV2.sol/IStargateComposer__factory.js +0 -35
  126. package/dist/typechain-types/factories/RelayerV2.sol/RelayerV2__factory.d.ts +0 -780
  127. package/dist/typechain-types/factories/RelayerV2.sol/RelayerV2__factory.js +0 -1048
  128. package/dist/typechain-types/factories/RelayerV2.sol/index.d.ts +0 -2
  129. package/dist/typechain-types/factories/RelayerV2.sol/index.js +0 -21
  130. package/dist/typechain-types/factories/RelayerV2Radar__factory.d.ts +0 -630
  131. package/dist/typechain-types/factories/RelayerV2Radar__factory.js +0 -853
  132. package/dist/typechain-types/factories/Relayer__factory.d.ts +0 -469
  133. package/dist/typechain-types/factories/Relayer__factory.js +0 -642
  134. package/dist/typechain-types/factories/TreasuryV2Radar__factory.d.ts +0 -249
  135. package/dist/typechain-types/factories/TreasuryV2Radar__factory.js +0 -362
  136. package/dist/typechain-types/factories/TreasuryV2__factory.d.ts +0 -267
  137. package/dist/typechain-types/factories/TreasuryV2__factory.js +0 -385
  138. package/dist/typechain-types/factories/Treasury__factory.d.ts +0 -249
  139. package/dist/typechain-types/factories/Treasury__factory.js +0 -362
  140. package/dist/typechain-types/factories/UltraLightNodeV2AltToken__factory.d.ts +0 -1133
  141. package/dist/typechain-types/factories/UltraLightNodeV2AltToken__factory.js +0 -1495
  142. package/dist/typechain-types/factories/UltraLightNodeV2Radar__factory.d.ts +0 -1213
  143. package/dist/typechain-types/factories/UltraLightNodeV2Radar__factory.js +0 -1599
  144. package/dist/typechain-types/factories/UltraLightNodeV2__factory.d.ts +0 -1119
  145. package/dist/typechain-types/factories/UltraLightNodeV2__factory.js +0 -1477
  146. package/dist/typechain-types/factories/UltraLightNode__factory.d.ts +0 -1156
  147. package/dist/typechain-types/factories/UltraLightNode__factory.js +0 -1529
  148. package/dist/typechain-types/factories/arbitrum/index.d.ts +0 -1
  149. package/dist/typechain-types/factories/arbitrum/index.js +0 -30
  150. package/dist/typechain-types/factories/arbitrum/interfaces/ArbSys__factory.d.ts +0 -215
  151. package/dist/typechain-types/factories/arbitrum/interfaces/ArbSys__factory.js +0 -290
  152. package/dist/typechain-types/factories/arbitrum/interfaces/index.d.ts +0 -1
  153. package/dist/typechain-types/factories/arbitrum/interfaces/index.js +0 -19
  154. package/dist/typechain-types/factories/index.d.ts +0 -21
  155. package/dist/typechain-types/factories/index.js +0 -65
  156. package/dist/typechain-types/factories/interfaces/IContractOne__factory.d.ts +0 -18
  157. package/dist/typechain-types/factories/interfaces/IContractOne__factory.js +0 -35
  158. package/dist/typechain-types/factories/interfaces/ILayerZeroEndpoint__factory.d.ts +0 -342
  159. package/dist/typechain-types/factories/interfaces/ILayerZeroEndpoint__factory.js +0 -458
  160. package/dist/typechain-types/factories/interfaces/ILayerZeroMessagingLibraryV2__factory.d.ts +0 -142
  161. package/dist/typechain-types/factories/interfaces/ILayerZeroMessagingLibraryV2__factory.js +0 -195
  162. package/dist/typechain-types/factories/interfaces/ILayerZeroMessagingLibrary__factory.d.ts +0 -124
  163. package/dist/typechain-types/factories/interfaces/ILayerZeroMessagingLibrary__factory.js +0 -171
  164. package/dist/typechain-types/factories/interfaces/ILayerZeroOracleV2__factory.d.ts +0 -74
  165. package/dist/typechain-types/factories/interfaces/ILayerZeroOracleV2__factory.js +0 -108
  166. package/dist/typechain-types/factories/interfaces/ILayerZeroOracle__factory.d.ts +0 -58
  167. package/dist/typechain-types/factories/interfaces/ILayerZeroOracle__factory.js +0 -88
  168. package/dist/typechain-types/factories/interfaces/ILayerZeroPriceFeedV2__factory.d.ts +0 -79
  169. package/dist/typechain-types/factories/interfaces/ILayerZeroPriceFeedV2__factory.js +0 -115
  170. package/dist/typechain-types/factories/interfaces/ILayerZeroPriceFeed__factory.d.ts +0 -81
  171. package/dist/typechain-types/factories/interfaces/ILayerZeroPriceFeed__factory.js +0 -118
  172. package/dist/typechain-types/factories/interfaces/ILayerZeroReceiver__factory.d.ts +0 -30
  173. package/dist/typechain-types/factories/interfaces/ILayerZeroReceiver__factory.js +0 -50
  174. package/dist/typechain-types/factories/interfaces/ILayerZeroRelayerV2PriceData__factory.d.ts +0 -62
  175. package/dist/typechain-types/factories/interfaces/ILayerZeroRelayerV2PriceData__factory.js +0 -94
  176. package/dist/typechain-types/factories/interfaces/ILayerZeroRelayerV2__factory.d.ts +0 -82
  177. package/dist/typechain-types/factories/interfaces/ILayerZeroRelayerV2__factory.js +0 -118
  178. package/dist/typechain-types/factories/interfaces/ILayerZeroRelayer__factory.d.ts +0 -70
  179. package/dist/typechain-types/factories/interfaces/ILayerZeroRelayer__factory.js +0 -103
  180. package/dist/typechain-types/factories/interfaces/ILayerZeroTreasury__factory.d.ts +0 -30
  181. package/dist/typechain-types/factories/interfaces/ILayerZeroTreasury__factory.js +0 -51
  182. package/dist/typechain-types/factories/interfaces/ILayerZeroUltraLightNodeV1__factory.d.ts +0 -120
  183. package/dist/typechain-types/factories/interfaces/ILayerZeroUltraLightNodeV1__factory.js +0 -167
  184. package/dist/typechain-types/factories/interfaces/ILayerZeroUltraLightNodeV2__factory.d.ts +0 -460
  185. package/dist/typechain-types/factories/interfaces/ILayerZeroUltraLightNodeV2__factory.js +0 -593
  186. package/dist/typechain-types/factories/interfaces/ILayerZeroUserApplicationConfig__factory.d.ts +0 -64
  187. package/dist/typechain-types/factories/interfaces/ILayerZeroUserApplicationConfig__factory.js +0 -94
  188. package/dist/typechain-types/factories/interfaces/ILayerZeroValidationLibrary__factory.d.ts +0 -59
  189. package/dist/typechain-types/factories/interfaces/ILayerZeroValidationLibrary__factory.js +0 -88
  190. package/dist/typechain-types/factories/interfaces/IValidationLibraryHelperV2__factory.d.ts +0 -118
  191. package/dist/typechain-types/factories/interfaces/IValidationLibraryHelperV2__factory.js +0 -165
  192. package/dist/typechain-types/factories/interfaces/IValidationLibraryHelper__factory.d.ts +0 -112
  193. package/dist/typechain-types/factories/interfaces/IValidationLibraryHelper__factory.js +0 -157
  194. package/dist/typechain-types/factories/interfaces/index.d.ts +0 -19
  195. package/dist/typechain-types/factories/interfaces/index.js +0 -55
  196. package/dist/typechain-types/factories/precrime/PreCrimeBase__factory.d.ts +0 -198
  197. package/dist/typechain-types/factories/precrime/PreCrimeBase__factory.js +0 -270
  198. package/dist/typechain-types/factories/precrime/PreCrimeView__factory.d.ts +0 -243
  199. package/dist/typechain-types/factories/precrime/PreCrimeView__factory.js +0 -329
  200. package/dist/typechain-types/factories/precrime/PreCrime__factory.d.ts +0 -270
  201. package/dist/typechain-types/factories/precrime/PreCrime__factory.js +0 -364
  202. package/dist/typechain-types/factories/precrime/example/index.d.ts +0 -2
  203. package/dist/typechain-types/factories/precrime/example/index.js +0 -31
  204. package/dist/typechain-types/factories/precrime/example/inherit/CounterI__factory.d.ts +0 -486
  205. package/dist/typechain-types/factories/precrime/example/inherit/CounterI__factory.js +0 -677
  206. package/dist/typechain-types/factories/precrime/example/inherit/CounterPrecrime__factory.d.ts +0 -348
  207. package/dist/typechain-types/factories/precrime/example/inherit/CounterPrecrime__factory.js +0 -468
  208. package/dist/typechain-types/factories/precrime/example/inherit/index.d.ts +0 -2
  209. package/dist/typechain-types/factories/precrime/example/inherit/index.js +0 -21
  210. package/dist/typechain-types/factories/precrime/example/view/CounterPrecrimeView__factory.d.ts +0 -329
  211. package/dist/typechain-types/factories/precrime/example/view/CounterPrecrimeView__factory.js +0 -470
  212. package/dist/typechain-types/factories/precrime/example/view/CounterV__factory.d.ts +0 -146
  213. package/dist/typechain-types/factories/precrime/example/view/CounterV__factory.js +0 -231
  214. package/dist/typechain-types/factories/precrime/example/view/CounterView__factory.d.ts +0 -136
  215. package/dist/typechain-types/factories/precrime/example/view/CounterView__factory.js +0 -219
  216. package/dist/typechain-types/factories/precrime/example/view/index.d.ts +0 -3
  217. package/dist/typechain-types/factories/precrime/example/view/index.js +0 -23
  218. package/dist/typechain-types/factories/precrime/index.d.ts +0 -5
  219. package/dist/typechain-types/factories/precrime/index.js +0 -37
  220. package/dist/typechain-types/factories/precrime/interfaces/IPreCrimeBase__factory.d.ts +0 -88
  221. package/dist/typechain-types/factories/precrime/interfaces/IPreCrimeBase__factory.js +0 -127
  222. package/dist/typechain-types/factories/precrime/interfaces/IPreCrimeView__factory.d.ts +0 -123
  223. package/dist/typechain-types/factories/precrime/interfaces/IPreCrimeView__factory.js +0 -173
  224. package/dist/typechain-types/factories/precrime/interfaces/IPreCrime__factory.d.ts +0 -123
  225. package/dist/typechain-types/factories/precrime/interfaces/IPreCrime__factory.js +0 -173
  226. package/dist/typechain-types/factories/precrime/interfaces/index.d.ts +0 -3
  227. package/dist/typechain-types/factories/precrime/interfaces/index.js +0 -23
  228. package/dist/typechain-types/factories/proof/FPValidator__factory.d.ts +0 -261
  229. package/dist/typechain-types/factories/proof/FPValidator__factory.js +0 -380
  230. package/dist/typechain-types/factories/proof/MPTValidator01__factory.d.ts +0 -271
  231. package/dist/typechain-types/factories/proof/MPTValidator01__factory.js +0 -393
  232. package/dist/typechain-types/factories/proof/MPTValidatorStgV3__factory.d.ts +0 -249
  233. package/dist/typechain-types/factories/proof/MPTValidatorStgV3__factory.js +0 -364
  234. package/dist/typechain-types/factories/proof/MPTValidatorV2__factory.d.ts +0 -175
  235. package/dist/typechain-types/factories/proof/MPTValidatorV2__factory.js +0 -266
  236. package/dist/typechain-types/factories/proof/MPTValidatorV4.sol/IUltraLightNode__factory.d.ts +0 -82
  237. package/dist/typechain-types/factories/proof/MPTValidatorV4.sol/IUltraLightNode__factory.js +0 -119
  238. package/dist/typechain-types/factories/proof/MPTValidatorV4.sol/MPTValidatorV4__factory.d.ts +0 -330
  239. package/dist/typechain-types/factories/proof/MPTValidatorV4.sol/MPTValidatorV4__factory.js +0 -468
  240. package/dist/typechain-types/factories/proof/MPTValidatorV4.sol/index.d.ts +0 -2
  241. package/dist/typechain-types/factories/proof/MPTValidatorV4.sol/index.js +0 -21
  242. package/dist/typechain-types/factories/proof/MPTValidatorV5.sol/IUltraLightNode__factory.d.ts +0 -82
  243. package/dist/typechain-types/factories/proof/MPTValidatorV5.sol/IUltraLightNode__factory.js +0 -119
  244. package/dist/typechain-types/factories/proof/MPTValidatorV5.sol/MPTValidatorV5__factory.d.ts +0 -344
  245. package/dist/typechain-types/factories/proof/MPTValidatorV5.sol/MPTValidatorV5__factory.js +0 -486
  246. package/dist/typechain-types/factories/proof/MPTValidatorV5.sol/index.d.ts +0 -2
  247. package/dist/typechain-types/factories/proof/MPTValidatorV5.sol/index.js +0 -21
  248. package/dist/typechain-types/factories/proof/MPTValidator__factory.d.ts +0 -124
  249. package/dist/typechain-types/factories/proof/MPTValidator__factory.js +0 -200
  250. package/dist/typechain-types/factories/proof/index.d.ts +0 -7
  251. package/dist/typechain-types/factories/proof/index.js +0 -41
  252. package/dist/typechain-types/factories/proxy/DefaultProxyAdmin__factory.d.ts +0 -143
  253. package/dist/typechain-types/factories/proxy/DefaultProxyAdmin__factory.js +0 -225
  254. package/dist/typechain-types/factories/proxy/TransparentUpgradeableProxy__factory.d.ts +0 -121
  255. package/dist/typechain-types/factories/proxy/TransparentUpgradeableProxy__factory.js +0 -196
  256. package/dist/typechain-types/factories/proxy/index.d.ts +0 -2
  257. package/dist/typechain-types/factories/proxy/index.js +0 -21
  258. package/dist/typechain-types/index.d.ts +0 -129
  259. package/dist/typechain-types/index.js +0 -144
  260. package/dist/typechain-types/interfaces/IContractOne.d.ts +0 -50
  261. package/dist/typechain-types/interfaces/IContractOne.js +0 -2
  262. package/dist/typechain-types/interfaces/ILayerZeroEndpoint.d.ts +0 -267
  263. package/dist/typechain-types/interfaces/ILayerZeroEndpoint.js +0 -2
  264. package/dist/typechain-types/interfaces/ILayerZeroMessagingLibrary.d.ts +0 -109
  265. package/dist/typechain-types/interfaces/ILayerZeroMessagingLibrary.js +0 -2
  266. package/dist/typechain-types/interfaces/ILayerZeroMessagingLibraryV2.d.ts +0 -117
  267. package/dist/typechain-types/interfaces/ILayerZeroMessagingLibraryV2.js +0 -2
  268. package/dist/typechain-types/interfaces/ILayerZeroOracle.d.ts +0 -70
  269. package/dist/typechain-types/interfaces/ILayerZeroOracle.js +0 -2
  270. package/dist/typechain-types/interfaces/ILayerZeroOracleV2.d.ts +0 -76
  271. package/dist/typechain-types/interfaces/ILayerZeroOracleV2.js +0 -2
  272. package/dist/typechain-types/interfaces/ILayerZeroPriceFeed.d.ts +0 -96
  273. package/dist/typechain-types/interfaces/ILayerZeroPriceFeed.js +0 -2
  274. package/dist/typechain-types/interfaces/ILayerZeroPriceFeedV2.d.ts +0 -100
  275. package/dist/typechain-types/interfaces/ILayerZeroPriceFeedV2.js +0 -2
  276. package/dist/typechain-types/interfaces/ILayerZeroReceiver.d.ts +0 -50
  277. package/dist/typechain-types/interfaces/ILayerZeroReceiver.js +0 -2
  278. package/dist/typechain-types/interfaces/ILayerZeroRelayer.d.ts +0 -70
  279. package/dist/typechain-types/interfaces/ILayerZeroRelayer.js +0 -2
  280. package/dist/typechain-types/interfaces/ILayerZeroRelayerV2.d.ts +0 -76
  281. package/dist/typechain-types/interfaces/ILayerZeroRelayerV2.js +0 -2
  282. package/dist/typechain-types/interfaces/ILayerZeroRelayerV2PriceData.d.ts +0 -70
  283. package/dist/typechain-types/interfaces/ILayerZeroRelayerV2PriceData.js +0 -2
  284. package/dist/typechain-types/interfaces/ILayerZeroTreasury.d.ts +0 -42
  285. package/dist/typechain-types/interfaces/ILayerZeroTreasury.js +0 -2
  286. package/dist/typechain-types/interfaces/ILayerZeroUltraLightNodeV1.d.ts +0 -114
  287. package/dist/typechain-types/interfaces/ILayerZeroUltraLightNodeV1.js +0 -2
  288. package/dist/typechain-types/interfaces/ILayerZeroUltraLightNodeV2.d.ts +0 -384
  289. package/dist/typechain-types/interfaces/ILayerZeroUltraLightNodeV2.js +0 -2
  290. package/dist/typechain-types/interfaces/ILayerZeroUserApplicationConfig.d.ts +0 -98
  291. package/dist/typechain-types/interfaces/ILayerZeroUserApplicationConfig.js +0 -2
  292. package/dist/typechain-types/interfaces/ILayerZeroValidationLibrary.d.ts +0 -78
  293. package/dist/typechain-types/interfaces/ILayerZeroValidationLibrary.js +0 -2
  294. package/dist/typechain-types/interfaces/IValidationLibraryHelper.d.ts +0 -98
  295. package/dist/typechain-types/interfaces/IValidationLibraryHelper.js +0 -2
  296. package/dist/typechain-types/interfaces/IValidationLibraryHelperV2.d.ts +0 -106
  297. package/dist/typechain-types/interfaces/IValidationLibraryHelperV2.js +0 -2
  298. package/dist/typechain-types/interfaces/index.d.ts +0 -19
  299. package/dist/typechain-types/interfaces/index.js +0 -2
  300. package/dist/typechain-types/precrime/PreCrime.d.ts +0 -228
  301. package/dist/typechain-types/precrime/PreCrime.js +0 -2
  302. package/dist/typechain-types/precrime/PreCrimeBase.d.ts +0 -185
  303. package/dist/typechain-types/precrime/PreCrimeBase.js +0 -2
  304. package/dist/typechain-types/precrime/PreCrimeView.d.ts +0 -210
  305. package/dist/typechain-types/precrime/PreCrimeView.js +0 -2
  306. package/dist/typechain-types/precrime/example/index.d.ts +0 -4
  307. package/dist/typechain-types/precrime/example/index.js +0 -2
  308. package/dist/typechain-types/precrime/example/inherit/CounterI.d.ts +0 -415
  309. package/dist/typechain-types/precrime/example/inherit/CounterI.js +0 -2
  310. package/dist/typechain-types/precrime/example/inherit/CounterPrecrime.d.ts +0 -291
  311. package/dist/typechain-types/precrime/example/inherit/CounterPrecrime.js +0 -2
  312. package/dist/typechain-types/precrime/example/inherit/index.d.ts +0 -2
  313. package/dist/typechain-types/precrime/example/inherit/index.js +0 -2
  314. package/dist/typechain-types/precrime/example/view/CounterPrecrimeView.d.ts +0 -266
  315. package/dist/typechain-types/precrime/example/view/CounterPrecrimeView.js +0 -2
  316. package/dist/typechain-types/precrime/example/view/CounterV.d.ts +0 -158
  317. package/dist/typechain-types/precrime/example/view/CounterV.js +0 -2
  318. package/dist/typechain-types/precrime/example/view/CounterView.d.ts +0 -81
  319. package/dist/typechain-types/precrime/example/view/CounterView.js +0 -2
  320. package/dist/typechain-types/precrime/example/view/index.d.ts +0 -3
  321. package/dist/typechain-types/precrime/example/view/index.js +0 -2
  322. package/dist/typechain-types/precrime/index.d.ts +0 -7
  323. package/dist/typechain-types/precrime/index.js +0 -2
  324. package/dist/typechain-types/precrime/interfaces/IPreCrime.d.ts +0 -100
  325. package/dist/typechain-types/precrime/interfaces/IPreCrime.js +0 -2
  326. package/dist/typechain-types/precrime/interfaces/IPreCrimeBase.d.ts +0 -81
  327. package/dist/typechain-types/precrime/interfaces/IPreCrimeBase.js +0 -2
  328. package/dist/typechain-types/precrime/interfaces/IPreCrimeView.d.ts +0 -98
  329. package/dist/typechain-types/precrime/interfaces/IPreCrimeView.js +0 -2
  330. package/dist/typechain-types/precrime/interfaces/index.d.ts +0 -3
  331. package/dist/typechain-types/precrime/interfaces/index.js +0 -2
  332. package/dist/typechain-types/proof/FPValidator.d.ts +0 -170
  333. package/dist/typechain-types/proof/FPValidator.js +0 -2
  334. package/dist/typechain-types/proof/MPTValidator.d.ts +0 -102
  335. package/dist/typechain-types/proof/MPTValidator.js +0 -2
  336. package/dist/typechain-types/proof/MPTValidator01.d.ts +0 -174
  337. package/dist/typechain-types/proof/MPTValidator01.js +0 -2
  338. package/dist/typechain-types/proof/MPTValidatorStgV3.d.ts +0 -146
  339. package/dist/typechain-types/proof/MPTValidatorStgV3.js +0 -2
  340. package/dist/typechain-types/proof/MPTValidatorV2.d.ts +0 -110
  341. package/dist/typechain-types/proof/MPTValidatorV2.js +0 -2
  342. package/dist/typechain-types/proof/MPTValidatorV4.sol/IUltraLightNode.d.ts +0 -87
  343. package/dist/typechain-types/proof/MPTValidatorV4.sol/IUltraLightNode.js +0 -2
  344. package/dist/typechain-types/proof/MPTValidatorV4.sol/MPTValidatorV4.d.ts +0 -178
  345. package/dist/typechain-types/proof/MPTValidatorV4.sol/MPTValidatorV4.js +0 -2
  346. package/dist/typechain-types/proof/MPTValidatorV4.sol/index.d.ts +0 -2
  347. package/dist/typechain-types/proof/MPTValidatorV4.sol/index.js +0 -2
  348. package/dist/typechain-types/proof/MPTValidatorV5.sol/IUltraLightNode.d.ts +0 -87
  349. package/dist/typechain-types/proof/MPTValidatorV5.sol/IUltraLightNode.js +0 -2
  350. package/dist/typechain-types/proof/MPTValidatorV5.sol/MPTValidatorV5.d.ts +0 -186
  351. package/dist/typechain-types/proof/MPTValidatorV5.sol/MPTValidatorV5.js +0 -2
  352. package/dist/typechain-types/proof/MPTValidatorV5.sol/index.d.ts +0 -2
  353. package/dist/typechain-types/proof/MPTValidatorV5.sol/index.js +0 -2
  354. package/dist/typechain-types/proof/index.d.ts +0 -9
  355. package/dist/typechain-types/proof/index.js +0 -2
  356. package/dist/typechain-types/proxy/DefaultProxyAdmin.d.ts +0 -153
  357. package/dist/typechain-types/proxy/DefaultProxyAdmin.js +0 -2
  358. package/dist/typechain-types/proxy/TransparentUpgradeableProxy.d.ts +0 -138
  359. package/dist/typechain-types/proxy/TransparentUpgradeableProxy.js +0 -2
  360. package/dist/typechain-types/proxy/index.d.ts +0 -2
  361. package/dist/typechain-types/proxy/index.js +0 -2
@@ -0,0 +1,382 @@
1
+ // SPDX-License-Identifier: BUSL-1.1
2
+
3
+ pragma solidity 0.7.6;
4
+
5
+ import "./interfaces/ILayerZeroReceiver.sol";
6
+ import "./interfaces/ILayerZeroEndpoint.sol";
7
+ import "./interfaces/ILayerZeroMessagingLibrary.sol";
8
+
9
+ import "@openzeppelin/contracts/access/Ownable.sol";
10
+
11
+ contract Endpoint is Ownable, ILayerZeroEndpoint {
12
+ uint16 public immutable chainId;
13
+
14
+ // installed libraries and reserved versions
15
+ uint16 public constant BLOCK_VERSION = 65535;
16
+ uint16 public constant DEFAULT_VERSION = 0;
17
+ uint16 public latestVersion;
18
+ mapping(uint16 => ILayerZeroMessagingLibrary) public libraryLookup; // version -> ILayerZeroEndpointLibrary
19
+
20
+ // default send/receive libraries
21
+ uint16 public defaultSendVersion;
22
+ uint16 public defaultReceiveVersion;
23
+ ILayerZeroMessagingLibrary public defaultSendLibrary;
24
+ address public defaultReceiveLibraryAddress;
25
+
26
+ struct LibraryConfig {
27
+ uint16 sendVersion;
28
+ uint16 receiveVersion;
29
+ address receiveLibraryAddress;
30
+ ILayerZeroMessagingLibrary sendLibrary;
31
+ }
32
+
33
+ struct StoredPayload {
34
+ uint64 payloadLength;
35
+ address dstAddress;
36
+ bytes32 payloadHash;
37
+ }
38
+
39
+ // user app config = [uaAddress]
40
+ mapping(address => LibraryConfig) public uaConfigLookup;
41
+ // inboundNonce = [srcChainId][srcAddress].
42
+ mapping(uint16 => mapping(bytes => uint64)) public inboundNonce;
43
+ // outboundNonce = [dstChainId][srcAddress].
44
+ mapping(uint16 => mapping(address => uint64)) public outboundNonce;
45
+ // storedPayload = [srcChainId][srcAddress]
46
+ mapping(uint16 => mapping(bytes => StoredPayload)) public storedPayload;
47
+
48
+ // library versioning events
49
+ event NewLibraryVersionAdded(uint16 version);
50
+ event DefaultSendVersionSet(uint16 version);
51
+ event DefaultReceiveVersionSet(uint16 version);
52
+ event UaSendVersionSet(address ua, uint16 version);
53
+ event UaReceiveVersionSet(address ua, uint16 version);
54
+ event UaForceResumeReceive(uint16 chainId, bytes srcAddress);
55
+ // payload events
56
+ event PayloadCleared(uint16 srcChainId, bytes srcAddress, uint64 nonce, address dstAddress);
57
+ event PayloadStored(
58
+ uint16 srcChainId,
59
+ bytes srcAddress,
60
+ address dstAddress,
61
+ uint64 nonce,
62
+ bytes payload,
63
+ bytes reason
64
+ );
65
+
66
+ constructor(uint16 _chainId) {
67
+ chainId = _chainId;
68
+ }
69
+
70
+ //---------------------------------------------------------------------------
71
+ // send and receive nonreentrant lock
72
+ uint8 internal constant _NOT_ENTERED = 1;
73
+ uint8 internal constant _ENTERED = 2;
74
+ uint8 internal _send_entered_state = 1;
75
+ uint8 internal _receive_entered_state = 1;
76
+
77
+ modifier sendNonReentrant() {
78
+ require(_send_entered_state == _NOT_ENTERED, "LayerZero: no send reentrancy");
79
+ _send_entered_state = _ENTERED;
80
+ _;
81
+ _send_entered_state = _NOT_ENTERED;
82
+ }
83
+ modifier receiveNonReentrant() {
84
+ require(_receive_entered_state == _NOT_ENTERED, "LayerZero: no receive reentrancy");
85
+ _receive_entered_state = _ENTERED;
86
+ _;
87
+ _receive_entered_state = _NOT_ENTERED;
88
+ }
89
+
90
+ // BLOCK_VERSION is also a valid version
91
+ modifier validVersion(uint16 _version) {
92
+ require(_version <= latestVersion || _version == BLOCK_VERSION, "LayerZero: invalid messaging library version");
93
+ _;
94
+ }
95
+
96
+ //---------------------------------------------------------------------------
97
+ // User Application Calls - Endpoint Interface
98
+
99
+ function send(
100
+ uint16 _dstChainId,
101
+ bytes calldata _destination,
102
+ bytes calldata _payload,
103
+ address payable _refundAddress,
104
+ address _zroPaymentAddress,
105
+ bytes calldata _adapterParams
106
+ ) external payable override sendNonReentrant {
107
+ LibraryConfig storage uaConfig = uaConfigLookup[msg.sender];
108
+ uint64 nonce = ++outboundNonce[_dstChainId][msg.sender];
109
+ _getSendLibrary(uaConfig).send{value: msg.value}(
110
+ msg.sender,
111
+ nonce,
112
+ _dstChainId,
113
+ _destination,
114
+ _payload,
115
+ _refundAddress,
116
+ _zroPaymentAddress,
117
+ _adapterParams
118
+ );
119
+ }
120
+
121
+ //---------------------------------------------------------------------------
122
+ // authenticated Library (msg.sender) Calls to pass through Endpoint to UA (dstAddress)
123
+ function receivePayload(
124
+ uint16 _srcChainId,
125
+ bytes calldata _srcAddress,
126
+ address _dstAddress,
127
+ uint64 _nonce,
128
+ uint _gasLimit,
129
+ bytes calldata _payload
130
+ ) external override receiveNonReentrant {
131
+ // assert and increment the nonce. no message shuffling
132
+ require(_nonce == ++inboundNonce[_srcChainId][_srcAddress], "LayerZero: wrong nonce");
133
+
134
+ LibraryConfig storage uaConfig = uaConfigLookup[_dstAddress];
135
+
136
+ // authentication to prevent cross-version message validation
137
+ // protects against a malicious library from passing arbitrary data
138
+ if (uaConfig.receiveVersion == DEFAULT_VERSION) {
139
+ require(defaultReceiveLibraryAddress == msg.sender, "LayerZero: invalid default library");
140
+ } else {
141
+ require(uaConfig.receiveLibraryAddress == msg.sender, "LayerZero: invalid library");
142
+ }
143
+
144
+ // block if any message blocking
145
+ StoredPayload storage sp = storedPayload[_srcChainId][_srcAddress];
146
+ require(sp.payloadHash == bytes32(0), "LayerZero: in message blocking");
147
+
148
+ try ILayerZeroReceiver(_dstAddress).lzReceive{gas: _gasLimit}(_srcChainId, _srcAddress, _nonce, _payload) {
149
+ // success, do nothing, end of the message delivery
150
+ } catch (bytes memory reason) {
151
+ // revert nonce if any uncaught errors/exceptions if the ua chooses the blocking mode
152
+ storedPayload[_srcChainId][_srcAddress] = StoredPayload(
153
+ uint64(_payload.length),
154
+ _dstAddress,
155
+ keccak256(_payload)
156
+ );
157
+ emit PayloadStored(_srcChainId, _srcAddress, _dstAddress, _nonce, _payload, reason);
158
+ }
159
+ }
160
+
161
+ function retryPayload(
162
+ uint16 _srcChainId,
163
+ bytes calldata _srcAddress,
164
+ bytes calldata _payload
165
+ ) external override receiveNonReentrant {
166
+ StoredPayload storage sp = storedPayload[_srcChainId][_srcAddress];
167
+ require(sp.payloadHash != bytes32(0), "LayerZero: no stored payload");
168
+ require(
169
+ _payload.length == sp.payloadLength && keccak256(_payload) == sp.payloadHash,
170
+ "LayerZero: invalid payload"
171
+ );
172
+
173
+ address dstAddress = sp.dstAddress;
174
+ // empty the storedPayload
175
+ sp.payloadLength = 0;
176
+ sp.dstAddress = address(0);
177
+ sp.payloadHash = bytes32(0);
178
+
179
+ uint64 nonce = inboundNonce[_srcChainId][_srcAddress];
180
+
181
+ ILayerZeroReceiver(dstAddress).lzReceive(_srcChainId, _srcAddress, nonce, _payload);
182
+ emit PayloadCleared(_srcChainId, _srcAddress, nonce, dstAddress);
183
+ }
184
+
185
+ //---------------------------------------------------------------------------
186
+ // Owner Calls, only new library version upgrade (3 steps)
187
+
188
+ // note libraryLookup[0] = 0x0, no library implementation
189
+ // LIBRARY UPGRADE step 1: set _newLayerZeroLibraryAddress be the new version
190
+ function newVersion(address _newLayerZeroLibraryAddress) external onlyOwner {
191
+ require(_newLayerZeroLibraryAddress != address(0x0), "LayerZero: new version cannot be zero address");
192
+ require(latestVersion < 65535, "LayerZero: can not add new messaging library");
193
+ latestVersion++;
194
+ libraryLookup[latestVersion] = ILayerZeroMessagingLibrary(_newLayerZeroLibraryAddress);
195
+ emit NewLibraryVersionAdded(latestVersion);
196
+ }
197
+
198
+ // LIBRARY UPGRADE step 2: stop sending messages from the old version
199
+ function setDefaultSendVersion(
200
+ uint16 _newDefaultSendVersion
201
+ ) external onlyOwner validVersion(_newDefaultSendVersion) {
202
+ require(_newDefaultSendVersion != DEFAULT_VERSION, "LayerZero: default send version must > 0");
203
+ defaultSendVersion = _newDefaultSendVersion;
204
+ defaultSendLibrary = libraryLookup[defaultSendVersion];
205
+ emit DefaultSendVersionSet(_newDefaultSendVersion);
206
+ }
207
+
208
+ // LIBRARY UPGRADE step 3: stop receiving messages from the old version
209
+ function setDefaultReceiveVersion(
210
+ uint16 _newDefaultReceiveVersion
211
+ ) external onlyOwner validVersion(_newDefaultReceiveVersion) {
212
+ require(_newDefaultReceiveVersion != DEFAULT_VERSION, "LayerZero: default receive version must > 0");
213
+ defaultReceiveVersion = _newDefaultReceiveVersion;
214
+ defaultReceiveLibraryAddress = address(libraryLookup[defaultReceiveVersion]);
215
+ emit DefaultReceiveVersionSet(_newDefaultReceiveVersion);
216
+ }
217
+
218
+ //---------------------------------------------------------------------------
219
+ // User Application Calls - UA set/get Interface
220
+
221
+ function setConfig(
222
+ uint16 _version,
223
+ uint16 _chainId,
224
+ uint _configType,
225
+ bytes calldata _config
226
+ ) external override validVersion(_version) {
227
+ if (_version == DEFAULT_VERSION) {
228
+ require(
229
+ defaultSendVersion == defaultReceiveVersion,
230
+ "LayerZero: can not set Config during DEFAULT migration"
231
+ );
232
+ _version = defaultSendVersion;
233
+ }
234
+ require(_version != BLOCK_VERSION, "LayerZero: can not set config for BLOCK_VERSION");
235
+ libraryLookup[_version].setConfig(_chainId, msg.sender, _configType, _config);
236
+ }
237
+
238
+ // Migration step 1: set the send version
239
+ // Define what library the UA points too
240
+ function setSendVersion(uint16 _newVersion) external override validVersion(_newVersion) {
241
+ // write into config
242
+ LibraryConfig storage uaConfig = uaConfigLookup[msg.sender];
243
+ uaConfig.sendVersion = _newVersion;
244
+ // the libraryLookup[BLOCK_VERSION || DEFAULT_VERSION] = 0x0
245
+ uaConfig.sendLibrary = libraryLookup[_newVersion];
246
+ emit UaSendVersionSet(msg.sender, _newVersion);
247
+ }
248
+
249
+ // Migration step 2: set the receive version
250
+ // after all messages sent from the old version are received
251
+ // the UA can now safely switch to the new receive version
252
+ // it is the UA's responsibility make sure all messages from the old version are processed
253
+ function setReceiveVersion(uint16 _newVersion) external override validVersion(_newVersion) {
254
+ // write into config
255
+ LibraryConfig storage uaConfig = uaConfigLookup[msg.sender];
256
+ uaConfig.receiveVersion = _newVersion;
257
+ // the libraryLookup[BLOCK_VERSION || DEFAULT_VERSION] = 0x0
258
+ uaConfig.receiveLibraryAddress = address(libraryLookup[_newVersion]);
259
+ emit UaReceiveVersionSet(msg.sender, _newVersion);
260
+ }
261
+
262
+ function forceResumeReceive(uint16 _srcChainId, bytes calldata _srcAddress) external override {
263
+ StoredPayload storage sp = storedPayload[_srcChainId][_srcAddress];
264
+ // revert if no messages are cached. safeguard malicious UA behaviour
265
+ require(sp.payloadHash != bytes32(0), "LayerZero: no stored payload");
266
+ require(sp.dstAddress == msg.sender, "LayerZero: invalid caller");
267
+
268
+ // empty the storedPayload
269
+ sp.payloadLength = 0;
270
+ sp.dstAddress = address(0);
271
+ sp.payloadHash = bytes32(0);
272
+
273
+ // emit the event with the new nonce
274
+ emit UaForceResumeReceive(_srcChainId, _srcAddress);
275
+ }
276
+
277
+ //---------------------------------------------------------------------------
278
+ // view helper function
279
+
280
+ function estimateFees(
281
+ uint16 _dstChainId,
282
+ address _userApplication,
283
+ bytes calldata _payload,
284
+ bool _payInZRO,
285
+ bytes calldata _adapterParams
286
+ ) external view override returns (uint nativeFee, uint zroFee) {
287
+ LibraryConfig storage uaConfig = uaConfigLookup[_userApplication];
288
+ ILayerZeroMessagingLibrary lib = uaConfig.sendVersion == DEFAULT_VERSION
289
+ ? defaultSendLibrary
290
+ : uaConfig.sendLibrary;
291
+ return lib.estimateFees(_dstChainId, _userApplication, _payload, _payInZRO, _adapterParams);
292
+ }
293
+
294
+ function _getSendLibrary(LibraryConfig storage uaConfig) internal view returns (ILayerZeroMessagingLibrary) {
295
+ if (uaConfig.sendVersion == DEFAULT_VERSION) {
296
+ // check if the in send-blocking upgrade
297
+ require(defaultSendVersion != BLOCK_VERSION, "LayerZero: default in BLOCK_VERSION");
298
+ return defaultSendLibrary;
299
+ } else {
300
+ // check if the in send-blocking upgrade
301
+ require(uaConfig.sendVersion != BLOCK_VERSION, "LayerZero: in BLOCK_VERSION");
302
+ return uaConfig.sendLibrary;
303
+ }
304
+ }
305
+
306
+ function getSendLibraryAddress(
307
+ address _userApplication
308
+ ) external view override returns (address sendLibraryAddress) {
309
+ LibraryConfig storage uaConfig = uaConfigLookup[_userApplication];
310
+ uint16 sendVersion = uaConfig.sendVersion;
311
+ require(sendVersion != BLOCK_VERSION, "LayerZero: send version is BLOCK_VERSION");
312
+ if (sendVersion == DEFAULT_VERSION) {
313
+ require(defaultSendVersion != BLOCK_VERSION, "LayerZero: send version (default) is BLOCK_VERSION");
314
+ sendLibraryAddress = address(defaultSendLibrary);
315
+ } else {
316
+ sendLibraryAddress = address(uaConfig.sendLibrary);
317
+ }
318
+ }
319
+
320
+ function getReceiveLibraryAddress(
321
+ address _userApplication
322
+ ) external view override returns (address receiveLibraryAddress) {
323
+ LibraryConfig storage uaConfig = uaConfigLookup[_userApplication];
324
+ uint16 receiveVersion = uaConfig.receiveVersion;
325
+ require(receiveVersion != BLOCK_VERSION, "LayerZero: receive version is BLOCK_VERSION");
326
+ if (receiveVersion == DEFAULT_VERSION) {
327
+ require(defaultReceiveVersion != BLOCK_VERSION, "LayerZero: receive version (default) is BLOCK_VERSION");
328
+ receiveLibraryAddress = defaultReceiveLibraryAddress;
329
+ } else {
330
+ receiveLibraryAddress = uaConfig.receiveLibraryAddress;
331
+ }
332
+ }
333
+
334
+ function isSendingPayload() external view override returns (bool) {
335
+ return _send_entered_state == _ENTERED;
336
+ }
337
+
338
+ function isReceivingPayload() external view override returns (bool) {
339
+ return _receive_entered_state == _ENTERED;
340
+ }
341
+
342
+ function getInboundNonce(uint16 _srcChainId, bytes calldata _srcAddress) external view override returns (uint64) {
343
+ return inboundNonce[_srcChainId][_srcAddress];
344
+ }
345
+
346
+ function getOutboundNonce(uint16 _dstChainId, address _srcAddress) external view override returns (uint64) {
347
+ return outboundNonce[_dstChainId][_srcAddress];
348
+ }
349
+
350
+ function getChainId() external view override returns (uint16) {
351
+ return chainId;
352
+ }
353
+
354
+ function getSendVersion(address _userApplication) external view override returns (uint16) {
355
+ LibraryConfig storage uaConfig = uaConfigLookup[_userApplication];
356
+ return uaConfig.sendVersion == DEFAULT_VERSION ? defaultSendVersion : uaConfig.sendVersion;
357
+ }
358
+
359
+ function getReceiveVersion(address _userApplication) external view override returns (uint16) {
360
+ LibraryConfig storage uaConfig = uaConfigLookup[_userApplication];
361
+ return uaConfig.receiveVersion == DEFAULT_VERSION ? defaultReceiveVersion : uaConfig.receiveVersion;
362
+ }
363
+
364
+ function getConfig(
365
+ uint16 _version,
366
+ uint16 _chainId,
367
+ address _userApplication,
368
+ uint _configType
369
+ ) external view override validVersion(_version) returns (bytes memory) {
370
+ if (_version == DEFAULT_VERSION) {
371
+ require(defaultSendVersion == defaultReceiveVersion, "LayerZero: no DEFAULT config while migration");
372
+ _version = defaultSendVersion;
373
+ }
374
+ require(_version != BLOCK_VERSION, "LayerZero: can not get config for BLOCK_VERSION");
375
+ return libraryLookup[_version].getConfig(_chainId, _userApplication, _configType);
376
+ }
377
+
378
+ function hasStoredPayload(uint16 _srcChainId, bytes calldata _srcAddress) external view override returns (bool) {
379
+ StoredPayload storage sp = storedPayload[_srcChainId][_srcAddress];
380
+ return sp.payloadHash != bytes32(0);
381
+ }
382
+ }