@across-protocol/contracts 0.1.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 (257) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +661 -0
  3. package/README.md +53 -0
  4. package/artifacts/@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol/IL2ERC20Bridge.dbg.json +4 -0
  5. package/artifacts/@eth-optimism/contracts/L2/messaging/IL2ERC20Bridge.sol/IL2ERC20Bridge.json +252 -0
  6. package/artifacts/@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol/CrossDomainEnabled.dbg.json +4 -0
  7. package/artifacts/@eth-optimism/contracts/libraries/bridge/CrossDomainEnabled.sol/CrossDomainEnabled.json +35 -0
  8. package/artifacts/@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol/ICrossDomainMessenger.dbg.json +4 -0
  9. package/artifacts/@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.sol/ICrossDomainMessenger.json +110 -0
  10. package/artifacts/@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol/Lib_PredeployAddresses.dbg.json +4 -0
  11. package/artifacts/@eth-optimism/contracts/libraries/constants/Lib_PredeployAddresses.sol/Lib_PredeployAddresses.json +10 -0
  12. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
  13. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
  14. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/IAccessControl.dbg.json +4 -0
  15. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/IAccessControl.json +108 -0
  16. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
  17. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
  18. package/artifacts/@openzeppelin/contracts/security/Pausable.sol/Pausable.dbg.json +4 -0
  19. package/artifacts/@openzeppelin/contracts/security/Pausable.sol/Pausable.json +50 -0
  20. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +4 -0
  21. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +297 -0
  22. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +4 -0
  23. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +194 -0
  24. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +4 -0
  25. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +233 -0
  26. package/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +4 -0
  27. package/artifacts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +10 -0
  28. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
  29. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +10 -0
  30. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +4 -0
  31. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +10 -0
  32. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  33. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  34. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
  35. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
  36. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
  37. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
  38. package/artifacts/@openzeppelin/contracts/utils/math/SafeMath.sol/SafeMath.dbg.json +4 -0
  39. package/artifacts/@openzeppelin/contracts/utils/math/SafeMath.sol/SafeMath.json +10 -0
  40. package/artifacts/@openzeppelin/contracts/utils/math/SignedSafeMath.sol/SignedSafeMath.dbg.json +4 -0
  41. package/artifacts/@openzeppelin/contracts/utils/math/SignedSafeMath.sol/SignedSafeMath.json +10 -0
  42. package/artifacts/@uma/core/contracts/common/implementation/Lockable.sol/Lockable.dbg.json +4 -0
  43. package/artifacts/@uma/core/contracts/common/implementation/Lockable.sol/Lockable.json +16 -0
  44. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol/Arbitrum_ParentMessenger.dbg.json +4 -0
  45. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/Arbitrum_ParentMessenger.sol/Arbitrum_ParentMessenger.json +611 -0
  46. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol/ParentMessengerBase.dbg.json +4 -0
  47. package/artifacts/@uma/core/contracts/cross-chain-oracle/chain-adapters/ParentMessengerBase.sol/ParentMessengerBase.json +297 -0
  48. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol/ParentMessengerConsumerInterface.dbg.json +4 -0
  49. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerConsumerInterface.sol/ParentMessengerConsumerInterface.json +29 -0
  50. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol/ParentMessengerInterface.dbg.json +4 -0
  51. package/artifacts/@uma/core/contracts/cross-chain-oracle/interfaces/ParentMessengerInterface.sol/ParentMessengerInterface.json +37 -0
  52. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.dbg.json +4 -0
  53. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.json +24 -0
  54. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.dbg.json +4 -0
  55. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.json +78 -0
  56. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.dbg.json +4 -0
  57. package/artifacts/@uma/core/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.json +24 -0
  58. package/artifacts/@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.dbg.json +4 -0
  59. package/artifacts/@uma/core/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.json +24 -0
  60. package/artifacts/build-info/1cd64db7a8ac0a153df93d26826ad4e9.json +1653 -0
  61. package/artifacts/build-info/1f738b56edd7602183f2f8d2f23f6e90.json +1592 -0
  62. package/artifacts/build-info/343b9221be36acd9ddaca3f3b83d2e75.json +3943 -0
  63. package/artifacts/build-info/622e561692c193f4cd0ff989b5a231e2.json +5661 -0
  64. package/artifacts/build-info/8e408b49e0ff2873bc28d45221a7ff71.json +277715 -0
  65. package/artifacts/build-info/9d1a3182633612bd337d811d567d5d60.json +2072 -0
  66. package/artifacts/build-info/a8cd9c443d245fe513d6650634b60f93.json +23776 -0
  67. package/artifacts/build-info/d302d9d63fbafb5c8d635cc62cb1cc7c.json +167529 -0
  68. package/artifacts/contracts/common/implementation/AncillaryData.sol/AncillaryData.dbg.json +4 -0
  69. package/artifacts/contracts/common/implementation/AncillaryData.sol/AncillaryData.json +10 -0
  70. package/artifacts/contracts/common/implementation/FixedPoint.sol/FixedPoint.dbg.json +4 -0
  71. package/artifacts/contracts/common/implementation/FixedPoint.sol/FixedPoint.json +10 -0
  72. package/artifacts/contracts/common/implementation/Lockable.sol/Lockable.dbg.json +4 -0
  73. package/artifacts/contracts/common/implementation/Lockable.sol/Lockable.json +16 -0
  74. package/artifacts/contracts/common/implementation/MultiCaller.sol/MultiCaller.dbg.json +4 -0
  75. package/artifacts/contracts/common/implementation/MultiCaller.sol/MultiCaller.json +30 -0
  76. package/artifacts/contracts/common/implementation/Testable.sol/Testable.dbg.json +4 -0
  77. package/artifacts/contracts/common/implementation/Testable.sol/Testable.json +50 -0
  78. package/artifacts/contracts/common/implementation/Timer.sol/Timer.dbg.json +4 -0
  79. package/artifacts/contracts/common/implementation/Timer.sol/Timer.json +42 -0
  80. package/artifacts/contracts/common/interfaces/AddressWhitelistInterface.sol/AddressWhitelistInterface.dbg.json +4 -0
  81. package/artifacts/contracts/common/interfaces/AddressWhitelistInterface.sol/AddressWhitelistInterface.json +69 -0
  82. package/artifacts/contracts/external/avm/AVM_CrossDomainEnabled.sol/AVM_CrossDomainEnabled.dbg.json +4 -0
  83. package/artifacts/contracts/external/avm/AVM_CrossDomainEnabled.sol/AVM_CrossDomainEnabled.json +42 -0
  84. package/artifacts/contracts/external/avm/interfaces/ArbSys.sol/ArbSys.dbg.json +4 -0
  85. package/artifacts/contracts/external/avm/interfaces/ArbSys.sol/ArbSys.json +235 -0
  86. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.dbg.json +4 -0
  87. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/IBridge.json +24 -0
  88. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.dbg.json +4 -0
  89. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Inbox.sol/iArbitrum_Inbox.json +78 -0
  90. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.dbg.json +4 -0
  91. package/artifacts/contracts/external/avm/interfaces/iArbitrum_Outbox.sol/iArbitrum_Outbox.json +24 -0
  92. package/artifacts/contracts/external/chainbridge/Bridge.sol/Bridge.dbg.json +4 -0
  93. package/artifacts/contracts/external/chainbridge/Bridge.sol/Bridge.json +1019 -0
  94. package/artifacts/contracts/external/chainbridge/handlers/GenericHandler.sol/GenericHandler.dbg.json +4 -0
  95. package/artifacts/contracts/external/chainbridge/handlers/GenericHandler.sol/GenericHandler.json +314 -0
  96. package/artifacts/contracts/external/chainbridge/interfaces/IBridge.sol/IBridge.dbg.json +4 -0
  97. package/artifacts/contracts/external/chainbridge/interfaces/IBridge.sol/IBridge.json +47 -0
  98. package/artifacts/contracts/external/chainbridge/interfaces/IDepositExecute.sol/IDepositExecute.dbg.json +4 -0
  99. package/artifacts/contracts/external/chainbridge/interfaces/IDepositExecute.sol/IDepositExecute.json +62 -0
  100. package/artifacts/contracts/external/chainbridge/interfaces/IERCHandler.sol/IERCHandler.dbg.json +4 -0
  101. package/artifacts/contracts/external/chainbridge/interfaces/IERCHandler.sol/IERCHandler.json +65 -0
  102. package/artifacts/contracts/external/chainbridge/interfaces/IGenericHandler.sol/IGenericHandler.dbg.json +4 -0
  103. package/artifacts/contracts/external/chainbridge/interfaces/IGenericHandler.sol/IGenericHandler.json +39 -0
  104. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.dbg.json +4 -0
  105. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.json +35 -0
  106. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/iOVM_CrossDomainMessenger.dbg.json +4 -0
  107. package/artifacts/contracts/external/ovm/OVM_CrossDomainEnabled.sol/iOVM_CrossDomainMessenger.json +86 -0
  108. package/artifacts/contracts/external/polygon/lib/Merkle.sol/Merkle.dbg.json +4 -0
  109. package/artifacts/contracts/external/polygon/lib/Merkle.sol/Merkle.json +10 -0
  110. package/artifacts/contracts/external/polygon/lib/MerklePatriciaProof.sol/MerklePatriciaProof.dbg.json +4 -0
  111. package/artifacts/contracts/external/polygon/lib/MerklePatriciaProof.sol/MerklePatriciaProof.json +10 -0
  112. package/artifacts/contracts/external/polygon/lib/RLPReader.sol/RLPReader.dbg.json +4 -0
  113. package/artifacts/contracts/external/polygon/lib/RLPReader.sol/RLPReader.json +10 -0
  114. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/FxChildMock.dbg.json +4 -0
  115. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/FxChildMock.json +104 -0
  116. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IFxMessageProcessor.dbg.json +4 -0
  117. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IFxMessageProcessor.json +34 -0
  118. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IStateReceiver.dbg.json +4 -0
  119. package/artifacts/contracts/external/polygon/test/FxChildMock.sol/IStateReceiver.json +29 -0
  120. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/FxRootMock.dbg.json +4 -0
  121. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/FxRootMock.json +79 -0
  122. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IFxStateSender.dbg.json +4 -0
  123. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IFxStateSender.json +29 -0
  124. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IStateSender.dbg.json +4 -0
  125. package/artifacts/contracts/external/polygon/test/FxRootMock.sol/IStateSender.json +29 -0
  126. package/artifacts/contracts/external/polygon/test/StateSyncMock.sol/StateSyncMock.dbg.json +4 -0
  127. package/artifacts/contracts/external/polygon/test/StateSyncMock.sol/StateSyncMock.json +54 -0
  128. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/FxBaseChildTunnel.dbg.json +4 -0
  129. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/FxBaseChildTunnel.json +86 -0
  130. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/IFxMessageProcessor.dbg.json +4 -0
  131. package/artifacts/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol/IFxMessageProcessor.json +34 -0
  132. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.dbg.json +4 -0
  133. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.json +108 -0
  134. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.dbg.json +4 -0
  135. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.json +50 -0
  136. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/IFxStateSender.dbg.json +4 -0
  137. package/artifacts/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol/IFxStateSender.json +29 -0
  138. package/artifacts/contracts/insured-bridge/BridgeAdmin.sol/BridgeAdmin.dbg.json +4 -0
  139. package/artifacts/contracts/insured-bridge/BridgeAdmin.sol/BridgeAdmin.json +662 -0
  140. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/BridgeDepositBox.dbg.json +4 -0
  141. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/BridgeDepositBox.json +391 -0
  142. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/TokenLike.dbg.json +4 -0
  143. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/TokenLike.json +30 -0
  144. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/WETH9Like.dbg.json +4 -0
  145. package/artifacts/contracts/insured-bridge/BridgeDepositBox.sol/WETH9Like.json +31 -0
  146. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePool.dbg.json +4 -0
  147. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePool.json +1709 -0
  148. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePoolProd.dbg.json +4 -0
  149. package/artifacts/contracts/insured-bridge/BridgePool.sol/BridgePoolProd.json +1709 -0
  150. package/artifacts/contracts/insured-bridge/BridgePool.sol/WETH9Like.dbg.json +4 -0
  151. package/artifacts/contracts/insured-bridge/BridgePool.sol/WETH9Like.json +31 -0
  152. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/AVM_BridgeDepositBox.dbg.json +4 -0
  153. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/AVM_BridgeDepositBox.json +564 -0
  154. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/StandardBridgeLike.dbg.json +4 -0
  155. package/artifacts/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol/StandardBridgeLike.json +45 -0
  156. package/artifacts/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.dbg.json +4 -0
  157. package/artifacts/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol/Arbitrum_CrossDomainEnabled.json +24 -0
  158. package/artifacts/contracts/insured-bridge/avm/Arbitrum_Messenger.sol/Arbitrum_Messenger.dbg.json +4 -0
  159. package/artifacts/contracts/insured-bridge/avm/Arbitrum_Messenger.sol/Arbitrum_Messenger.json +191 -0
  160. package/artifacts/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol/BridgeAdminInterface.dbg.json +4 -0
  161. package/artifacts/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol/BridgeAdminInterface.json +319 -0
  162. package/artifacts/contracts/insured-bridge/interfaces/BridgePoolInterface.sol/BridgePoolInterface.dbg.json +4 -0
  163. package/artifacts/contracts/insured-bridge/interfaces/BridgePoolInterface.sol/BridgePoolInterface.json +63 -0
  164. package/artifacts/contracts/insured-bridge/interfaces/MessengerInterface.sol/MessengerInterface.dbg.json +4 -0
  165. package/artifacts/contracts/insured-bridge/interfaces/MessengerInterface.sol/MessengerInterface.json +54 -0
  166. package/artifacts/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol/OVM_BridgeDepositBox.dbg.json +4 -0
  167. package/artifacts/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol/OVM_BridgeDepositBox.json +528 -0
  168. package/artifacts/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.dbg.json +4 -0
  169. package/artifacts/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol/OVM_CrossDomainEnabled.json +35 -0
  170. package/artifacts/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol/OVM_OETH_BridgeDepositBox.dbg.json +4 -0
  171. package/artifacts/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol/OVM_OETH_BridgeDepositBox.json +572 -0
  172. package/artifacts/contracts/insured-bridge/ovm/Optimism_Messenger.sol/Optimism_Messenger.dbg.json +4 -0
  173. package/artifacts/contracts/insured-bridge/ovm/Optimism_Messenger.sol/Optimism_Messenger.json +130 -0
  174. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/Optimism_Wrapper.dbg.json +4 -0
  175. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/Optimism_Wrapper.json +142 -0
  176. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/WETH9Like.dbg.json +4 -0
  177. package/artifacts/contracts/insured-bridge/ovm/Optimism_Wrapper.sol/WETH9Like.json +55 -0
  178. package/artifacts/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol/iOVM_CrossDomainMessenger.dbg.json +4 -0
  179. package/artifacts/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol/iOVM_CrossDomainMessenger.json +86 -0
  180. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_BridgeMock.dbg.json +4 -0
  181. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_BridgeMock.json +68 -0
  182. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_InboxMock.dbg.json +4 -0
  183. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_InboxMock.json +78 -0
  184. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_OutboxMock.dbg.json +4 -0
  185. package/artifacts/contracts/insured-bridge/test/Arbitrum_InboxMock.sol/Arbitrum_OutboxMock.json +24 -0
  186. package/artifacts/contracts/insured-bridge/test/BridgeDepositBoxMock.sol/BridgeDepositBoxMock.dbg.json +4 -0
  187. package/artifacts/contracts/insured-bridge/test/BridgeDepositBoxMock.sol/BridgeDepositBoxMock.json +510 -0
  188. package/artifacts/contracts/insured-bridge/test/MessengerMock.sol/MessengerMock.dbg.json +4 -0
  189. package/artifacts/contracts/insured-bridge/test/MessengerMock.sol/MessengerMock.json +85 -0
  190. package/artifacts/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol/OVM_L1CrossDomainMessengerMock.dbg.json +4 -0
  191. package/artifacts/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol/OVM_L1CrossDomainMessengerMock.json +110 -0
  192. package/artifacts/contracts/oracle/implementation/Constants.sol/OptimisticOracleConstraints.dbg.json +4 -0
  193. package/artifacts/contracts/oracle/implementation/Constants.sol/OptimisticOracleConstraints.json +24 -0
  194. package/artifacts/contracts/oracle/implementation/Constants.sol/OracleInterfaces.dbg.json +4 -0
  195. package/artifacts/contracts/oracle/implementation/Constants.sol/OracleInterfaces.json +141 -0
  196. package/artifacts/contracts/oracle/interfaces/FinderInterface.sol/FinderInterface.dbg.json +4 -0
  197. package/artifacts/contracts/oracle/interfaces/FinderInterface.sol/FinderInterface.json +48 -0
  198. package/artifacts/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol/IdentifierWhitelistInterface.dbg.json +4 -0
  199. package/artifacts/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol/IdentifierWhitelistInterface.json +56 -0
  200. package/artifacts/contracts/oracle/interfaces/OptimisticOracleInterface.sol/OptimisticOracleInterface.dbg.json +4 -0
  201. package/artifacts/contracts/oracle/interfaces/OptimisticOracleInterface.sol/OptimisticOracleInterface.json +555 -0
  202. package/artifacts/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol/SkinnyOptimisticOracleInterface.dbg.json +4 -0
  203. package/artifacts/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol/SkinnyOptimisticOracleInterface.json +853 -0
  204. package/artifacts/contracts/oracle/interfaces/StoreInterface.sol/StoreInterface.dbg.json +4 -0
  205. package/artifacts/contracts/oracle/interfaces/StoreInterface.sol/StoreInterface.json +124 -0
  206. package/contracts/common/implementation/AncillaryData.sol +144 -0
  207. package/contracts/common/implementation/FixedPoint.sol +763 -0
  208. package/contracts/common/implementation/Lockable.sol +61 -0
  209. package/contracts/common/implementation/MultiCaller.sol +27 -0
  210. package/contracts/common/implementation/Testable.sol +52 -0
  211. package/contracts/common/implementation/Timer.sol +30 -0
  212. package/contracts/common/interfaces/AddressWhitelistInterface.sol +12 -0
  213. package/contracts/external/avm/AVM_CrossDomainEnabled.sol +43 -0
  214. package/contracts/external/avm/interfaces/ArbSys.sol +79 -0
  215. package/contracts/external/avm/interfaces/iArbitrum_Inbox.sol +28 -0
  216. package/contracts/external/avm/interfaces/iArbitrum_Outbox.sol +26 -0
  217. package/contracts/external/chainbridge/Bridge.sol +454 -0
  218. package/contracts/external/chainbridge/handlers/GenericHandler.sol +237 -0
  219. package/contracts/external/chainbridge/interfaces/IBridge.sol +20 -0
  220. package/contracts/external/chainbridge/interfaces/IDepositExecute.sol +29 -0
  221. package/contracts/external/chainbridge/interfaces/IERCHandler.sol +33 -0
  222. package/contracts/external/chainbridge/interfaces/IGenericHandler.sol +23 -0
  223. package/contracts/external/ovm/OVM_CrossDomainEnabled.sol +114 -0
  224. package/contracts/external/polygon/lib/Merkle.sol +36 -0
  225. package/contracts/external/polygon/lib/MerklePatriciaProof.sol +139 -0
  226. package/contracts/external/polygon/lib/RLPReader.sol +251 -0
  227. package/contracts/external/polygon/test/FxChildMock.sol +42 -0
  228. package/contracts/external/polygon/test/FxRootMock.sol +32 -0
  229. package/contracts/external/polygon/test/StateSyncMock.sol +26 -0
  230. package/contracts/external/polygon/tunnel/FxBaseChildTunnel.sol +80 -0
  231. package/contracts/external/polygon/tunnel/FxBaseRootTunnel.sol +185 -0
  232. package/contracts/insured-bridge/BridgeAdmin.sol +394 -0
  233. package/contracts/insured-bridge/BridgeDepositBox.sol +245 -0
  234. package/contracts/insured-bridge/BridgePool.sol +980 -0
  235. package/contracts/insured-bridge/avm/AVM_BridgeDepositBox.sol +144 -0
  236. package/contracts/insured-bridge/avm/Arbitrum_CrossDomainEnabled.sol +67 -0
  237. package/contracts/insured-bridge/avm/Arbitrum_Messenger.sol +72 -0
  238. package/contracts/insured-bridge/interfaces/BridgeAdminInterface.sol +44 -0
  239. package/contracts/insured-bridge/interfaces/BridgePoolInterface.sol +14 -0
  240. package/contracts/insured-bridge/interfaces/MessengerInterface.sol +18 -0
  241. package/contracts/insured-bridge/ovm/OVM_BridgeDepositBox.sol +135 -0
  242. package/contracts/insured-bridge/ovm/OVM_CrossDomainEnabled.sol +84 -0
  243. package/contracts/insured-bridge/ovm/OVM_OETH_BridgeDepositBox.sol +89 -0
  244. package/contracts/insured-bridge/ovm/Optimism_Messenger.sol +34 -0
  245. package/contracts/insured-bridge/ovm/Optimism_Wrapper.sol +59 -0
  246. package/contracts/insured-bridge/ovm/iOVM_CrossDomainMessenger.sol +41 -0
  247. package/contracts/insured-bridge/test/Arbitrum_InboxMock.sol +50 -0
  248. package/contracts/insured-bridge/test/BridgeDepositBoxMock.sol +113 -0
  249. package/contracts/insured-bridge/test/MessengerMock.sol +32 -0
  250. package/contracts/insured-bridge/test/OVM_L1CrossDomainMessengerMock.sol +16 -0
  251. package/contracts/oracle/implementation/Constants.sol +29 -0
  252. package/contracts/oracle/interfaces/FinderInterface.sol +22 -0
  253. package/contracts/oracle/interfaces/IdentifierWhitelistInterface.sol +28 -0
  254. package/contracts/oracle/interfaces/OptimisticOracleInterface.sol +263 -0
  255. package/contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol +251 -0
  256. package/contracts/oracle/interfaces/StoreInterface.sol +46 -0
  257. package/package.json +60 -0
@@ -0,0 +1,1653 @@
1
+ {
2
+ "id": "1cd64db7a8ac0a153df93d26826ad4e9",
3
+ "_format": "hh-sol-build-info-1",
4
+ "solcVersion": "0.8.9",
5
+ "solcLongVersion": "0.8.9+commit.e5eed63a",
6
+ "input": {
7
+ "language": "Solidity",
8
+ "sources": {
9
+ "contracts/external/polygon/tunnel/FxBaseChildTunnel.sol": {
10
+ "content": "// SPDX-License-Identifier: MIT\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\n// except bumping version from 0.7.3 --> 0.8\npragma solidity ^0.8.0;\n\n// IFxMessageProcessor represents interface to process message\ninterface IFxMessageProcessor {\n function processMessageFromRoot(\n uint256 stateId,\n address rootMessageSender,\n bytes calldata data\n ) external;\n}\n\n/**\n * @notice Mock child tunnel contract to receive and send message from L2\n */\nabstract contract FxBaseChildTunnel is IFxMessageProcessor {\n // MessageTunnel on L1 will get data from this event\n event MessageSent(bytes message);\n\n // fx child\n address public fxChild;\n\n // fx root tunnel\n address public fxRootTunnel;\n\n constructor(address _fxChild) {\n fxChild = _fxChild;\n }\n\n // Sender must be fxRootTunnel.\n modifier validateSender(address sender) {\n require(sender == fxRootTunnel, \"FxBaseChildTunnel: INVALID_SENDER_FROM_ROOT\");\n _;\n }\n\n // Set fxRootTunnel if not set already.\n function setFxRootTunnel(address _fxRootTunnel) public {\n require(fxRootTunnel == address(0x0), \"FxBaseChildTunnel: ROOT_TUNNEL_ALREADY_SET\");\n fxRootTunnel = _fxRootTunnel;\n }\n\n function processMessageFromRoot(\n uint256 stateId,\n address rootMessageSender,\n bytes calldata data\n ) public override {\n require(msg.sender == fxChild, \"FxBaseChildTunnel: INVALID_SENDER\");\n _processMessageFromRoot(stateId, rootMessageSender, data);\n }\n\n /**\n * @notice Emit message that can be received on Root Tunnel\n * @dev Call the internal function when need to emit message\n * @param message bytes message that will be sent to Root Tunnel\n * some message examples -\n * abi.encode(tokenId);\n * abi.encode(tokenId, tokenMetadata);\n * abi.encode(messageType, messageData);\n */\n function _sendMessageToRoot(bytes memory message) internal {\n emit MessageSent(message);\n }\n\n /**\n * @notice Process message received from Root Tunnel\n * @dev function needs to be implemented to handle message as per requirement\n * This is called by onStateReceive function.\n * Since it is called via a system call, any event will not be emitted during its execution.\n * @param stateId unique state id\n * @param sender root message sender\n * @param message bytes message that was sent from Root Tunnel\n */\n function _processMessageFromRoot(\n uint256 stateId,\n address sender,\n bytes memory message\n ) internal virtual;\n}\n"
11
+ }
12
+ },
13
+ "settings": {
14
+ "optimizer": {
15
+ "enabled": true,
16
+ "runs": 1000000
17
+ },
18
+ "outputSelection": {
19
+ "*": {
20
+ "*": [
21
+ "abi",
22
+ "evm.bytecode",
23
+ "evm.deployedBytecode",
24
+ "evm.methodIdentifiers",
25
+ "metadata",
26
+ "devdoc",
27
+ "userdoc",
28
+ "storageLayout",
29
+ "evm.gasEstimates"
30
+ ],
31
+ "": [
32
+ "ast"
33
+ ]
34
+ }
35
+ },
36
+ "metadata": {
37
+ "useLiteralContent": true
38
+ }
39
+ }
40
+ },
41
+ "output": {
42
+ "contracts": {
43
+ "contracts/external/polygon/tunnel/FxBaseChildTunnel.sol": {
44
+ "FxBaseChildTunnel": {
45
+ "abi": [
46
+ {
47
+ "anonymous": false,
48
+ "inputs": [
49
+ {
50
+ "indexed": false,
51
+ "internalType": "bytes",
52
+ "name": "message",
53
+ "type": "bytes"
54
+ }
55
+ ],
56
+ "name": "MessageSent",
57
+ "type": "event"
58
+ },
59
+ {
60
+ "inputs": [],
61
+ "name": "fxChild",
62
+ "outputs": [
63
+ {
64
+ "internalType": "address",
65
+ "name": "",
66
+ "type": "address"
67
+ }
68
+ ],
69
+ "stateMutability": "view",
70
+ "type": "function"
71
+ },
72
+ {
73
+ "inputs": [],
74
+ "name": "fxRootTunnel",
75
+ "outputs": [
76
+ {
77
+ "internalType": "address",
78
+ "name": "",
79
+ "type": "address"
80
+ }
81
+ ],
82
+ "stateMutability": "view",
83
+ "type": "function"
84
+ },
85
+ {
86
+ "inputs": [
87
+ {
88
+ "internalType": "uint256",
89
+ "name": "stateId",
90
+ "type": "uint256"
91
+ },
92
+ {
93
+ "internalType": "address",
94
+ "name": "rootMessageSender",
95
+ "type": "address"
96
+ },
97
+ {
98
+ "internalType": "bytes",
99
+ "name": "data",
100
+ "type": "bytes"
101
+ }
102
+ ],
103
+ "name": "processMessageFromRoot",
104
+ "outputs": [],
105
+ "stateMutability": "nonpayable",
106
+ "type": "function"
107
+ },
108
+ {
109
+ "inputs": [
110
+ {
111
+ "internalType": "address",
112
+ "name": "_fxRootTunnel",
113
+ "type": "address"
114
+ }
115
+ ],
116
+ "name": "setFxRootTunnel",
117
+ "outputs": [],
118
+ "stateMutability": "nonpayable",
119
+ "type": "function"
120
+ }
121
+ ],
122
+ "devdoc": {
123
+ "kind": "dev",
124
+ "methods": {},
125
+ "version": 1
126
+ },
127
+ "evm": {
128
+ "bytecode": {
129
+ "functionDebugData": {},
130
+ "generatedSources": [],
131
+ "linkReferences": {},
132
+ "object": "",
133
+ "opcodes": "",
134
+ "sourceMap": ""
135
+ },
136
+ "deployedBytecode": {
137
+ "functionDebugData": {},
138
+ "generatedSources": [],
139
+ "immutableReferences": {},
140
+ "linkReferences": {},
141
+ "object": "",
142
+ "opcodes": "",
143
+ "sourceMap": ""
144
+ },
145
+ "gasEstimates": null,
146
+ "methodIdentifiers": {
147
+ "fxChild()": "450d11f0",
148
+ "fxRootTunnel()": "7f1e9cb0",
149
+ "processMessageFromRoot(uint256,address,bytes)": "9a7c4b71",
150
+ "setFxRootTunnel(address)": "88837094"
151
+ }
152
+ },
153
+ "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"MessageSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"fxChild\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fxRootTunnel\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stateId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"rootMessageSender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"processMessageFromRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_fxRootTunnel\",\"type\":\"address\"}],\"name\":\"setFxRootTunnel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Mock child tunnel contract to receive and send message from L2\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/polygon/tunnel/FxBaseChildTunnel.sol\":\"FxBaseChildTunnel\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/polygon/tunnel/FxBaseChildTunnel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\\n// except bumping version from 0.7.3 --> 0.8\\npragma solidity ^0.8.0;\\n\\n// IFxMessageProcessor represents interface to process message\\ninterface IFxMessageProcessor {\\n function processMessageFromRoot(\\n uint256 stateId,\\n address rootMessageSender,\\n bytes calldata data\\n ) external;\\n}\\n\\n/**\\n * @notice Mock child tunnel contract to receive and send message from L2\\n */\\nabstract contract FxBaseChildTunnel is IFxMessageProcessor {\\n // MessageTunnel on L1 will get data from this event\\n event MessageSent(bytes message);\\n\\n // fx child\\n address public fxChild;\\n\\n // fx root tunnel\\n address public fxRootTunnel;\\n\\n constructor(address _fxChild) {\\n fxChild = _fxChild;\\n }\\n\\n // Sender must be fxRootTunnel.\\n modifier validateSender(address sender) {\\n require(sender == fxRootTunnel, \\\"FxBaseChildTunnel: INVALID_SENDER_FROM_ROOT\\\");\\n _;\\n }\\n\\n // Set fxRootTunnel if not set already.\\n function setFxRootTunnel(address _fxRootTunnel) public {\\n require(fxRootTunnel == address(0x0), \\\"FxBaseChildTunnel: ROOT_TUNNEL_ALREADY_SET\\\");\\n fxRootTunnel = _fxRootTunnel;\\n }\\n\\n function processMessageFromRoot(\\n uint256 stateId,\\n address rootMessageSender,\\n bytes calldata data\\n ) public override {\\n require(msg.sender == fxChild, \\\"FxBaseChildTunnel: INVALID_SENDER\\\");\\n _processMessageFromRoot(stateId, rootMessageSender, data);\\n }\\n\\n /**\\n * @notice Emit message that can be received on Root Tunnel\\n * @dev Call the internal function when need to emit message\\n * @param message bytes message that will be sent to Root Tunnel\\n * some message examples -\\n * abi.encode(tokenId);\\n * abi.encode(tokenId, tokenMetadata);\\n * abi.encode(messageType, messageData);\\n */\\n function _sendMessageToRoot(bytes memory message) internal {\\n emit MessageSent(message);\\n }\\n\\n /**\\n * @notice Process message received from Root Tunnel\\n * @dev function needs to be implemented to handle message as per requirement\\n * This is called by onStateReceive function.\\n * Since it is called via a system call, any event will not be emitted during its execution.\\n * @param stateId unique state id\\n * @param sender root message sender\\n * @param message bytes message that was sent from Root Tunnel\\n */\\n function _processMessageFromRoot(\\n uint256 stateId,\\n address sender,\\n bytes memory message\\n ) internal virtual;\\n}\\n\",\"keccak256\":\"0x02468221bd1449967a7ff0fd538c13b62e954d0efa0a2fad55388967415849dc\",\"license\":\"MIT\"}},\"version\":1}",
154
+ "storageLayout": {
155
+ "storage": [
156
+ {
157
+ "astId": 20,
158
+ "contract": "contracts/external/polygon/tunnel/FxBaseChildTunnel.sol:FxBaseChildTunnel",
159
+ "label": "fxChild",
160
+ "offset": 0,
161
+ "slot": "0",
162
+ "type": "t_address"
163
+ },
164
+ {
165
+ "astId": 22,
166
+ "contract": "contracts/external/polygon/tunnel/FxBaseChildTunnel.sol:FxBaseChildTunnel",
167
+ "label": "fxRootTunnel",
168
+ "offset": 0,
169
+ "slot": "1",
170
+ "type": "t_address"
171
+ }
172
+ ],
173
+ "types": {
174
+ "t_address": {
175
+ "encoding": "inplace",
176
+ "label": "address",
177
+ "numberOfBytes": "20"
178
+ }
179
+ }
180
+ },
181
+ "userdoc": {
182
+ "kind": "user",
183
+ "methods": {},
184
+ "notice": "Mock child tunnel contract to receive and send message from L2",
185
+ "version": 1
186
+ }
187
+ },
188
+ "IFxMessageProcessor": {
189
+ "abi": [
190
+ {
191
+ "inputs": [
192
+ {
193
+ "internalType": "uint256",
194
+ "name": "stateId",
195
+ "type": "uint256"
196
+ },
197
+ {
198
+ "internalType": "address",
199
+ "name": "rootMessageSender",
200
+ "type": "address"
201
+ },
202
+ {
203
+ "internalType": "bytes",
204
+ "name": "data",
205
+ "type": "bytes"
206
+ }
207
+ ],
208
+ "name": "processMessageFromRoot",
209
+ "outputs": [],
210
+ "stateMutability": "nonpayable",
211
+ "type": "function"
212
+ }
213
+ ],
214
+ "devdoc": {
215
+ "kind": "dev",
216
+ "methods": {},
217
+ "version": 1
218
+ },
219
+ "evm": {
220
+ "bytecode": {
221
+ "functionDebugData": {},
222
+ "generatedSources": [],
223
+ "linkReferences": {},
224
+ "object": "",
225
+ "opcodes": "",
226
+ "sourceMap": ""
227
+ },
228
+ "deployedBytecode": {
229
+ "functionDebugData": {},
230
+ "generatedSources": [],
231
+ "immutableReferences": {},
232
+ "linkReferences": {},
233
+ "object": "",
234
+ "opcodes": "",
235
+ "sourceMap": ""
236
+ },
237
+ "gasEstimates": null,
238
+ "methodIdentifiers": {
239
+ "processMessageFromRoot(uint256,address,bytes)": "9a7c4b71"
240
+ }
241
+ },
242
+ "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stateId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"rootMessageSender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"processMessageFromRoot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/external/polygon/tunnel/FxBaseChildTunnel.sol\":\"IFxMessageProcessor\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"contracts/external/polygon/tunnel/FxBaseChildTunnel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n// Copied with no modifications from Polygon demo FxTunnel repo: https://github.com/jdkanani/fx-portal\\n// except bumping version from 0.7.3 --> 0.8\\npragma solidity ^0.8.0;\\n\\n// IFxMessageProcessor represents interface to process message\\ninterface IFxMessageProcessor {\\n function processMessageFromRoot(\\n uint256 stateId,\\n address rootMessageSender,\\n bytes calldata data\\n ) external;\\n}\\n\\n/**\\n * @notice Mock child tunnel contract to receive and send message from L2\\n */\\nabstract contract FxBaseChildTunnel is IFxMessageProcessor {\\n // MessageTunnel on L1 will get data from this event\\n event MessageSent(bytes message);\\n\\n // fx child\\n address public fxChild;\\n\\n // fx root tunnel\\n address public fxRootTunnel;\\n\\n constructor(address _fxChild) {\\n fxChild = _fxChild;\\n }\\n\\n // Sender must be fxRootTunnel.\\n modifier validateSender(address sender) {\\n require(sender == fxRootTunnel, \\\"FxBaseChildTunnel: INVALID_SENDER_FROM_ROOT\\\");\\n _;\\n }\\n\\n // Set fxRootTunnel if not set already.\\n function setFxRootTunnel(address _fxRootTunnel) public {\\n require(fxRootTunnel == address(0x0), \\\"FxBaseChildTunnel: ROOT_TUNNEL_ALREADY_SET\\\");\\n fxRootTunnel = _fxRootTunnel;\\n }\\n\\n function processMessageFromRoot(\\n uint256 stateId,\\n address rootMessageSender,\\n bytes calldata data\\n ) public override {\\n require(msg.sender == fxChild, \\\"FxBaseChildTunnel: INVALID_SENDER\\\");\\n _processMessageFromRoot(stateId, rootMessageSender, data);\\n }\\n\\n /**\\n * @notice Emit message that can be received on Root Tunnel\\n * @dev Call the internal function when need to emit message\\n * @param message bytes message that will be sent to Root Tunnel\\n * some message examples -\\n * abi.encode(tokenId);\\n * abi.encode(tokenId, tokenMetadata);\\n * abi.encode(messageType, messageData);\\n */\\n function _sendMessageToRoot(bytes memory message) internal {\\n emit MessageSent(message);\\n }\\n\\n /**\\n * @notice Process message received from Root Tunnel\\n * @dev function needs to be implemented to handle message as per requirement\\n * This is called by onStateReceive function.\\n * Since it is called via a system call, any event will not be emitted during its execution.\\n * @param stateId unique state id\\n * @param sender root message sender\\n * @param message bytes message that was sent from Root Tunnel\\n */\\n function _processMessageFromRoot(\\n uint256 stateId,\\n address sender,\\n bytes memory message\\n ) internal virtual;\\n}\\n\",\"keccak256\":\"0x02468221bd1449967a7ff0fd538c13b62e954d0efa0a2fad55388967415849dc\",\"license\":\"MIT\"}},\"version\":1}",
243
+ "storageLayout": {
244
+ "storage": [],
245
+ "types": null
246
+ },
247
+ "userdoc": {
248
+ "kind": "user",
249
+ "methods": {},
250
+ "version": 1
251
+ }
252
+ }
253
+ }
254
+ },
255
+ "sources": {
256
+ "contracts/external/polygon/tunnel/FxBaseChildTunnel.sol": {
257
+ "ast": {
258
+ "absolutePath": "contracts/external/polygon/tunnel/FxBaseChildTunnel.sol",
259
+ "exportedSymbols": {
260
+ "FxBaseChildTunnel": [
261
+ 112
262
+ ],
263
+ "IFxMessageProcessor": [
264
+ 11
265
+ ]
266
+ },
267
+ "id": 113,
268
+ "license": "MIT",
269
+ "nodeType": "SourceUnit",
270
+ "nodes": [
271
+ {
272
+ "id": 1,
273
+ "literals": [
274
+ "solidity",
275
+ "^",
276
+ "0.8",
277
+ ".0"
278
+ ],
279
+ "nodeType": "PragmaDirective",
280
+ "src": "180:23:0"
281
+ },
282
+ {
283
+ "abstract": false,
284
+ "baseContracts": [],
285
+ "canonicalName": "IFxMessageProcessor",
286
+ "contractDependencies": [],
287
+ "contractKind": "interface",
288
+ "fullyImplemented": false,
289
+ "id": 11,
290
+ "linearizedBaseContracts": [
291
+ 11
292
+ ],
293
+ "name": "IFxMessageProcessor",
294
+ "nameLocation": "278:19:0",
295
+ "nodeType": "ContractDefinition",
296
+ "nodes": [
297
+ {
298
+ "functionSelector": "9a7c4b71",
299
+ "id": 10,
300
+ "implemented": false,
301
+ "kind": "function",
302
+ "modifiers": [],
303
+ "name": "processMessageFromRoot",
304
+ "nameLocation": "313:22:0",
305
+ "nodeType": "FunctionDefinition",
306
+ "parameters": {
307
+ "id": 8,
308
+ "nodeType": "ParameterList",
309
+ "parameters": [
310
+ {
311
+ "constant": false,
312
+ "id": 3,
313
+ "mutability": "mutable",
314
+ "name": "stateId",
315
+ "nameLocation": "353:7:0",
316
+ "nodeType": "VariableDeclaration",
317
+ "scope": 10,
318
+ "src": "345:15:0",
319
+ "stateVariable": false,
320
+ "storageLocation": "default",
321
+ "typeDescriptions": {
322
+ "typeIdentifier": "t_uint256",
323
+ "typeString": "uint256"
324
+ },
325
+ "typeName": {
326
+ "id": 2,
327
+ "name": "uint256",
328
+ "nodeType": "ElementaryTypeName",
329
+ "src": "345:7:0",
330
+ "typeDescriptions": {
331
+ "typeIdentifier": "t_uint256",
332
+ "typeString": "uint256"
333
+ }
334
+ },
335
+ "visibility": "internal"
336
+ },
337
+ {
338
+ "constant": false,
339
+ "id": 5,
340
+ "mutability": "mutable",
341
+ "name": "rootMessageSender",
342
+ "nameLocation": "378:17:0",
343
+ "nodeType": "VariableDeclaration",
344
+ "scope": 10,
345
+ "src": "370:25:0",
346
+ "stateVariable": false,
347
+ "storageLocation": "default",
348
+ "typeDescriptions": {
349
+ "typeIdentifier": "t_address",
350
+ "typeString": "address"
351
+ },
352
+ "typeName": {
353
+ "id": 4,
354
+ "name": "address",
355
+ "nodeType": "ElementaryTypeName",
356
+ "src": "370:7:0",
357
+ "stateMutability": "nonpayable",
358
+ "typeDescriptions": {
359
+ "typeIdentifier": "t_address",
360
+ "typeString": "address"
361
+ }
362
+ },
363
+ "visibility": "internal"
364
+ },
365
+ {
366
+ "constant": false,
367
+ "id": 7,
368
+ "mutability": "mutable",
369
+ "name": "data",
370
+ "nameLocation": "420:4:0",
371
+ "nodeType": "VariableDeclaration",
372
+ "scope": 10,
373
+ "src": "405:19:0",
374
+ "stateVariable": false,
375
+ "storageLocation": "calldata",
376
+ "typeDescriptions": {
377
+ "typeIdentifier": "t_bytes_calldata_ptr",
378
+ "typeString": "bytes"
379
+ },
380
+ "typeName": {
381
+ "id": 6,
382
+ "name": "bytes",
383
+ "nodeType": "ElementaryTypeName",
384
+ "src": "405:5:0",
385
+ "typeDescriptions": {
386
+ "typeIdentifier": "t_bytes_storage_ptr",
387
+ "typeString": "bytes"
388
+ }
389
+ },
390
+ "visibility": "internal"
391
+ }
392
+ ],
393
+ "src": "335:95:0"
394
+ },
395
+ "returnParameters": {
396
+ "id": 9,
397
+ "nodeType": "ParameterList",
398
+ "parameters": [],
399
+ "src": "439:0:0"
400
+ },
401
+ "scope": 11,
402
+ "src": "304:136:0",
403
+ "stateMutability": "nonpayable",
404
+ "virtual": false,
405
+ "visibility": "external"
406
+ }
407
+ ],
408
+ "scope": 113,
409
+ "src": "268:174:0",
410
+ "usedErrors": []
411
+ },
412
+ {
413
+ "abstract": true,
414
+ "baseContracts": [
415
+ {
416
+ "baseName": {
417
+ "id": 13,
418
+ "name": "IFxMessageProcessor",
419
+ "nodeType": "IdentifierPath",
420
+ "referencedDeclaration": 11,
421
+ "src": "565:19:0"
422
+ },
423
+ "id": 14,
424
+ "nodeType": "InheritanceSpecifier",
425
+ "src": "565:19:0"
426
+ }
427
+ ],
428
+ "canonicalName": "FxBaseChildTunnel",
429
+ "contractDependencies": [],
430
+ "contractKind": "contract",
431
+ "documentation": {
432
+ "id": 12,
433
+ "nodeType": "StructuredDocumentation",
434
+ "src": "444:81:0",
435
+ "text": " @notice Mock child tunnel contract to receive and send message from L2"
436
+ },
437
+ "fullyImplemented": false,
438
+ "id": 112,
439
+ "linearizedBaseContracts": [
440
+ 112,
441
+ 11
442
+ ],
443
+ "name": "FxBaseChildTunnel",
444
+ "nameLocation": "544:17:0",
445
+ "nodeType": "ContractDefinition",
446
+ "nodes": [
447
+ {
448
+ "anonymous": false,
449
+ "id": 18,
450
+ "name": "MessageSent",
451
+ "nameLocation": "654:11:0",
452
+ "nodeType": "EventDefinition",
453
+ "parameters": {
454
+ "id": 17,
455
+ "nodeType": "ParameterList",
456
+ "parameters": [
457
+ {
458
+ "constant": false,
459
+ "id": 16,
460
+ "indexed": false,
461
+ "mutability": "mutable",
462
+ "name": "message",
463
+ "nameLocation": "672:7:0",
464
+ "nodeType": "VariableDeclaration",
465
+ "scope": 18,
466
+ "src": "666:13:0",
467
+ "stateVariable": false,
468
+ "storageLocation": "default",
469
+ "typeDescriptions": {
470
+ "typeIdentifier": "t_bytes_memory_ptr",
471
+ "typeString": "bytes"
472
+ },
473
+ "typeName": {
474
+ "id": 15,
475
+ "name": "bytes",
476
+ "nodeType": "ElementaryTypeName",
477
+ "src": "666:5:0",
478
+ "typeDescriptions": {
479
+ "typeIdentifier": "t_bytes_storage_ptr",
480
+ "typeString": "bytes"
481
+ }
482
+ },
483
+ "visibility": "internal"
484
+ }
485
+ ],
486
+ "src": "665:15:0"
487
+ },
488
+ "src": "648:33:0"
489
+ },
490
+ {
491
+ "constant": false,
492
+ "functionSelector": "450d11f0",
493
+ "id": 20,
494
+ "mutability": "mutable",
495
+ "name": "fxChild",
496
+ "nameLocation": "718:7:0",
497
+ "nodeType": "VariableDeclaration",
498
+ "scope": 112,
499
+ "src": "703:22:0",
500
+ "stateVariable": true,
501
+ "storageLocation": "default",
502
+ "typeDescriptions": {
503
+ "typeIdentifier": "t_address",
504
+ "typeString": "address"
505
+ },
506
+ "typeName": {
507
+ "id": 19,
508
+ "name": "address",
509
+ "nodeType": "ElementaryTypeName",
510
+ "src": "703:7:0",
511
+ "stateMutability": "nonpayable",
512
+ "typeDescriptions": {
513
+ "typeIdentifier": "t_address",
514
+ "typeString": "address"
515
+ }
516
+ },
517
+ "visibility": "public"
518
+ },
519
+ {
520
+ "constant": false,
521
+ "functionSelector": "7f1e9cb0",
522
+ "id": 22,
523
+ "mutability": "mutable",
524
+ "name": "fxRootTunnel",
525
+ "nameLocation": "769:12:0",
526
+ "nodeType": "VariableDeclaration",
527
+ "scope": 112,
528
+ "src": "754:27:0",
529
+ "stateVariable": true,
530
+ "storageLocation": "default",
531
+ "typeDescriptions": {
532
+ "typeIdentifier": "t_address",
533
+ "typeString": "address"
534
+ },
535
+ "typeName": {
536
+ "id": 21,
537
+ "name": "address",
538
+ "nodeType": "ElementaryTypeName",
539
+ "src": "754:7:0",
540
+ "stateMutability": "nonpayable",
541
+ "typeDescriptions": {
542
+ "typeIdentifier": "t_address",
543
+ "typeString": "address"
544
+ }
545
+ },
546
+ "visibility": "public"
547
+ },
548
+ {
549
+ "body": {
550
+ "id": 31,
551
+ "nodeType": "Block",
552
+ "src": "818:35:0",
553
+ "statements": [
554
+ {
555
+ "expression": {
556
+ "id": 29,
557
+ "isConstant": false,
558
+ "isLValue": false,
559
+ "isPure": false,
560
+ "lValueRequested": false,
561
+ "leftHandSide": {
562
+ "id": 27,
563
+ "name": "fxChild",
564
+ "nodeType": "Identifier",
565
+ "overloadedDeclarations": [],
566
+ "referencedDeclaration": 20,
567
+ "src": "828:7:0",
568
+ "typeDescriptions": {
569
+ "typeIdentifier": "t_address",
570
+ "typeString": "address"
571
+ }
572
+ },
573
+ "nodeType": "Assignment",
574
+ "operator": "=",
575
+ "rightHandSide": {
576
+ "id": 28,
577
+ "name": "_fxChild",
578
+ "nodeType": "Identifier",
579
+ "overloadedDeclarations": [],
580
+ "referencedDeclaration": 24,
581
+ "src": "838:8:0",
582
+ "typeDescriptions": {
583
+ "typeIdentifier": "t_address",
584
+ "typeString": "address"
585
+ }
586
+ },
587
+ "src": "828:18:0",
588
+ "typeDescriptions": {
589
+ "typeIdentifier": "t_address",
590
+ "typeString": "address"
591
+ }
592
+ },
593
+ "id": 30,
594
+ "nodeType": "ExpressionStatement",
595
+ "src": "828:18:0"
596
+ }
597
+ ]
598
+ },
599
+ "id": 32,
600
+ "implemented": true,
601
+ "kind": "constructor",
602
+ "modifiers": [],
603
+ "name": "",
604
+ "nameLocation": "-1:-1:-1",
605
+ "nodeType": "FunctionDefinition",
606
+ "parameters": {
607
+ "id": 25,
608
+ "nodeType": "ParameterList",
609
+ "parameters": [
610
+ {
611
+ "constant": false,
612
+ "id": 24,
613
+ "mutability": "mutable",
614
+ "name": "_fxChild",
615
+ "nameLocation": "808:8:0",
616
+ "nodeType": "VariableDeclaration",
617
+ "scope": 32,
618
+ "src": "800:16:0",
619
+ "stateVariable": false,
620
+ "storageLocation": "default",
621
+ "typeDescriptions": {
622
+ "typeIdentifier": "t_address",
623
+ "typeString": "address"
624
+ },
625
+ "typeName": {
626
+ "id": 23,
627
+ "name": "address",
628
+ "nodeType": "ElementaryTypeName",
629
+ "src": "800:7:0",
630
+ "stateMutability": "nonpayable",
631
+ "typeDescriptions": {
632
+ "typeIdentifier": "t_address",
633
+ "typeString": "address"
634
+ }
635
+ },
636
+ "visibility": "internal"
637
+ }
638
+ ],
639
+ "src": "799:18:0"
640
+ },
641
+ "returnParameters": {
642
+ "id": 26,
643
+ "nodeType": "ParameterList",
644
+ "parameters": [],
645
+ "src": "818:0:0"
646
+ },
647
+ "scope": 112,
648
+ "src": "788:65:0",
649
+ "stateMutability": "nonpayable",
650
+ "virtual": false,
651
+ "visibility": "internal"
652
+ },
653
+ {
654
+ "body": {
655
+ "id": 44,
656
+ "nodeType": "Block",
657
+ "src": "935:106:0",
658
+ "statements": [
659
+ {
660
+ "expression": {
661
+ "arguments": [
662
+ {
663
+ "commonType": {
664
+ "typeIdentifier": "t_address",
665
+ "typeString": "address"
666
+ },
667
+ "id": 39,
668
+ "isConstant": false,
669
+ "isLValue": false,
670
+ "isPure": false,
671
+ "lValueRequested": false,
672
+ "leftExpression": {
673
+ "id": 37,
674
+ "name": "sender",
675
+ "nodeType": "Identifier",
676
+ "overloadedDeclarations": [],
677
+ "referencedDeclaration": 34,
678
+ "src": "953:6:0",
679
+ "typeDescriptions": {
680
+ "typeIdentifier": "t_address",
681
+ "typeString": "address"
682
+ }
683
+ },
684
+ "nodeType": "BinaryOperation",
685
+ "operator": "==",
686
+ "rightExpression": {
687
+ "id": 38,
688
+ "name": "fxRootTunnel",
689
+ "nodeType": "Identifier",
690
+ "overloadedDeclarations": [],
691
+ "referencedDeclaration": 22,
692
+ "src": "963:12:0",
693
+ "typeDescriptions": {
694
+ "typeIdentifier": "t_address",
695
+ "typeString": "address"
696
+ }
697
+ },
698
+ "src": "953:22:0",
699
+ "typeDescriptions": {
700
+ "typeIdentifier": "t_bool",
701
+ "typeString": "bool"
702
+ }
703
+ },
704
+ {
705
+ "hexValue": "4678426173654368696c6454756e6e656c3a20494e56414c49445f53454e4445525f46524f4d5f524f4f54",
706
+ "id": 40,
707
+ "isConstant": false,
708
+ "isLValue": false,
709
+ "isPure": true,
710
+ "kind": "string",
711
+ "lValueRequested": false,
712
+ "nodeType": "Literal",
713
+ "src": "977:45:0",
714
+ "typeDescriptions": {
715
+ "typeIdentifier": "t_stringliteral_1b951f8525e63633d83b1eade825f5af300eb77e95eaebd60efd7481ae921a45",
716
+ "typeString": "literal_string \"FxBaseChildTunnel: INVALID_SENDER_FROM_ROOT\""
717
+ },
718
+ "value": "FxBaseChildTunnel: INVALID_SENDER_FROM_ROOT"
719
+ }
720
+ ],
721
+ "expression": {
722
+ "argumentTypes": [
723
+ {
724
+ "typeIdentifier": "t_bool",
725
+ "typeString": "bool"
726
+ },
727
+ {
728
+ "typeIdentifier": "t_stringliteral_1b951f8525e63633d83b1eade825f5af300eb77e95eaebd60efd7481ae921a45",
729
+ "typeString": "literal_string \"FxBaseChildTunnel: INVALID_SENDER_FROM_ROOT\""
730
+ }
731
+ ],
732
+ "id": 36,
733
+ "name": "require",
734
+ "nodeType": "Identifier",
735
+ "overloadedDeclarations": [
736
+ -18,
737
+ -18
738
+ ],
739
+ "referencedDeclaration": -18,
740
+ "src": "945:7:0",
741
+ "typeDescriptions": {
742
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
743
+ "typeString": "function (bool,string memory) pure"
744
+ }
745
+ },
746
+ "id": 41,
747
+ "isConstant": false,
748
+ "isLValue": false,
749
+ "isPure": false,
750
+ "kind": "functionCall",
751
+ "lValueRequested": false,
752
+ "names": [],
753
+ "nodeType": "FunctionCall",
754
+ "src": "945:78:0",
755
+ "tryCall": false,
756
+ "typeDescriptions": {
757
+ "typeIdentifier": "t_tuple$__$",
758
+ "typeString": "tuple()"
759
+ }
760
+ },
761
+ "id": 42,
762
+ "nodeType": "ExpressionStatement",
763
+ "src": "945:78:0"
764
+ },
765
+ {
766
+ "id": 43,
767
+ "nodeType": "PlaceholderStatement",
768
+ "src": "1033:1:0"
769
+ }
770
+ ]
771
+ },
772
+ "id": 45,
773
+ "name": "validateSender",
774
+ "nameLocation": "904:14:0",
775
+ "nodeType": "ModifierDefinition",
776
+ "parameters": {
777
+ "id": 35,
778
+ "nodeType": "ParameterList",
779
+ "parameters": [
780
+ {
781
+ "constant": false,
782
+ "id": 34,
783
+ "mutability": "mutable",
784
+ "name": "sender",
785
+ "nameLocation": "927:6:0",
786
+ "nodeType": "VariableDeclaration",
787
+ "scope": 45,
788
+ "src": "919:14:0",
789
+ "stateVariable": false,
790
+ "storageLocation": "default",
791
+ "typeDescriptions": {
792
+ "typeIdentifier": "t_address",
793
+ "typeString": "address"
794
+ },
795
+ "typeName": {
796
+ "id": 33,
797
+ "name": "address",
798
+ "nodeType": "ElementaryTypeName",
799
+ "src": "919:7:0",
800
+ "stateMutability": "nonpayable",
801
+ "typeDescriptions": {
802
+ "typeIdentifier": "t_address",
803
+ "typeString": "address"
804
+ }
805
+ },
806
+ "visibility": "internal"
807
+ }
808
+ ],
809
+ "src": "918:16:0"
810
+ },
811
+ "src": "895:146:0",
812
+ "virtual": false,
813
+ "visibility": "internal"
814
+ },
815
+ {
816
+ "body": {
817
+ "id": 64,
818
+ "nodeType": "Block",
819
+ "src": "1146:138:0",
820
+ "statements": [
821
+ {
822
+ "expression": {
823
+ "arguments": [
824
+ {
825
+ "commonType": {
826
+ "typeIdentifier": "t_address",
827
+ "typeString": "address"
828
+ },
829
+ "id": 56,
830
+ "isConstant": false,
831
+ "isLValue": false,
832
+ "isPure": false,
833
+ "lValueRequested": false,
834
+ "leftExpression": {
835
+ "id": 51,
836
+ "name": "fxRootTunnel",
837
+ "nodeType": "Identifier",
838
+ "overloadedDeclarations": [],
839
+ "referencedDeclaration": 22,
840
+ "src": "1164:12:0",
841
+ "typeDescriptions": {
842
+ "typeIdentifier": "t_address",
843
+ "typeString": "address"
844
+ }
845
+ },
846
+ "nodeType": "BinaryOperation",
847
+ "operator": "==",
848
+ "rightExpression": {
849
+ "arguments": [
850
+ {
851
+ "hexValue": "307830",
852
+ "id": 54,
853
+ "isConstant": false,
854
+ "isLValue": false,
855
+ "isPure": true,
856
+ "kind": "number",
857
+ "lValueRequested": false,
858
+ "nodeType": "Literal",
859
+ "src": "1188:3:0",
860
+ "typeDescriptions": {
861
+ "typeIdentifier": "t_rational_0_by_1",
862
+ "typeString": "int_const 0"
863
+ },
864
+ "value": "0x0"
865
+ }
866
+ ],
867
+ "expression": {
868
+ "argumentTypes": [
869
+ {
870
+ "typeIdentifier": "t_rational_0_by_1",
871
+ "typeString": "int_const 0"
872
+ }
873
+ ],
874
+ "id": 53,
875
+ "isConstant": false,
876
+ "isLValue": false,
877
+ "isPure": true,
878
+ "lValueRequested": false,
879
+ "nodeType": "ElementaryTypeNameExpression",
880
+ "src": "1180:7:0",
881
+ "typeDescriptions": {
882
+ "typeIdentifier": "t_type$_t_address_$",
883
+ "typeString": "type(address)"
884
+ },
885
+ "typeName": {
886
+ "id": 52,
887
+ "name": "address",
888
+ "nodeType": "ElementaryTypeName",
889
+ "src": "1180:7:0",
890
+ "typeDescriptions": {}
891
+ }
892
+ },
893
+ "id": 55,
894
+ "isConstant": false,
895
+ "isLValue": false,
896
+ "isPure": true,
897
+ "kind": "typeConversion",
898
+ "lValueRequested": false,
899
+ "names": [],
900
+ "nodeType": "FunctionCall",
901
+ "src": "1180:12:0",
902
+ "tryCall": false,
903
+ "typeDescriptions": {
904
+ "typeIdentifier": "t_address",
905
+ "typeString": "address"
906
+ }
907
+ },
908
+ "src": "1164:28:0",
909
+ "typeDescriptions": {
910
+ "typeIdentifier": "t_bool",
911
+ "typeString": "bool"
912
+ }
913
+ },
914
+ {
915
+ "hexValue": "4678426173654368696c6454756e6e656c3a20524f4f545f54554e4e454c5f414c52454144595f534554",
916
+ "id": 57,
917
+ "isConstant": false,
918
+ "isLValue": false,
919
+ "isPure": true,
920
+ "kind": "string",
921
+ "lValueRequested": false,
922
+ "nodeType": "Literal",
923
+ "src": "1194:44:0",
924
+ "typeDescriptions": {
925
+ "typeIdentifier": "t_stringliteral_f7974c7c2deac4fad00669eceb145d6535e698a8bcd8493990c8db551188166b",
926
+ "typeString": "literal_string \"FxBaseChildTunnel: ROOT_TUNNEL_ALREADY_SET\""
927
+ },
928
+ "value": "FxBaseChildTunnel: ROOT_TUNNEL_ALREADY_SET"
929
+ }
930
+ ],
931
+ "expression": {
932
+ "argumentTypes": [
933
+ {
934
+ "typeIdentifier": "t_bool",
935
+ "typeString": "bool"
936
+ },
937
+ {
938
+ "typeIdentifier": "t_stringliteral_f7974c7c2deac4fad00669eceb145d6535e698a8bcd8493990c8db551188166b",
939
+ "typeString": "literal_string \"FxBaseChildTunnel: ROOT_TUNNEL_ALREADY_SET\""
940
+ }
941
+ ],
942
+ "id": 50,
943
+ "name": "require",
944
+ "nodeType": "Identifier",
945
+ "overloadedDeclarations": [
946
+ -18,
947
+ -18
948
+ ],
949
+ "referencedDeclaration": -18,
950
+ "src": "1156:7:0",
951
+ "typeDescriptions": {
952
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
953
+ "typeString": "function (bool,string memory) pure"
954
+ }
955
+ },
956
+ "id": 58,
957
+ "isConstant": false,
958
+ "isLValue": false,
959
+ "isPure": false,
960
+ "kind": "functionCall",
961
+ "lValueRequested": false,
962
+ "names": [],
963
+ "nodeType": "FunctionCall",
964
+ "src": "1156:83:0",
965
+ "tryCall": false,
966
+ "typeDescriptions": {
967
+ "typeIdentifier": "t_tuple$__$",
968
+ "typeString": "tuple()"
969
+ }
970
+ },
971
+ "id": 59,
972
+ "nodeType": "ExpressionStatement",
973
+ "src": "1156:83:0"
974
+ },
975
+ {
976
+ "expression": {
977
+ "id": 62,
978
+ "isConstant": false,
979
+ "isLValue": false,
980
+ "isPure": false,
981
+ "lValueRequested": false,
982
+ "leftHandSide": {
983
+ "id": 60,
984
+ "name": "fxRootTunnel",
985
+ "nodeType": "Identifier",
986
+ "overloadedDeclarations": [],
987
+ "referencedDeclaration": 22,
988
+ "src": "1249:12:0",
989
+ "typeDescriptions": {
990
+ "typeIdentifier": "t_address",
991
+ "typeString": "address"
992
+ }
993
+ },
994
+ "nodeType": "Assignment",
995
+ "operator": "=",
996
+ "rightHandSide": {
997
+ "id": 61,
998
+ "name": "_fxRootTunnel",
999
+ "nodeType": "Identifier",
1000
+ "overloadedDeclarations": [],
1001
+ "referencedDeclaration": 47,
1002
+ "src": "1264:13:0",
1003
+ "typeDescriptions": {
1004
+ "typeIdentifier": "t_address",
1005
+ "typeString": "address"
1006
+ }
1007
+ },
1008
+ "src": "1249:28:0",
1009
+ "typeDescriptions": {
1010
+ "typeIdentifier": "t_address",
1011
+ "typeString": "address"
1012
+ }
1013
+ },
1014
+ "id": 63,
1015
+ "nodeType": "ExpressionStatement",
1016
+ "src": "1249:28:0"
1017
+ }
1018
+ ]
1019
+ },
1020
+ "functionSelector": "88837094",
1021
+ "id": 65,
1022
+ "implemented": true,
1023
+ "kind": "function",
1024
+ "modifiers": [],
1025
+ "name": "setFxRootTunnel",
1026
+ "nameLocation": "1100:15:0",
1027
+ "nodeType": "FunctionDefinition",
1028
+ "parameters": {
1029
+ "id": 48,
1030
+ "nodeType": "ParameterList",
1031
+ "parameters": [
1032
+ {
1033
+ "constant": false,
1034
+ "id": 47,
1035
+ "mutability": "mutable",
1036
+ "name": "_fxRootTunnel",
1037
+ "nameLocation": "1124:13:0",
1038
+ "nodeType": "VariableDeclaration",
1039
+ "scope": 65,
1040
+ "src": "1116:21:0",
1041
+ "stateVariable": false,
1042
+ "storageLocation": "default",
1043
+ "typeDescriptions": {
1044
+ "typeIdentifier": "t_address",
1045
+ "typeString": "address"
1046
+ },
1047
+ "typeName": {
1048
+ "id": 46,
1049
+ "name": "address",
1050
+ "nodeType": "ElementaryTypeName",
1051
+ "src": "1116:7:0",
1052
+ "stateMutability": "nonpayable",
1053
+ "typeDescriptions": {
1054
+ "typeIdentifier": "t_address",
1055
+ "typeString": "address"
1056
+ }
1057
+ },
1058
+ "visibility": "internal"
1059
+ }
1060
+ ],
1061
+ "src": "1115:23:0"
1062
+ },
1063
+ "returnParameters": {
1064
+ "id": 49,
1065
+ "nodeType": "ParameterList",
1066
+ "parameters": [],
1067
+ "src": "1146:0:0"
1068
+ },
1069
+ "scope": 112,
1070
+ "src": "1091:193:0",
1071
+ "stateMutability": "nonpayable",
1072
+ "virtual": false,
1073
+ "visibility": "public"
1074
+ },
1075
+ {
1076
+ "baseFunctions": [
1077
+ 10
1078
+ ],
1079
+ "body": {
1080
+ "id": 89,
1081
+ "nodeType": "Block",
1082
+ "src": "1433:151:0",
1083
+ "statements": [
1084
+ {
1085
+ "expression": {
1086
+ "arguments": [
1087
+ {
1088
+ "commonType": {
1089
+ "typeIdentifier": "t_address",
1090
+ "typeString": "address"
1091
+ },
1092
+ "id": 79,
1093
+ "isConstant": false,
1094
+ "isLValue": false,
1095
+ "isPure": false,
1096
+ "lValueRequested": false,
1097
+ "leftExpression": {
1098
+ "expression": {
1099
+ "id": 76,
1100
+ "name": "msg",
1101
+ "nodeType": "Identifier",
1102
+ "overloadedDeclarations": [],
1103
+ "referencedDeclaration": -15,
1104
+ "src": "1451:3:0",
1105
+ "typeDescriptions": {
1106
+ "typeIdentifier": "t_magic_message",
1107
+ "typeString": "msg"
1108
+ }
1109
+ },
1110
+ "id": 77,
1111
+ "isConstant": false,
1112
+ "isLValue": false,
1113
+ "isPure": false,
1114
+ "lValueRequested": false,
1115
+ "memberName": "sender",
1116
+ "nodeType": "MemberAccess",
1117
+ "src": "1451:10:0",
1118
+ "typeDescriptions": {
1119
+ "typeIdentifier": "t_address",
1120
+ "typeString": "address"
1121
+ }
1122
+ },
1123
+ "nodeType": "BinaryOperation",
1124
+ "operator": "==",
1125
+ "rightExpression": {
1126
+ "id": 78,
1127
+ "name": "fxChild",
1128
+ "nodeType": "Identifier",
1129
+ "overloadedDeclarations": [],
1130
+ "referencedDeclaration": 20,
1131
+ "src": "1465:7:0",
1132
+ "typeDescriptions": {
1133
+ "typeIdentifier": "t_address",
1134
+ "typeString": "address"
1135
+ }
1136
+ },
1137
+ "src": "1451:21:0",
1138
+ "typeDescriptions": {
1139
+ "typeIdentifier": "t_bool",
1140
+ "typeString": "bool"
1141
+ }
1142
+ },
1143
+ {
1144
+ "hexValue": "4678426173654368696c6454756e6e656c3a20494e56414c49445f53454e444552",
1145
+ "id": 80,
1146
+ "isConstant": false,
1147
+ "isLValue": false,
1148
+ "isPure": true,
1149
+ "kind": "string",
1150
+ "lValueRequested": false,
1151
+ "nodeType": "Literal",
1152
+ "src": "1474:35:0",
1153
+ "typeDescriptions": {
1154
+ "typeIdentifier": "t_stringliteral_0127552a73259d4875e4bb85e64334729d5119ce836ba2001f26ffe4d150b533",
1155
+ "typeString": "literal_string \"FxBaseChildTunnel: INVALID_SENDER\""
1156
+ },
1157
+ "value": "FxBaseChildTunnel: INVALID_SENDER"
1158
+ }
1159
+ ],
1160
+ "expression": {
1161
+ "argumentTypes": [
1162
+ {
1163
+ "typeIdentifier": "t_bool",
1164
+ "typeString": "bool"
1165
+ },
1166
+ {
1167
+ "typeIdentifier": "t_stringliteral_0127552a73259d4875e4bb85e64334729d5119ce836ba2001f26ffe4d150b533",
1168
+ "typeString": "literal_string \"FxBaseChildTunnel: INVALID_SENDER\""
1169
+ }
1170
+ ],
1171
+ "id": 75,
1172
+ "name": "require",
1173
+ "nodeType": "Identifier",
1174
+ "overloadedDeclarations": [
1175
+ -18,
1176
+ -18
1177
+ ],
1178
+ "referencedDeclaration": -18,
1179
+ "src": "1443:7:0",
1180
+ "typeDescriptions": {
1181
+ "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
1182
+ "typeString": "function (bool,string memory) pure"
1183
+ }
1184
+ },
1185
+ "id": 81,
1186
+ "isConstant": false,
1187
+ "isLValue": false,
1188
+ "isPure": false,
1189
+ "kind": "functionCall",
1190
+ "lValueRequested": false,
1191
+ "names": [],
1192
+ "nodeType": "FunctionCall",
1193
+ "src": "1443:67:0",
1194
+ "tryCall": false,
1195
+ "typeDescriptions": {
1196
+ "typeIdentifier": "t_tuple$__$",
1197
+ "typeString": "tuple()"
1198
+ }
1199
+ },
1200
+ "id": 82,
1201
+ "nodeType": "ExpressionStatement",
1202
+ "src": "1443:67:0"
1203
+ },
1204
+ {
1205
+ "expression": {
1206
+ "arguments": [
1207
+ {
1208
+ "id": 84,
1209
+ "name": "stateId",
1210
+ "nodeType": "Identifier",
1211
+ "overloadedDeclarations": [],
1212
+ "referencedDeclaration": 67,
1213
+ "src": "1544:7:0",
1214
+ "typeDescriptions": {
1215
+ "typeIdentifier": "t_uint256",
1216
+ "typeString": "uint256"
1217
+ }
1218
+ },
1219
+ {
1220
+ "id": 85,
1221
+ "name": "rootMessageSender",
1222
+ "nodeType": "Identifier",
1223
+ "overloadedDeclarations": [],
1224
+ "referencedDeclaration": 69,
1225
+ "src": "1553:17:0",
1226
+ "typeDescriptions": {
1227
+ "typeIdentifier": "t_address",
1228
+ "typeString": "address"
1229
+ }
1230
+ },
1231
+ {
1232
+ "id": 86,
1233
+ "name": "data",
1234
+ "nodeType": "Identifier",
1235
+ "overloadedDeclarations": [],
1236
+ "referencedDeclaration": 71,
1237
+ "src": "1572:4:0",
1238
+ "typeDescriptions": {
1239
+ "typeIdentifier": "t_bytes_calldata_ptr",
1240
+ "typeString": "bytes calldata"
1241
+ }
1242
+ }
1243
+ ],
1244
+ "expression": {
1245
+ "argumentTypes": [
1246
+ {
1247
+ "typeIdentifier": "t_uint256",
1248
+ "typeString": "uint256"
1249
+ },
1250
+ {
1251
+ "typeIdentifier": "t_address",
1252
+ "typeString": "address"
1253
+ },
1254
+ {
1255
+ "typeIdentifier": "t_bytes_calldata_ptr",
1256
+ "typeString": "bytes calldata"
1257
+ }
1258
+ ],
1259
+ "id": 83,
1260
+ "name": "_processMessageFromRoot",
1261
+ "nodeType": "Identifier",
1262
+ "overloadedDeclarations": [],
1263
+ "referencedDeclaration": 111,
1264
+ "src": "1520:23:0",
1265
+ "typeDescriptions": {
1266
+ "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
1267
+ "typeString": "function (uint256,address,bytes memory)"
1268
+ }
1269
+ },
1270
+ "id": 87,
1271
+ "isConstant": false,
1272
+ "isLValue": false,
1273
+ "isPure": false,
1274
+ "kind": "functionCall",
1275
+ "lValueRequested": false,
1276
+ "names": [],
1277
+ "nodeType": "FunctionCall",
1278
+ "src": "1520:57:0",
1279
+ "tryCall": false,
1280
+ "typeDescriptions": {
1281
+ "typeIdentifier": "t_tuple$__$",
1282
+ "typeString": "tuple()"
1283
+ }
1284
+ },
1285
+ "id": 88,
1286
+ "nodeType": "ExpressionStatement",
1287
+ "src": "1520:57:0"
1288
+ }
1289
+ ]
1290
+ },
1291
+ "functionSelector": "9a7c4b71",
1292
+ "id": 90,
1293
+ "implemented": true,
1294
+ "kind": "function",
1295
+ "modifiers": [],
1296
+ "name": "processMessageFromRoot",
1297
+ "nameLocation": "1299:22:0",
1298
+ "nodeType": "FunctionDefinition",
1299
+ "overrides": {
1300
+ "id": 73,
1301
+ "nodeType": "OverrideSpecifier",
1302
+ "overrides": [],
1303
+ "src": "1424:8:0"
1304
+ },
1305
+ "parameters": {
1306
+ "id": 72,
1307
+ "nodeType": "ParameterList",
1308
+ "parameters": [
1309
+ {
1310
+ "constant": false,
1311
+ "id": 67,
1312
+ "mutability": "mutable",
1313
+ "name": "stateId",
1314
+ "nameLocation": "1339:7:0",
1315
+ "nodeType": "VariableDeclaration",
1316
+ "scope": 90,
1317
+ "src": "1331:15:0",
1318
+ "stateVariable": false,
1319
+ "storageLocation": "default",
1320
+ "typeDescriptions": {
1321
+ "typeIdentifier": "t_uint256",
1322
+ "typeString": "uint256"
1323
+ },
1324
+ "typeName": {
1325
+ "id": 66,
1326
+ "name": "uint256",
1327
+ "nodeType": "ElementaryTypeName",
1328
+ "src": "1331:7:0",
1329
+ "typeDescriptions": {
1330
+ "typeIdentifier": "t_uint256",
1331
+ "typeString": "uint256"
1332
+ }
1333
+ },
1334
+ "visibility": "internal"
1335
+ },
1336
+ {
1337
+ "constant": false,
1338
+ "id": 69,
1339
+ "mutability": "mutable",
1340
+ "name": "rootMessageSender",
1341
+ "nameLocation": "1364:17:0",
1342
+ "nodeType": "VariableDeclaration",
1343
+ "scope": 90,
1344
+ "src": "1356:25:0",
1345
+ "stateVariable": false,
1346
+ "storageLocation": "default",
1347
+ "typeDescriptions": {
1348
+ "typeIdentifier": "t_address",
1349
+ "typeString": "address"
1350
+ },
1351
+ "typeName": {
1352
+ "id": 68,
1353
+ "name": "address",
1354
+ "nodeType": "ElementaryTypeName",
1355
+ "src": "1356:7:0",
1356
+ "stateMutability": "nonpayable",
1357
+ "typeDescriptions": {
1358
+ "typeIdentifier": "t_address",
1359
+ "typeString": "address"
1360
+ }
1361
+ },
1362
+ "visibility": "internal"
1363
+ },
1364
+ {
1365
+ "constant": false,
1366
+ "id": 71,
1367
+ "mutability": "mutable",
1368
+ "name": "data",
1369
+ "nameLocation": "1406:4:0",
1370
+ "nodeType": "VariableDeclaration",
1371
+ "scope": 90,
1372
+ "src": "1391:19:0",
1373
+ "stateVariable": false,
1374
+ "storageLocation": "calldata",
1375
+ "typeDescriptions": {
1376
+ "typeIdentifier": "t_bytes_calldata_ptr",
1377
+ "typeString": "bytes"
1378
+ },
1379
+ "typeName": {
1380
+ "id": 70,
1381
+ "name": "bytes",
1382
+ "nodeType": "ElementaryTypeName",
1383
+ "src": "1391:5:0",
1384
+ "typeDescriptions": {
1385
+ "typeIdentifier": "t_bytes_storage_ptr",
1386
+ "typeString": "bytes"
1387
+ }
1388
+ },
1389
+ "visibility": "internal"
1390
+ }
1391
+ ],
1392
+ "src": "1321:95:0"
1393
+ },
1394
+ "returnParameters": {
1395
+ "id": 74,
1396
+ "nodeType": "ParameterList",
1397
+ "parameters": [],
1398
+ "src": "1433:0:0"
1399
+ },
1400
+ "scope": 112,
1401
+ "src": "1290:294:0",
1402
+ "stateMutability": "nonpayable",
1403
+ "virtual": false,
1404
+ "visibility": "public"
1405
+ },
1406
+ {
1407
+ "body": {
1408
+ "id": 100,
1409
+ "nodeType": "Block",
1410
+ "src": "2016:42:0",
1411
+ "statements": [
1412
+ {
1413
+ "eventCall": {
1414
+ "arguments": [
1415
+ {
1416
+ "id": 97,
1417
+ "name": "message",
1418
+ "nodeType": "Identifier",
1419
+ "overloadedDeclarations": [],
1420
+ "referencedDeclaration": 93,
1421
+ "src": "2043:7:0",
1422
+ "typeDescriptions": {
1423
+ "typeIdentifier": "t_bytes_memory_ptr",
1424
+ "typeString": "bytes memory"
1425
+ }
1426
+ }
1427
+ ],
1428
+ "expression": {
1429
+ "argumentTypes": [
1430
+ {
1431
+ "typeIdentifier": "t_bytes_memory_ptr",
1432
+ "typeString": "bytes memory"
1433
+ }
1434
+ ],
1435
+ "id": 96,
1436
+ "name": "MessageSent",
1437
+ "nodeType": "Identifier",
1438
+ "overloadedDeclarations": [],
1439
+ "referencedDeclaration": 18,
1440
+ "src": "2031:11:0",
1441
+ "typeDescriptions": {
1442
+ "typeIdentifier": "t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$",
1443
+ "typeString": "function (bytes memory)"
1444
+ }
1445
+ },
1446
+ "id": 98,
1447
+ "isConstant": false,
1448
+ "isLValue": false,
1449
+ "isPure": false,
1450
+ "kind": "functionCall",
1451
+ "lValueRequested": false,
1452
+ "names": [],
1453
+ "nodeType": "FunctionCall",
1454
+ "src": "2031:20:0",
1455
+ "tryCall": false,
1456
+ "typeDescriptions": {
1457
+ "typeIdentifier": "t_tuple$__$",
1458
+ "typeString": "tuple()"
1459
+ }
1460
+ },
1461
+ "id": 99,
1462
+ "nodeType": "EmitStatement",
1463
+ "src": "2026:25:0"
1464
+ }
1465
+ ]
1466
+ },
1467
+ "documentation": {
1468
+ "id": 91,
1469
+ "nodeType": "StructuredDocumentation",
1470
+ "src": "1590:362:0",
1471
+ "text": " @notice Emit message that can be received on Root Tunnel\n @dev Call the internal function when need to emit message\n @param message bytes message that will be sent to Root Tunnel\n some message examples -\n abi.encode(tokenId);\n abi.encode(tokenId, tokenMetadata);\n abi.encode(messageType, messageData);"
1472
+ },
1473
+ "id": 101,
1474
+ "implemented": true,
1475
+ "kind": "function",
1476
+ "modifiers": [],
1477
+ "name": "_sendMessageToRoot",
1478
+ "nameLocation": "1966:18:0",
1479
+ "nodeType": "FunctionDefinition",
1480
+ "parameters": {
1481
+ "id": 94,
1482
+ "nodeType": "ParameterList",
1483
+ "parameters": [
1484
+ {
1485
+ "constant": false,
1486
+ "id": 93,
1487
+ "mutability": "mutable",
1488
+ "name": "message",
1489
+ "nameLocation": "1998:7:0",
1490
+ "nodeType": "VariableDeclaration",
1491
+ "scope": 101,
1492
+ "src": "1985:20:0",
1493
+ "stateVariable": false,
1494
+ "storageLocation": "memory",
1495
+ "typeDescriptions": {
1496
+ "typeIdentifier": "t_bytes_memory_ptr",
1497
+ "typeString": "bytes"
1498
+ },
1499
+ "typeName": {
1500
+ "id": 92,
1501
+ "name": "bytes",
1502
+ "nodeType": "ElementaryTypeName",
1503
+ "src": "1985:5:0",
1504
+ "typeDescriptions": {
1505
+ "typeIdentifier": "t_bytes_storage_ptr",
1506
+ "typeString": "bytes"
1507
+ }
1508
+ },
1509
+ "visibility": "internal"
1510
+ }
1511
+ ],
1512
+ "src": "1984:22:0"
1513
+ },
1514
+ "returnParameters": {
1515
+ "id": 95,
1516
+ "nodeType": "ParameterList",
1517
+ "parameters": [],
1518
+ "src": "2016:0:0"
1519
+ },
1520
+ "scope": 112,
1521
+ "src": "1957:101:0",
1522
+ "stateMutability": "nonpayable",
1523
+ "virtual": false,
1524
+ "visibility": "internal"
1525
+ },
1526
+ {
1527
+ "documentation": {
1528
+ "id": 102,
1529
+ "nodeType": "StructuredDocumentation",
1530
+ "src": "2064:443:0",
1531
+ "text": " @notice Process message received from Root Tunnel\n @dev function needs to be implemented to handle message as per requirement\n This is called by onStateReceive function.\n Since it is called via a system call, any event will not be emitted during its execution.\n @param stateId unique state id\n @param sender root message sender\n @param message bytes message that was sent from Root Tunnel"
1532
+ },
1533
+ "id": 111,
1534
+ "implemented": false,
1535
+ "kind": "function",
1536
+ "modifiers": [],
1537
+ "name": "_processMessageFromRoot",
1538
+ "nameLocation": "2521:23:0",
1539
+ "nodeType": "FunctionDefinition",
1540
+ "parameters": {
1541
+ "id": 109,
1542
+ "nodeType": "ParameterList",
1543
+ "parameters": [
1544
+ {
1545
+ "constant": false,
1546
+ "id": 104,
1547
+ "mutability": "mutable",
1548
+ "name": "stateId",
1549
+ "nameLocation": "2562:7:0",
1550
+ "nodeType": "VariableDeclaration",
1551
+ "scope": 111,
1552
+ "src": "2554:15:0",
1553
+ "stateVariable": false,
1554
+ "storageLocation": "default",
1555
+ "typeDescriptions": {
1556
+ "typeIdentifier": "t_uint256",
1557
+ "typeString": "uint256"
1558
+ },
1559
+ "typeName": {
1560
+ "id": 103,
1561
+ "name": "uint256",
1562
+ "nodeType": "ElementaryTypeName",
1563
+ "src": "2554:7:0",
1564
+ "typeDescriptions": {
1565
+ "typeIdentifier": "t_uint256",
1566
+ "typeString": "uint256"
1567
+ }
1568
+ },
1569
+ "visibility": "internal"
1570
+ },
1571
+ {
1572
+ "constant": false,
1573
+ "id": 106,
1574
+ "mutability": "mutable",
1575
+ "name": "sender",
1576
+ "nameLocation": "2587:6:0",
1577
+ "nodeType": "VariableDeclaration",
1578
+ "scope": 111,
1579
+ "src": "2579:14:0",
1580
+ "stateVariable": false,
1581
+ "storageLocation": "default",
1582
+ "typeDescriptions": {
1583
+ "typeIdentifier": "t_address",
1584
+ "typeString": "address"
1585
+ },
1586
+ "typeName": {
1587
+ "id": 105,
1588
+ "name": "address",
1589
+ "nodeType": "ElementaryTypeName",
1590
+ "src": "2579:7:0",
1591
+ "stateMutability": "nonpayable",
1592
+ "typeDescriptions": {
1593
+ "typeIdentifier": "t_address",
1594
+ "typeString": "address"
1595
+ }
1596
+ },
1597
+ "visibility": "internal"
1598
+ },
1599
+ {
1600
+ "constant": false,
1601
+ "id": 108,
1602
+ "mutability": "mutable",
1603
+ "name": "message",
1604
+ "nameLocation": "2616:7:0",
1605
+ "nodeType": "VariableDeclaration",
1606
+ "scope": 111,
1607
+ "src": "2603:20:0",
1608
+ "stateVariable": false,
1609
+ "storageLocation": "memory",
1610
+ "typeDescriptions": {
1611
+ "typeIdentifier": "t_bytes_memory_ptr",
1612
+ "typeString": "bytes"
1613
+ },
1614
+ "typeName": {
1615
+ "id": 107,
1616
+ "name": "bytes",
1617
+ "nodeType": "ElementaryTypeName",
1618
+ "src": "2603:5:0",
1619
+ "typeDescriptions": {
1620
+ "typeIdentifier": "t_bytes_storage_ptr",
1621
+ "typeString": "bytes"
1622
+ }
1623
+ },
1624
+ "visibility": "internal"
1625
+ }
1626
+ ],
1627
+ "src": "2544:85:0"
1628
+ },
1629
+ "returnParameters": {
1630
+ "id": 110,
1631
+ "nodeType": "ParameterList",
1632
+ "parameters": [],
1633
+ "src": "2646:0:0"
1634
+ },
1635
+ "scope": 112,
1636
+ "src": "2512:135:0",
1637
+ "stateMutability": "nonpayable",
1638
+ "virtual": true,
1639
+ "visibility": "internal"
1640
+ }
1641
+ ],
1642
+ "scope": 113,
1643
+ "src": "526:2123:0",
1644
+ "usedErrors": []
1645
+ }
1646
+ ],
1647
+ "src": "180:2470:0"
1648
+ },
1649
+ "id": 0
1650
+ }
1651
+ }
1652
+ }
1653
+ }