@layerzerolabs/oft-evm-contracts 0.2.74

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 (143) hide show
  1. package/.turbo/turbo-build.log +68 -0
  2. package/.turbo/turbo-lint.log +185 -0
  3. package/.turbo/turbo-test.log +144 -0
  4. package/LICENSE +23 -0
  5. package/artifacts/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol/ILayerZeroEndpointV2.dbg.json +4 -0
  6. package/artifacts/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol/ILayerZeroEndpointV2.json +1899 -0
  7. package/artifacts/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +4 -0
  8. package/artifacts/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.json +121 -0
  9. package/artifacts/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol/IMessageLibManager.dbg.json +4 -0
  10. package/artifacts/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol/IMessageLibManager.json +646 -0
  11. package/artifacts/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol/IMessagingChannel.dbg.json +4 -0
  12. package/artifacts/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol/IMessagingChannel.json +373 -0
  13. package/artifacts/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol/IMessagingComposer.dbg.json +4 -0
  14. package/artifacts/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol/IMessagingComposer.json +246 -0
  15. package/artifacts/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol/IMessagingContext.dbg.json +4 -0
  16. package/artifacts/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol/IMessagingContext.json +42 -0
  17. package/artifacts/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppCore.sol/IOAppCore.dbg.json +4 -0
  18. package/artifacts/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppCore.sol/IOAppCore.json +148 -0
  19. package/artifacts/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol/IOAppExtended.dbg.json +4 -0
  20. package/artifacts/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol/IOAppExtended.json +467 -0
  21. package/artifacts/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppMsgInspection.sol/IOAppMsgInspection.dbg.json +4 -0
  22. package/artifacts/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppMsgInspection.sol/IOAppMsgInspection.json +50 -0
  23. package/artifacts/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppOptionsType3.sol/IOAppOptionsType3.dbg.json +4 -0
  24. package/artifacts/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppOptionsType3.sol/IOAppOptionsType3.json +135 -0
  25. package/artifacts/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppReceiver.sol/IOAppReceiver.dbg.json +4 -0
  26. package/artifacts/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppReceiver.sol/IOAppReceiver.json +167 -0
  27. package/artifacts/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol/IFeeConfig.dbg.json +4 -0
  28. package/artifacts/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol/IFeeConfig.json +188 -0
  29. package/artifacts/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol/IFeeHandler.dbg.json +4 -0
  30. package/artifacts/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol/IFeeHandler.json +55 -0
  31. package/artifacts/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol/IPauseByID.dbg.json +4 -0
  32. package/artifacts/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol/IPauseByID.json +177 -0
  33. package/artifacts/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol/IRateLimiter.dbg.json +4 -0
  34. package/artifacts/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol/IRateLimiter.json +532 -0
  35. package/artifacts/build-info/eba77569fb49f02e67cb445bb3ee5d37.json +1 -0
  36. package/artifacts/contracts/interfaces/IOFT.sol/IOFT.dbg.json +4 -0
  37. package/artifacts/contracts/interfaces/IOFT.sol/IOFT.json +467 -0
  38. package/artifacts/contracts/interfaces/IOFTDecimalUtils.sol/IOFTDecimalUtils.dbg.json +4 -0
  39. package/artifacts/contracts/interfaces/IOFTDecimalUtils.sol/IOFTDecimalUtils.json +66 -0
  40. package/artifacts/contracts/interfaces/IOFTExtended.sol/IOFTExtended.dbg.json +4 -0
  41. package/artifacts/contracts/interfaces/IOFTExtended.sol/IOFTExtended.json +1831 -0
  42. package/artifacts/contracts/libs/OFTComposeMsgCodec.sol/OFTComposeMsgCodec.dbg.json +4 -0
  43. package/artifacts/contracts/libs/OFTComposeMsgCodec.sol/OFTComposeMsgCodec.json +10 -0
  44. package/artifacts/contracts/libs/OFTMsgCodec.sol/OFTMsgCodec.dbg.json +4 -0
  45. package/artifacts/contracts/libs/OFTMsgCodec.sol/OFTMsgCodec.json +10 -0
  46. package/artifacts/contracts/utils/OFTDecimalUtils.sol/OFTDecimalUtils.dbg.json +4 -0
  47. package/artifacts/contracts/utils/OFTDecimalUtils.sol/OFTDecimalUtils.json +66 -0
  48. package/artifacts-tron/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol/ILayerZeroEndpointV2.dbg.json +4 -0
  49. package/artifacts-tron/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol/ILayerZeroEndpointV2.json +1899 -0
  50. package/artifacts-tron/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +4 -0
  51. package/artifacts-tron/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.json +121 -0
  52. package/artifacts-tron/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol/IMessageLibManager.dbg.json +4 -0
  53. package/artifacts-tron/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol/IMessageLibManager.json +646 -0
  54. package/artifacts-tron/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol/IMessagingChannel.dbg.json +4 -0
  55. package/artifacts-tron/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol/IMessagingChannel.json +373 -0
  56. package/artifacts-tron/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol/IMessagingComposer.dbg.json +4 -0
  57. package/artifacts-tron/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol/IMessagingComposer.json +246 -0
  58. package/artifacts-tron/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol/IMessagingContext.dbg.json +4 -0
  59. package/artifacts-tron/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol/IMessagingContext.json +42 -0
  60. package/artifacts-tron/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppCore.sol/IOAppCore.dbg.json +4 -0
  61. package/artifacts-tron/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppCore.sol/IOAppCore.json +148 -0
  62. package/artifacts-tron/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol/IOAppExtended.dbg.json +4 -0
  63. package/artifacts-tron/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol/IOAppExtended.json +467 -0
  64. package/artifacts-tron/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppMsgInspection.sol/IOAppMsgInspection.dbg.json +4 -0
  65. package/artifacts-tron/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppMsgInspection.sol/IOAppMsgInspection.json +50 -0
  66. package/artifacts-tron/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppOptionsType3.sol/IOAppOptionsType3.dbg.json +4 -0
  67. package/artifacts-tron/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppOptionsType3.sol/IOAppOptionsType3.json +135 -0
  68. package/artifacts-tron/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppReceiver.sol/IOAppReceiver.dbg.json +4 -0
  69. package/artifacts-tron/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppReceiver.sol/IOAppReceiver.json +167 -0
  70. package/artifacts-tron/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol/IFeeConfig.dbg.json +4 -0
  71. package/artifacts-tron/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol/IFeeConfig.json +188 -0
  72. package/artifacts-tron/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol/IFeeHandler.dbg.json +4 -0
  73. package/artifacts-tron/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol/IFeeHandler.json +55 -0
  74. package/artifacts-tron/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol/IPauseByID.dbg.json +4 -0
  75. package/artifacts-tron/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol/IPauseByID.json +177 -0
  76. package/artifacts-tron/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol/IRateLimiter.dbg.json +4 -0
  77. package/artifacts-tron/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol/IRateLimiter.json +532 -0
  78. package/artifacts-tron/build-info/8846688aca1ca86abc2af4e130f3effa.json +1 -0
  79. package/artifacts-tron/contracts/interfaces/IOFT.sol/IOFT.dbg.json +4 -0
  80. package/artifacts-tron/contracts/interfaces/IOFT.sol/IOFT.json +467 -0
  81. package/artifacts-tron/contracts/interfaces/IOFTDecimalUtils.sol/IOFTDecimalUtils.dbg.json +4 -0
  82. package/artifacts-tron/contracts/interfaces/IOFTDecimalUtils.sol/IOFTDecimalUtils.json +66 -0
  83. package/artifacts-tron/contracts/interfaces/IOFTExtended.sol/IOFTExtended.dbg.json +4 -0
  84. package/artifacts-tron/contracts/interfaces/IOFTExtended.sol/IOFTExtended.json +1831 -0
  85. package/artifacts-tron/contracts/libs/OFTComposeMsgCodec.sol/OFTComposeMsgCodec.dbg.json +4 -0
  86. package/artifacts-tron/contracts/libs/OFTComposeMsgCodec.sol/OFTComposeMsgCodec.json +10 -0
  87. package/artifacts-tron/contracts/libs/OFTMsgCodec.sol/OFTMsgCodec.dbg.json +4 -0
  88. package/artifacts-tron/contracts/libs/OFTMsgCodec.sol/OFTMsgCodec.json +10 -0
  89. package/artifacts-tron/contracts/utils/OFTDecimalUtils.sol/OFTDecimalUtils.dbg.json +4 -0
  90. package/artifacts-tron/contracts/utils/OFTDecimalUtils.sol/OFTDecimalUtils.json +66 -0
  91. package/artifacts-zk/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol/ILayerZeroEndpointV2.dbg.json +4 -0
  92. package/artifacts-zk/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol/ILayerZeroEndpointV2.json +1900 -0
  93. package/artifacts-zk/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.dbg.json +4 -0
  94. package/artifacts-zk/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol/ILayerZeroReceiver.json +122 -0
  95. package/artifacts-zk/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol/IMessageLibManager.dbg.json +4 -0
  96. package/artifacts-zk/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol/IMessageLibManager.json +647 -0
  97. package/artifacts-zk/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol/IMessagingChannel.dbg.json +4 -0
  98. package/artifacts-zk/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol/IMessagingChannel.json +374 -0
  99. package/artifacts-zk/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol/IMessagingComposer.dbg.json +4 -0
  100. package/artifacts-zk/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol/IMessagingComposer.json +247 -0
  101. package/artifacts-zk/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol/IMessagingContext.dbg.json +4 -0
  102. package/artifacts-zk/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol/IMessagingContext.json +43 -0
  103. package/artifacts-zk/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppCore.sol/IOAppCore.dbg.json +4 -0
  104. package/artifacts-zk/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppCore.sol/IOAppCore.json +149 -0
  105. package/artifacts-zk/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol/IOAppExtended.dbg.json +4 -0
  106. package/artifacts-zk/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol/IOAppExtended.json +468 -0
  107. package/artifacts-zk/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppMsgInspection.sol/IOAppMsgInspection.dbg.json +4 -0
  108. package/artifacts-zk/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppMsgInspection.sol/IOAppMsgInspection.json +51 -0
  109. package/artifacts-zk/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppOptionsType3.sol/IOAppOptionsType3.dbg.json +4 -0
  110. package/artifacts-zk/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppOptionsType3.sol/IOAppOptionsType3.json +136 -0
  111. package/artifacts-zk/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppReceiver.sol/IOAppReceiver.dbg.json +4 -0
  112. package/artifacts-zk/@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppReceiver.sol/IOAppReceiver.json +168 -0
  113. package/artifacts-zk/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol/IFeeConfig.dbg.json +4 -0
  114. package/artifacts-zk/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol/IFeeConfig.json +189 -0
  115. package/artifacts-zk/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol/IFeeHandler.dbg.json +4 -0
  116. package/artifacts-zk/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol/IFeeHandler.json +56 -0
  117. package/artifacts-zk/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol/IPauseByID.dbg.json +4 -0
  118. package/artifacts-zk/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol/IPauseByID.json +178 -0
  119. package/artifacts-zk/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol/IRateLimiter.dbg.json +4 -0
  120. package/artifacts-zk/@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol/IRateLimiter.json +533 -0
  121. package/artifacts-zk/build-info/be85166c48418856c8b56dff21efc105.json +1 -0
  122. package/artifacts-zk/contracts/interfaces/IOFT.sol/IOFT.dbg.json +4 -0
  123. package/artifacts-zk/contracts/interfaces/IOFT.sol/IOFT.json +468 -0
  124. package/artifacts-zk/contracts/interfaces/IOFTDecimalUtils.sol/IOFTDecimalUtils.dbg.json +4 -0
  125. package/artifacts-zk/contracts/interfaces/IOFTDecimalUtils.sol/IOFTDecimalUtils.json +67 -0
  126. package/artifacts-zk/contracts/interfaces/IOFTExtended.sol/IOFTExtended.dbg.json +4 -0
  127. package/artifacts-zk/contracts/interfaces/IOFTExtended.sol/IOFTExtended.json +1832 -0
  128. package/artifacts-zk/contracts/libs/OFTComposeMsgCodec.sol/OFTComposeMsgCodec.dbg.json +4 -0
  129. package/artifacts-zk/contracts/libs/OFTComposeMsgCodec.sol/OFTComposeMsgCodec.json +11 -0
  130. package/artifacts-zk/contracts/libs/OFTMsgCodec.sol/OFTMsgCodec.dbg.json +4 -0
  131. package/artifacts-zk/contracts/libs/OFTMsgCodec.sol/OFTMsgCodec.json +11 -0
  132. package/artifacts-zk/contracts/utils/OFTDecimalUtils.sol/OFTDecimalUtils.dbg.json +4 -0
  133. package/artifacts-zk/contracts/utils/OFTDecimalUtils.sol/OFTDecimalUtils.json +67 -0
  134. package/contracts/interfaces/IOFT.sol +158 -0
  135. package/contracts/interfaces/IOFTDecimalUtils.sol +39 -0
  136. package/contracts/interfaces/IOFTExtended.sol +17 -0
  137. package/contracts/libs/OFTComposeMsgCodec.sol +90 -0
  138. package/contracts/libs/OFTMsgCodec.sol +82 -0
  139. package/contracts/utils/OFTDecimalUtils.sol +88 -0
  140. package/foundry.toml +21 -0
  141. package/package.json +44 -0
  142. package/solhint.config.js +3 -0
  143. package/test/OFTDecimalUtils.t.sol +354 -0
@@ -0,0 +1 @@
1
+ {"id":"eba77569fb49f02e67cb445bb3ee5d37","_format":"hh-sol-build-info-1","solcVersion":"0.8.23","solcLongVersion":"0.8.23+commit.f704f362","input":{"language":"Solidity","sources":{"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\nimport { IMessageLibManager } from \"./IMessageLibManager.sol\";\nimport { IMessagingComposer } from \"./IMessagingComposer.sol\";\nimport { IMessagingChannel } from \"./IMessagingChannel.sol\";\nimport { IMessagingContext } from \"./IMessagingContext.sol\";\n\nstruct MessagingParams {\n uint32 dstEid;\n bytes32 receiver;\n bytes message;\n bytes options;\n bool payInLzToken;\n}\n\nstruct MessagingReceipt {\n bytes32 guid;\n uint64 nonce;\n MessagingFee fee;\n}\n\nstruct MessagingFee {\n uint256 nativeFee;\n uint256 lzTokenFee;\n}\n\nstruct Origin {\n uint32 srcEid;\n bytes32 sender;\n uint64 nonce;\n}\n\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\n event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\n\n event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\n\n event PacketDelivered(Origin origin, address receiver);\n\n event LzReceiveAlert(\n address indexed receiver,\n address indexed executor,\n Origin origin,\n bytes32 guid,\n uint256 gas,\n uint256 value,\n bytes message,\n bytes extraData,\n bytes reason\n );\n\n event LzTokenSet(address token);\n\n event DelegateSet(address sender, address delegate);\n\n function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\n\n function send(\n MessagingParams calldata _params,\n address _refundAddress\n ) external payable returns (MessagingReceipt memory);\n\n function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\n\n function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\n\n function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\n\n function lzReceive(\n Origin calldata _origin,\n address _receiver,\n bytes32 _guid,\n bytes calldata _message,\n bytes calldata _extraData\n ) external payable;\n\n // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\n function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\n\n function setLzToken(address _lzToken) external;\n\n function lzToken() external view returns (address);\n\n function nativeToken() external view returns (address);\n\n function setDelegate(address _delegate) external;\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\nimport { Origin } from \"./ILayerZeroEndpointV2.sol\";\n\ninterface ILayerZeroReceiver {\n function allowInitializePath(Origin calldata _origin) external view returns (bool);\n\n function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\n\n function lzReceive(\n Origin calldata _origin,\n bytes32 _guid,\n bytes calldata _message,\n address _executor,\n bytes calldata _extraData\n ) external payable;\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\nstruct SetConfigParam {\n uint32 eid;\n uint32 configType;\n bytes config;\n}\n\ninterface IMessageLibManager {\n struct Timeout {\n address lib;\n uint256 expiry;\n }\n\n event LibraryRegistered(address newLib);\n event DefaultSendLibrarySet(uint32 eid, address newLib);\n event DefaultReceiveLibrarySet(uint32 eid, address newLib);\n event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\n event SendLibrarySet(address sender, uint32 eid, address newLib);\n event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\n event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\n\n function registerLibrary(address _lib) external;\n\n function isRegisteredLibrary(address _lib) external view returns (bool);\n\n function getRegisteredLibraries() external view returns (address[] memory);\n\n function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\n\n function defaultSendLibrary(uint32 _eid) external view returns (address);\n\n function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\n\n function defaultReceiveLibrary(uint32 _eid) external view returns (address);\n\n function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\n\n function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\n\n function isSupportedEid(uint32 _eid) external view returns (bool);\n\n function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\n\n /// ------------------- OApp interfaces -------------------\n function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\n\n function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\n\n function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\n\n function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\n\n function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\n\n function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\n\n function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\n\n function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\n\n function getConfig(\n address _oapp,\n address _lib,\n uint32 _eid,\n uint32 _configType\n ) external view returns (bytes memory config);\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\ninterface IMessagingChannel {\n event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\n event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\n event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\n\n function eid() external view returns (uint32);\n\n // this is an emergency function if a message cannot be verified for some reasons\n // required to provide _nextNonce to avoid race condition\n function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\n\n function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\n\n function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\n\n function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\n\n function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\n\n function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\n\n function inboundPayloadHash(\n address _receiver,\n uint32 _srcEid,\n bytes32 _sender,\n uint64 _nonce\n ) external view returns (bytes32);\n\n function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\ninterface IMessagingComposer {\n event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\n event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\n event LzComposeAlert(\n address indexed from,\n address indexed to,\n address indexed executor,\n bytes32 guid,\n uint16 index,\n uint256 gas,\n uint256 value,\n bytes message,\n bytes extraData,\n bytes reason\n );\n\n function composeQueue(\n address _from,\n address _to,\n bytes32 _guid,\n uint16 _index\n ) external view returns (bytes32 messageHash);\n\n function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\n\n function lzCompose(\n address _from,\n address _to,\n bytes32 _guid,\n uint16 _index,\n bytes calldata _message,\n bytes calldata _extraData\n ) external payable;\n}\n"},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity >=0.8.0;\n\ninterface IMessagingContext {\n function isSendingMessage() external view returns (bool);\n\n function getSendContext() external view returns (uint32 dstEid, address sender);\n}\n"},"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppCore.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\nimport { ILayerZeroEndpointV2 } from \"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\";\n\n/**\n * @title IOAppCore\n */\ninterface IOAppCore {\n // Custom error messages\n error OnlyPeer(uint32 eid, bytes32 sender);\n error NoPeer(uint32 eid);\n error InvalidEndpointCall();\n error InvalidDelegate();\n\n // Event emitted when a peer (OApp) is set for a corresponding endpoint\n event PeerSet(uint32 eid, bytes32 peer);\n\n /**\n * @notice Retrieves the OApp version information.\n * @return senderVersion The version of the OAppSender.sol contract.\n * @return receiverVersion The version of the OAppReceiver.sol contract.\n */\n function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\n\n /**\n * @notice Retrieves the LayerZero endpoint associated with the OApp.\n * @return iEndpoint The LayerZero endpoint as an interface.\n */\n function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\n\n /**\n * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\n * @param _eid The endpoint ID.\n * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\n */\n function peers(uint32 _eid) external view returns (bytes32 peer);\n\n /**\n * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\n * @param _eid The endpoint ID.\n * @param _peer The address of the peer to be associated with the corresponding endpoint.\n */\n function setPeer(uint32 _eid, bytes32 _peer) external;\n\n /**\n * @notice Sets the delegate address for the OApp Core.\n * @param _delegate The address of the delegate to be set.\n */\n function setDelegate(address _delegate) external;\n}\n"},"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\nimport { IOAppCore } from \"./IOAppCore.sol\";\nimport { IOAppMsgInspection } from \"./IOAppMsgInspection.sol\";\nimport { IOAppOptionsType3 } from \"./IOAppOptionsType3.sol\";\nimport { IOAppReceiver } from \"./IOAppReceiver.sol\";\n\n/**\n * @title IOAppExtended\n * @author LayerZero Labs (@TRileySchwarz, tinom.eth)\n * @custom:version 1.0.0\n * @notice Aggregate interface for extended OApp contracts.\n * @dev `IOAppReceiver` must precede `IOAppCore` for C3 linearization compatibility with `OApp`,\n * where `OAppReceiver`'s linearization places `IOAppReceiver` before `IOAppCore`.\n */\ninterface IOAppExtended is IOAppReceiver, IOAppCore, IOAppOptionsType3, IOAppMsgInspection {}\n"},"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppMsgInspection.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\n/**\n * @title IOAppMsgInspection\n * @author LayerZero Labs (@TRileySchwarz, tinom.eth)\n * @custom:version 1.0.0\n * @notice Interface for the `OAppMsgInspection` contract.\n */\ninterface IOAppMsgInspection {\n /**\n * @notice Emitted when a new message inspector is set.\n * @param msgInspector Address of the new message inspector\n */\n event MsgInspectorSet(address msgInspector);\n\n /**\n * @notice Retrieves the message inspector address.\n * @return inspector Address of the message inspector\n */\n function msgInspector() external view returns (address inspector);\n\n /**\n * @notice Sets the message inspector address.\n * @param _msgInspector Address of the new message inspector\n */\n function setMsgInspector(address _msgInspector) external;\n}\n"},"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppOptionsType3.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\n/**\n * @title IOAppOptionsType3\n * @author LayerZero Labs\n * @custom:version 1.0.0\n * @notice Interface for the `IOAppOptionsType3` contract.\n */\ninterface IOAppOptionsType3 {\n /**\n * @notice Struct representing enforced option parameters.\n * @param eid Endpoint ID\n * @param msgType OApp message type\n * @param options Additional options\n */\n struct EnforcedOptionParam {\n uint32 eid;\n uint16 msgType;\n bytes options;\n }\n\n /**\n * @notice Thrown when invalid options are provided.\n * @param options Invalid options\n */\n error InvalidOptions(bytes options);\n\n /**\n * @notice Emitted when enforced options are set.\n * @param _enforcedOptions Array of enforced options\n */\n event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\n\n /**\n * @notice Returns the enforced options for a given endpoint ID and message type.\n * @param _eid Endpoint ID\n * @param _msgType Message type, as defined by the OApp\n * @return options Enforced options\n */\n function enforcedOptions(uint32 _eid, uint16 _msgType) external view returns (bytes memory options);\n\n /**\n * @notice Combines options for a given endpoint and message type.\n * @param _eid Endpoint ID\n * @param _msgType Message type, as defined by the OApp\n * @param _extraOptions Additional options passed by the caller\n * @return options Combination of caller specified options AND enforced options\n */\n function combineOptions(\n uint32 _eid,\n uint16 _msgType,\n bytes calldata _extraOptions\n ) external view returns (bytes memory options);\n\n /**\n * @notice Sets enforced options for specific endpoint and message type combinations.\n * @dev Provides a way for the OApp to enforce things like paying for minimum destination `lzReceive` gas amounts.\n * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the\n * `msgType`. E.g., the amount of `lzReceive` gas necessary to deliver a `lzCompose` message adds overhead you\n * don't want to pay if you are only sending a standard message such as `lzReceive` WITHOUT `sendCompose`.\n * @param _enforcedOptions Array of enforced options\n */\n function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\n}\n"},"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppReceiver.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\nimport {\n ILayerZeroReceiver,\n Origin\n} from \"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\";\n\ninterface IOAppReceiver is ILayerZeroReceiver {\n /**\n * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\n * @param _origin The origin information containing the source endpoint and sender address.\n * - srcEid: The source chain endpoint ID.\n * - sender: The sender address on the src chain.\n * - nonce: The nonce of the message.\n * @param _message The lzReceive payload.\n * @param _sender The sender address.\n * @return isSender Is a valid sender.\n *\n * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\n * @dev The default sender IS the OAppReceiver implementer.\n */\n function isComposeMsgSender(\n Origin calldata _origin,\n bytes calldata _message,\n address _sender\n ) external view returns (bool isSender);\n}\n"},"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\n/**\n * @title IFeeConfig\n * @author LayerZero Labs (@TRileySchwarz, tinom.eth)\n * @custom:version 1.0.0\n * @notice Interface for the `FeeConfig` contract.\n */\ninterface IFeeConfig {\n /**\n * @notice Configuration for a fee.\n * @param feeBps Fee basis points (BPS)\n * @param enabled False to fallback to the default fee basis points (BPS)\n */\n struct FeeConfig {\n uint16 feeBps;\n bool enabled;\n }\n\n /**\n * @notice Emitted when the fee basis points (BPS) are set for a specific destination ID.\n * @param id Destination ID\n * @param feeBps Fee basis points (BPS)\n * @param enabled Whether the fee is enabled for the destination\n */\n event FeeBpsSet(uint256 id, uint16 feeBps, bool enabled);\n\n /**\n * @notice Emitted when the default fee basis points (BPS) are set.\n * @param feeBps Default fee basis points (BPS)\n */\n event DefaultFeeBpsSet(uint16 feeBps);\n\n /**\n * @notice Thrown when the fee basis points (BPS) are invalid.\n * @param feeBps Invalid fee basis points (BPS)\n */\n error InvalidBps(uint16 feeBps);\n\n /**\n * @notice Retrieves the fee for a destination ID and amount.\n * @param _id Destination ID\n * @param _amount Amount to calculate the fee for\n * @return fee Fee amount\n */\n function getFee(uint256 _id, uint256 _amount) external view returns (uint256 fee);\n\n /**\n * @notice Retrieves the pre-fee amount required to yield a given post-fee amount.\n * @param _id Destination ID\n * @param _amountAfterFee Desired amount after fees\n * @return amountBeforeFee Required amount before fees\n */\n function getAmountBeforeFee(uint256 _id, uint256 _amountAfterFee) external view returns (uint256 amountBeforeFee);\n\n /**\n * @notice Retrieves default fee basis points (BPS) used if no fee is configured for the destination ID.\n * @return fee Default fee basis points (BPS)\n */\n function defaultFeeBps() external view returns (uint16 fee);\n\n /**\n * @notice Retrieves the configured fee for a given ID.\n * @param _id Destination ID\n * @return config Configured fee for the destination ID\n */\n function feeBps(uint256 _id) external view returns (FeeConfig memory config);\n\n /**\n * @notice Set the default fee basis points (BPS) for all destinations.\n * @param _feeBps New default fee basis points (BPS)\n */\n function setDefaultFeeBps(uint16 _feeBps) external;\n\n /**\n * @notice Sets the fee basis points for a specific destination ID.\n * @param _id Destination ID\n * @param _feeBps Fee basis points to set\n * @param _enabled Whether the fee is enabled for the destination\n */\n function setFeeBps(uint256 _id, uint16 _feeBps, bool _enabled) external;\n}\n"},"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\n/**\n * @title IFeeHandler\n * @author LayerZero Labs (tinom.eth)\n * @custom:version 1.0.0\n * @notice Interface for the `FeeHandler` contract.\n */\ninterface IFeeHandler {\n /**\n * @notice Thrown when the fee deposit address is invalid.\n */\n error InvalidFeeDeposit();\n\n /**\n * @notice Emitted when the fee deposit is updated.\n * @param feeDeposit New fee deposit address\n */\n event FeeDepositSet(address indexed feeDeposit);\n\n /**\n * @notice Returns the address to which fees are forwarded.\n * @return deposit Address that will receive any accrued fees\n */\n function feeDeposit() external view returns (address deposit);\n\n /**\n * @notice Sets the fee deposit address.\n * @param _feeDeposit Address that will receive any accrued fees\n */\n function setFeeDeposit(address _feeDeposit) external;\n}\n"},"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\n/**\n * @title IPauseByID\n * @author LayerZero Labs (tinom.eth)\n * @custom:version 1.0.0\n * @notice Interface for the `PauseByID` contract.\n */\ninterface IPauseByID {\n /**\n * @notice Configuration for a pause setting.\n * @param paused Whether transfers are paused for this ID\n * @param enabled False to fallback to the default pause setting\n */\n struct PauseConfig {\n bool paused;\n bool enabled;\n }\n\n /**\n * @notice Parameter for setting pause state.\n * @param id Destination ID\n * @param paused Whether transfers are paused for this ID\n * @param enabled Whether the pause config is enabled for the destination\n */\n struct SetPausedParam {\n uint256 id;\n bool paused;\n bool enabled;\n }\n\n /**\n * @notice Emitted when the pause status is set for a specific destination ID.\n * @param id Destination ID\n * @param paused Whether transfers are paused for this ID\n * @param enabled Whether the pause config is enabled for the destination\n */\n event PauseSet(uint256 id, bool paused, bool enabled);\n\n /**\n * @notice Emitted when the default pause status is set.\n * @param paused Default pause status\n */\n event DefaultPauseSet(bool paused);\n\n /**\n * @notice Thrown when attempting to transfer while paused.\n * @param id Destination ID that is paused\n */\n error Paused(uint256 id);\n\n /**\n * @notice Thrown when setting pause state is idempotent (no change).\n * @param isPaused Whether transfers are paused\n */\n error PauseStateIdempotent(bool isPaused);\n\n /**\n * @notice Checks if transfers to a destination ID are paused.\n * @param _id Destination ID\n * @return paused Whether transfers are paused\n */\n function isPaused(uint256 _id) external view returns (bool paused);\n\n /**\n * @notice Retrieves default pause status used if no pause config is set for the destination ID.\n * @return paused Default pause status\n */\n function defaultPaused() external view returns (bool paused);\n\n /**\n * @notice Retrieves the configured pause setting for a given ID.\n * @param _id Destination ID\n * @return config Configured pause setting for the destination ID\n */\n function pauseConfig(uint256 _id) external view returns (PauseConfig memory config);\n\n /**\n * @notice Set the default pause status for all destinations.\n * @param _paused New default pause status\n */\n function setDefaultPaused(bool _paused) external;\n\n /**\n * @notice Sets the pause status for an array of destination IDs.\n * @param _params Array of pause configurations\n */\n function setPaused(SetPausedParam[] calldata _params) external;\n}\n"},"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\n/**\n * @title IRateLimiter\n * @author LayerZero Labs (tinom.eth)\n * @custom:version 1.0.0\n * @notice Interface for the `RateLimiter` contract.\n */\ninterface IRateLimiter {\n /**\n * @notice Global configuration for the rate limiter.\n * @param useGlobalState Whether to use global state for the rate limiter, instead of per-ID rules\n * @param isGloballyDisabled Whether the rate limiter is globally disabled\n */\n struct RateLimitGlobalConfig {\n bool useGlobalState;\n bool isGloballyDisabled;\n }\n\n /**\n * @notice Rate limit state for a given ID.\n * @param outboundUsage Current usage of the outbound rate limit\n * @param inboundUsage Current usage of the inbound rate limit\n * @param lastUpdated Last updated timestamp\n * @param configBitmap Bitmap of the rate limit configuration\n * @param outboundLimit Limit of the outbound rate limit\n * @param outboundWindow Window of the outbound rate limit\n * @param inboundLimit Limit of the inbound rate limit\n * @param inboundWindow Window of the inbound rate limit\n */\n struct RateLimit {\n uint96 outboundUsage;\n uint96 inboundUsage;\n uint40 lastUpdated;\n uint24 configBitmap;\n uint96 outboundLimit;\n uint32 outboundWindow;\n uint96 inboundLimit;\n uint32 inboundWindow;\n }\n\n /**\n * @notice Rate limit configuration.\n * @param overrideDefaultConfig Whether to override the default configuration\n * @param outboundEnabled Whether the outbound rate limit is enabled\n * @param inboundEnabled Whether the inbound rate limit is enabled\n * @param netAccountingEnabled Whether net accounting is enabled\n * @param addressExemptionEnabled Whether address exemption is enabled\n * @param outboundLimit Limit of the outbound rate limit\n * @param inboundLimit Limit of the inbound rate limit\n * @param outboundWindow Window of the outbound rate limit\n * @param inboundWindow Window of the inbound rate limit\n */\n struct RateLimitConfig {\n bool overrideDefaultConfig;\n bool outboundEnabled;\n bool inboundEnabled;\n bool netAccountingEnabled;\n bool addressExemptionEnabled;\n uint96 outboundLimit;\n uint96 inboundLimit;\n uint32 outboundWindow;\n uint32 inboundWindow;\n }\n\n /**\n * @notice Parameters for setting a rate limit configuration.\n * @param id ID of the rate limit configuration\n * @param config Configuration to set\n */\n struct SetRateLimitConfigParam {\n uint256 id;\n RateLimitConfig config;\n }\n\n /**\n * @notice Rate limit state.\n * @param outboundUsage Current usage of the outbound rate limit\n * @param inboundUsage Current usage of the inbound rate limit\n * @param lastUpdated Last updated timestamp\n */\n struct RateLimitState {\n uint96 outboundUsage;\n uint96 inboundUsage;\n uint40 lastUpdated;\n }\n\n /**\n * @notice Parameters for setting a rate limit state.\n * @param id ID of the rate limit state\n * @param state State to set\n */\n struct SetRateLimitStateParam {\n uint256 id;\n RateLimitState state;\n }\n\n /**\n * @notice Parameter for setting a rate limit address exemption.\n * @param user Address of the user\n * @param isExempt Whether the address should be exempt from the rate limit\n */\n struct SetRateLimitAddressExemptionParam {\n address user;\n bool isExempt;\n }\n\n /**\n * @notice Emitted when the global rate limiter configuration is updated.\n * @param globalConfig Updated global configuration\n */\n event RateLimitGlobalConfigUpdated(RateLimitGlobalConfig globalConfig);\n\n /**\n * @notice Emitted when a rate limit configuration is updated.\n * @param id ID of the rate limit configuration\n * @param config Parameters for the updated rate limit configuration\n */\n event RateLimitConfigUpdated(uint256 indexed id, RateLimitConfig config);\n\n /**\n * @notice Emitted when a rate limit state is updated.\n * @param id ID of the rate limit state\n * @param state Parameters for the updated rate limit state\n */\n event RateLimitStateUpdated(uint256 indexed id, RateLimitState state);\n\n /**\n * @notice Emitted when a rate limit address exemption is updated.\n * @param user Address of the user\n * @param isExempt Whether the address is exempt\n */\n event RateLimitAddressExemptionUpdated(address indexed user, bool isExempt);\n\n /**\n * @notice Thrown when the scaled decimals are invalid.\n * @param scaledDecimals Scaled decimals\n */\n error InvalidScaledDecimals(uint8 scaledDecimals);\n\n /**\n * @notice Thrown when a rate limit state is set to a timestamp in the future.\n * @param lastUpdated Last updated timestamp\n * @param currentTimestamp Current block timestamp\n */\n error LastUpdatedInFuture(uint40 lastUpdated, uint40 currentTimestamp);\n\n /**\n * @notice Thrown when a rate limit is exceeded.\n * @param availableAmount Remaining capacity of the rate limit\n * @param requestedAmount Amount requested\n */\n error RateLimitExceeded(uint256 availableAmount, uint256 requestedAmount);\n\n /**\n * @notice Thrown when a user is already in the desired state (exempt or not exempt).\n * @param user User address\n * @param isExempt Whether the address is exempt\n */\n error ExemptionStateIdempotent(address user, bool isExempt);\n\n /**\n * @notice Returns the global configuration for the rate limiter.\n * @return globalConfig Global configuration\n */\n function getRateLimitGlobalConfig() external view returns (RateLimitGlobalConfig memory globalConfig);\n\n /**\n * @notice Returns the rate limit state and configuration for a given ID.\n * @dev May return unscaled state if `SCALE_DECIMALS` is set, use `getRateLimitUsages` for scaled values.\n * @dev Reads the rate limit state from storage without checking defaults.\n * @param _id ID of the rate limit\n * @return rateLimit Rate limit state and configuration\n */\n function rateLimits(uint256 _id) external view returns (RateLimit memory rateLimit);\n\n /**\n * @notice Returns the address exemption status for a given user.\n * @param _user Address of the user\n * @return isExempt Whether the address is exempt\n */\n function isRateLimitAddressExempt(address _user) external view returns (bool isExempt);\n\n /**\n * @notice Calculates decayed usages and capacities for a rate limit.\n * @dev Potentially scaled up by `SCALE_DECIMALS`.\n * @dev Checks config and falls back to default if necessary.\n * @dev If a rate limit is disabled in a given direction, the available amount is `type(uint256).max`.\n * @param _id ID of the rate limit\n * @return outboundUsage Scaled current usage of the outbound rate limit\n * @return outboundAvailableAmount Scaled capacity of the outbound rate limit\n * @return inboundUsage Scaled current usage of the inbound rate limit\n * @return inboundAvailableAmount Scaled capacity of the inbound rate limit\n */\n function getRateLimitUsages(\n uint256 _id\n )\n external\n view\n returns (\n uint256 outboundUsage,\n uint256 outboundAvailableAmount,\n uint256 inboundUsage,\n uint256 inboundAvailableAmount\n );\n\n /**\n * @notice Sets the global configuration for the rate limiter.\n * @param _globalConfig Global configuration to set\n */\n function setRateLimitGlobalConfig(RateLimitGlobalConfig memory _globalConfig) external;\n\n /**\n * @notice Sets ID-specific configurations for the rate limiter.\n * @dev Configurations must be significantly larger than windows to avoid precision loss when calculating decays.\n * @dev It does not checkpoint rate limits for the configured IDs.\n * @param _params Array of configurations to set\n */\n function setRateLimitConfigs(SetRateLimitConfigParam[] calldata _params) external;\n\n /**\n * @notice Sets ID-specific states for the rate limiter.\n * @dev States cannot be set to a timestamp in the future.\n * @param _params Array of states to set\n */\n function setRateLimitStates(SetRateLimitStateParam[] calldata _params) external;\n\n /**\n * @notice Sets address exemptions for the rate limiter.\n * @dev Only in effect if `addressExemptionEnabled` is true for an ID.\n * @param _exemptions Array of exemptions to set\n */\n function setRateLimitAddressExemptions(SetRateLimitAddressExemptionParam[] calldata _exemptions) external;\n\n /**\n * @notice Checkpoints rate limits for multiple IDs, updating decayed usages to storage.\n * @dev Recommended to be called atomically before setting new limits or windows through `setRateLimitConfigs`, to\n * avoid retroactively applying decays. Alternatively, `setRateLimitStates` can be called to explicitly set\n * the desired usages.\n * @param _ids Array of rate limit IDs to checkpoint\n */\n function checkpointRateLimits(uint256[] calldata _ids) external;\n}\n"},"contracts/interfaces/IOFT.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\nimport {\n MessagingReceipt,\n MessagingFee\n} from \"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\";\n\n/**\n * @dev Struct representing token parameters for the OFT send() operation.\n */\nstruct SendParam {\n uint32 dstEid; // Destination endpoint ID.\n bytes32 to; // Recipient address.\n uint256 amountLD; // Amount to send in local decimals.\n uint256 minAmountLD; // Minimum amount to send in local decimals.\n bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.\n bytes composeMsg; // The composed message for the send() operation.\n bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.\n}\n\n/**\n * @dev Struct representing OFT limit information.\n * @dev These amounts can change dynamically and are up the specific oft implementation.\n */\nstruct OFTLimit {\n uint256 minAmountLD; // Minimum amount in local decimals that can be sent to the recipient.\n uint256 maxAmountLD; // Maximum amount in local decimals that can be sent to the recipient.\n}\n\n/**\n * @dev Struct representing OFT receipt information.\n */\nstruct OFTReceipt {\n uint256 amountSentLD; // Amount of tokens ACTUALLY debited from the sender in local decimals.\n // @dev In non-default implementations, the amountReceivedLD COULD differ from this value.\n uint256 amountReceivedLD; // Amount of tokens to be received on the remote side.\n}\n\n/**\n * @dev Struct representing OFT fee details.\n * @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI.\n */\nstruct OFTFeeDetail {\n int256 feeAmountLD; // Amount of the fee in local decimals.\n string description; // Description of the fee.\n}\n\n/**\n * @title IOFT\n * @dev Interface for the OftChain (OFT) token.\n * @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\n * @dev This specific interface ID is '0x02e49c2c'.\n */\ninterface IOFT {\n // Custom error messages\n error InvalidLocalDecimals();\n error SlippageExceeded(uint256 amountLD, uint256 minAmountLD);\n error AmountSDOverflowed(uint256 amountSD);\n\n // Events\n event OFTSent(\n bytes32 indexed guid, // GUID of the OFT message.\n uint32 dstEid, // Destination Endpoint ID.\n address indexed fromAddress, // Address of the sender on the src chain.\n uint256 amountSentLD, // Amount of tokens sent in local decimals.\n uint256 amountReceivedLD // Amount of tokens received in local decimals.\n );\n event OFTReceived(\n bytes32 indexed guid, // GUID of the OFT message.\n uint32 srcEid, // Source Endpoint ID.\n address indexed toAddress, // Address of the recipient on the dst chain.\n uint256 amountReceivedLD // Amount of tokens received in local decimals.\n );\n\n /**\n * @notice Retrieves interfaceID and the version of the OFT.\n * @return interfaceId The interface ID.\n * @return version The version.\n *\n * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\n * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\n * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\n * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\n */\n function oftVersion() external view returns (bytes4 interfaceId, uint64 version);\n\n /**\n * @notice Retrieves the address of the token associated with the OFT.\n * @return tokenAddress The address of the ERC20 token implementation.\n */\n function token() external view returns (address tokenAddress);\n\n /**\n * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\n * @return requiresApproval Needs approval of the underlying token implementation.\n *\n * @dev Allows things like wallet implementers to determine integration requirements,\n * without understanding the underlying token implementation.\n */\n function approvalRequired() external view returns (bool requiresApproval);\n\n /**\n * @notice Retrieves the shared decimals of the OFT.\n * @return sd The shared decimals of the OFT.\n */\n function sharedDecimals() external view returns (uint8 sd);\n\n /**\n * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\n * @param _sendParam The parameters for the send operation.\n * @return oftLimit The OFT limit information.\n * @return oftFeeDetails The details of OFT fees.\n * @return oftReceipt The OFT receipt information.\n */\n function quoteOFT(\n SendParam calldata _sendParam\n )\n external\n view\n returns (OFTLimit memory oftLimit, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory oftReceipt);\n\n /**\n * @notice Provides a quote for the send() operation.\n * @param _sendParam The parameters for the send() operation.\n * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\n * @return msgFee The calculated LayerZero messaging fee from the send() operation.\n *\n * @dev MessagingFee: LayerZero msg fee\n * - nativeFee: The native fee.\n * - lzTokenFee: The lzToken fee.\n */\n function quoteSend(\n SendParam calldata _sendParam,\n bool _payInLzToken\n ) external view returns (MessagingFee memory msgFee);\n\n /**\n * @notice Executes the send() operation.\n * @param _sendParam The parameters for the send operation.\n * @param _fee The fee information supplied by the caller.\n * - nativeFee: The native fee.\n * - lzTokenFee: The lzToken fee.\n * @param _refundAddress The address to receive any excess funds from fees etc. on the src.\n * @return msgReceipt The LayerZero messaging receipt from the send() operation.\n * @return oftReceipt The OFT receipt information.\n *\n * @dev MessagingReceipt: LayerZero msg receipt\n * - guid: The unique identifier for the sent message.\n * - nonce: The nonce of the sent message.\n * - fee: The LayerZero fee incurred for the message.\n */\n function send(\n SendParam calldata _sendParam,\n MessagingFee calldata _fee,\n address _refundAddress\n ) external payable returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt);\n}\n"},"contracts/interfaces/IOFTDecimalUtils.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\n/**\n * @title IOFTDecimalUtils\n * @author LayerZero Labs (tinom.eth)\n * @custom:version 1.0.0\n * @notice Interface for OFT decimal conversion utilities.\n */\ninterface IOFTDecimalUtils {\n /**\n * @notice Thrown when shared decimals exceed local decimals.\n */\n error InvalidLocalDecimals();\n\n /**\n * @notice Thrown when the amount in shared decimals overflows `uint64`.\n * @param amountSD Amount in shared decimals\n */\n error AmountSDOverflowed(uint256 amountSD);\n\n /**\n * @notice Returns the local decimals for tokens on this chain.\n * @return ld Local decimals\n */\n function localDecimals() external view returns (uint8 ld);\n\n /**\n * @notice Returns the shared decimals for cross-chain messaging.\n * @return sd Shared decimals\n */\n function sharedDecimals() external view returns (uint8 sd);\n\n /**\n * @notice Returns the conversion rate to convert from local to shared decimals.\n * @return rate Conversion rate\n */\n function decimalConversionRate() external view returns (uint256 rate);\n}\n"},"contracts/interfaces/IOFTExtended.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\nimport { IOAppExtended } from \"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol\";\nimport { IFeeConfig } from \"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol\";\nimport { IFeeHandler } from \"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol\";\nimport { IPauseByID } from \"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol\";\nimport { IRateLimiter } from \"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol\";\nimport { IOFT } from \"./IOFT.sol\";\n\n/**\n * @title IOFTExtended\n * @author LayerZero Labs (@TRileySchwarz, tinom.eth)\n * @custom:version 1.0.0\n * @notice Interface for extended OFT contracts with fee, pause, and rate limiter functionality.\n */\ninterface IOFTExtended is IOFT, IOAppExtended, IFeeConfig, IFeeHandler, IPauseByID, IRateLimiter {}\n"},"contracts/libs/OFTComposeMsgCodec.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\nlibrary OFTComposeMsgCodec {\n // Offset constants for decoding composed messages\n uint8 private constant NONCE_OFFSET = 8;\n uint8 private constant SRC_EID_OFFSET = 12;\n uint8 private constant AMOUNT_LD_OFFSET = 44;\n uint8 private constant COMPOSE_FROM_OFFSET = 76;\n\n /**\n * @dev Encodes a OFT composed message.\n * @param _nonce The nonce value.\n * @param _srcEid The source endpoint ID.\n * @param _amountLD The amount in local decimals.\n * @param _composeMsg The composed message.\n * @return _msg The encoded Composed message.\n */\n function encode(\n uint64 _nonce,\n uint32 _srcEid,\n uint256 _amountLD,\n bytes memory _composeMsg // 0x[composeFrom][composeMsg]\n ) internal pure returns (bytes memory _msg) {\n _msg = abi.encodePacked(_nonce, _srcEid, _amountLD, _composeMsg);\n }\n\n /**\n * @dev Retrieves the nonce for the composed message.\n * @param _msg The message.\n * @return The nonce value.\n */\n function nonce(bytes calldata _msg) internal pure returns (uint64) {\n return uint64(bytes8(_msg[:NONCE_OFFSET]));\n }\n\n /**\n * @dev Retrieves the source endpoint ID for the composed message.\n * @param _msg The message.\n * @return The source endpoint ID.\n */\n function srcEid(bytes calldata _msg) internal pure returns (uint32) {\n return uint32(bytes4(_msg[NONCE_OFFSET:SRC_EID_OFFSET]));\n }\n\n /**\n * @dev Retrieves the amount in local decimals from the composed message.\n * @param _msg The message.\n * @return The amount in local decimals.\n */\n function amountLD(bytes calldata _msg) internal pure returns (uint256) {\n return uint256(bytes32(_msg[SRC_EID_OFFSET:AMOUNT_LD_OFFSET]));\n }\n\n /**\n * @dev Retrieves the composeFrom value from the composed message.\n * @param _msg The message.\n * @return The composeFrom value.\n */\n function composeFrom(bytes calldata _msg) internal pure returns (bytes32) {\n return bytes32(_msg[AMOUNT_LD_OFFSET:COMPOSE_FROM_OFFSET]);\n }\n\n /**\n * @dev Retrieves the composed message.\n * @param _msg The message.\n * @return The composed message.\n */\n function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\n return _msg[COMPOSE_FROM_OFFSET:];\n }\n\n /**\n * @dev Converts an address to bytes32.\n * @param _addr The address to convert.\n * @return The bytes32 representation of the address.\n */\n function addressToBytes32(address _addr) internal pure returns (bytes32) {\n return bytes32(uint256(uint160(_addr)));\n }\n\n /**\n * @dev Converts bytes32 to an address.\n * @param _b The bytes32 value to convert.\n * @return The address representation of bytes32.\n */\n function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\n return address(uint160(uint256(_b)));\n }\n}\n"},"contracts/libs/OFTMsgCodec.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\nlibrary OFTMsgCodec {\n // Offset constants for encoding and decoding OFT messages\n uint8 private constant SEND_TO_OFFSET = 32;\n uint8 private constant SEND_AMOUNT_SD_OFFSET = 40;\n\n /**\n * @dev Encodes an OFT LayerZero message.\n * @param _sendTo The recipient address.\n * @param _amountShared The amount in shared decimals.\n * @param _composeMsg The composed message.\n * @return _msg The encoded message.\n * @return hasCompose A boolean indicating whether the message has a composed payload.\n */\n function encode(\n bytes32 _sendTo,\n uint64 _amountShared,\n bytes memory _composeMsg\n ) internal view returns (bytes memory _msg, bool hasCompose) {\n hasCompose = _composeMsg.length > 0;\n // @dev Remote chains will want to know the composed function caller ie. msg.sender on the src.\n _msg = hasCompose\n ? abi.encodePacked(_sendTo, _amountShared, addressToBytes32(msg.sender), _composeMsg)\n : abi.encodePacked(_sendTo, _amountShared);\n }\n\n /**\n * @dev Checks if the OFT message is composed.\n * @param _msg The OFT message.\n * @return A boolean indicating whether the message is composed.\n */\n function isComposed(bytes calldata _msg) internal pure returns (bool) {\n return _msg.length > SEND_AMOUNT_SD_OFFSET;\n }\n\n /**\n * @dev Retrieves the recipient address from the OFT message.\n * @param _msg The OFT message.\n * @return The recipient address.\n */\n function sendTo(bytes calldata _msg) internal pure returns (bytes32) {\n return bytes32(_msg[:SEND_TO_OFFSET]);\n }\n\n /**\n * @dev Retrieves the amount in shared decimals from the OFT message.\n * @param _msg The OFT message.\n * @return The amount in shared decimals.\n */\n function amountSD(bytes calldata _msg) internal pure returns (uint64) {\n return uint64(bytes8(_msg[SEND_TO_OFFSET:SEND_AMOUNT_SD_OFFSET]));\n }\n\n /**\n * @dev Retrieves the composed message from the OFT message.\n * @param _msg The OFT message.\n * @return The composed message.\n */\n function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\n return _msg[SEND_AMOUNT_SD_OFFSET:];\n }\n\n /**\n * @dev Converts an address to bytes32.\n * @param _addr The address to convert.\n * @return The bytes32 representation of the address.\n */\n function addressToBytes32(address _addr) internal pure returns (bytes32) {\n return bytes32(uint256(uint160(_addr)));\n }\n\n /**\n * @dev Converts bytes32 to an address.\n * @param _b The bytes32 value to convert.\n * @return The address representation of bytes32.\n */\n function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\n return address(uint160(uint256(_b)));\n }\n}\n"},"contracts/utils/OFTDecimalUtils.sol":{"content":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.22;\n\nimport { IOFTDecimalUtils } from \"../interfaces/IOFTDecimalUtils.sol\";\n\n/**\n * @title OFTDecimalUtils\n * @author LayerZero Labs (@TRileySchwarz, tinom.eth)\n * @custom:version 1.0.0\n * @notice Abstract contract that implements decimal conversion utilities between local and shared decimals.\n * @dev It can be inherited in either upgradeable or non-upgradeable contracts.\n */\nabstract contract OFTDecimalUtils is IOFTDecimalUtils {\n /// @dev Immutable variable for local decimals.\n uint8 private immutable LOCAL_DECIMALS;\n\n /// @dev Immutable variable for shared decimals.\n uint8 private immutable SHARED_DECIMALS;\n\n /// @dev Immutable variable for the conversion rate between local and shared decimals.\n uint256 private immutable DECIMAL_CONVERSION_RATE;\n\n /**\n * @dev Sets immutable variables.\n * @dev Reverts if the shared decimals are greater than the local decimals.\n * @param _localDecimals Local decimals for tokens on this chain\n * @param _sharedDecimals Shared decimals for cross-chain messaging\n */\n constructor(uint8 _localDecimals, uint8 _sharedDecimals) {\n if (_sharedDecimals > _localDecimals) revert InvalidLocalDecimals();\n\n LOCAL_DECIMALS = _localDecimals;\n SHARED_DECIMALS = _sharedDecimals;\n DECIMAL_CONVERSION_RATE = 10 ** (_localDecimals - _sharedDecimals);\n }\n\n /**\n * @inheritdoc IOFTDecimalUtils\n */\n function localDecimals() public view virtual returns (uint8 ld) {\n return LOCAL_DECIMALS;\n }\n\n /**\n * @inheritdoc IOFTDecimalUtils\n */\n function sharedDecimals() public view virtual returns (uint8 sd) {\n return SHARED_DECIMALS;\n }\n\n /**\n * @inheritdoc IOFTDecimalUtils\n */\n function decimalConversionRate() public view virtual returns (uint256 rate) {\n return DECIMAL_CONVERSION_RATE;\n }\n\n /**\n * @notice Removes dust from the given local decimal amount.\n * @dev Prevents the loss of dust when moving amounts between chains with different decimals.\n * @param _amountLD Amount in local decimals\n * @return amountLD Amount after removing dust\n */\n function _removeDust(uint256 _amountLD) internal view virtual returns (uint256 amountLD) {\n return (_amountLD / DECIMAL_CONVERSION_RATE) * DECIMAL_CONVERSION_RATE;\n }\n\n /**\n * @notice Converts an amount from shared decimals into local decimals.\n * @param _amountSD Amount in shared decimals\n * @return amountLD Amount in local decimals\n */\n function _toLD(uint64 _amountSD) internal view virtual returns (uint256 amountLD) {\n return _amountSD * DECIMAL_CONVERSION_RATE;\n }\n\n /**\n * @notice Converts an amount from local decimals into shared decimals.\n * @dev Reverts if the amount in shared decimals overflows `uint64`.\n * @param _amountLD Amount in local decimals\n * @return amountSD Amount in shared decimals\n */\n function _toSD(uint256 _amountLD) internal view virtual returns (uint64 amountSD) {\n uint256 _amountSD = _amountLD / DECIMAL_CONVERSION_RATE;\n if (_amountSD > type(uint64).max) revert AmountSDOverflowed(_amountSD);\n return uint64(_amountSD);\n }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":20000},"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","devdoc","userdoc","storageLayout","evm.gasEstimates"],"":["ast"]}},"metadata":{"useLiteralContent":true}}},"output":{"sources":{"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","exportedSymbols":{"ILayerZeroEndpointV2":[202],"IMessageLibManager":[483],"IMessagingChannel":[619],"IMessagingComposer":[705],"IMessagingContext":[720],"MessagingFee":[33],"MessagingParams":[20],"MessagingReceipt":[28],"Origin":[40]},"id":203,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:0"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol","file":"./IMessageLibManager.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":203,"sourceUnit":484,"src":"59:62:0","symbolAliases":[{"foreign":{"id":2,"name":"IMessageLibManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":483,"src":"68:18:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol","file":"./IMessagingComposer.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":203,"sourceUnit":706,"src":"122:62:0","symbolAliases":[{"foreign":{"id":4,"name":"IMessagingComposer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":705,"src":"131:18:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol","file":"./IMessagingChannel.sol","id":7,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":203,"sourceUnit":620,"src":"185:60:0","symbolAliases":[{"foreign":{"id":6,"name":"IMessagingChannel","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":619,"src":"194:17:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol","file":"./IMessagingContext.sol","id":9,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":203,"sourceUnit":721,"src":"246:60:0","symbolAliases":[{"foreign":{"id":8,"name":"IMessagingContext","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"255:17:0","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"MessagingParams","id":20,"members":[{"constant":false,"id":11,"mutability":"mutable","name":"dstEid","nameLocation":"344:6:0","nodeType":"VariableDeclaration","scope":20,"src":"337:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":10,"name":"uint32","nodeType":"ElementaryTypeName","src":"337:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":13,"mutability":"mutable","name":"receiver","nameLocation":"364:8:0","nodeType":"VariableDeclaration","scope":20,"src":"356:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":12,"name":"bytes32","nodeType":"ElementaryTypeName","src":"356:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":15,"mutability":"mutable","name":"message","nameLocation":"384:7:0","nodeType":"VariableDeclaration","scope":20,"src":"378:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":14,"name":"bytes","nodeType":"ElementaryTypeName","src":"378:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":17,"mutability":"mutable","name":"options","nameLocation":"403:7:0","nodeType":"VariableDeclaration","scope":20,"src":"397:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":16,"name":"bytes","nodeType":"ElementaryTypeName","src":"397:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":19,"mutability":"mutable","name":"payInLzToken","nameLocation":"421:12:0","nodeType":"VariableDeclaration","scope":20,"src":"416:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":18,"name":"bool","nodeType":"ElementaryTypeName","src":"416:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"MessagingParams","nameLocation":"315:15:0","nodeType":"StructDefinition","scope":203,"src":"308:128:0","visibility":"public"},{"canonicalName":"MessagingReceipt","id":28,"members":[{"constant":false,"id":22,"mutability":"mutable","name":"guid","nameLocation":"476:4:0","nodeType":"VariableDeclaration","scope":28,"src":"468:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":21,"name":"bytes32","nodeType":"ElementaryTypeName","src":"468:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":24,"mutability":"mutable","name":"nonce","nameLocation":"493:5:0","nodeType":"VariableDeclaration","scope":28,"src":"486:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":23,"name":"uint64","nodeType":"ElementaryTypeName","src":"486:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":27,"mutability":"mutable","name":"fee","nameLocation":"517:3:0","nodeType":"VariableDeclaration","scope":28,"src":"504:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"},"typeName":{"id":26,"nodeType":"UserDefinedTypeName","pathNode":{"id":25,"name":"MessagingFee","nameLocations":["504:12:0"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"504:12:0"},"referencedDeclaration":33,"src":"504:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"}],"name":"MessagingReceipt","nameLocation":"445:16:0","nodeType":"StructDefinition","scope":203,"src":"438:85:0","visibility":"public"},{"canonicalName":"MessagingFee","id":33,"members":[{"constant":false,"id":30,"mutability":"mutable","name":"nativeFee","nameLocation":"559:9:0","nodeType":"VariableDeclaration","scope":33,"src":"551:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":29,"name":"uint256","nodeType":"ElementaryTypeName","src":"551:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":32,"mutability":"mutable","name":"lzTokenFee","nameLocation":"582:10:0","nodeType":"VariableDeclaration","scope":33,"src":"574:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31,"name":"uint256","nodeType":"ElementaryTypeName","src":"574:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"MessagingFee","nameLocation":"532:12:0","nodeType":"StructDefinition","scope":203,"src":"525:70:0","visibility":"public"},{"canonicalName":"Origin","id":40,"members":[{"constant":false,"id":35,"mutability":"mutable","name":"srcEid","nameLocation":"624:6:0","nodeType":"VariableDeclaration","scope":40,"src":"617:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":34,"name":"uint32","nodeType":"ElementaryTypeName","src":"617:6:0","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":37,"mutability":"mutable","name":"sender","nameLocation":"644:6:0","nodeType":"VariableDeclaration","scope":40,"src":"636:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":36,"name":"bytes32","nodeType":"ElementaryTypeName","src":"636:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":39,"mutability":"mutable","name":"nonce","nameLocation":"663:5:0","nodeType":"VariableDeclaration","scope":40,"src":"656:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":38,"name":"uint64","nodeType":"ElementaryTypeName","src":"656:6:0","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"name":"Origin","nameLocation":"604:6:0","nodeType":"StructDefinition","scope":203,"src":"597:74:0","visibility":"public"},{"abstract":false,"baseContracts":[{"baseName":{"id":41,"name":"IMessageLibManager","nameLocations":["707:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":483,"src":"707:18:0"},"id":42,"nodeType":"InheritanceSpecifier","src":"707:18:0"},{"baseName":{"id":43,"name":"IMessagingComposer","nameLocations":["727:18:0"],"nodeType":"IdentifierPath","referencedDeclaration":705,"src":"727:18:0"},"id":44,"nodeType":"InheritanceSpecifier","src":"727:18:0"},{"baseName":{"id":45,"name":"IMessagingChannel","nameLocations":["747:17:0"],"nodeType":"IdentifierPath","referencedDeclaration":619,"src":"747:17:0"},"id":46,"nodeType":"InheritanceSpecifier","src":"747:17:0"},{"baseName":{"id":47,"name":"IMessagingContext","nameLocations":["766:17:0"],"nodeType":"IdentifierPath","referencedDeclaration":720,"src":"766:17:0"},"id":48,"nodeType":"InheritanceSpecifier","src":"766:17:0"}],"canonicalName":"ILayerZeroEndpointV2","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":202,"linearizedBaseContracts":[202,720,619,705,483],"name":"ILayerZeroEndpointV2","nameLocation":"683:20:0","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"1ab700d4ced0c005b164c0f789fd09fcbb0156d4c2041b8a3bfbcd961cd1567f","id":56,"name":"PacketSent","nameLocation":"796:10:0","nodeType":"EventDefinition","parameters":{"id":55,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50,"indexed":false,"mutability":"mutable","name":"encodedPayload","nameLocation":"813:14:0","nodeType":"VariableDeclaration","scope":56,"src":"807:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":49,"name":"bytes","nodeType":"ElementaryTypeName","src":"807:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":52,"indexed":false,"mutability":"mutable","name":"options","nameLocation":"835:7:0","nodeType":"VariableDeclaration","scope":56,"src":"829:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":51,"name":"bytes","nodeType":"ElementaryTypeName","src":"829:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":54,"indexed":false,"mutability":"mutable","name":"sendLibrary","nameLocation":"852:11:0","nodeType":"VariableDeclaration","scope":56,"src":"844:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":53,"name":"address","nodeType":"ElementaryTypeName","src":"844:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"806:58:0"},"src":"790:75:0"},{"anonymous":false,"eventSelector":"0d87345f3d1c929caba93e1c3821b54ff3512e12b66aa3cfe54b6bcbc17e59b4","id":65,"name":"PacketVerified","nameLocation":"877:14:0","nodeType":"EventDefinition","parameters":{"id":64,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59,"indexed":false,"mutability":"mutable","name":"origin","nameLocation":"899:6:0","nodeType":"VariableDeclaration","scope":65,"src":"892:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_memory_ptr","typeString":"struct Origin"},"typeName":{"id":58,"nodeType":"UserDefinedTypeName","pathNode":{"id":57,"name":"Origin","nameLocations":["892:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"892:6:0"},"referencedDeclaration":40,"src":"892:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":61,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"915:8:0","nodeType":"VariableDeclaration","scope":65,"src":"907:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60,"name":"address","nodeType":"ElementaryTypeName","src":"907:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":63,"indexed":false,"mutability":"mutable","name":"payloadHash","nameLocation":"933:11:0","nodeType":"VariableDeclaration","scope":65,"src":"925:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":62,"name":"bytes32","nodeType":"ElementaryTypeName","src":"925:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"891:54:0"},"src":"871:75:0"},{"anonymous":false,"eventSelector":"3cd5e48f9730b129dc7550f0fcea9c767b7be37837cd10e55eb35f734f4bca04","id":72,"name":"PacketDelivered","nameLocation":"958:15:0","nodeType":"EventDefinition","parameters":{"id":71,"nodeType":"ParameterList","parameters":[{"constant":false,"id":68,"indexed":false,"mutability":"mutable","name":"origin","nameLocation":"981:6:0","nodeType":"VariableDeclaration","scope":72,"src":"974:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_memory_ptr","typeString":"struct Origin"},"typeName":{"id":67,"nodeType":"UserDefinedTypeName","pathNode":{"id":66,"name":"Origin","nameLocations":["974:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"974:6:0"},"referencedDeclaration":40,"src":"974:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":70,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"997:8:0","nodeType":"VariableDeclaration","scope":72,"src":"989:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69,"name":"address","nodeType":"ElementaryTypeName","src":"989:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"973:33:0"},"src":"952:55:0"},{"anonymous":false,"eventSelector":"7edfa10fe10193301ad8a8bea7e968c7bcabcc64981f368e3aeada40ce26ae2c","id":93,"name":"LzReceiveAlert","nameLocation":"1019:14:0","nodeType":"EventDefinition","parameters":{"id":92,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74,"indexed":true,"mutability":"mutable","name":"receiver","nameLocation":"1059:8:0","nodeType":"VariableDeclaration","scope":93,"src":"1043:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73,"name":"address","nodeType":"ElementaryTypeName","src":"1043:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":76,"indexed":true,"mutability":"mutable","name":"executor","nameLocation":"1093:8:0","nodeType":"VariableDeclaration","scope":93,"src":"1077:24:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75,"name":"address","nodeType":"ElementaryTypeName","src":"1077:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":79,"indexed":false,"mutability":"mutable","name":"origin","nameLocation":"1118:6:0","nodeType":"VariableDeclaration","scope":93,"src":"1111:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_memory_ptr","typeString":"struct Origin"},"typeName":{"id":78,"nodeType":"UserDefinedTypeName","pathNode":{"id":77,"name":"Origin","nameLocations":["1111:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"1111:6:0"},"referencedDeclaration":40,"src":"1111:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":81,"indexed":false,"mutability":"mutable","name":"guid","nameLocation":"1142:4:0","nodeType":"VariableDeclaration","scope":93,"src":"1134:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":80,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1134:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":83,"indexed":false,"mutability":"mutable","name":"gas","nameLocation":"1164:3:0","nodeType":"VariableDeclaration","scope":93,"src":"1156:11:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":82,"name":"uint256","nodeType":"ElementaryTypeName","src":"1156:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":85,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"1185:5:0","nodeType":"VariableDeclaration","scope":93,"src":"1177:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":84,"name":"uint256","nodeType":"ElementaryTypeName","src":"1177:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":87,"indexed":false,"mutability":"mutable","name":"message","nameLocation":"1206:7:0","nodeType":"VariableDeclaration","scope":93,"src":"1200:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":86,"name":"bytes","nodeType":"ElementaryTypeName","src":"1200:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":89,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"1229:9:0","nodeType":"VariableDeclaration","scope":93,"src":"1223:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":88,"name":"bytes","nodeType":"ElementaryTypeName","src":"1223:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":91,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"1254:6:0","nodeType":"VariableDeclaration","scope":93,"src":"1248:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":90,"name":"bytes","nodeType":"ElementaryTypeName","src":"1248:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1033:233:0"},"src":"1013:254:0"},{"anonymous":false,"eventSelector":"d476ec5ec1ac11cec3714d41e7ea49419471aceb9bd0dff1becfc3e363a62396","id":97,"name":"LzTokenSet","nameLocation":"1279:10:0","nodeType":"EventDefinition","parameters":{"id":96,"nodeType":"ParameterList","parameters":[{"constant":false,"id":95,"indexed":false,"mutability":"mutable","name":"token","nameLocation":"1298:5:0","nodeType":"VariableDeclaration","scope":97,"src":"1290:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":94,"name":"address","nodeType":"ElementaryTypeName","src":"1290:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1289:15:0"},"src":"1273:32:0"},{"anonymous":false,"eventSelector":"6ee10e9ed4d6ce9742703a498707862f4b00f1396a87195eb93267b3d7983981","id":103,"name":"DelegateSet","nameLocation":"1317:11:0","nodeType":"EventDefinition","parameters":{"id":102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":99,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"1337:6:0","nodeType":"VariableDeclaration","scope":103,"src":"1329:14:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":98,"name":"address","nodeType":"ElementaryTypeName","src":"1329:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":101,"indexed":false,"mutability":"mutable","name":"delegate","nameLocation":"1353:8:0","nodeType":"VariableDeclaration","scope":103,"src":"1345:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":100,"name":"address","nodeType":"ElementaryTypeName","src":"1345:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1328:34:0"},"src":"1311:52:0"},{"functionSelector":"ddc28c58","id":114,"implemented":false,"kind":"function","modifiers":[],"name":"quote","nameLocation":"1378:5:0","nodeType":"FunctionDefinition","parameters":{"id":109,"nodeType":"ParameterList","parameters":[{"constant":false,"id":106,"mutability":"mutable","name":"_params","nameLocation":"1409:7:0","nodeType":"VariableDeclaration","scope":114,"src":"1384:32:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_calldata_ptr","typeString":"struct MessagingParams"},"typeName":{"id":105,"nodeType":"UserDefinedTypeName","pathNode":{"id":104,"name":"MessagingParams","nameLocations":["1384:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":20,"src":"1384:15:0"},"referencedDeclaration":20,"src":"1384:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_storage_ptr","typeString":"struct MessagingParams"}},"visibility":"internal"},{"constant":false,"id":108,"mutability":"mutable","name":"_sender","nameLocation":"1426:7:0","nodeType":"VariableDeclaration","scope":114,"src":"1418:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":107,"name":"address","nodeType":"ElementaryTypeName","src":"1418:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1383:51:0"},"returnParameters":{"id":113,"nodeType":"ParameterList","parameters":[{"constant":false,"id":112,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":114,"src":"1458:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":111,"nodeType":"UserDefinedTypeName","pathNode":{"id":110,"name":"MessagingFee","nameLocations":["1458:12:0"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"1458:12:0"},"referencedDeclaration":33,"src":"1458:12:0","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"}],"src":"1457:21:0"},"scope":202,"src":"1369:110:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"2637a450","id":125,"implemented":false,"kind":"function","modifiers":[],"name":"send","nameLocation":"1494:4:0","nodeType":"FunctionDefinition","parameters":{"id":120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":117,"mutability":"mutable","name":"_params","nameLocation":"1533:7:0","nodeType":"VariableDeclaration","scope":125,"src":"1508:32:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_calldata_ptr","typeString":"struct MessagingParams"},"typeName":{"id":116,"nodeType":"UserDefinedTypeName","pathNode":{"id":115,"name":"MessagingParams","nameLocations":["1508:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":20,"src":"1508:15:0"},"referencedDeclaration":20,"src":"1508:15:0","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingParams_$20_storage_ptr","typeString":"struct MessagingParams"}},"visibility":"internal"},{"constant":false,"id":119,"mutability":"mutable","name":"_refundAddress","nameLocation":"1558:14:0","nodeType":"VariableDeclaration","scope":125,"src":"1550:22:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":118,"name":"address","nodeType":"ElementaryTypeName","src":"1550:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1498:80:0"},"returnParameters":{"id":124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":123,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":125,"src":"1605:23:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt"},"typeName":{"id":122,"nodeType":"UserDefinedTypeName","pathNode":{"id":121,"name":"MessagingReceipt","nameLocations":["1605:16:0"],"nodeType":"IdentifierPath","referencedDeclaration":28,"src":"1605:16:0"},"referencedDeclaration":28,"src":"1605:16:0","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_storage_ptr","typeString":"struct MessagingReceipt"}},"visibility":"internal"}],"src":"1604:25:0"},"scope":202,"src":"1485:145:0","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"a825d747","id":135,"implemented":false,"kind":"function","modifiers":[],"name":"verify","nameLocation":"1645:6:0","nodeType":"FunctionDefinition","parameters":{"id":133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":128,"mutability":"mutable","name":"_origin","nameLocation":"1668:7:0","nodeType":"VariableDeclaration","scope":135,"src":"1652:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":127,"nodeType":"UserDefinedTypeName","pathNode":{"id":126,"name":"Origin","nameLocations":["1652:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"1652:6:0"},"referencedDeclaration":40,"src":"1652:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":130,"mutability":"mutable","name":"_receiver","nameLocation":"1685:9:0","nodeType":"VariableDeclaration","scope":135,"src":"1677:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":129,"name":"address","nodeType":"ElementaryTypeName","src":"1677:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":132,"mutability":"mutable","name":"_payloadHash","nameLocation":"1704:12:0","nodeType":"VariableDeclaration","scope":135,"src":"1696:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":131,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1696:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1651:66:0"},"returnParameters":{"id":134,"nodeType":"ParameterList","parameters":[],"src":"1726:0:0"},"scope":202,"src":"1636:91:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c9a54a99","id":145,"implemented":false,"kind":"function","modifiers":[],"name":"verifiable","nameLocation":"1742:10:0","nodeType":"FunctionDefinition","parameters":{"id":141,"nodeType":"ParameterList","parameters":[{"constant":false,"id":138,"mutability":"mutable","name":"_origin","nameLocation":"1769:7:0","nodeType":"VariableDeclaration","scope":145,"src":"1753:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":137,"nodeType":"UserDefinedTypeName","pathNode":{"id":136,"name":"Origin","nameLocations":["1753:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"1753:6:0"},"referencedDeclaration":40,"src":"1753:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":140,"mutability":"mutable","name":"_receiver","nameLocation":"1786:9:0","nodeType":"VariableDeclaration","scope":145,"src":"1778:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":139,"name":"address","nodeType":"ElementaryTypeName","src":"1778:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1752:44:0"},"returnParameters":{"id":144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":143,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":145,"src":"1820:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":142,"name":"bool","nodeType":"ElementaryTypeName","src":"1820:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1819:6:0"},"scope":202,"src":"1733:93:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"861e1ca5","id":155,"implemented":false,"kind":"function","modifiers":[],"name":"initializable","nameLocation":"1841:13:0","nodeType":"FunctionDefinition","parameters":{"id":151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":148,"mutability":"mutable","name":"_origin","nameLocation":"1871:7:0","nodeType":"VariableDeclaration","scope":155,"src":"1855:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":147,"nodeType":"UserDefinedTypeName","pathNode":{"id":146,"name":"Origin","nameLocations":["1855:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"1855:6:0"},"referencedDeclaration":40,"src":"1855:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":150,"mutability":"mutable","name":"_receiver","nameLocation":"1888:9:0","nodeType":"VariableDeclaration","scope":155,"src":"1880:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":149,"name":"address","nodeType":"ElementaryTypeName","src":"1880:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1854:44:0"},"returnParameters":{"id":154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":155,"src":"1922:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":152,"name":"bool","nodeType":"ElementaryTypeName","src":"1922:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1921:6:0"},"scope":202,"src":"1832:96:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"0c0c389e","id":169,"implemented":false,"kind":"function","modifiers":[],"name":"lzReceive","nameLocation":"1943:9:0","nodeType":"FunctionDefinition","parameters":{"id":167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":158,"mutability":"mutable","name":"_origin","nameLocation":"1978:7:0","nodeType":"VariableDeclaration","scope":169,"src":"1962:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":157,"nodeType":"UserDefinedTypeName","pathNode":{"id":156,"name":"Origin","nameLocations":["1962:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"1962:6:0"},"referencedDeclaration":40,"src":"1962:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":160,"mutability":"mutable","name":"_receiver","nameLocation":"2003:9:0","nodeType":"VariableDeclaration","scope":169,"src":"1995:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":159,"name":"address","nodeType":"ElementaryTypeName","src":"1995:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":162,"mutability":"mutable","name":"_guid","nameLocation":"2030:5:0","nodeType":"VariableDeclaration","scope":169,"src":"2022:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":161,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2022:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":164,"mutability":"mutable","name":"_message","nameLocation":"2060:8:0","nodeType":"VariableDeclaration","scope":169,"src":"2045:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":163,"name":"bytes","nodeType":"ElementaryTypeName","src":"2045:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":166,"mutability":"mutable","name":"_extraData","nameLocation":"2093:10:0","nodeType":"VariableDeclaration","scope":169,"src":"2078:25:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":165,"name":"bytes","nodeType":"ElementaryTypeName","src":"2078:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1952:157:0"},"returnParameters":{"id":168,"nodeType":"ParameterList","parameters":[],"src":"2126:0:0"},"scope":202,"src":"1934:193:0","stateMutability":"payable","virtual":false,"visibility":"external"},{"functionSelector":"2a56c1b0","id":181,"implemented":false,"kind":"function","modifiers":[],"name":"clear","nameLocation":"2269:5:0","nodeType":"FunctionDefinition","parameters":{"id":179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":171,"mutability":"mutable","name":"_oapp","nameLocation":"2283:5:0","nodeType":"VariableDeclaration","scope":181,"src":"2275:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":170,"name":"address","nodeType":"ElementaryTypeName","src":"2275:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":174,"mutability":"mutable","name":"_origin","nameLocation":"2306:7:0","nodeType":"VariableDeclaration","scope":181,"src":"2290:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":173,"nodeType":"UserDefinedTypeName","pathNode":{"id":172,"name":"Origin","nameLocations":["2290:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"2290:6:0"},"referencedDeclaration":40,"src":"2290:6:0","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":176,"mutability":"mutable","name":"_guid","nameLocation":"2323:5:0","nodeType":"VariableDeclaration","scope":181,"src":"2315:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":175,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2315:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":178,"mutability":"mutable","name":"_message","nameLocation":"2345:8:0","nodeType":"VariableDeclaration","scope":181,"src":"2330:23:0","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":177,"name":"bytes","nodeType":"ElementaryTypeName","src":"2330:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2274:80:0"},"returnParameters":{"id":180,"nodeType":"ParameterList","parameters":[],"src":"2363:0:0"},"scope":202,"src":"2260:104:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"c28e0eed","id":186,"implemented":false,"kind":"function","modifiers":[],"name":"setLzToken","nameLocation":"2379:10:0","nodeType":"FunctionDefinition","parameters":{"id":184,"nodeType":"ParameterList","parameters":[{"constant":false,"id":183,"mutability":"mutable","name":"_lzToken","nameLocation":"2398:8:0","nodeType":"VariableDeclaration","scope":186,"src":"2390:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":182,"name":"address","nodeType":"ElementaryTypeName","src":"2390:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2389:18:0"},"returnParameters":{"id":185,"nodeType":"ParameterList","parameters":[],"src":"2416:0:0"},"scope":202,"src":"2370:47:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"e4fe1d94","id":191,"implemented":false,"kind":"function","modifiers":[],"name":"lzToken","nameLocation":"2432:7:0","nodeType":"FunctionDefinition","parameters":{"id":187,"nodeType":"ParameterList","parameters":[],"src":"2439:2:0"},"returnParameters":{"id":190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":189,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":191,"src":"2465:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":188,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2464:9:0"},"scope":202,"src":"2423:51:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"e1758bd8","id":196,"implemented":false,"kind":"function","modifiers":[],"name":"nativeToken","nameLocation":"2489:11:0","nodeType":"FunctionDefinition","parameters":{"id":192,"nodeType":"ParameterList","parameters":[],"src":"2500:2:0"},"returnParameters":{"id":195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":194,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":196,"src":"2526:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":193,"name":"address","nodeType":"ElementaryTypeName","src":"2526:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2525:9:0"},"scope":202,"src":"2480:55:0","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"ca5eb5e1","id":201,"implemented":false,"kind":"function","modifiers":[],"name":"setDelegate","nameLocation":"2550:11:0","nodeType":"FunctionDefinition","parameters":{"id":199,"nodeType":"ParameterList","parameters":[{"constant":false,"id":198,"mutability":"mutable","name":"_delegate","nameLocation":"2570:9:0","nodeType":"VariableDeclaration","scope":201,"src":"2562:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":197,"name":"address","nodeType":"ElementaryTypeName","src":"2562:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2561:19:0"},"returnParameters":{"id":200,"nodeType":"ParameterList","parameters":[],"src":"2589:0:0"},"scope":202,"src":"2541:49:0","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":203,"src":"673:1919:0","usedErrors":[],"usedEvents":[56,65,72,93,97,103,256,262,268,276,284,292,302,495,507,519,633,643,665]}],"src":"33:2560:0"},"id":0},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol","exportedSymbols":{"ILayerZeroReceiver":[238],"Origin":[40]},"id":239,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":204,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:1"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","file":"./ILayerZeroEndpointV2.sol","id":206,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":239,"sourceUnit":203,"src":"59:52:1","symbolAliases":[{"foreign":{"id":205,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"68:6:1","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ILayerZeroReceiver","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":238,"linearizedBaseContracts":[238],"name":"ILayerZeroReceiver","nameLocation":"123:18:1","nodeType":"ContractDefinition","nodes":[{"functionSelector":"ff7bd03d","id":214,"implemented":false,"kind":"function","modifiers":[],"name":"allowInitializePath","nameLocation":"157:19:1","nodeType":"FunctionDefinition","parameters":{"id":210,"nodeType":"ParameterList","parameters":[{"constant":false,"id":209,"mutability":"mutable","name":"_origin","nameLocation":"193:7:1","nodeType":"VariableDeclaration","scope":214,"src":"177:23:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":208,"nodeType":"UserDefinedTypeName","pathNode":{"id":207,"name":"Origin","nameLocations":["177:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"177:6:1"},"referencedDeclaration":40,"src":"177:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"}],"src":"176:25:1"},"returnParameters":{"id":213,"nodeType":"ParameterList","parameters":[{"constant":false,"id":212,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":214,"src":"225:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":211,"name":"bool","nodeType":"ElementaryTypeName","src":"225:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"224:6:1"},"scope":238,"src":"148:83:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7d25a05e","id":223,"implemented":false,"kind":"function","modifiers":[],"name":"nextNonce","nameLocation":"246:9:1","nodeType":"FunctionDefinition","parameters":{"id":219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":216,"mutability":"mutable","name":"_eid","nameLocation":"263:4:1","nodeType":"VariableDeclaration","scope":223,"src":"256:11:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":215,"name":"uint32","nodeType":"ElementaryTypeName","src":"256:6:1","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":218,"mutability":"mutable","name":"_sender","nameLocation":"277:7:1","nodeType":"VariableDeclaration","scope":223,"src":"269:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":217,"name":"bytes32","nodeType":"ElementaryTypeName","src":"269:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"255:30:1"},"returnParameters":{"id":222,"nodeType":"ParameterList","parameters":[{"constant":false,"id":221,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":223,"src":"309:6:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":220,"name":"uint64","nodeType":"ElementaryTypeName","src":"309:6:1","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"308:8:1"},"scope":238,"src":"237:80:1","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"13137d65","id":237,"implemented":false,"kind":"function","modifiers":[],"name":"lzReceive","nameLocation":"332:9:1","nodeType":"FunctionDefinition","parameters":{"id":235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":226,"mutability":"mutable","name":"_origin","nameLocation":"367:7:1","nodeType":"VariableDeclaration","scope":237,"src":"351:23:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":225,"nodeType":"UserDefinedTypeName","pathNode":{"id":224,"name":"Origin","nameLocations":["351:6:1"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"351:6:1"},"referencedDeclaration":40,"src":"351:6:1","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":228,"mutability":"mutable","name":"_guid","nameLocation":"392:5:1","nodeType":"VariableDeclaration","scope":237,"src":"384:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":227,"name":"bytes32","nodeType":"ElementaryTypeName","src":"384:7:1","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":230,"mutability":"mutable","name":"_message","nameLocation":"422:8:1","nodeType":"VariableDeclaration","scope":237,"src":"407:23:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":229,"name":"bytes","nodeType":"ElementaryTypeName","src":"407:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":232,"mutability":"mutable","name":"_executor","nameLocation":"448:9:1","nodeType":"VariableDeclaration","scope":237,"src":"440:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":231,"name":"address","nodeType":"ElementaryTypeName","src":"440:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":234,"mutability":"mutable","name":"_extraData","nameLocation":"482:10:1","nodeType":"VariableDeclaration","scope":237,"src":"467:25:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":233,"name":"bytes","nodeType":"ElementaryTypeName","src":"467:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"341:157:1"},"returnParameters":{"id":236,"nodeType":"ParameterList","parameters":[],"src":"515:0:1"},"scope":238,"src":"323:193:1","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":239,"src":"113:405:1","usedErrors":[],"usedEvents":[]}],"src":"33:486:1"},"id":1},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol","exportedSymbols":{"IMessageLibManager":[483],"SetConfigParam":[247]},"id":484,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":240,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:2"},{"canonicalName":"SetConfigParam","id":247,"members":[{"constant":false,"id":242,"mutability":"mutable","name":"eid","nameLocation":"94:3:2","nodeType":"VariableDeclaration","scope":247,"src":"87:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":241,"name":"uint32","nodeType":"ElementaryTypeName","src":"87:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":244,"mutability":"mutable","name":"configType","nameLocation":"110:10:2","nodeType":"VariableDeclaration","scope":247,"src":"103:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":243,"name":"uint32","nodeType":"ElementaryTypeName","src":"103:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":246,"mutability":"mutable","name":"config","nameLocation":"132:6:2","nodeType":"VariableDeclaration","scope":247,"src":"126:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":245,"name":"bytes","nodeType":"ElementaryTypeName","src":"126:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SetConfigParam","nameLocation":"66:14:2","nodeType":"StructDefinition","scope":484,"src":"59:82:2","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"IMessageLibManager","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":483,"linearizedBaseContracts":[483],"name":"IMessageLibManager","nameLocation":"153:18:2","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IMessageLibManager.Timeout","id":252,"members":[{"constant":false,"id":249,"mutability":"mutable","name":"lib","nameLocation":"211:3:2","nodeType":"VariableDeclaration","scope":252,"src":"203:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":248,"name":"address","nodeType":"ElementaryTypeName","src":"203:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":251,"mutability":"mutable","name":"expiry","nameLocation":"232:6:2","nodeType":"VariableDeclaration","scope":252,"src":"224:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":250,"name":"uint256","nodeType":"ElementaryTypeName","src":"224:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Timeout","nameLocation":"185:7:2","nodeType":"StructDefinition","scope":483,"src":"178:67:2","visibility":"public"},{"anonymous":false,"eventSelector":"6b374d56679ca9463f27c85c6311e2bb7fde69bf201d3da39d53f10bd9d78af5","id":256,"name":"LibraryRegistered","nameLocation":"257:17:2","nodeType":"EventDefinition","parameters":{"id":255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":254,"indexed":false,"mutability":"mutable","name":"newLib","nameLocation":"283:6:2","nodeType":"VariableDeclaration","scope":256,"src":"275:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":253,"name":"address","nodeType":"ElementaryTypeName","src":"275:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"274:16:2"},"src":"251:40:2"},{"anonymous":false,"eventSelector":"16aa0f528038ab41019e95bae5b418a50ba8532c5800e3b7ea2f517d3fa625f5","id":262,"name":"DefaultSendLibrarySet","nameLocation":"302:21:2","nodeType":"EventDefinition","parameters":{"id":261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":258,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"331:3:2","nodeType":"VariableDeclaration","scope":262,"src":"324:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":257,"name":"uint32","nodeType":"ElementaryTypeName","src":"324:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":260,"indexed":false,"mutability":"mutable","name":"newLib","nameLocation":"344:6:2","nodeType":"VariableDeclaration","scope":262,"src":"336:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":259,"name":"address","nodeType":"ElementaryTypeName","src":"336:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"323:28:2"},"src":"296:56:2"},{"anonymous":false,"eventSelector":"c16891855cffb4a5ac51ac11864a3f3c96ba816cc45fe686c987ae36277de5ec","id":268,"name":"DefaultReceiveLibrarySet","nameLocation":"363:24:2","nodeType":"EventDefinition","parameters":{"id":267,"nodeType":"ParameterList","parameters":[{"constant":false,"id":264,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"395:3:2","nodeType":"VariableDeclaration","scope":268,"src":"388:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":263,"name":"uint32","nodeType":"ElementaryTypeName","src":"388:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":266,"indexed":false,"mutability":"mutable","name":"newLib","nameLocation":"408:6:2","nodeType":"VariableDeclaration","scope":268,"src":"400:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":265,"name":"address","nodeType":"ElementaryTypeName","src":"400:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"387:28:2"},"src":"357:59:2"},{"anonymous":false,"eventSelector":"55b28633cdb29709386f555dfc54418592ad475ce7a65a78ac5928af60ffb8f8","id":276,"name":"DefaultReceiveLibraryTimeoutSet","nameLocation":"427:31:2","nodeType":"EventDefinition","parameters":{"id":275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":270,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"466:3:2","nodeType":"VariableDeclaration","scope":276,"src":"459:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":269,"name":"uint32","nodeType":"ElementaryTypeName","src":"459:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":272,"indexed":false,"mutability":"mutable","name":"oldLib","nameLocation":"479:6:2","nodeType":"VariableDeclaration","scope":276,"src":"471:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":271,"name":"address","nodeType":"ElementaryTypeName","src":"471:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":274,"indexed":false,"mutability":"mutable","name":"expiry","nameLocation":"495:6:2","nodeType":"VariableDeclaration","scope":276,"src":"487:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":273,"name":"uint256","nodeType":"ElementaryTypeName","src":"487:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"458:44:2"},"src":"421:82:2"},{"anonymous":false,"eventSelector":"4cff966ebee29a156dcb34cf72c1d06231fb1777f6bdf6e8089819232f002b1c","id":284,"name":"SendLibrarySet","nameLocation":"514:14:2","nodeType":"EventDefinition","parameters":{"id":283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":278,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"537:6:2","nodeType":"VariableDeclaration","scope":284,"src":"529:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":277,"name":"address","nodeType":"ElementaryTypeName","src":"529:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":280,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"552:3:2","nodeType":"VariableDeclaration","scope":284,"src":"545:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":279,"name":"uint32","nodeType":"ElementaryTypeName","src":"545:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":282,"indexed":false,"mutability":"mutable","name":"newLib","nameLocation":"565:6:2","nodeType":"VariableDeclaration","scope":284,"src":"557:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":281,"name":"address","nodeType":"ElementaryTypeName","src":"557:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"528:44:2"},"src":"508:65:2"},{"anonymous":false,"eventSelector":"cd6f92f5ac6185a5acfa02c92090746cec64d777269cbcd0ed031e396657a1c2","id":292,"name":"ReceiveLibrarySet","nameLocation":"584:17:2","nodeType":"EventDefinition","parameters":{"id":291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":286,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"610:8:2","nodeType":"VariableDeclaration","scope":292,"src":"602:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":285,"name":"address","nodeType":"ElementaryTypeName","src":"602:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":288,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"627:3:2","nodeType":"VariableDeclaration","scope":292,"src":"620:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":287,"name":"uint32","nodeType":"ElementaryTypeName","src":"620:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":290,"indexed":false,"mutability":"mutable","name":"newLib","nameLocation":"640:6:2","nodeType":"VariableDeclaration","scope":292,"src":"632:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":289,"name":"address","nodeType":"ElementaryTypeName","src":"632:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"601:46:2"},"src":"578:70:2"},{"anonymous":false,"eventSelector":"4e0a5bbfa0c11a64effb1ada324b5437a17272e1aed9320398715ef71bb20928","id":302,"name":"ReceiveLibraryTimeoutSet","nameLocation":"659:24:2","nodeType":"EventDefinition","parameters":{"id":301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":294,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"692:8:2","nodeType":"VariableDeclaration","scope":302,"src":"684:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":293,"name":"address","nodeType":"ElementaryTypeName","src":"684:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":296,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"709:3:2","nodeType":"VariableDeclaration","scope":302,"src":"702:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":295,"name":"uint32","nodeType":"ElementaryTypeName","src":"702:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":298,"indexed":false,"mutability":"mutable","name":"oldLib","nameLocation":"722:6:2","nodeType":"VariableDeclaration","scope":302,"src":"714:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":297,"name":"address","nodeType":"ElementaryTypeName","src":"714:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":300,"indexed":false,"mutability":"mutable","name":"timeout","nameLocation":"738:7:2","nodeType":"VariableDeclaration","scope":302,"src":"730:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":299,"name":"uint256","nodeType":"ElementaryTypeName","src":"730:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"683:63:2"},"src":"653:94:2"},{"functionSelector":"e8964e81","id":307,"implemented":false,"kind":"function","modifiers":[],"name":"registerLibrary","nameLocation":"762:15:2","nodeType":"FunctionDefinition","parameters":{"id":305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":304,"mutability":"mutable","name":"_lib","nameLocation":"786:4:2","nodeType":"VariableDeclaration","scope":307,"src":"778:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":303,"name":"address","nodeType":"ElementaryTypeName","src":"778:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"777:14:2"},"returnParameters":{"id":306,"nodeType":"ParameterList","parameters":[],"src":"800:0:2"},"scope":483,"src":"753:48:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"dc706a62","id":314,"implemented":false,"kind":"function","modifiers":[],"name":"isRegisteredLibrary","nameLocation":"816:19:2","nodeType":"FunctionDefinition","parameters":{"id":310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":309,"mutability":"mutable","name":"_lib","nameLocation":"844:4:2","nodeType":"VariableDeclaration","scope":314,"src":"836:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":308,"name":"address","nodeType":"ElementaryTypeName","src":"836:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"835:14:2"},"returnParameters":{"id":313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":312,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":314,"src":"873:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":311,"name":"bool","nodeType":"ElementaryTypeName","src":"873:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"872:6:2"},"scope":483,"src":"807:72:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9132e5c3","id":320,"implemented":false,"kind":"function","modifiers":[],"name":"getRegisteredLibraries","nameLocation":"894:22:2","nodeType":"FunctionDefinition","parameters":{"id":315,"nodeType":"ParameterList","parameters":[],"src":"916:2:2"},"returnParameters":{"id":319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":320,"src":"942:16:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":316,"name":"address","nodeType":"ElementaryTypeName","src":"942:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":317,"nodeType":"ArrayTypeName","src":"942:9:2","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"941:18:2"},"scope":483,"src":"885:75:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"aafea312","id":327,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultSendLibrary","nameLocation":"975:21:2","nodeType":"FunctionDefinition","parameters":{"id":325,"nodeType":"ParameterList","parameters":[{"constant":false,"id":322,"mutability":"mutable","name":"_eid","nameLocation":"1004:4:2","nodeType":"VariableDeclaration","scope":327,"src":"997:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":321,"name":"uint32","nodeType":"ElementaryTypeName","src":"997:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":324,"mutability":"mutable","name":"_newLib","nameLocation":"1018:7:2","nodeType":"VariableDeclaration","scope":327,"src":"1010:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":323,"name":"address","nodeType":"ElementaryTypeName","src":"1010:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"996:30:2"},"returnParameters":{"id":326,"nodeType":"ParameterList","parameters":[],"src":"1035:0:2"},"scope":483,"src":"966:70:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"f64be4c7","id":334,"implemented":false,"kind":"function","modifiers":[],"name":"defaultSendLibrary","nameLocation":"1051:18:2","nodeType":"FunctionDefinition","parameters":{"id":330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":329,"mutability":"mutable","name":"_eid","nameLocation":"1077:4:2","nodeType":"VariableDeclaration","scope":334,"src":"1070:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":328,"name":"uint32","nodeType":"ElementaryTypeName","src":"1070:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1069:13:2"},"returnParameters":{"id":333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":332,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":334,"src":"1106:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":331,"name":"address","nodeType":"ElementaryTypeName","src":"1106:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1105:9:2"},"scope":483,"src":"1042:73:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a718531b","id":343,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultReceiveLibrary","nameLocation":"1130:24:2","nodeType":"FunctionDefinition","parameters":{"id":341,"nodeType":"ParameterList","parameters":[{"constant":false,"id":336,"mutability":"mutable","name":"_eid","nameLocation":"1162:4:2","nodeType":"VariableDeclaration","scope":343,"src":"1155:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":335,"name":"uint32","nodeType":"ElementaryTypeName","src":"1155:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":338,"mutability":"mutable","name":"_newLib","nameLocation":"1176:7:2","nodeType":"VariableDeclaration","scope":343,"src":"1168:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":337,"name":"address","nodeType":"ElementaryTypeName","src":"1168:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":340,"mutability":"mutable","name":"_gracePeriod","nameLocation":"1193:12:2","nodeType":"VariableDeclaration","scope":343,"src":"1185:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":339,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1154:52:2"},"returnParameters":{"id":342,"nodeType":"ParameterList","parameters":[],"src":"1215:0:2"},"scope":483,"src":"1121:95:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6f50a803","id":350,"implemented":false,"kind":"function","modifiers":[],"name":"defaultReceiveLibrary","nameLocation":"1231:21:2","nodeType":"FunctionDefinition","parameters":{"id":346,"nodeType":"ParameterList","parameters":[{"constant":false,"id":345,"mutability":"mutable","name":"_eid","nameLocation":"1260:4:2","nodeType":"VariableDeclaration","scope":350,"src":"1253:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":344,"name":"uint32","nodeType":"ElementaryTypeName","src":"1253:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1252:13:2"},"returnParameters":{"id":349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":348,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":350,"src":"1289:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":347,"name":"address","nodeType":"ElementaryTypeName","src":"1289:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1288:9:2"},"scope":483,"src":"1222:76:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d4b4ec8f","id":359,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultReceiveLibraryTimeout","nameLocation":"1313:31:2","nodeType":"FunctionDefinition","parameters":{"id":357,"nodeType":"ParameterList","parameters":[{"constant":false,"id":352,"mutability":"mutable","name":"_eid","nameLocation":"1352:4:2","nodeType":"VariableDeclaration","scope":359,"src":"1345:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":351,"name":"uint32","nodeType":"ElementaryTypeName","src":"1345:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":354,"mutability":"mutable","name":"_lib","nameLocation":"1366:4:2","nodeType":"VariableDeclaration","scope":359,"src":"1358:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":353,"name":"address","nodeType":"ElementaryTypeName","src":"1358:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":356,"mutability":"mutable","name":"_expiry","nameLocation":"1380:7:2","nodeType":"VariableDeclaration","scope":359,"src":"1372:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":355,"name":"uint256","nodeType":"ElementaryTypeName","src":"1372:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1344:44:2"},"returnParameters":{"id":358,"nodeType":"ParameterList","parameters":[],"src":"1397:0:2"},"scope":483,"src":"1304:94:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"6e83f5bb","id":368,"implemented":false,"kind":"function","modifiers":[],"name":"defaultReceiveLibraryTimeout","nameLocation":"1413:28:2","nodeType":"FunctionDefinition","parameters":{"id":362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":361,"mutability":"mutable","name":"_eid","nameLocation":"1449:4:2","nodeType":"VariableDeclaration","scope":368,"src":"1442:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":360,"name":"uint32","nodeType":"ElementaryTypeName","src":"1442:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1441:13:2"},"returnParameters":{"id":367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":364,"mutability":"mutable","name":"lib","nameLocation":"1486:3:2","nodeType":"VariableDeclaration","scope":368,"src":"1478:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":363,"name":"address","nodeType":"ElementaryTypeName","src":"1478:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":366,"mutability":"mutable","name":"expiry","nameLocation":"1499:6:2","nodeType":"VariableDeclaration","scope":368,"src":"1491:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":365,"name":"uint256","nodeType":"ElementaryTypeName","src":"1491:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1477:29:2"},"scope":483,"src":"1404:103:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6750cd4c","id":375,"implemented":false,"kind":"function","modifiers":[],"name":"isSupportedEid","nameLocation":"1522:14:2","nodeType":"FunctionDefinition","parameters":{"id":371,"nodeType":"ParameterList","parameters":[{"constant":false,"id":370,"mutability":"mutable","name":"_eid","nameLocation":"1544:4:2","nodeType":"VariableDeclaration","scope":375,"src":"1537:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":369,"name":"uint32","nodeType":"ElementaryTypeName","src":"1537:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1536:13:2"},"returnParameters":{"id":374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":373,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":375,"src":"1573:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":372,"name":"bool","nodeType":"ElementaryTypeName","src":"1573:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1572:6:2"},"scope":483,"src":"1513:66:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9d7f9775","id":386,"implemented":false,"kind":"function","modifiers":[],"name":"isValidReceiveLibrary","nameLocation":"1594:21:2","nodeType":"FunctionDefinition","parameters":{"id":382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":377,"mutability":"mutable","name":"_receiver","nameLocation":"1624:9:2","nodeType":"VariableDeclaration","scope":386,"src":"1616:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":376,"name":"address","nodeType":"ElementaryTypeName","src":"1616:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":379,"mutability":"mutable","name":"_eid","nameLocation":"1642:4:2","nodeType":"VariableDeclaration","scope":386,"src":"1635:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":378,"name":"uint32","nodeType":"ElementaryTypeName","src":"1635:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":381,"mutability":"mutable","name":"_lib","nameLocation":"1656:4:2","nodeType":"VariableDeclaration","scope":386,"src":"1648:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":380,"name":"address","nodeType":"ElementaryTypeName","src":"1648:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1615:46:2"},"returnParameters":{"id":385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":384,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":386,"src":"1685:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":383,"name":"bool","nodeType":"ElementaryTypeName","src":"1685:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1684:6:2"},"scope":483,"src":"1585:106:2","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":387,"nodeType":"StructuredDocumentation","src":"1697:59:2","text":"------------------- OApp interfaces -------------------"},"functionSelector":"9535ff30","id":396,"implemented":false,"kind":"function","modifiers":[],"name":"setSendLibrary","nameLocation":"1770:14:2","nodeType":"FunctionDefinition","parameters":{"id":394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":389,"mutability":"mutable","name":"_oapp","nameLocation":"1793:5:2","nodeType":"VariableDeclaration","scope":396,"src":"1785:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":388,"name":"address","nodeType":"ElementaryTypeName","src":"1785:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":391,"mutability":"mutable","name":"_eid","nameLocation":"1807:4:2","nodeType":"VariableDeclaration","scope":396,"src":"1800:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":390,"name":"uint32","nodeType":"ElementaryTypeName","src":"1800:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":393,"mutability":"mutable","name":"_newLib","nameLocation":"1821:7:2","nodeType":"VariableDeclaration","scope":396,"src":"1813:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":392,"name":"address","nodeType":"ElementaryTypeName","src":"1813:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1784:45:2"},"returnParameters":{"id":395,"nodeType":"ParameterList","parameters":[],"src":"1838:0:2"},"scope":483,"src":"1761:78:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"b96a277f","id":405,"implemented":false,"kind":"function","modifiers":[],"name":"getSendLibrary","nameLocation":"1854:14:2","nodeType":"FunctionDefinition","parameters":{"id":401,"nodeType":"ParameterList","parameters":[{"constant":false,"id":398,"mutability":"mutable","name":"_sender","nameLocation":"1877:7:2","nodeType":"VariableDeclaration","scope":405,"src":"1869:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":397,"name":"address","nodeType":"ElementaryTypeName","src":"1869:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":400,"mutability":"mutable","name":"_eid","nameLocation":"1893:4:2","nodeType":"VariableDeclaration","scope":405,"src":"1886:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":399,"name":"uint32","nodeType":"ElementaryTypeName","src":"1886:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1868:30:2"},"returnParameters":{"id":404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":403,"mutability":"mutable","name":"lib","nameLocation":"1930:3:2","nodeType":"VariableDeclaration","scope":405,"src":"1922:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":402,"name":"address","nodeType":"ElementaryTypeName","src":"1922:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1921:13:2"},"scope":483,"src":"1845:90:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"dc93c8a2","id":414,"implemented":false,"kind":"function","modifiers":[],"name":"isDefaultSendLibrary","nameLocation":"1950:20:2","nodeType":"FunctionDefinition","parameters":{"id":410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":407,"mutability":"mutable","name":"_sender","nameLocation":"1979:7:2","nodeType":"VariableDeclaration","scope":414,"src":"1971:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":406,"name":"address","nodeType":"ElementaryTypeName","src":"1971:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":409,"mutability":"mutable","name":"_eid","nameLocation":"1995:4:2","nodeType":"VariableDeclaration","scope":414,"src":"1988:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":408,"name":"uint32","nodeType":"ElementaryTypeName","src":"1988:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1970:30:2"},"returnParameters":{"id":413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":412,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":414,"src":"2024:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":411,"name":"bool","nodeType":"ElementaryTypeName","src":"2024:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2023:6:2"},"scope":483,"src":"1941:89:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6a14d715","id":425,"implemented":false,"kind":"function","modifiers":[],"name":"setReceiveLibrary","nameLocation":"2045:17:2","nodeType":"FunctionDefinition","parameters":{"id":423,"nodeType":"ParameterList","parameters":[{"constant":false,"id":416,"mutability":"mutable","name":"_oapp","nameLocation":"2071:5:2","nodeType":"VariableDeclaration","scope":425,"src":"2063:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":415,"name":"address","nodeType":"ElementaryTypeName","src":"2063:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":418,"mutability":"mutable","name":"_eid","nameLocation":"2085:4:2","nodeType":"VariableDeclaration","scope":425,"src":"2078:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":417,"name":"uint32","nodeType":"ElementaryTypeName","src":"2078:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":420,"mutability":"mutable","name":"_newLib","nameLocation":"2099:7:2","nodeType":"VariableDeclaration","scope":425,"src":"2091:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":419,"name":"address","nodeType":"ElementaryTypeName","src":"2091:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":422,"mutability":"mutable","name":"_gracePeriod","nameLocation":"2116:12:2","nodeType":"VariableDeclaration","scope":425,"src":"2108:20:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":421,"name":"uint256","nodeType":"ElementaryTypeName","src":"2108:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2062:67:2"},"returnParameters":{"id":424,"nodeType":"ParameterList","parameters":[],"src":"2138:0:2"},"scope":483,"src":"2036:103:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"402f8468","id":436,"implemented":false,"kind":"function","modifiers":[],"name":"getReceiveLibrary","nameLocation":"2154:17:2","nodeType":"FunctionDefinition","parameters":{"id":430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":427,"mutability":"mutable","name":"_receiver","nameLocation":"2180:9:2","nodeType":"VariableDeclaration","scope":436,"src":"2172:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":426,"name":"address","nodeType":"ElementaryTypeName","src":"2172:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":429,"mutability":"mutable","name":"_eid","nameLocation":"2198:4:2","nodeType":"VariableDeclaration","scope":436,"src":"2191:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":428,"name":"uint32","nodeType":"ElementaryTypeName","src":"2191:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2171:32:2"},"returnParameters":{"id":435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":432,"mutability":"mutable","name":"lib","nameLocation":"2235:3:2","nodeType":"VariableDeclaration","scope":436,"src":"2227:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":431,"name":"address","nodeType":"ElementaryTypeName","src":"2227:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":434,"mutability":"mutable","name":"isDefault","nameLocation":"2245:9:2","nodeType":"VariableDeclaration","scope":436,"src":"2240:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":433,"name":"bool","nodeType":"ElementaryTypeName","src":"2240:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2226:29:2"},"scope":483,"src":"2145:111:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"183c834f","id":447,"implemented":false,"kind":"function","modifiers":[],"name":"setReceiveLibraryTimeout","nameLocation":"2271:24:2","nodeType":"FunctionDefinition","parameters":{"id":445,"nodeType":"ParameterList","parameters":[{"constant":false,"id":438,"mutability":"mutable","name":"_oapp","nameLocation":"2304:5:2","nodeType":"VariableDeclaration","scope":447,"src":"2296:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":437,"name":"address","nodeType":"ElementaryTypeName","src":"2296:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":440,"mutability":"mutable","name":"_eid","nameLocation":"2318:4:2","nodeType":"VariableDeclaration","scope":447,"src":"2311:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":439,"name":"uint32","nodeType":"ElementaryTypeName","src":"2311:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":442,"mutability":"mutable","name":"_lib","nameLocation":"2332:4:2","nodeType":"VariableDeclaration","scope":447,"src":"2324:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":441,"name":"address","nodeType":"ElementaryTypeName","src":"2324:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":444,"mutability":"mutable","name":"_expiry","nameLocation":"2346:7:2","nodeType":"VariableDeclaration","scope":447,"src":"2338:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":443,"name":"uint256","nodeType":"ElementaryTypeName","src":"2338:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2295:59:2"},"returnParameters":{"id":446,"nodeType":"ParameterList","parameters":[],"src":"2363:0:2"},"scope":483,"src":"2262:102:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"ef667aa1","id":458,"implemented":false,"kind":"function","modifiers":[],"name":"receiveLibraryTimeout","nameLocation":"2379:21:2","nodeType":"FunctionDefinition","parameters":{"id":452,"nodeType":"ParameterList","parameters":[{"constant":false,"id":449,"mutability":"mutable","name":"_receiver","nameLocation":"2409:9:2","nodeType":"VariableDeclaration","scope":458,"src":"2401:17:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":448,"name":"address","nodeType":"ElementaryTypeName","src":"2401:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":451,"mutability":"mutable","name":"_eid","nameLocation":"2427:4:2","nodeType":"VariableDeclaration","scope":458,"src":"2420:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":450,"name":"uint32","nodeType":"ElementaryTypeName","src":"2420:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2400:32:2"},"returnParameters":{"id":457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":454,"mutability":"mutable","name":"lib","nameLocation":"2464:3:2","nodeType":"VariableDeclaration","scope":458,"src":"2456:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":453,"name":"address","nodeType":"ElementaryTypeName","src":"2456:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":456,"mutability":"mutable","name":"expiry","nameLocation":"2477:6:2","nodeType":"VariableDeclaration","scope":458,"src":"2469:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":455,"name":"uint256","nodeType":"ElementaryTypeName","src":"2469:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2455:29:2"},"scope":483,"src":"2370:115:2","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6dbd9f90","id":469,"implemented":false,"kind":"function","modifiers":[],"name":"setConfig","nameLocation":"2500:9:2","nodeType":"FunctionDefinition","parameters":{"id":467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":460,"mutability":"mutable","name":"_oapp","nameLocation":"2518:5:2","nodeType":"VariableDeclaration","scope":469,"src":"2510:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":459,"name":"address","nodeType":"ElementaryTypeName","src":"2510:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":462,"mutability":"mutable","name":"_lib","nameLocation":"2533:4:2","nodeType":"VariableDeclaration","scope":469,"src":"2525:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":461,"name":"address","nodeType":"ElementaryTypeName","src":"2525:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":466,"mutability":"mutable","name":"_params","nameLocation":"2565:7:2","nodeType":"VariableDeclaration","scope":469,"src":"2539:33:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetConfigParam_$247_calldata_ptr_$dyn_calldata_ptr","typeString":"struct SetConfigParam[]"},"typeName":{"baseType":{"id":464,"nodeType":"UserDefinedTypeName","pathNode":{"id":463,"name":"SetConfigParam","nameLocations":["2539:14:2"],"nodeType":"IdentifierPath","referencedDeclaration":247,"src":"2539:14:2"},"referencedDeclaration":247,"src":"2539:14:2","typeDescriptions":{"typeIdentifier":"t_struct$_SetConfigParam_$247_storage_ptr","typeString":"struct SetConfigParam"}},"id":465,"nodeType":"ArrayTypeName","src":"2539:16:2","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetConfigParam_$247_storage_$dyn_storage_ptr","typeString":"struct SetConfigParam[]"}},"visibility":"internal"}],"src":"2509:64:2"},"returnParameters":{"id":468,"nodeType":"ParameterList","parameters":[],"src":"2582:0:2"},"scope":483,"src":"2491:92:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2b3197b9","id":482,"implemented":false,"kind":"function","modifiers":[],"name":"getConfig","nameLocation":"2598:9:2","nodeType":"FunctionDefinition","parameters":{"id":478,"nodeType":"ParameterList","parameters":[{"constant":false,"id":471,"mutability":"mutable","name":"_oapp","nameLocation":"2625:5:2","nodeType":"VariableDeclaration","scope":482,"src":"2617:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":470,"name":"address","nodeType":"ElementaryTypeName","src":"2617:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":473,"mutability":"mutable","name":"_lib","nameLocation":"2648:4:2","nodeType":"VariableDeclaration","scope":482,"src":"2640:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":472,"name":"address","nodeType":"ElementaryTypeName","src":"2640:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":475,"mutability":"mutable","name":"_eid","nameLocation":"2669:4:2","nodeType":"VariableDeclaration","scope":482,"src":"2662:11:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":474,"name":"uint32","nodeType":"ElementaryTypeName","src":"2662:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":477,"mutability":"mutable","name":"_configType","nameLocation":"2690:11:2","nodeType":"VariableDeclaration","scope":482,"src":"2683:18:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":476,"name":"uint32","nodeType":"ElementaryTypeName","src":"2683:6:2","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"2607:100:2"},"returnParameters":{"id":481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":480,"mutability":"mutable","name":"config","nameLocation":"2744:6:2","nodeType":"VariableDeclaration","scope":482,"src":"2731:19:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":479,"name":"bytes","nodeType":"ElementaryTypeName","src":"2731:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2730:21:2"},"scope":483,"src":"2589:163:2","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":484,"src":"143:2611:2","usedErrors":[],"usedEvents":[256,262,268,276,284,292,302]}],"src":"33:2722:2"},"id":2},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol","exportedSymbols":{"IMessagingChannel":[619]},"id":620,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":485,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IMessagingChannel","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":619,"linearizedBaseContracts":[619],"name":"IMessagingChannel","nameLocation":"69:17:3","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"28f40053783033ef755556a0c3315379141f51a33aed8334174ffbadd90bde48","id":495,"name":"InboundNonceSkipped","nameLocation":"99:19:3","nodeType":"EventDefinition","parameters":{"id":494,"nodeType":"ParameterList","parameters":[{"constant":false,"id":487,"indexed":false,"mutability":"mutable","name":"srcEid","nameLocation":"126:6:3","nodeType":"VariableDeclaration","scope":495,"src":"119:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":486,"name":"uint32","nodeType":"ElementaryTypeName","src":"119:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":489,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"142:6:3","nodeType":"VariableDeclaration","scope":495,"src":"134:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":488,"name":"bytes32","nodeType":"ElementaryTypeName","src":"134:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":491,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"158:8:3","nodeType":"VariableDeclaration","scope":495,"src":"150:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":490,"name":"address","nodeType":"ElementaryTypeName","src":"150:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":493,"indexed":false,"mutability":"mutable","name":"nonce","nameLocation":"175:5:3","nodeType":"VariableDeclaration","scope":495,"src":"168:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":492,"name":"uint64","nodeType":"ElementaryTypeName","src":"168:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"118:63:3"},"src":"93:89:3"},{"anonymous":false,"eventSelector":"af0450c392c4f702515a457a362328c8aa21916048ca6d0419e248b30cb55292","id":507,"name":"PacketNilified","nameLocation":"193:14:3","nodeType":"EventDefinition","parameters":{"id":506,"nodeType":"ParameterList","parameters":[{"constant":false,"id":497,"indexed":false,"mutability":"mutable","name":"srcEid","nameLocation":"215:6:3","nodeType":"VariableDeclaration","scope":507,"src":"208:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":496,"name":"uint32","nodeType":"ElementaryTypeName","src":"208:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":499,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"231:6:3","nodeType":"VariableDeclaration","scope":507,"src":"223:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":498,"name":"bytes32","nodeType":"ElementaryTypeName","src":"223:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":501,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"247:8:3","nodeType":"VariableDeclaration","scope":507,"src":"239:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":500,"name":"address","nodeType":"ElementaryTypeName","src":"239:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":503,"indexed":false,"mutability":"mutable","name":"nonce","nameLocation":"264:5:3","nodeType":"VariableDeclaration","scope":507,"src":"257:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":502,"name":"uint64","nodeType":"ElementaryTypeName","src":"257:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":505,"indexed":false,"mutability":"mutable","name":"payloadHash","nameLocation":"279:11:3","nodeType":"VariableDeclaration","scope":507,"src":"271:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":504,"name":"bytes32","nodeType":"ElementaryTypeName","src":"271:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"207:84:3"},"src":"187:105:3"},{"anonymous":false,"eventSelector":"7f68a37a6e69a0de35024a234558f9efe4b33b58657753d21eaaa82d51c3510e","id":519,"name":"PacketBurnt","nameLocation":"303:11:3","nodeType":"EventDefinition","parameters":{"id":518,"nodeType":"ParameterList","parameters":[{"constant":false,"id":509,"indexed":false,"mutability":"mutable","name":"srcEid","nameLocation":"322:6:3","nodeType":"VariableDeclaration","scope":519,"src":"315:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":508,"name":"uint32","nodeType":"ElementaryTypeName","src":"315:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":511,"indexed":false,"mutability":"mutable","name":"sender","nameLocation":"338:6:3","nodeType":"VariableDeclaration","scope":519,"src":"330:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":510,"name":"bytes32","nodeType":"ElementaryTypeName","src":"330:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":513,"indexed":false,"mutability":"mutable","name":"receiver","nameLocation":"354:8:3","nodeType":"VariableDeclaration","scope":519,"src":"346:16:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":512,"name":"address","nodeType":"ElementaryTypeName","src":"346:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":515,"indexed":false,"mutability":"mutable","name":"nonce","nameLocation":"371:5:3","nodeType":"VariableDeclaration","scope":519,"src":"364:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":514,"name":"uint64","nodeType":"ElementaryTypeName","src":"364:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":517,"indexed":false,"mutability":"mutable","name":"payloadHash","nameLocation":"386:11:3","nodeType":"VariableDeclaration","scope":519,"src":"378:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":516,"name":"bytes32","nodeType":"ElementaryTypeName","src":"378:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"314:84:3"},"src":"297:102:3"},{"functionSelector":"416ecebf","id":524,"implemented":false,"kind":"function","modifiers":[],"name":"eid","nameLocation":"414:3:3","nodeType":"FunctionDefinition","parameters":{"id":520,"nodeType":"ParameterList","parameters":[],"src":"417:2:3"},"returnParameters":{"id":523,"nodeType":"ParameterList","parameters":[{"constant":false,"id":522,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":524,"src":"443:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":521,"name":"uint32","nodeType":"ElementaryTypeName","src":"443:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"442:8:3"},"scope":619,"src":"405:46:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"d70b8902","id":535,"implemented":false,"kind":"function","modifiers":[],"name":"skip","nameLocation":"614:4:3","nodeType":"FunctionDefinition","parameters":{"id":533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":526,"mutability":"mutable","name":"_oapp","nameLocation":"627:5:3","nodeType":"VariableDeclaration","scope":535,"src":"619:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":525,"name":"address","nodeType":"ElementaryTypeName","src":"619:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":528,"mutability":"mutable","name":"_srcEid","nameLocation":"641:7:3","nodeType":"VariableDeclaration","scope":535,"src":"634:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":527,"name":"uint32","nodeType":"ElementaryTypeName","src":"634:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":530,"mutability":"mutable","name":"_sender","nameLocation":"658:7:3","nodeType":"VariableDeclaration","scope":535,"src":"650:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":529,"name":"bytes32","nodeType":"ElementaryTypeName","src":"650:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":532,"mutability":"mutable","name":"_nonce","nameLocation":"674:6:3","nodeType":"VariableDeclaration","scope":535,"src":"667:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":531,"name":"uint64","nodeType":"ElementaryTypeName","src":"667:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"618:63:3"},"returnParameters":{"id":534,"nodeType":"ParameterList","parameters":[],"src":"690:0:3"},"scope":619,"src":"605:86:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"2e80fbf3","id":548,"implemented":false,"kind":"function","modifiers":[],"name":"nilify","nameLocation":"706:6:3","nodeType":"FunctionDefinition","parameters":{"id":546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":537,"mutability":"mutable","name":"_oapp","nameLocation":"721:5:3","nodeType":"VariableDeclaration","scope":548,"src":"713:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":536,"name":"address","nodeType":"ElementaryTypeName","src":"713:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":539,"mutability":"mutable","name":"_srcEid","nameLocation":"735:7:3","nodeType":"VariableDeclaration","scope":548,"src":"728:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":538,"name":"uint32","nodeType":"ElementaryTypeName","src":"728:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":541,"mutability":"mutable","name":"_sender","nameLocation":"752:7:3","nodeType":"VariableDeclaration","scope":548,"src":"744:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":540,"name":"bytes32","nodeType":"ElementaryTypeName","src":"744:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":543,"mutability":"mutable","name":"_nonce","nameLocation":"768:6:3","nodeType":"VariableDeclaration","scope":548,"src":"761:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":542,"name":"uint64","nodeType":"ElementaryTypeName","src":"761:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":545,"mutability":"mutable","name":"_payloadHash","nameLocation":"784:12:3","nodeType":"VariableDeclaration","scope":548,"src":"776:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":544,"name":"bytes32","nodeType":"ElementaryTypeName","src":"776:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"712:85:3"},"returnParameters":{"id":547,"nodeType":"ParameterList","parameters":[],"src":"806:0:3"},"scope":619,"src":"697:110:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"40f80683","id":561,"implemented":false,"kind":"function","modifiers":[],"name":"burn","nameLocation":"822:4:3","nodeType":"FunctionDefinition","parameters":{"id":559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":550,"mutability":"mutable","name":"_oapp","nameLocation":"835:5:3","nodeType":"VariableDeclaration","scope":561,"src":"827:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":549,"name":"address","nodeType":"ElementaryTypeName","src":"827:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":552,"mutability":"mutable","name":"_srcEid","nameLocation":"849:7:3","nodeType":"VariableDeclaration","scope":561,"src":"842:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":551,"name":"uint32","nodeType":"ElementaryTypeName","src":"842:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":554,"mutability":"mutable","name":"_sender","nameLocation":"866:7:3","nodeType":"VariableDeclaration","scope":561,"src":"858:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":553,"name":"bytes32","nodeType":"ElementaryTypeName","src":"858:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":556,"mutability":"mutable","name":"_nonce","nameLocation":"882:6:3","nodeType":"VariableDeclaration","scope":561,"src":"875:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":555,"name":"uint64","nodeType":"ElementaryTypeName","src":"875:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":558,"mutability":"mutable","name":"_payloadHash","nameLocation":"898:12:3","nodeType":"VariableDeclaration","scope":561,"src":"890:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":557,"name":"bytes32","nodeType":"ElementaryTypeName","src":"890:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"826:85:3"},"returnParameters":{"id":560,"nodeType":"ParameterList","parameters":[],"src":"920:0:3"},"scope":619,"src":"813:108:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"aafe5e07","id":572,"implemented":false,"kind":"function","modifiers":[],"name":"nextGuid","nameLocation":"936:8:3","nodeType":"FunctionDefinition","parameters":{"id":568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":563,"mutability":"mutable","name":"_sender","nameLocation":"953:7:3","nodeType":"VariableDeclaration","scope":572,"src":"945:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":562,"name":"address","nodeType":"ElementaryTypeName","src":"945:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":565,"mutability":"mutable","name":"_dstEid","nameLocation":"969:7:3","nodeType":"VariableDeclaration","scope":572,"src":"962:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":564,"name":"uint32","nodeType":"ElementaryTypeName","src":"962:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":567,"mutability":"mutable","name":"_receiver","nameLocation":"986:9:3","nodeType":"VariableDeclaration","scope":572,"src":"978:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":566,"name":"bytes32","nodeType":"ElementaryTypeName","src":"978:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"944:52:3"},"returnParameters":{"id":571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":570,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":572,"src":"1020:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":569,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1020:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1019:9:3"},"scope":619,"src":"927:102:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"a0dd43fc","id":583,"implemented":false,"kind":"function","modifiers":[],"name":"inboundNonce","nameLocation":"1044:12:3","nodeType":"FunctionDefinition","parameters":{"id":579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":574,"mutability":"mutable","name":"_receiver","nameLocation":"1065:9:3","nodeType":"VariableDeclaration","scope":583,"src":"1057:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":573,"name":"address","nodeType":"ElementaryTypeName","src":"1057:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":576,"mutability":"mutable","name":"_srcEid","nameLocation":"1083:7:3","nodeType":"VariableDeclaration","scope":583,"src":"1076:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":575,"name":"uint32","nodeType":"ElementaryTypeName","src":"1076:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":578,"mutability":"mutable","name":"_sender","nameLocation":"1100:7:3","nodeType":"VariableDeclaration","scope":583,"src":"1092:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":577,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1092:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1056:52:3"},"returnParameters":{"id":582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":581,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":583,"src":"1132:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":580,"name":"uint64","nodeType":"ElementaryTypeName","src":"1132:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1131:8:3"},"scope":619,"src":"1035:105:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"9c6d7340","id":594,"implemented":false,"kind":"function","modifiers":[],"name":"outboundNonce","nameLocation":"1155:13:3","nodeType":"FunctionDefinition","parameters":{"id":590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":585,"mutability":"mutable","name":"_sender","nameLocation":"1177:7:3","nodeType":"VariableDeclaration","scope":594,"src":"1169:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":584,"name":"address","nodeType":"ElementaryTypeName","src":"1169:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":587,"mutability":"mutable","name":"_dstEid","nameLocation":"1193:7:3","nodeType":"VariableDeclaration","scope":594,"src":"1186:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":586,"name":"uint32","nodeType":"ElementaryTypeName","src":"1186:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":589,"mutability":"mutable","name":"_receiver","nameLocation":"1210:9:3","nodeType":"VariableDeclaration","scope":594,"src":"1202:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":588,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1202:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1168:52:3"},"returnParameters":{"id":593,"nodeType":"ParameterList","parameters":[{"constant":false,"id":592,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":594,"src":"1244:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":591,"name":"uint64","nodeType":"ElementaryTypeName","src":"1244:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1243:8:3"},"scope":619,"src":"1146:106:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"c9fc7bcd","id":607,"implemented":false,"kind":"function","modifiers":[],"name":"inboundPayloadHash","nameLocation":"1267:18:3","nodeType":"FunctionDefinition","parameters":{"id":603,"nodeType":"ParameterList","parameters":[{"constant":false,"id":596,"mutability":"mutable","name":"_receiver","nameLocation":"1303:9:3","nodeType":"VariableDeclaration","scope":607,"src":"1295:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":595,"name":"address","nodeType":"ElementaryTypeName","src":"1295:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":598,"mutability":"mutable","name":"_srcEid","nameLocation":"1329:7:3","nodeType":"VariableDeclaration","scope":607,"src":"1322:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":597,"name":"uint32","nodeType":"ElementaryTypeName","src":"1322:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":600,"mutability":"mutable","name":"_sender","nameLocation":"1354:7:3","nodeType":"VariableDeclaration","scope":607,"src":"1346:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":599,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1346:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":602,"mutability":"mutable","name":"_nonce","nameLocation":"1378:6:3","nodeType":"VariableDeclaration","scope":607,"src":"1371:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":601,"name":"uint64","nodeType":"ElementaryTypeName","src":"1371:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1285:105:3"},"returnParameters":{"id":606,"nodeType":"ParameterList","parameters":[{"constant":false,"id":605,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":607,"src":"1414:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":604,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1414:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1413:9:3"},"scope":619,"src":"1258:165:3","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"5b17bb70","id":618,"implemented":false,"kind":"function","modifiers":[],"name":"lazyInboundNonce","nameLocation":"1438:16:3","nodeType":"FunctionDefinition","parameters":{"id":614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":609,"mutability":"mutable","name":"_receiver","nameLocation":"1463:9:3","nodeType":"VariableDeclaration","scope":618,"src":"1455:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":608,"name":"address","nodeType":"ElementaryTypeName","src":"1455:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":611,"mutability":"mutable","name":"_srcEid","nameLocation":"1481:7:3","nodeType":"VariableDeclaration","scope":618,"src":"1474:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":610,"name":"uint32","nodeType":"ElementaryTypeName","src":"1474:6:3","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":613,"mutability":"mutable","name":"_sender","nameLocation":"1498:7:3","nodeType":"VariableDeclaration","scope":618,"src":"1490:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":612,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1490:7:3","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1454:52:3"},"returnParameters":{"id":617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":616,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":618,"src":"1530:6:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":615,"name":"uint64","nodeType":"ElementaryTypeName","src":"1530:6:3","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1529:8:3"},"scope":619,"src":"1429:109:3","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":620,"src":"59:1481:3","usedErrors":[],"usedEvents":[495,507,519]}],"src":"33:1508:3"},"id":3},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol","exportedSymbols":{"IMessagingComposer":[705]},"id":706,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":621,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:4"},{"abstract":false,"baseContracts":[],"canonicalName":"IMessagingComposer","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":705,"linearizedBaseContracts":[705],"name":"IMessagingComposer","nameLocation":"69:18:4","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"eventSelector":"3d52ff888d033fd3dd1d8057da59e850c91d91a72c41dfa445b247dfedeb6dc1","id":633,"name":"ComposeSent","nameLocation":"100:11:4","nodeType":"EventDefinition","parameters":{"id":632,"nodeType":"ParameterList","parameters":[{"constant":false,"id":623,"indexed":false,"mutability":"mutable","name":"from","nameLocation":"120:4:4","nodeType":"VariableDeclaration","scope":633,"src":"112:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":622,"name":"address","nodeType":"ElementaryTypeName","src":"112:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":625,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"134:2:4","nodeType":"VariableDeclaration","scope":633,"src":"126:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":624,"name":"address","nodeType":"ElementaryTypeName","src":"126:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":627,"indexed":false,"mutability":"mutable","name":"guid","nameLocation":"146:4:4","nodeType":"VariableDeclaration","scope":633,"src":"138:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":626,"name":"bytes32","nodeType":"ElementaryTypeName","src":"138:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":629,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"159:5:4","nodeType":"VariableDeclaration","scope":633,"src":"152:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":628,"name":"uint16","nodeType":"ElementaryTypeName","src":"152:6:4","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":631,"indexed":false,"mutability":"mutable","name":"message","nameLocation":"172:7:4","nodeType":"VariableDeclaration","scope":633,"src":"166:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":630,"name":"bytes","nodeType":"ElementaryTypeName","src":"166:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"111:69:4"},"src":"94:87:4"},{"anonymous":false,"eventSelector":"0036c98efcf9e6641dfbc9051f66f405253e8e0c2ab4a24dccda15595b7378c8","id":643,"name":"ComposeDelivered","nameLocation":"192:16:4","nodeType":"EventDefinition","parameters":{"id":642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":635,"indexed":false,"mutability":"mutable","name":"from","nameLocation":"217:4:4","nodeType":"VariableDeclaration","scope":643,"src":"209:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":634,"name":"address","nodeType":"ElementaryTypeName","src":"209:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":637,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"231:2:4","nodeType":"VariableDeclaration","scope":643,"src":"223:10:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":636,"name":"address","nodeType":"ElementaryTypeName","src":"223:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":639,"indexed":false,"mutability":"mutable","name":"guid","nameLocation":"243:4:4","nodeType":"VariableDeclaration","scope":643,"src":"235:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":638,"name":"bytes32","nodeType":"ElementaryTypeName","src":"235:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":641,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"256:5:4","nodeType":"VariableDeclaration","scope":643,"src":"249:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":640,"name":"uint16","nodeType":"ElementaryTypeName","src":"249:6:4","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"208:54:4"},"src":"186:77:4"},{"anonymous":false,"eventSelector":"8a0b1dce321c5c5fb42349bce46d18087c04140de520917661fb923e44a904b9","id":665,"name":"LzComposeAlert","nameLocation":"274:14:4","nodeType":"EventDefinition","parameters":{"id":664,"nodeType":"ParameterList","parameters":[{"constant":false,"id":645,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"314:4:4","nodeType":"VariableDeclaration","scope":665,"src":"298:20:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":644,"name":"address","nodeType":"ElementaryTypeName","src":"298:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":647,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"344:2:4","nodeType":"VariableDeclaration","scope":665,"src":"328:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":646,"name":"address","nodeType":"ElementaryTypeName","src":"328:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":649,"indexed":true,"mutability":"mutable","name":"executor","nameLocation":"372:8:4","nodeType":"VariableDeclaration","scope":665,"src":"356:24:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":648,"name":"address","nodeType":"ElementaryTypeName","src":"356:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":651,"indexed":false,"mutability":"mutable","name":"guid","nameLocation":"398:4:4","nodeType":"VariableDeclaration","scope":665,"src":"390:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":650,"name":"bytes32","nodeType":"ElementaryTypeName","src":"390:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":653,"indexed":false,"mutability":"mutable","name":"index","nameLocation":"419:5:4","nodeType":"VariableDeclaration","scope":665,"src":"412:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":652,"name":"uint16","nodeType":"ElementaryTypeName","src":"412:6:4","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":655,"indexed":false,"mutability":"mutable","name":"gas","nameLocation":"442:3:4","nodeType":"VariableDeclaration","scope":665,"src":"434:11:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":654,"name":"uint256","nodeType":"ElementaryTypeName","src":"434:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":657,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"463:5:4","nodeType":"VariableDeclaration","scope":665,"src":"455:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":656,"name":"uint256","nodeType":"ElementaryTypeName","src":"455:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":659,"indexed":false,"mutability":"mutable","name":"message","nameLocation":"484:7:4","nodeType":"VariableDeclaration","scope":665,"src":"478:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":658,"name":"bytes","nodeType":"ElementaryTypeName","src":"478:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":661,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"507:9:4","nodeType":"VariableDeclaration","scope":665,"src":"501:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":660,"name":"bytes","nodeType":"ElementaryTypeName","src":"501:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":663,"indexed":false,"mutability":"mutable","name":"reason","nameLocation":"532:6:4","nodeType":"VariableDeclaration","scope":665,"src":"526:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":662,"name":"bytes","nodeType":"ElementaryTypeName","src":"526:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"288:256:4"},"src":"268:277:4"},{"functionSelector":"35d330b0","id":678,"implemented":false,"kind":"function","modifiers":[],"name":"composeQueue","nameLocation":"560:12:4","nodeType":"FunctionDefinition","parameters":{"id":674,"nodeType":"ParameterList","parameters":[{"constant":false,"id":667,"mutability":"mutable","name":"_from","nameLocation":"590:5:4","nodeType":"VariableDeclaration","scope":678,"src":"582:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":666,"name":"address","nodeType":"ElementaryTypeName","src":"582:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":669,"mutability":"mutable","name":"_to","nameLocation":"613:3:4","nodeType":"VariableDeclaration","scope":678,"src":"605:11:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":668,"name":"address","nodeType":"ElementaryTypeName","src":"605:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":671,"mutability":"mutable","name":"_guid","nameLocation":"634:5:4","nodeType":"VariableDeclaration","scope":678,"src":"626:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":670,"name":"bytes32","nodeType":"ElementaryTypeName","src":"626:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":673,"mutability":"mutable","name":"_index","nameLocation":"656:6:4","nodeType":"VariableDeclaration","scope":678,"src":"649:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":672,"name":"uint16","nodeType":"ElementaryTypeName","src":"649:6:4","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"572:96:4"},"returnParameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":676,"mutability":"mutable","name":"messageHash","nameLocation":"700:11:4","nodeType":"VariableDeclaration","scope":678,"src":"692:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":675,"name":"bytes32","nodeType":"ElementaryTypeName","src":"692:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"691:21:4"},"scope":705,"src":"551:162:4","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"7cb59012","id":689,"implemented":false,"kind":"function","modifiers":[],"name":"sendCompose","nameLocation":"728:11:4","nodeType":"FunctionDefinition","parameters":{"id":687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":680,"mutability":"mutable","name":"_to","nameLocation":"748:3:4","nodeType":"VariableDeclaration","scope":689,"src":"740:11:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":679,"name":"address","nodeType":"ElementaryTypeName","src":"740:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":682,"mutability":"mutable","name":"_guid","nameLocation":"761:5:4","nodeType":"VariableDeclaration","scope":689,"src":"753:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":681,"name":"bytes32","nodeType":"ElementaryTypeName","src":"753:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":684,"mutability":"mutable","name":"_index","nameLocation":"775:6:4","nodeType":"VariableDeclaration","scope":689,"src":"768:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":683,"name":"uint16","nodeType":"ElementaryTypeName","src":"768:6:4","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":686,"mutability":"mutable","name":"_message","nameLocation":"798:8:4","nodeType":"VariableDeclaration","scope":689,"src":"783:23:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":685,"name":"bytes","nodeType":"ElementaryTypeName","src":"783:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"739:68:4"},"returnParameters":{"id":688,"nodeType":"ParameterList","parameters":[],"src":"816:0:4"},"scope":705,"src":"719:98:4","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"91d20fa1","id":704,"implemented":false,"kind":"function","modifiers":[],"name":"lzCompose","nameLocation":"832:9:4","nodeType":"FunctionDefinition","parameters":{"id":702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":691,"mutability":"mutable","name":"_from","nameLocation":"859:5:4","nodeType":"VariableDeclaration","scope":704,"src":"851:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":690,"name":"address","nodeType":"ElementaryTypeName","src":"851:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":693,"mutability":"mutable","name":"_to","nameLocation":"882:3:4","nodeType":"VariableDeclaration","scope":704,"src":"874:11:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":692,"name":"address","nodeType":"ElementaryTypeName","src":"874:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":695,"mutability":"mutable","name":"_guid","nameLocation":"903:5:4","nodeType":"VariableDeclaration","scope":704,"src":"895:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":694,"name":"bytes32","nodeType":"ElementaryTypeName","src":"895:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":697,"mutability":"mutable","name":"_index","nameLocation":"925:6:4","nodeType":"VariableDeclaration","scope":704,"src":"918:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":696,"name":"uint16","nodeType":"ElementaryTypeName","src":"918:6:4","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":699,"mutability":"mutable","name":"_message","nameLocation":"956:8:4","nodeType":"VariableDeclaration","scope":704,"src":"941:23:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":698,"name":"bytes","nodeType":"ElementaryTypeName","src":"941:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":701,"mutability":"mutable","name":"_extraData","nameLocation":"989:10:4","nodeType":"VariableDeclaration","scope":704,"src":"974:25:4","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":700,"name":"bytes","nodeType":"ElementaryTypeName","src":"974:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"841:164:4"},"returnParameters":{"id":703,"nodeType":"ParameterList","parameters":[],"src":"1022:0:4"},"scope":705,"src":"823:200:4","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":706,"src":"59:966:4","usedErrors":[],"usedEvents":[633,643,665]}],"src":"33:993:4"},"id":4},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol":{"ast":{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol","exportedSymbols":{"IMessagingContext":[720]},"id":721,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":707,"literals":["solidity",">=","0.8",".0"],"nodeType":"PragmaDirective","src":"33:24:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IMessagingContext","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":720,"linearizedBaseContracts":[720],"name":"IMessagingContext","nameLocation":"69:17:5","nodeType":"ContractDefinition","nodes":[{"functionSelector":"79624ca9","id":712,"implemented":false,"kind":"function","modifiers":[],"name":"isSendingMessage","nameLocation":"102:16:5","nodeType":"FunctionDefinition","parameters":{"id":708,"nodeType":"ParameterList","parameters":[],"src":"118:2:5"},"returnParameters":{"id":711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":712,"src":"144:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":709,"name":"bool","nodeType":"ElementaryTypeName","src":"144:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"143:6:5"},"scope":720,"src":"93:57:5","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"14f651a9","id":719,"implemented":false,"kind":"function","modifiers":[],"name":"getSendContext","nameLocation":"165:14:5","nodeType":"FunctionDefinition","parameters":{"id":713,"nodeType":"ParameterList","parameters":[],"src":"179:2:5"},"returnParameters":{"id":718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":715,"mutability":"mutable","name":"dstEid","nameLocation":"212:6:5","nodeType":"VariableDeclaration","scope":719,"src":"205:13:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":714,"name":"uint32","nodeType":"ElementaryTypeName","src":"205:6:5","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":717,"mutability":"mutable","name":"sender","nameLocation":"228:6:5","nodeType":"VariableDeclaration","scope":719,"src":"220:14:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":716,"name":"address","nodeType":"ElementaryTypeName","src":"220:7:5","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"204:31:5"},"scope":720,"src":"156:80:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":721,"src":"59:179:5","usedErrors":[],"usedEvents":[]}],"src":"33:206:5"},"id":5},"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppCore.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppCore.sol","exportedSymbols":{"ILayerZeroEndpointV2":[202],"IOAppCore":[783]},"id":784,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":722,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:6"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","file":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","id":724,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":784,"sourceUnit":203,"src":"58:119:6","symbolAliases":[{"foreign":{"id":723,"name":"ILayerZeroEndpointV2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":202,"src":"67:20:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"IOAppCore","contractDependencies":[],"contractKind":"interface","documentation":{"id":725,"nodeType":"StructuredDocumentation","src":"179:27:6","text":" @title IOAppCore"},"fullyImplemented":false,"id":783,"linearizedBaseContracts":[783],"name":"IOAppCore","nameLocation":"217:9:6","nodeType":"ContractDefinition","nodes":[{"errorSelector":"c26bebcc","id":731,"name":"OnlyPeer","nameLocation":"268:8:6","nodeType":"ErrorDefinition","parameters":{"id":730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":727,"mutability":"mutable","name":"eid","nameLocation":"284:3:6","nodeType":"VariableDeclaration","scope":731,"src":"277:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":726,"name":"uint32","nodeType":"ElementaryTypeName","src":"277:6:6","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":729,"mutability":"mutable","name":"sender","nameLocation":"297:6:6","nodeType":"VariableDeclaration","scope":731,"src":"289:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":728,"name":"bytes32","nodeType":"ElementaryTypeName","src":"289:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"276:28:6"},"src":"262:43:6"},{"errorSelector":"f6ff4fb7","id":735,"name":"NoPeer","nameLocation":"316:6:6","nodeType":"ErrorDefinition","parameters":{"id":734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":733,"mutability":"mutable","name":"eid","nameLocation":"330:3:6","nodeType":"VariableDeclaration","scope":735,"src":"323:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":732,"name":"uint32","nodeType":"ElementaryTypeName","src":"323:6:6","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"322:12:6"},"src":"310:25:6"},{"errorSelector":"0fbdec0a","id":737,"name":"InvalidEndpointCall","nameLocation":"346:19:6","nodeType":"ErrorDefinition","parameters":{"id":736,"nodeType":"ParameterList","parameters":[],"src":"365:2:6"},"src":"340:28:6"},{"errorSelector":"b5863604","id":739,"name":"InvalidDelegate","nameLocation":"379:15:6","nodeType":"ErrorDefinition","parameters":{"id":738,"nodeType":"ParameterList","parameters":[],"src":"394:2:6"},"src":"373:24:6"},{"anonymous":false,"eventSelector":"238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b","id":745,"name":"PeerSet","nameLocation":"485:7:6","nodeType":"EventDefinition","parameters":{"id":744,"nodeType":"ParameterList","parameters":[{"constant":false,"id":741,"indexed":false,"mutability":"mutable","name":"eid","nameLocation":"500:3:6","nodeType":"VariableDeclaration","scope":745,"src":"493:10:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":740,"name":"uint32","nodeType":"ElementaryTypeName","src":"493:6:6","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":743,"indexed":false,"mutability":"mutable","name":"peer","nameLocation":"513:4:6","nodeType":"VariableDeclaration","scope":745,"src":"505:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":742,"name":"bytes32","nodeType":"ElementaryTypeName","src":"505:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"492:26:6"},"src":"479:40:6"},{"documentation":{"id":746,"nodeType":"StructuredDocumentation","src":"525:216:6","text":" @notice Retrieves the OApp version information.\n @return senderVersion The version of the OAppSender.sol contract.\n @return receiverVersion The version of the OAppReceiver.sol contract."},"functionSelector":"17442b70","id":753,"implemented":false,"kind":"function","modifiers":[],"name":"oAppVersion","nameLocation":"755:11:6","nodeType":"FunctionDefinition","parameters":{"id":747,"nodeType":"ParameterList","parameters":[],"src":"766:2:6"},"returnParameters":{"id":752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":749,"mutability":"mutable","name":"senderVersion","nameLocation":"799:13:6","nodeType":"VariableDeclaration","scope":753,"src":"792:20:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":748,"name":"uint64","nodeType":"ElementaryTypeName","src":"792:6:6","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":751,"mutability":"mutable","name":"receiverVersion","nameLocation":"821:15:6","nodeType":"VariableDeclaration","scope":753,"src":"814:22:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":750,"name":"uint64","nodeType":"ElementaryTypeName","src":"814:6:6","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"791:46:6"},"scope":783,"src":"746:92:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":754,"nodeType":"StructuredDocumentation","src":"844:150:6","text":" @notice Retrieves the LayerZero endpoint associated with the OApp.\n @return iEndpoint The LayerZero endpoint as an interface."},"functionSelector":"5e280f11","id":760,"implemented":false,"kind":"function","modifiers":[],"name":"endpoint","nameLocation":"1008:8:6","nodeType":"FunctionDefinition","parameters":{"id":755,"nodeType":"ParameterList","parameters":[],"src":"1016:2:6"},"returnParameters":{"id":759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":758,"mutability":"mutable","name":"iEndpoint","nameLocation":"1063:9:6","nodeType":"VariableDeclaration","scope":760,"src":"1042:30:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"},"typeName":{"id":757,"nodeType":"UserDefinedTypeName","pathNode":{"id":756,"name":"ILayerZeroEndpointV2","nameLocations":["1042:20:6"],"nodeType":"IdentifierPath","referencedDeclaration":202,"src":"1042:20:6"},"referencedDeclaration":202,"src":"1042:20:6","typeDescriptions":{"typeIdentifier":"t_contract$_ILayerZeroEndpointV2_$202","typeString":"contract ILayerZeroEndpointV2"}},"visibility":"internal"}],"src":"1041:32:6"},"scope":783,"src":"999:75:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":761,"nodeType":"StructuredDocumentation","src":"1080:227:6","text":" @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\n @param _eid The endpoint ID.\n @return peer The peer address (OApp instance) associated with the corresponding endpoint."},"functionSelector":"bb0b6a53","id":768,"implemented":false,"kind":"function","modifiers":[],"name":"peers","nameLocation":"1321:5:6","nodeType":"FunctionDefinition","parameters":{"id":764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":763,"mutability":"mutable","name":"_eid","nameLocation":"1334:4:6","nodeType":"VariableDeclaration","scope":768,"src":"1327:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":762,"name":"uint32","nodeType":"ElementaryTypeName","src":"1327:6:6","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1326:13:6"},"returnParameters":{"id":767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":766,"mutability":"mutable","name":"peer","nameLocation":"1371:4:6","nodeType":"VariableDeclaration","scope":768,"src":"1363:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":765,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1363:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1362:14:6"},"scope":783,"src":"1312:65:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":769,"nodeType":"StructuredDocumentation","src":"1383:224:6","text":" @notice Sets the peer address (OApp instance) for a corresponding endpoint.\n @param _eid The endpoint ID.\n @param _peer The address of the peer to be associated with the corresponding endpoint."},"functionSelector":"3400288b","id":776,"implemented":false,"kind":"function","modifiers":[],"name":"setPeer","nameLocation":"1621:7:6","nodeType":"FunctionDefinition","parameters":{"id":774,"nodeType":"ParameterList","parameters":[{"constant":false,"id":771,"mutability":"mutable","name":"_eid","nameLocation":"1636:4:6","nodeType":"VariableDeclaration","scope":776,"src":"1629:11:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":770,"name":"uint32","nodeType":"ElementaryTypeName","src":"1629:6:6","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":773,"mutability":"mutable","name":"_peer","nameLocation":"1650:5:6","nodeType":"VariableDeclaration","scope":776,"src":"1642:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":772,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1642:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1628:28:6"},"returnParameters":{"id":775,"nodeType":"ParameterList","parameters":[],"src":"1665:0:6"},"scope":783,"src":"1612:54:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":777,"nodeType":"StructuredDocumentation","src":"1672:134:6","text":" @notice Sets the delegate address for the OApp Core.\n @param _delegate The address of the delegate to be set."},"functionSelector":"ca5eb5e1","id":782,"implemented":false,"kind":"function","modifiers":[],"name":"setDelegate","nameLocation":"1820:11:6","nodeType":"FunctionDefinition","parameters":{"id":780,"nodeType":"ParameterList","parameters":[{"constant":false,"id":779,"mutability":"mutable","name":"_delegate","nameLocation":"1840:9:6","nodeType":"VariableDeclaration","scope":782,"src":"1832:17:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":778,"name":"address","nodeType":"ElementaryTypeName","src":"1832:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1831:19:6"},"returnParameters":{"id":781,"nodeType":"ParameterList","parameters":[],"src":"1859:0:6"},"scope":783,"src":"1811:49:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":784,"src":"207:1655:6","usedErrors":[731,735,737,739],"usedEvents":[745]}],"src":"32:1831:6"},"id":6},"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol","exportedSymbols":{"IOAppCore":[783],"IOAppExtended":[803],"IOAppMsgInspection":[824],"IOAppOptionsType3":[878],"IOAppReceiver":[899]},"id":804,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":785,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:7"},{"absolutePath":"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppCore.sol","file":"./IOAppCore.sol","id":787,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":804,"sourceUnit":784,"src":"58:44:7","symbolAliases":[{"foreign":{"id":786,"name":"IOAppCore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"67:9:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppMsgInspection.sol","file":"./IOAppMsgInspection.sol","id":789,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":804,"sourceUnit":825,"src":"103:62:7","symbolAliases":[{"foreign":{"id":788,"name":"IOAppMsgInspection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":824,"src":"112:18:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppOptionsType3.sol","file":"./IOAppOptionsType3.sol","id":791,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":804,"sourceUnit":879,"src":"166:60:7","symbolAliases":[{"foreign":{"id":790,"name":"IOAppOptionsType3","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":878,"src":"175:17:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppReceiver.sol","file":"./IOAppReceiver.sol","id":793,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":804,"sourceUnit":900,"src":"227:52:7","symbolAliases":[{"foreign":{"id":792,"name":"IOAppReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":899,"src":"236:13:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":795,"name":"IOAppReceiver","nameLocations":["664:13:7"],"nodeType":"IdentifierPath","referencedDeclaration":899,"src":"664:13:7"},"id":796,"nodeType":"InheritanceSpecifier","src":"664:13:7"},{"baseName":{"id":797,"name":"IOAppCore","nameLocations":["679:9:7"],"nodeType":"IdentifierPath","referencedDeclaration":783,"src":"679:9:7"},"id":798,"nodeType":"InheritanceSpecifier","src":"679:9:7"},{"baseName":{"id":799,"name":"IOAppOptionsType3","nameLocations":["690:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":878,"src":"690:17:7"},"id":800,"nodeType":"InheritanceSpecifier","src":"690:17:7"},{"baseName":{"id":801,"name":"IOAppMsgInspection","nameLocations":["709:18:7"],"nodeType":"IdentifierPath","referencedDeclaration":824,"src":"709:18:7"},"id":802,"nodeType":"InheritanceSpecifier","src":"709:18:7"}],"canonicalName":"IOAppExtended","contractDependencies":[],"contractKind":"interface","documentation":{"id":794,"nodeType":"StructuredDocumentation","src":"281:355:7","text":" @title IOAppExtended\n @author LayerZero Labs (@TRileySchwarz, tinom.eth)\n @custom:version 1.0.0\n @notice Aggregate interface for extended OApp contracts.\n @dev `IOAppReceiver` must precede `IOAppCore` for C3 linearization compatibility with `OApp`,\n where `OAppReceiver`'s linearization places `IOAppReceiver` before `IOAppCore`."},"fullyImplemented":false,"id":803,"linearizedBaseContracts":[803,824,878,783,899,238],"name":"IOAppExtended","nameLocation":"647:13:7","nodeType":"ContractDefinition","nodes":[],"scope":804,"src":"637:93:7","usedErrors":[731,735,737,739,840],"usedEvents":[745,811,847]}],"src":"32:699:7"},"id":7},"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppMsgInspection.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppMsgInspection.sol","exportedSymbols":{"IOAppMsgInspection":[824]},"id":825,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":805,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:8"},{"abstract":false,"baseContracts":[],"canonicalName":"IOAppMsgInspection","contractDependencies":[],"contractKind":"interface","documentation":{"id":806,"nodeType":"StructuredDocumentation","src":"58:174:8","text":" @title IOAppMsgInspection\n @author LayerZero Labs (@TRileySchwarz, tinom.eth)\n @custom:version 1.0.0\n @notice Interface for the `OAppMsgInspection` contract."},"fullyImplemented":false,"id":824,"linearizedBaseContracts":[824],"name":"IOAppMsgInspection","nameLocation":"243:18:8","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":807,"nodeType":"StructuredDocumentation","src":"268:135:8","text":" @notice Emitted when a new message inspector is set.\n @param msgInspector Address of the new message inspector"},"eventSelector":"f0be4f1e87349231d80c36b33f9e8639658eeaf474014dee15a3e6a4d4414197","id":811,"name":"MsgInspectorSet","nameLocation":"414:15:8","nodeType":"EventDefinition","parameters":{"id":810,"nodeType":"ParameterList","parameters":[{"constant":false,"id":809,"indexed":false,"mutability":"mutable","name":"msgInspector","nameLocation":"438:12:8","nodeType":"VariableDeclaration","scope":811,"src":"430:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":808,"name":"address","nodeType":"ElementaryTypeName","src":"430:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"429:22:8"},"src":"408:44:8"},{"documentation":{"id":812,"nodeType":"StructuredDocumentation","src":"458:125:8","text":" @notice Retrieves the message inspector address.\n @return inspector Address of the message inspector"},"functionSelector":"111ecdad","id":817,"implemented":false,"kind":"function","modifiers":[],"name":"msgInspector","nameLocation":"597:12:8","nodeType":"FunctionDefinition","parameters":{"id":813,"nodeType":"ParameterList","parameters":[],"src":"609:2:8"},"returnParameters":{"id":816,"nodeType":"ParameterList","parameters":[{"constant":false,"id":815,"mutability":"mutable","name":"inspector","nameLocation":"643:9:8","nodeType":"VariableDeclaration","scope":817,"src":"635:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":814,"name":"address","nodeType":"ElementaryTypeName","src":"635:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"634:19:8"},"scope":824,"src":"588:66:8","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":818,"nodeType":"StructuredDocumentation","src":"660:127:8","text":" @notice Sets the message inspector address.\n @param _msgInspector Address of the new message inspector"},"functionSelector":"6fc1b31e","id":823,"implemented":false,"kind":"function","modifiers":[],"name":"setMsgInspector","nameLocation":"801:15:8","nodeType":"FunctionDefinition","parameters":{"id":821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":820,"mutability":"mutable","name":"_msgInspector","nameLocation":"825:13:8","nodeType":"VariableDeclaration","scope":823,"src":"817:21:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":819,"name":"address","nodeType":"ElementaryTypeName","src":"817:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"816:23:8"},"returnParameters":{"id":822,"nodeType":"ParameterList","parameters":[],"src":"848:0:8"},"scope":824,"src":"792:57:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":825,"src":"233:618:8","usedErrors":[],"usedEvents":[811]}],"src":"32:820:8"},"id":8},"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppOptionsType3.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppOptionsType3.sol","exportedSymbols":{"IOAppOptionsType3":[878]},"id":879,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":826,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:9"},{"abstract":false,"baseContracts":[],"canonicalName":"IOAppOptionsType3","contractDependencies":[],"contractKind":"interface","documentation":{"id":827,"nodeType":"StructuredDocumentation","src":"58:145:9","text":" @title IOAppOptionsType3\n @author LayerZero Labs\n @custom:version 1.0.0\n @notice Interface for the `IOAppOptionsType3` contract."},"fullyImplemented":false,"id":878,"linearizedBaseContracts":[878],"name":"IOAppOptionsType3","nameLocation":"214:17:9","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IOAppOptionsType3.EnforcedOptionParam","documentation":{"id":828,"nodeType":"StructuredDocumentation","src":"238:185:9","text":" @notice Struct representing enforced option parameters.\n @param eid Endpoint ID\n @param msgType OApp message type\n @param options Additional options"},"id":835,"members":[{"constant":false,"id":830,"mutability":"mutable","name":"eid","nameLocation":"472:3:9","nodeType":"VariableDeclaration","scope":835,"src":"465:10:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":829,"name":"uint32","nodeType":"ElementaryTypeName","src":"465:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":832,"mutability":"mutable","name":"msgType","nameLocation":"492:7:9","nodeType":"VariableDeclaration","scope":835,"src":"485:14:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":831,"name":"uint16","nodeType":"ElementaryTypeName","src":"485:6:9","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":834,"mutability":"mutable","name":"options","nameLocation":"515:7:9","nodeType":"VariableDeclaration","scope":835,"src":"509:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":833,"name":"bytes","nodeType":"ElementaryTypeName","src":"509:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"EnforcedOptionParam","nameLocation":"435:19:9","nodeType":"StructDefinition","scope":878,"src":"428:101:9","visibility":"public"},{"documentation":{"id":836,"nodeType":"StructuredDocumentation","src":"535:106:9","text":" @notice Thrown when invalid options are provided.\n @param options Invalid options"},"errorSelector":"9a6d49cd","id":840,"name":"InvalidOptions","nameLocation":"652:14:9","nodeType":"ErrorDefinition","parameters":{"id":839,"nodeType":"ParameterList","parameters":[{"constant":false,"id":838,"mutability":"mutable","name":"options","nameLocation":"673:7:9","nodeType":"VariableDeclaration","scope":840,"src":"667:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":837,"name":"bytes","nodeType":"ElementaryTypeName","src":"667:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"666:15:9"},"src":"646:36:9"},{"anonymous":false,"documentation":{"id":841,"nodeType":"StructuredDocumentation","src":"688:122:9","text":" @notice Emitted when enforced options are set.\n @param _enforcedOptions Array of enforced options"},"eventSelector":"be4864a8e820971c0247f5992e2da559595f7bf076a21cb5928d443d2a13b674","id":847,"name":"EnforcedOptionSet","nameLocation":"821:17:9","nodeType":"EventDefinition","parameters":{"id":846,"nodeType":"ParameterList","parameters":[{"constant":false,"id":845,"indexed":false,"mutability":"mutable","name":"_enforcedOptions","nameLocation":"861:16:9","nodeType":"VariableDeclaration","scope":847,"src":"839:38:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$835_memory_ptr_$dyn_memory_ptr","typeString":"struct IOAppOptionsType3.EnforcedOptionParam[]"},"typeName":{"baseType":{"id":843,"nodeType":"UserDefinedTypeName","pathNode":{"id":842,"name":"EnforcedOptionParam","nameLocations":["839:19:9"],"nodeType":"IdentifierPath","referencedDeclaration":835,"src":"839:19:9"},"referencedDeclaration":835,"src":"839:19:9","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$835_storage_ptr","typeString":"struct IOAppOptionsType3.EnforcedOptionParam"}},"id":844,"nodeType":"ArrayTypeName","src":"839:21:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$835_storage_$dyn_storage_ptr","typeString":"struct IOAppOptionsType3.EnforcedOptionParam[]"}},"visibility":"internal"}],"src":"838:40:9"},"src":"815:64:9"},{"documentation":{"id":848,"nodeType":"StructuredDocumentation","src":"885:228:9","text":" @notice Returns the enforced options for a given endpoint ID and message type.\n @param _eid Endpoint ID\n @param _msgType Message type, as defined by the OApp\n @return options Enforced options"},"functionSelector":"5535d461","id":857,"implemented":false,"kind":"function","modifiers":[],"name":"enforcedOptions","nameLocation":"1127:15:9","nodeType":"FunctionDefinition","parameters":{"id":853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":850,"mutability":"mutable","name":"_eid","nameLocation":"1150:4:9","nodeType":"VariableDeclaration","scope":857,"src":"1143:11:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":849,"name":"uint32","nodeType":"ElementaryTypeName","src":"1143:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":852,"mutability":"mutable","name":"_msgType","nameLocation":"1163:8:9","nodeType":"VariableDeclaration","scope":857,"src":"1156:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":851,"name":"uint16","nodeType":"ElementaryTypeName","src":"1156:6:9","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1142:30:9"},"returnParameters":{"id":856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":855,"mutability":"mutable","name":"options","nameLocation":"1209:7:9","nodeType":"VariableDeclaration","scope":857,"src":"1196:20:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":854,"name":"bytes","nodeType":"ElementaryTypeName","src":"1196:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1195:22:9"},"scope":878,"src":"1118:100:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":858,"nodeType":"StructuredDocumentation","src":"1224:325:9","text":" @notice Combines options for a given endpoint and message type.\n @param _eid Endpoint ID\n @param _msgType Message type, as defined by the OApp\n @param _extraOptions Additional options passed by the caller\n @return options Combination of caller specified options AND enforced options"},"functionSelector":"bc70b354","id":869,"implemented":false,"kind":"function","modifiers":[],"name":"combineOptions","nameLocation":"1563:14:9","nodeType":"FunctionDefinition","parameters":{"id":865,"nodeType":"ParameterList","parameters":[{"constant":false,"id":860,"mutability":"mutable","name":"_eid","nameLocation":"1594:4:9","nodeType":"VariableDeclaration","scope":869,"src":"1587:11:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":859,"name":"uint32","nodeType":"ElementaryTypeName","src":"1587:6:9","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":862,"mutability":"mutable","name":"_msgType","nameLocation":"1615:8:9","nodeType":"VariableDeclaration","scope":869,"src":"1608:15:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":861,"name":"uint16","nodeType":"ElementaryTypeName","src":"1608:6:9","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":864,"mutability":"mutable","name":"_extraOptions","nameLocation":"1648:13:9","nodeType":"VariableDeclaration","scope":869,"src":"1633:28:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":863,"name":"bytes","nodeType":"ElementaryTypeName","src":"1633:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1577:90:9"},"returnParameters":{"id":868,"nodeType":"ParameterList","parameters":[{"constant":false,"id":867,"mutability":"mutable","name":"options","nameLocation":"1704:7:9","nodeType":"VariableDeclaration","scope":869,"src":"1691:20:9","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":866,"name":"bytes","nodeType":"ElementaryTypeName","src":"1691:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1690:22:9"},"scope":878,"src":"1554:159:9","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":870,"nodeType":"StructuredDocumentation","src":"1719:628:9","text":" @notice Sets enforced options for specific endpoint and message type combinations.\n @dev Provides a way for the OApp to enforce things like paying for minimum destination `lzReceive` gas amounts.\n @dev These enforced options can vary as the potential options/execution on the remote may differ as per the\n `msgType`. E.g., the amount of `lzReceive` gas necessary to deliver a `lzCompose` message adds overhead you\n don't want to pay if you are only sending a standard message such as `lzReceive` WITHOUT `sendCompose`.\n @param _enforcedOptions Array of enforced options"},"functionSelector":"b98bd070","id":877,"implemented":false,"kind":"function","modifiers":[],"name":"setEnforcedOptions","nameLocation":"2361:18:9","nodeType":"FunctionDefinition","parameters":{"id":875,"nodeType":"ParameterList","parameters":[{"constant":false,"id":874,"mutability":"mutable","name":"_enforcedOptions","nameLocation":"2411:16:9","nodeType":"VariableDeclaration","scope":877,"src":"2380:47:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$835_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IOAppOptionsType3.EnforcedOptionParam[]"},"typeName":{"baseType":{"id":872,"nodeType":"UserDefinedTypeName","pathNode":{"id":871,"name":"EnforcedOptionParam","nameLocations":["2380:19:9"],"nodeType":"IdentifierPath","referencedDeclaration":835,"src":"2380:19:9"},"referencedDeclaration":835,"src":"2380:19:9","typeDescriptions":{"typeIdentifier":"t_struct$_EnforcedOptionParam_$835_storage_ptr","typeString":"struct IOAppOptionsType3.EnforcedOptionParam"}},"id":873,"nodeType":"ArrayTypeName","src":"2380:21:9","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_EnforcedOptionParam_$835_storage_$dyn_storage_ptr","typeString":"struct IOAppOptionsType3.EnforcedOptionParam[]"}},"visibility":"internal"}],"src":"2379:49:9"},"returnParameters":{"id":876,"nodeType":"ParameterList","parameters":[],"src":"2437:0:9"},"scope":878,"src":"2352:86:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":879,"src":"204:2236:9","usedErrors":[840],"usedEvents":[847]}],"src":"32:2409:9"},"id":9},"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppReceiver.sol":{"ast":{"absolutePath":"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppReceiver.sol","exportedSymbols":{"ILayerZeroReceiver":[238],"IOAppReceiver":[899],"Origin":[40]},"id":900,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":880,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:10"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol","file":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol","id":883,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":900,"sourceUnit":239,"src":"58:131:10","symbolAliases":[{"foreign":{"id":881,"name":"ILayerZeroReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":238,"src":"71:18:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":882,"name":"Origin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40,"src":"95:6:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":884,"name":"ILayerZeroReceiver","nameLocations":["218:18:10"],"nodeType":"IdentifierPath","referencedDeclaration":238,"src":"218:18:10"},"id":885,"nodeType":"InheritanceSpecifier","src":"218:18:10"}],"canonicalName":"IOAppReceiver","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":899,"linearizedBaseContracts":[899,238],"name":"IOAppReceiver","nameLocation":"201:13:10","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":886,"nodeType":"StructuredDocumentation","src":"243:670:10","text":" @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\n @param _origin The origin information containing the source endpoint and sender address.\n - srcEid: The source chain endpoint ID.\n - sender: The sender address on the src chain.\n - nonce: The nonce of the message.\n @param _message The lzReceive payload.\n @param _sender The sender address.\n @return isSender Is a valid sender.\n @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\n @dev The default sender IS the OAppReceiver implementer."},"functionSelector":"82413eac","id":898,"implemented":false,"kind":"function","modifiers":[],"name":"isComposeMsgSender","nameLocation":"927:18:10","nodeType":"FunctionDefinition","parameters":{"id":894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":889,"mutability":"mutable","name":"_origin","nameLocation":"971:7:10","nodeType":"VariableDeclaration","scope":898,"src":"955:23:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_calldata_ptr","typeString":"struct Origin"},"typeName":{"id":888,"nodeType":"UserDefinedTypeName","pathNode":{"id":887,"name":"Origin","nameLocations":["955:6:10"],"nodeType":"IdentifierPath","referencedDeclaration":40,"src":"955:6:10"},"referencedDeclaration":40,"src":"955:6:10","typeDescriptions":{"typeIdentifier":"t_struct$_Origin_$40_storage_ptr","typeString":"struct Origin"}},"visibility":"internal"},{"constant":false,"id":891,"mutability":"mutable","name":"_message","nameLocation":"1003:8:10","nodeType":"VariableDeclaration","scope":898,"src":"988:23:10","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":890,"name":"bytes","nodeType":"ElementaryTypeName","src":"988:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":893,"mutability":"mutable","name":"_sender","nameLocation":"1029:7:10","nodeType":"VariableDeclaration","scope":898,"src":"1021:15:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":892,"name":"address","nodeType":"ElementaryTypeName","src":"1021:7:10","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"945:97:10"},"returnParameters":{"id":897,"nodeType":"ParameterList","parameters":[{"constant":false,"id":896,"mutability":"mutable","name":"isSender","nameLocation":"1071:8:10","nodeType":"VariableDeclaration","scope":898,"src":"1066:13:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":895,"name":"bool","nodeType":"ElementaryTypeName","src":"1066:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1065:15:10"},"scope":899,"src":"918:163:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":900,"src":"191:892:10","usedErrors":[],"usedEvents":[]}],"src":"32:1052:10"},"id":10},"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol":{"ast":{"absolutePath":"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol","exportedSymbols":{"IFeeConfig":[979]},"id":980,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":901,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:11"},{"abstract":false,"baseContracts":[],"canonicalName":"IFeeConfig","contractDependencies":[],"contractKind":"interface","documentation":{"id":902,"nodeType":"StructuredDocumentation","src":"58:158:11","text":" @title IFeeConfig\n @author LayerZero Labs (@TRileySchwarz, tinom.eth)\n @custom:version 1.0.0\n @notice Interface for the `FeeConfig` contract."},"fullyImplemented":false,"id":979,"linearizedBaseContracts":[979],"name":"IFeeConfig","nameLocation":"227:10:11","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IFeeConfig.FeeConfig","documentation":{"id":903,"nodeType":"StructuredDocumentation","src":"244:173:11","text":" @notice Configuration for a fee.\n @param feeBps Fee basis points (BPS)\n @param enabled False to fallback to the default fee basis points (BPS)"},"id":908,"members":[{"constant":false,"id":905,"mutability":"mutable","name":"feeBps","nameLocation":"456:6:11","nodeType":"VariableDeclaration","scope":908,"src":"449:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":904,"name":"uint16","nodeType":"ElementaryTypeName","src":"449:6:11","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":907,"mutability":"mutable","name":"enabled","nameLocation":"477:7:11","nodeType":"VariableDeclaration","scope":908,"src":"472:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":906,"name":"bool","nodeType":"ElementaryTypeName","src":"472:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"FeeConfig","nameLocation":"429:9:11","nodeType":"StructDefinition","scope":979,"src":"422:69:11","visibility":"public"},{"anonymous":false,"documentation":{"id":909,"nodeType":"StructuredDocumentation","src":"497:250:11","text":" @notice Emitted when the fee basis points (BPS) are set for a specific destination ID.\n @param id Destination ID\n @param feeBps Fee basis points (BPS)\n @param enabled Whether the fee is enabled for the destination"},"eventSelector":"5826b2b24084f1fad88218d62ce10bfb67e1ee0f504d3774134adff3ac6f4397","id":917,"name":"FeeBpsSet","nameLocation":"758:9:11","nodeType":"EventDefinition","parameters":{"id":916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":911,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"776:2:11","nodeType":"VariableDeclaration","scope":917,"src":"768:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":910,"name":"uint256","nodeType":"ElementaryTypeName","src":"768:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":913,"indexed":false,"mutability":"mutable","name":"feeBps","nameLocation":"787:6:11","nodeType":"VariableDeclaration","scope":917,"src":"780:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":912,"name":"uint16","nodeType":"ElementaryTypeName","src":"780:6:11","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":915,"indexed":false,"mutability":"mutable","name":"enabled","nameLocation":"800:7:11","nodeType":"VariableDeclaration","scope":917,"src":"795:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":914,"name":"bool","nodeType":"ElementaryTypeName","src":"795:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"767:41:11"},"src":"752:57:11"},{"anonymous":false,"documentation":{"id":918,"nodeType":"StructuredDocumentation","src":"815:135:11","text":" @notice Emitted when the default fee basis points (BPS) are set.\n @param feeBps Default fee basis points (BPS)"},"eventSelector":"9283ddc0c2b59320e00b0ae4a992b110df098c38e3b6ea1d92fe7a6d3504be9b","id":922,"name":"DefaultFeeBpsSet","nameLocation":"961:16:11","nodeType":"EventDefinition","parameters":{"id":921,"nodeType":"ParameterList","parameters":[{"constant":false,"id":920,"indexed":false,"mutability":"mutable","name":"feeBps","nameLocation":"985:6:11","nodeType":"VariableDeclaration","scope":922,"src":"978:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":919,"name":"uint16","nodeType":"ElementaryTypeName","src":"978:6:11","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"977:15:11"},"src":"955:38:11"},{"documentation":{"id":923,"nodeType":"StructuredDocumentation","src":"999:130:11","text":" @notice Thrown when the fee basis points (BPS) are invalid.\n @param feeBps Invalid fee basis points (BPS)"},"errorSelector":"57094aae","id":927,"name":"InvalidBps","nameLocation":"1140:10:11","nodeType":"ErrorDefinition","parameters":{"id":926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":925,"mutability":"mutable","name":"feeBps","nameLocation":"1158:6:11","nodeType":"VariableDeclaration","scope":927,"src":"1151:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":924,"name":"uint16","nodeType":"ElementaryTypeName","src":"1151:6:11","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"1150:15:11"},"src":"1134:32:11"},{"documentation":{"id":928,"nodeType":"StructuredDocumentation","src":"1172:194:11","text":" @notice Retrieves the fee for a destination ID and amount.\n @param _id Destination ID\n @param _amount Amount to calculate the fee for\n @return fee Fee amount"},"functionSelector":"d250185c","id":937,"implemented":false,"kind":"function","modifiers":[],"name":"getFee","nameLocation":"1380:6:11","nodeType":"FunctionDefinition","parameters":{"id":933,"nodeType":"ParameterList","parameters":[{"constant":false,"id":930,"mutability":"mutable","name":"_id","nameLocation":"1395:3:11","nodeType":"VariableDeclaration","scope":937,"src":"1387:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":929,"name":"uint256","nodeType":"ElementaryTypeName","src":"1387:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":932,"mutability":"mutable","name":"_amount","nameLocation":"1408:7:11","nodeType":"VariableDeclaration","scope":937,"src":"1400:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":931,"name":"uint256","nodeType":"ElementaryTypeName","src":"1400:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1386:30:11"},"returnParameters":{"id":936,"nodeType":"ParameterList","parameters":[{"constant":false,"id":935,"mutability":"mutable","name":"fee","nameLocation":"1448:3:11","nodeType":"VariableDeclaration","scope":937,"src":"1440:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":934,"name":"uint256","nodeType":"ElementaryTypeName","src":"1440:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1439:13:11"},"scope":979,"src":"1371:82:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":938,"nodeType":"StructuredDocumentation","src":"1459:246:11","text":" @notice Retrieves the pre-fee amount required to yield a given post-fee amount.\n @param _id Destination ID\n @param _amountAfterFee Desired amount after fees\n @return amountBeforeFee Required amount before fees"},"functionSelector":"62e9ad7c","id":947,"implemented":false,"kind":"function","modifiers":[],"name":"getAmountBeforeFee","nameLocation":"1719:18:11","nodeType":"FunctionDefinition","parameters":{"id":943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":940,"mutability":"mutable","name":"_id","nameLocation":"1746:3:11","nodeType":"VariableDeclaration","scope":947,"src":"1738:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":939,"name":"uint256","nodeType":"ElementaryTypeName","src":"1738:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":942,"mutability":"mutable","name":"_amountAfterFee","nameLocation":"1759:15:11","nodeType":"VariableDeclaration","scope":947,"src":"1751:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":941,"name":"uint256","nodeType":"ElementaryTypeName","src":"1751:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1737:38:11"},"returnParameters":{"id":946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":945,"mutability":"mutable","name":"amountBeforeFee","nameLocation":"1807:15:11","nodeType":"VariableDeclaration","scope":947,"src":"1799:23:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":944,"name":"uint256","nodeType":"ElementaryTypeName","src":"1799:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1798:25:11"},"scope":979,"src":"1710:114:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":948,"nodeType":"StructuredDocumentation","src":"1830:170:11","text":" @notice Retrieves default fee basis points (BPS) used if no fee is configured for the destination ID.\n @return fee Default fee basis points (BPS)"},"functionSelector":"bcae25a4","id":953,"implemented":false,"kind":"function","modifiers":[],"name":"defaultFeeBps","nameLocation":"2014:13:11","nodeType":"FunctionDefinition","parameters":{"id":949,"nodeType":"ParameterList","parameters":[],"src":"2027:2:11"},"returnParameters":{"id":952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":951,"mutability":"mutable","name":"fee","nameLocation":"2060:3:11","nodeType":"VariableDeclaration","scope":953,"src":"2053:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":950,"name":"uint16","nodeType":"ElementaryTypeName","src":"2053:6:11","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"2052:12:11"},"scope":979,"src":"2005:60:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":954,"nodeType":"StructuredDocumentation","src":"2071:164:11","text":" @notice Retrieves the configured fee for a given ID.\n @param _id Destination ID\n @return config Configured fee for the destination ID"},"functionSelector":"a060cc21","id":962,"implemented":false,"kind":"function","modifiers":[],"name":"feeBps","nameLocation":"2249:6:11","nodeType":"FunctionDefinition","parameters":{"id":957,"nodeType":"ParameterList","parameters":[{"constant":false,"id":956,"mutability":"mutable","name":"_id","nameLocation":"2264:3:11","nodeType":"VariableDeclaration","scope":962,"src":"2256:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":955,"name":"uint256","nodeType":"ElementaryTypeName","src":"2256:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2255:13:11"},"returnParameters":{"id":961,"nodeType":"ParameterList","parameters":[{"constant":false,"id":960,"mutability":"mutable","name":"config","nameLocation":"2309:6:11","nodeType":"VariableDeclaration","scope":962,"src":"2292:23:11","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_FeeConfig_$908_memory_ptr","typeString":"struct IFeeConfig.FeeConfig"},"typeName":{"id":959,"nodeType":"UserDefinedTypeName","pathNode":{"id":958,"name":"FeeConfig","nameLocations":["2292:9:11"],"nodeType":"IdentifierPath","referencedDeclaration":908,"src":"2292:9:11"},"referencedDeclaration":908,"src":"2292:9:11","typeDescriptions":{"typeIdentifier":"t_struct$_FeeConfig_$908_storage_ptr","typeString":"struct IFeeConfig.FeeConfig"}},"visibility":"internal"}],"src":"2291:25:11"},"scope":979,"src":"2240:77:11","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":963,"nodeType":"StructuredDocumentation","src":"2323:144:11","text":" @notice Set the default fee basis points (BPS) for all destinations.\n @param _feeBps New default fee basis points (BPS)"},"functionSelector":"4488b652","id":968,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultFeeBps","nameLocation":"2481:16:11","nodeType":"FunctionDefinition","parameters":{"id":966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":965,"mutability":"mutable","name":"_feeBps","nameLocation":"2505:7:11","nodeType":"VariableDeclaration","scope":968,"src":"2498:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":964,"name":"uint16","nodeType":"ElementaryTypeName","src":"2498:6:11","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"2497:16:11"},"returnParameters":{"id":967,"nodeType":"ParameterList","parameters":[],"src":"2522:0:11"},"scope":979,"src":"2472:51:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":969,"nodeType":"StructuredDocumentation","src":"2529:232:11","text":" @notice Sets the fee basis points for a specific destination ID.\n @param _id Destination ID\n @param _feeBps Fee basis points to set\n @param _enabled Whether the fee is enabled for the destination"},"functionSelector":"49aa4b6a","id":978,"implemented":false,"kind":"function","modifiers":[],"name":"setFeeBps","nameLocation":"2775:9:11","nodeType":"FunctionDefinition","parameters":{"id":976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":971,"mutability":"mutable","name":"_id","nameLocation":"2793:3:11","nodeType":"VariableDeclaration","scope":978,"src":"2785:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":970,"name":"uint256","nodeType":"ElementaryTypeName","src":"2785:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":973,"mutability":"mutable","name":"_feeBps","nameLocation":"2805:7:11","nodeType":"VariableDeclaration","scope":978,"src":"2798:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":972,"name":"uint16","nodeType":"ElementaryTypeName","src":"2798:6:11","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"},{"constant":false,"id":975,"mutability":"mutable","name":"_enabled","nameLocation":"2819:8:11","nodeType":"VariableDeclaration","scope":978,"src":"2814:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":974,"name":"bool","nodeType":"ElementaryTypeName","src":"2814:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2784:44:11"},"returnParameters":{"id":977,"nodeType":"ParameterList","parameters":[],"src":"2837:0:11"},"scope":979,"src":"2766:72:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":980,"src":"217:2623:11","usedErrors":[927],"usedEvents":[917,922]}],"src":"32:2809:11"},"id":11},"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol":{"ast":{"absolutePath":"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol","exportedSymbols":{"IFeeHandler":[1003]},"id":1004,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":981,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IFeeHandler","contractDependencies":[],"contractKind":"interface","documentation":{"id":982,"nodeType":"StructuredDocumentation","src":"58:144:12","text":" @title IFeeHandler\n @author LayerZero Labs (tinom.eth)\n @custom:version 1.0.0\n @notice Interface for the `FeeHandler` contract."},"fullyImplemented":false,"id":1003,"linearizedBaseContracts":[1003],"name":"IFeeHandler","nameLocation":"213:11:12","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":983,"nodeType":"StructuredDocumentation","src":"231:74:12","text":" @notice Thrown when the fee deposit address is invalid."},"errorSelector":"5de3e819","id":985,"name":"InvalidFeeDeposit","nameLocation":"316:17:12","nodeType":"ErrorDefinition","parameters":{"id":984,"nodeType":"ParameterList","parameters":[],"src":"333:2:12"},"src":"310:26:12"},{"anonymous":false,"documentation":{"id":986,"nodeType":"StructuredDocumentation","src":"342:116:12","text":" @notice Emitted when the fee deposit is updated.\n @param feeDeposit New fee deposit address"},"eventSelector":"ca5710aed74d38f7623029fce099440a03cc2a5dd153b476448b24120caedc12","id":990,"name":"FeeDepositSet","nameLocation":"469:13:12","nodeType":"EventDefinition","parameters":{"id":989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":988,"indexed":true,"mutability":"mutable","name":"feeDeposit","nameLocation":"499:10:12","nodeType":"VariableDeclaration","scope":990,"src":"483:26:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":987,"name":"address","nodeType":"ElementaryTypeName","src":"483:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"482:28:12"},"src":"463:48:12"},{"documentation":{"id":991,"nodeType":"StructuredDocumentation","src":"517:141:12","text":" @notice Returns the address to which fees are forwarded.\n @return deposit Address that will receive any accrued fees"},"functionSelector":"abca7290","id":996,"implemented":false,"kind":"function","modifiers":[],"name":"feeDeposit","nameLocation":"672:10:12","nodeType":"FunctionDefinition","parameters":{"id":992,"nodeType":"ParameterList","parameters":[],"src":"682:2:12"},"returnParameters":{"id":995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":994,"mutability":"mutable","name":"deposit","nameLocation":"716:7:12","nodeType":"VariableDeclaration","scope":996,"src":"708:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":993,"name":"address","nodeType":"ElementaryTypeName","src":"708:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"707:17:12"},"scope":1003,"src":"663:62:12","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":997,"nodeType":"StructuredDocumentation","src":"731:125:12","text":" @notice Sets the fee deposit address.\n @param _feeDeposit Address that will receive any accrued fees"},"functionSelector":"7a883d6e","id":1002,"implemented":false,"kind":"function","modifiers":[],"name":"setFeeDeposit","nameLocation":"870:13:12","nodeType":"FunctionDefinition","parameters":{"id":1000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":999,"mutability":"mutable","name":"_feeDeposit","nameLocation":"892:11:12","nodeType":"VariableDeclaration","scope":1002,"src":"884:19:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":998,"name":"address","nodeType":"ElementaryTypeName","src":"884:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"883:21:12"},"returnParameters":{"id":1001,"nodeType":"ParameterList","parameters":[],"src":"913:0:12"},"scope":1003,"src":"861:53:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1004,"src":"203:713:12","usedErrors":[985],"usedEvents":[990]}],"src":"32:885:12"},"id":12},"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol":{"ast":{"absolutePath":"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol","exportedSymbols":{"IPauseByID":[1082]},"id":1083,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1005,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:13"},{"abstract":false,"baseContracts":[],"canonicalName":"IPauseByID","contractDependencies":[],"contractKind":"interface","documentation":{"id":1006,"nodeType":"StructuredDocumentation","src":"58:142:13","text":" @title IPauseByID\n @author LayerZero Labs (tinom.eth)\n @custom:version 1.0.0\n @notice Interface for the `PauseByID` contract."},"fullyImplemented":false,"id":1082,"linearizedBaseContracts":[1082],"name":"IPauseByID","nameLocation":"211:10:13","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IPauseByID.PauseConfig","documentation":{"id":1007,"nodeType":"StructuredDocumentation","src":"228:192:13","text":" @notice Configuration for a pause setting.\n @param paused Whether transfers are paused for this ID\n @param enabled False to fallback to the default pause setting"},"id":1012,"members":[{"constant":false,"id":1009,"mutability":"mutable","name":"paused","nameLocation":"459:6:13","nodeType":"VariableDeclaration","scope":1012,"src":"454:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1008,"name":"bool","nodeType":"ElementaryTypeName","src":"454:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1011,"mutability":"mutable","name":"enabled","nameLocation":"480:7:13","nodeType":"VariableDeclaration","scope":1012,"src":"475:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1010,"name":"bool","nodeType":"ElementaryTypeName","src":"475:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"PauseConfig","nameLocation":"432:11:13","nodeType":"StructDefinition","scope":1082,"src":"425:69:13","visibility":"public"},{"canonicalName":"IPauseByID.SetPausedParam","documentation":{"id":1013,"nodeType":"StructuredDocumentation","src":"500:233:13","text":" @notice Parameter for setting pause state.\n @param id Destination ID\n @param paused Whether transfers are paused for this ID\n @param enabled Whether the pause config is enabled for the destination"},"id":1020,"members":[{"constant":false,"id":1015,"mutability":"mutable","name":"id","nameLocation":"778:2:13","nodeType":"VariableDeclaration","scope":1020,"src":"770:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1014,"name":"uint256","nodeType":"ElementaryTypeName","src":"770:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1017,"mutability":"mutable","name":"paused","nameLocation":"795:6:13","nodeType":"VariableDeclaration","scope":1020,"src":"790:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1016,"name":"bool","nodeType":"ElementaryTypeName","src":"790:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1019,"mutability":"mutable","name":"enabled","nameLocation":"816:7:13","nodeType":"VariableDeclaration","scope":1020,"src":"811:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1018,"name":"bool","nodeType":"ElementaryTypeName","src":"811:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"SetPausedParam","nameLocation":"745:14:13","nodeType":"StructDefinition","scope":1082,"src":"738:92:13","visibility":"public"},{"anonymous":false,"documentation":{"id":1021,"nodeType":"StructuredDocumentation","src":"836:266:13","text":" @notice Emitted when the pause status is set for a specific destination ID.\n @param id Destination ID\n @param paused Whether transfers are paused for this ID\n @param enabled Whether the pause config is enabled for the destination"},"eventSelector":"685aeb96b26b8711bf0462018ff83ba28e70ca35ab0dddee6d51d9f2b24e5d34","id":1029,"name":"PauseSet","nameLocation":"1113:8:13","nodeType":"EventDefinition","parameters":{"id":1028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1023,"indexed":false,"mutability":"mutable","name":"id","nameLocation":"1130:2:13","nodeType":"VariableDeclaration","scope":1029,"src":"1122:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1022,"name":"uint256","nodeType":"ElementaryTypeName","src":"1122:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1025,"indexed":false,"mutability":"mutable","name":"paused","nameLocation":"1139:6:13","nodeType":"VariableDeclaration","scope":1029,"src":"1134:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1024,"name":"bool","nodeType":"ElementaryTypeName","src":"1134:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1027,"indexed":false,"mutability":"mutable","name":"enabled","nameLocation":"1152:7:13","nodeType":"VariableDeclaration","scope":1029,"src":"1147:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1026,"name":"bool","nodeType":"ElementaryTypeName","src":"1147:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1121:39:13"},"src":"1107:54:13"},{"anonymous":false,"documentation":{"id":1030,"nodeType":"StructuredDocumentation","src":"1167:114:13","text":" @notice Emitted when the default pause status is set.\n @param paused Default pause status"},"eventSelector":"13bf75cd7f57b3e96454c5fd8e2acc14794db0d78c85856a61b82afa7c0ee597","id":1034,"name":"DefaultPauseSet","nameLocation":"1292:15:13","nodeType":"EventDefinition","parameters":{"id":1033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1032,"indexed":false,"mutability":"mutable","name":"paused","nameLocation":"1313:6:13","nodeType":"VariableDeclaration","scope":1034,"src":"1308:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1031,"name":"bool","nodeType":"ElementaryTypeName","src":"1308:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1307:13:13"},"src":"1286:35:13"},{"documentation":{"id":1035,"nodeType":"StructuredDocumentation","src":"1327:122:13","text":" @notice Thrown when attempting to transfer while paused.\n @param id Destination ID that is paused"},"errorSelector":"32fb7c98","id":1039,"name":"Paused","nameLocation":"1460:6:13","nodeType":"ErrorDefinition","parameters":{"id":1038,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1037,"mutability":"mutable","name":"id","nameLocation":"1475:2:13","nodeType":"VariableDeclaration","scope":1039,"src":"1467:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1036,"name":"uint256","nodeType":"ElementaryTypeName","src":"1467:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1466:12:13"},"src":"1454:25:13"},{"documentation":{"id":1040,"nodeType":"StructuredDocumentation","src":"1485:137:13","text":" @notice Thrown when setting pause state is idempotent (no change).\n @param isPaused Whether transfers are paused"},"errorSelector":"1318eb8f","id":1044,"name":"PauseStateIdempotent","nameLocation":"1633:20:13","nodeType":"ErrorDefinition","parameters":{"id":1043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1042,"mutability":"mutable","name":"isPaused","nameLocation":"1659:8:13","nodeType":"VariableDeclaration","scope":1044,"src":"1654:13:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1041,"name":"bool","nodeType":"ElementaryTypeName","src":"1654:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1653:15:13"},"src":"1627:42:13"},{"documentation":{"id":1045,"nodeType":"StructuredDocumentation","src":"1675:162:13","text":" @notice Checks if transfers to a destination ID are paused.\n @param _id Destination ID\n @return paused Whether transfers are paused"},"functionSelector":"bdf2a43c","id":1052,"implemented":false,"kind":"function","modifiers":[],"name":"isPaused","nameLocation":"1851:8:13","nodeType":"FunctionDefinition","parameters":{"id":1048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1047,"mutability":"mutable","name":"_id","nameLocation":"1868:3:13","nodeType":"VariableDeclaration","scope":1052,"src":"1860:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1046,"name":"uint256","nodeType":"ElementaryTypeName","src":"1860:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1859:13:13"},"returnParameters":{"id":1051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1050,"mutability":"mutable","name":"paused","nameLocation":"1901:6:13","nodeType":"VariableDeclaration","scope":1052,"src":"1896:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1049,"name":"bool","nodeType":"ElementaryTypeName","src":"1896:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1895:13:13"},"scope":1082,"src":"1842:67:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1053,"nodeType":"StructuredDocumentation","src":"1915:155:13","text":" @notice Retrieves default pause status used if no pause config is set for the destination ID.\n @return paused Default pause status"},"functionSelector":"13053500","id":1058,"implemented":false,"kind":"function","modifiers":[],"name":"defaultPaused","nameLocation":"2084:13:13","nodeType":"FunctionDefinition","parameters":{"id":1054,"nodeType":"ParameterList","parameters":[],"src":"2097:2:13"},"returnParameters":{"id":1057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1056,"mutability":"mutable","name":"paused","nameLocation":"2128:6:13","nodeType":"VariableDeclaration","scope":1058,"src":"2123:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1055,"name":"bool","nodeType":"ElementaryTypeName","src":"2123:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2122:13:13"},"scope":1082,"src":"2075:61:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1059,"nodeType":"StructuredDocumentation","src":"2142:184:13","text":" @notice Retrieves the configured pause setting for a given ID.\n @param _id Destination ID\n @return config Configured pause setting for the destination ID"},"functionSelector":"063de7ea","id":1067,"implemented":false,"kind":"function","modifiers":[],"name":"pauseConfig","nameLocation":"2340:11:13","nodeType":"FunctionDefinition","parameters":{"id":1062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1061,"mutability":"mutable","name":"_id","nameLocation":"2360:3:13","nodeType":"VariableDeclaration","scope":1067,"src":"2352:11:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1060,"name":"uint256","nodeType":"ElementaryTypeName","src":"2352:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2351:13:13"},"returnParameters":{"id":1066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1065,"mutability":"mutable","name":"config","nameLocation":"2407:6:13","nodeType":"VariableDeclaration","scope":1067,"src":"2388:25:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PauseConfig_$1012_memory_ptr","typeString":"struct IPauseByID.PauseConfig"},"typeName":{"id":1064,"nodeType":"UserDefinedTypeName","pathNode":{"id":1063,"name":"PauseConfig","nameLocations":["2388:11:13"],"nodeType":"IdentifierPath","referencedDeclaration":1012,"src":"2388:11:13"},"referencedDeclaration":1012,"src":"2388:11:13","typeDescriptions":{"typeIdentifier":"t_struct$_PauseConfig_$1012_storage_ptr","typeString":"struct IPauseByID.PauseConfig"}},"visibility":"internal"}],"src":"2387:27:13"},"scope":1082,"src":"2331:84:13","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1068,"nodeType":"StructuredDocumentation","src":"2421:124:13","text":" @notice Set the default pause status for all destinations.\n @param _paused New default pause status"},"functionSelector":"a6af01d7","id":1073,"implemented":false,"kind":"function","modifiers":[],"name":"setDefaultPaused","nameLocation":"2559:16:13","nodeType":"FunctionDefinition","parameters":{"id":1071,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1070,"mutability":"mutable","name":"_paused","nameLocation":"2581:7:13","nodeType":"VariableDeclaration","scope":1073,"src":"2576:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1069,"name":"bool","nodeType":"ElementaryTypeName","src":"2576:4:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2575:14:13"},"returnParameters":{"id":1072,"nodeType":"ParameterList","parameters":[],"src":"2598:0:13"},"scope":1082,"src":"2550:49:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1074,"nodeType":"StructuredDocumentation","src":"2605:133:13","text":" @notice Sets the pause status for an array of destination IDs.\n @param _params Array of pause configurations"},"functionSelector":"88c0a4ab","id":1081,"implemented":false,"kind":"function","modifiers":[],"name":"setPaused","nameLocation":"2752:9:13","nodeType":"FunctionDefinition","parameters":{"id":1079,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1078,"mutability":"mutable","name":"_params","nameLocation":"2788:7:13","nodeType":"VariableDeclaration","scope":1081,"src":"2762:33:13","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetPausedParam_$1020_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IPauseByID.SetPausedParam[]"},"typeName":{"baseType":{"id":1076,"nodeType":"UserDefinedTypeName","pathNode":{"id":1075,"name":"SetPausedParam","nameLocations":["2762:14:13"],"nodeType":"IdentifierPath","referencedDeclaration":1020,"src":"2762:14:13"},"referencedDeclaration":1020,"src":"2762:14:13","typeDescriptions":{"typeIdentifier":"t_struct$_SetPausedParam_$1020_storage_ptr","typeString":"struct IPauseByID.SetPausedParam"}},"id":1077,"nodeType":"ArrayTypeName","src":"2762:16:13","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetPausedParam_$1020_storage_$dyn_storage_ptr","typeString":"struct IPauseByID.SetPausedParam[]"}},"visibility":"internal"}],"src":"2761:35:13"},"returnParameters":{"id":1080,"nodeType":"ParameterList","parameters":[],"src":"2805:0:13"},"scope":1082,"src":"2743:63:13","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1083,"src":"201:2607:13","usedErrors":[1039,1044],"usedEvents":[1029,1034]}],"src":"32:2777:13"},"id":13},"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol":{"ast":{"absolutePath":"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol","exportedSymbols":{"IRateLimiter":[1289]},"id":1290,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1084,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:14"},{"abstract":false,"baseContracts":[],"canonicalName":"IRateLimiter","contractDependencies":[],"contractKind":"interface","documentation":{"id":1085,"nodeType":"StructuredDocumentation","src":"58:146:14","text":" @title IRateLimiter\n @author LayerZero Labs (tinom.eth)\n @custom:version 1.0.0\n @notice Interface for the `RateLimiter` contract."},"fullyImplemented":false,"id":1289,"linearizedBaseContracts":[1289],"name":"IRateLimiter","nameLocation":"215:12:14","nodeType":"ContractDefinition","nodes":[{"canonicalName":"IRateLimiter.RateLimitGlobalConfig","documentation":{"id":1086,"nodeType":"StructuredDocumentation","src":"234:251:14","text":" @notice Global configuration for the rate limiter.\n @param useGlobalState Whether to use global state for the rate limiter, instead of per-ID rules\n @param isGloballyDisabled Whether the rate limiter is globally disabled"},"id":1091,"members":[{"constant":false,"id":1088,"mutability":"mutable","name":"useGlobalState","nameLocation":"534:14:14","nodeType":"VariableDeclaration","scope":1091,"src":"529:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1087,"name":"bool","nodeType":"ElementaryTypeName","src":"529:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1090,"mutability":"mutable","name":"isGloballyDisabled","nameLocation":"563:18:14","nodeType":"VariableDeclaration","scope":1091,"src":"558:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1089,"name":"bool","nodeType":"ElementaryTypeName","src":"558:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"RateLimitGlobalConfig","nameLocation":"497:21:14","nodeType":"StructDefinition","scope":1289,"src":"490:98:14","visibility":"public"},{"canonicalName":"IRateLimiter.RateLimit","documentation":{"id":1092,"nodeType":"StructuredDocumentation","src":"594:554:14","text":" @notice Rate limit state for a given ID.\n @param outboundUsage Current usage of the outbound rate limit\n @param inboundUsage Current usage of the inbound rate limit\n @param lastUpdated Last updated timestamp\n @param configBitmap Bitmap of the rate limit configuration\n @param outboundLimit Limit of the outbound rate limit\n @param outboundWindow Window of the outbound rate limit\n @param inboundLimit Limit of the inbound rate limit\n @param inboundWindow Window of the inbound rate limit"},"id":1109,"members":[{"constant":false,"id":1094,"mutability":"mutable","name":"outboundUsage","nameLocation":"1187:13:14","nodeType":"VariableDeclaration","scope":1109,"src":"1180:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":1093,"name":"uint96","nodeType":"ElementaryTypeName","src":"1180:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":1096,"mutability":"mutable","name":"inboundUsage","nameLocation":"1217:12:14","nodeType":"VariableDeclaration","scope":1109,"src":"1210:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":1095,"name":"uint96","nodeType":"ElementaryTypeName","src":"1210:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":1098,"mutability":"mutable","name":"lastUpdated","nameLocation":"1246:11:14","nodeType":"VariableDeclaration","scope":1109,"src":"1239:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":1097,"name":"uint40","nodeType":"ElementaryTypeName","src":"1239:6:14","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"},{"constant":false,"id":1100,"mutability":"mutable","name":"configBitmap","nameLocation":"1274:12:14","nodeType":"VariableDeclaration","scope":1109,"src":"1267:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":1099,"name":"uint24","nodeType":"ElementaryTypeName","src":"1267:6:14","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"},{"constant":false,"id":1102,"mutability":"mutable","name":"outboundLimit","nameLocation":"1303:13:14","nodeType":"VariableDeclaration","scope":1109,"src":"1296:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":1101,"name":"uint96","nodeType":"ElementaryTypeName","src":"1296:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":1104,"mutability":"mutable","name":"outboundWindow","nameLocation":"1333:14:14","nodeType":"VariableDeclaration","scope":1109,"src":"1326:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1103,"name":"uint32","nodeType":"ElementaryTypeName","src":"1326:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1106,"mutability":"mutable","name":"inboundLimit","nameLocation":"1364:12:14","nodeType":"VariableDeclaration","scope":1109,"src":"1357:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":1105,"name":"uint96","nodeType":"ElementaryTypeName","src":"1357:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":1108,"mutability":"mutable","name":"inboundWindow","nameLocation":"1393:13:14","nodeType":"VariableDeclaration","scope":1109,"src":"1386:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1107,"name":"uint32","nodeType":"ElementaryTypeName","src":"1386:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"name":"RateLimit","nameLocation":"1160:9:14","nodeType":"StructDefinition","scope":1289,"src":"1153:260:14","visibility":"public"},{"canonicalName":"IRateLimiter.RateLimitConfig","documentation":{"id":1110,"nodeType":"StructuredDocumentation","src":"1419:666:14","text":" @notice Rate limit configuration.\n @param overrideDefaultConfig Whether to override the default configuration\n @param outboundEnabled Whether the outbound rate limit is enabled\n @param inboundEnabled Whether the inbound rate limit is enabled\n @param netAccountingEnabled Whether net accounting is enabled\n @param addressExemptionEnabled Whether address exemption is enabled\n @param outboundLimit Limit of the outbound rate limit\n @param inboundLimit Limit of the inbound rate limit\n @param outboundWindow Window of the outbound rate limit\n @param inboundWindow Window of the inbound rate limit"},"id":1129,"members":[{"constant":false,"id":1112,"mutability":"mutable","name":"overrideDefaultConfig","nameLocation":"2128:21:14","nodeType":"VariableDeclaration","scope":1129,"src":"2123:26:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1111,"name":"bool","nodeType":"ElementaryTypeName","src":"2123:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1114,"mutability":"mutable","name":"outboundEnabled","nameLocation":"2164:15:14","nodeType":"VariableDeclaration","scope":1129,"src":"2159:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1113,"name":"bool","nodeType":"ElementaryTypeName","src":"2159:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1116,"mutability":"mutable","name":"inboundEnabled","nameLocation":"2194:14:14","nodeType":"VariableDeclaration","scope":1129,"src":"2189:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1115,"name":"bool","nodeType":"ElementaryTypeName","src":"2189:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1118,"mutability":"mutable","name":"netAccountingEnabled","nameLocation":"2223:20:14","nodeType":"VariableDeclaration","scope":1129,"src":"2218:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1117,"name":"bool","nodeType":"ElementaryTypeName","src":"2218:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1120,"mutability":"mutable","name":"addressExemptionEnabled","nameLocation":"2258:23:14","nodeType":"VariableDeclaration","scope":1129,"src":"2253:28:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1119,"name":"bool","nodeType":"ElementaryTypeName","src":"2253:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1122,"mutability":"mutable","name":"outboundLimit","nameLocation":"2298:13:14","nodeType":"VariableDeclaration","scope":1129,"src":"2291:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":1121,"name":"uint96","nodeType":"ElementaryTypeName","src":"2291:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":1124,"mutability":"mutable","name":"inboundLimit","nameLocation":"2328:12:14","nodeType":"VariableDeclaration","scope":1129,"src":"2321:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":1123,"name":"uint96","nodeType":"ElementaryTypeName","src":"2321:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":1126,"mutability":"mutable","name":"outboundWindow","nameLocation":"2357:14:14","nodeType":"VariableDeclaration","scope":1129,"src":"2350:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1125,"name":"uint32","nodeType":"ElementaryTypeName","src":"2350:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1128,"mutability":"mutable","name":"inboundWindow","nameLocation":"2388:13:14","nodeType":"VariableDeclaration","scope":1129,"src":"2381:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1127,"name":"uint32","nodeType":"ElementaryTypeName","src":"2381:6:14","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"name":"RateLimitConfig","nameLocation":"2097:15:14","nodeType":"StructDefinition","scope":1289,"src":"2090:318:14","visibility":"public"},{"canonicalName":"IRateLimiter.SetRateLimitConfigParam","documentation":{"id":1130,"nodeType":"StructuredDocumentation","src":"2414:171:14","text":" @notice Parameters for setting a rate limit configuration.\n @param id ID of the rate limit configuration\n @param config Configuration to set"},"id":1136,"members":[{"constant":false,"id":1132,"mutability":"mutable","name":"id","nameLocation":"2639:2:14","nodeType":"VariableDeclaration","scope":1136,"src":"2631:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1131,"name":"uint256","nodeType":"ElementaryTypeName","src":"2631:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1135,"mutability":"mutable","name":"config","nameLocation":"2667:6:14","nodeType":"VariableDeclaration","scope":1136,"src":"2651:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimitConfig_$1129_storage_ptr","typeString":"struct IRateLimiter.RateLimitConfig"},"typeName":{"id":1134,"nodeType":"UserDefinedTypeName","pathNode":{"id":1133,"name":"RateLimitConfig","nameLocations":["2651:15:14"],"nodeType":"IdentifierPath","referencedDeclaration":1129,"src":"2651:15:14"},"referencedDeclaration":1129,"src":"2651:15:14","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimitConfig_$1129_storage_ptr","typeString":"struct IRateLimiter.RateLimitConfig"}},"visibility":"internal"}],"name":"SetRateLimitConfigParam","nameLocation":"2597:23:14","nodeType":"StructDefinition","scope":1289,"src":"2590:90:14","visibility":"public"},{"canonicalName":"IRateLimiter.RateLimitState","documentation":{"id":1137,"nodeType":"StructuredDocumentation","src":"2686:229:14","text":" @notice Rate limit state.\n @param outboundUsage Current usage of the outbound rate limit\n @param inboundUsage Current usage of the inbound rate limit\n @param lastUpdated Last updated timestamp"},"id":1144,"members":[{"constant":false,"id":1139,"mutability":"mutable","name":"outboundUsage","nameLocation":"2959:13:14","nodeType":"VariableDeclaration","scope":1144,"src":"2952:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":1138,"name":"uint96","nodeType":"ElementaryTypeName","src":"2952:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":1141,"mutability":"mutable","name":"inboundUsage","nameLocation":"2989:12:14","nodeType":"VariableDeclaration","scope":1144,"src":"2982:19:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":1140,"name":"uint96","nodeType":"ElementaryTypeName","src":"2982:6:14","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"},{"constant":false,"id":1143,"mutability":"mutable","name":"lastUpdated","nameLocation":"3018:11:14","nodeType":"VariableDeclaration","scope":1144,"src":"3011:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":1142,"name":"uint40","nodeType":"ElementaryTypeName","src":"3011:6:14","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"name":"RateLimitState","nameLocation":"2927:14:14","nodeType":"StructDefinition","scope":1289,"src":"2920:116:14","visibility":"public"},{"canonicalName":"IRateLimiter.SetRateLimitStateParam","documentation":{"id":1145,"nodeType":"StructuredDocumentation","src":"3042:146:14","text":" @notice Parameters for setting a rate limit state.\n @param id ID of the rate limit state\n @param state State to set"},"id":1151,"members":[{"constant":false,"id":1147,"mutability":"mutable","name":"id","nameLocation":"3241:2:14","nodeType":"VariableDeclaration","scope":1151,"src":"3233:10:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1146,"name":"uint256","nodeType":"ElementaryTypeName","src":"3233:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1150,"mutability":"mutable","name":"state","nameLocation":"3268:5:14","nodeType":"VariableDeclaration","scope":1151,"src":"3253:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimitState_$1144_storage_ptr","typeString":"struct IRateLimiter.RateLimitState"},"typeName":{"id":1149,"nodeType":"UserDefinedTypeName","pathNode":{"id":1148,"name":"RateLimitState","nameLocations":["3253:14:14"],"nodeType":"IdentifierPath","referencedDeclaration":1144,"src":"3253:14:14"},"referencedDeclaration":1144,"src":"3253:14:14","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimitState_$1144_storage_ptr","typeString":"struct IRateLimiter.RateLimitState"}},"visibility":"internal"}],"name":"SetRateLimitStateParam","nameLocation":"3200:22:14","nodeType":"StructDefinition","scope":1289,"src":"3193:87:14","visibility":"public"},{"canonicalName":"IRateLimiter.SetRateLimitAddressExemptionParam","documentation":{"id":1152,"nodeType":"StructuredDocumentation","src":"3286:199:14","text":" @notice Parameter for setting a rate limit address exemption.\n @param user Address of the user\n @param isExempt Whether the address should be exempt from the rate limit"},"id":1157,"members":[{"constant":false,"id":1154,"mutability":"mutable","name":"user","nameLocation":"3549:4:14","nodeType":"VariableDeclaration","scope":1157,"src":"3541:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1153,"name":"address","nodeType":"ElementaryTypeName","src":"3541:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1156,"mutability":"mutable","name":"isExempt","nameLocation":"3568:8:14","nodeType":"VariableDeclaration","scope":1157,"src":"3563:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1155,"name":"bool","nodeType":"ElementaryTypeName","src":"3563:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"SetRateLimitAddressExemptionParam","nameLocation":"3497:33:14","nodeType":"StructDefinition","scope":1289,"src":"3490:93:14","visibility":"public"},{"anonymous":false,"documentation":{"id":1158,"nodeType":"StructuredDocumentation","src":"3589:145:14","text":" @notice Emitted when the global rate limiter configuration is updated.\n @param globalConfig Updated global configuration"},"eventSelector":"d96960b22f7316ebd85a2d51152d6bd5ba890450ff8254df3a0c00563471c71a","id":1163,"name":"RateLimitGlobalConfigUpdated","nameLocation":"3745:28:14","nodeType":"EventDefinition","parameters":{"id":1162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1161,"indexed":false,"mutability":"mutable","name":"globalConfig","nameLocation":"3796:12:14","nodeType":"VariableDeclaration","scope":1163,"src":"3774:34:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimitGlobalConfig_$1091_memory_ptr","typeString":"struct IRateLimiter.RateLimitGlobalConfig"},"typeName":{"id":1160,"nodeType":"UserDefinedTypeName","pathNode":{"id":1159,"name":"RateLimitGlobalConfig","nameLocations":["3774:21:14"],"nodeType":"IdentifierPath","referencedDeclaration":1091,"src":"3774:21:14"},"referencedDeclaration":1091,"src":"3774:21:14","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimitGlobalConfig_$1091_storage_ptr","typeString":"struct IRateLimiter.RateLimitGlobalConfig"}},"visibility":"internal"}],"src":"3773:36:14"},"src":"3739:71:14"},{"anonymous":false,"documentation":{"id":1164,"nodeType":"StructuredDocumentation","src":"3816:203:14","text":" @notice Emitted when a rate limit configuration is updated.\n @param id ID of the rate limit configuration\n @param config Parameters for the updated rate limit configuration"},"eventSelector":"08755bf93547f7d594bbc7cabe7f484c50bc0e4ab361971a0c39b72850533370","id":1171,"name":"RateLimitConfigUpdated","nameLocation":"4030:22:14","nodeType":"EventDefinition","parameters":{"id":1170,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1166,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"4069:2:14","nodeType":"VariableDeclaration","scope":1171,"src":"4053:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1165,"name":"uint256","nodeType":"ElementaryTypeName","src":"4053:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1169,"indexed":false,"mutability":"mutable","name":"config","nameLocation":"4089:6:14","nodeType":"VariableDeclaration","scope":1171,"src":"4073:22:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimitConfig_$1129_memory_ptr","typeString":"struct IRateLimiter.RateLimitConfig"},"typeName":{"id":1168,"nodeType":"UserDefinedTypeName","pathNode":{"id":1167,"name":"RateLimitConfig","nameLocations":["4073:15:14"],"nodeType":"IdentifierPath","referencedDeclaration":1129,"src":"4073:15:14"},"referencedDeclaration":1129,"src":"4073:15:14","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimitConfig_$1129_storage_ptr","typeString":"struct IRateLimiter.RateLimitConfig"}},"visibility":"internal"}],"src":"4052:44:14"},"src":"4024:73:14"},{"anonymous":false,"documentation":{"id":1172,"nodeType":"StructuredDocumentation","src":"4103:178:14","text":" @notice Emitted when a rate limit state is updated.\n @param id ID of the rate limit state\n @param state Parameters for the updated rate limit state"},"eventSelector":"308bfde5784bbfa7019c5c9bd25bc6486acbc17af4b2980db2b7a8629a4b80ff","id":1179,"name":"RateLimitStateUpdated","nameLocation":"4292:21:14","nodeType":"EventDefinition","parameters":{"id":1178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1174,"indexed":true,"mutability":"mutable","name":"id","nameLocation":"4330:2:14","nodeType":"VariableDeclaration","scope":1179,"src":"4314:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1173,"name":"uint256","nodeType":"ElementaryTypeName","src":"4314:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1177,"indexed":false,"mutability":"mutable","name":"state","nameLocation":"4349:5:14","nodeType":"VariableDeclaration","scope":1179,"src":"4334:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimitState_$1144_memory_ptr","typeString":"struct IRateLimiter.RateLimitState"},"typeName":{"id":1176,"nodeType":"UserDefinedTypeName","pathNode":{"id":1175,"name":"RateLimitState","nameLocations":["4334:14:14"],"nodeType":"IdentifierPath","referencedDeclaration":1144,"src":"4334:14:14"},"referencedDeclaration":1144,"src":"4334:14:14","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimitState_$1144_storage_ptr","typeString":"struct IRateLimiter.RateLimitState"}},"visibility":"internal"}],"src":"4313:42:14"},"src":"4286:70:14"},{"anonymous":false,"documentation":{"id":1180,"nodeType":"StructuredDocumentation","src":"4362:174:14","text":" @notice Emitted when a rate limit address exemption is updated.\n @param user Address of the user\n @param isExempt Whether the address is exempt"},"eventSelector":"989b4ddf55738c9308f3192ec572af263f0d56ca081a2ddb1e70bd1eaa3d0aae","id":1186,"name":"RateLimitAddressExemptionUpdated","nameLocation":"4547:32:14","nodeType":"EventDefinition","parameters":{"id":1185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1182,"indexed":true,"mutability":"mutable","name":"user","nameLocation":"4596:4:14","nodeType":"VariableDeclaration","scope":1186,"src":"4580:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1181,"name":"address","nodeType":"ElementaryTypeName","src":"4580:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1184,"indexed":false,"mutability":"mutable","name":"isExempt","nameLocation":"4607:8:14","nodeType":"VariableDeclaration","scope":1186,"src":"4602:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1183,"name":"bool","nodeType":"ElementaryTypeName","src":"4602:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4579:37:14"},"src":"4541:76:14"},{"documentation":{"id":1187,"nodeType":"StructuredDocumentation","src":"4623:116:14","text":" @notice Thrown when the scaled decimals are invalid.\n @param scaledDecimals Scaled decimals"},"errorSelector":"90696670","id":1191,"name":"InvalidScaledDecimals","nameLocation":"4750:21:14","nodeType":"ErrorDefinition","parameters":{"id":1190,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1189,"mutability":"mutable","name":"scaledDecimals","nameLocation":"4778:14:14","nodeType":"VariableDeclaration","scope":1191,"src":"4772:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1188,"name":"uint8","nodeType":"ElementaryTypeName","src":"4772:5:14","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4771:22:14"},"src":"4744:50:14"},{"documentation":{"id":1192,"nodeType":"StructuredDocumentation","src":"4800:198:14","text":" @notice Thrown when a rate limit state is set to a timestamp in the future.\n @param lastUpdated Last updated timestamp\n @param currentTimestamp Current block timestamp"},"errorSelector":"047e564b","id":1198,"name":"LastUpdatedInFuture","nameLocation":"5009:19:14","nodeType":"ErrorDefinition","parameters":{"id":1197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1194,"mutability":"mutable","name":"lastUpdated","nameLocation":"5036:11:14","nodeType":"VariableDeclaration","scope":1198,"src":"5029:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":1193,"name":"uint40","nodeType":"ElementaryTypeName","src":"5029:6:14","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"},{"constant":false,"id":1196,"mutability":"mutable","name":"currentTimestamp","nameLocation":"5056:16:14","nodeType":"VariableDeclaration","scope":1198,"src":"5049:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":1195,"name":"uint40","nodeType":"ElementaryTypeName","src":"5049:6:14","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"5028:45:14"},"src":"5003:71:14"},{"documentation":{"id":1199,"nodeType":"StructuredDocumentation","src":"5080:178:14","text":" @notice Thrown when a rate limit is exceeded.\n @param availableAmount Remaining capacity of the rate limit\n @param requestedAmount Amount requested"},"errorSelector":"5f713586","id":1205,"name":"RateLimitExceeded","nameLocation":"5269:17:14","nodeType":"ErrorDefinition","parameters":{"id":1204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1201,"mutability":"mutable","name":"availableAmount","nameLocation":"5295:15:14","nodeType":"VariableDeclaration","scope":1205,"src":"5287:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1200,"name":"uint256","nodeType":"ElementaryTypeName","src":"5287:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1203,"mutability":"mutable","name":"requestedAmount","nameLocation":"5320:15:14","nodeType":"VariableDeclaration","scope":1205,"src":"5312:23:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1202,"name":"uint256","nodeType":"ElementaryTypeName","src":"5312:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5286:50:14"},"src":"5263:74:14"},{"documentation":{"id":1206,"nodeType":"StructuredDocumentation","src":"5343:186:14","text":" @notice Thrown when a user is already in the desired state (exempt or not exempt).\n @param user User address\n @param isExempt Whether the address is exempt"},"errorSelector":"898721c6","id":1212,"name":"ExemptionStateIdempotent","nameLocation":"5540:24:14","nodeType":"ErrorDefinition","parameters":{"id":1211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1208,"mutability":"mutable","name":"user","nameLocation":"5573:4:14","nodeType":"VariableDeclaration","scope":1212,"src":"5565:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1207,"name":"address","nodeType":"ElementaryTypeName","src":"5565:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1210,"mutability":"mutable","name":"isExempt","nameLocation":"5584:8:14","nodeType":"VariableDeclaration","scope":1212,"src":"5579:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1209,"name":"bool","nodeType":"ElementaryTypeName","src":"5579:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5564:29:14"},"src":"5534:60:14"},{"documentation":{"id":1213,"nodeType":"StructuredDocumentation","src":"5600:130:14","text":" @notice Returns the global configuration for the rate limiter.\n @return globalConfig Global configuration"},"functionSelector":"fe51ea41","id":1219,"implemented":false,"kind":"function","modifiers":[],"name":"getRateLimitGlobalConfig","nameLocation":"5744:24:14","nodeType":"FunctionDefinition","parameters":{"id":1214,"nodeType":"ParameterList","parameters":[],"src":"5768:2:14"},"returnParameters":{"id":1218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1217,"mutability":"mutable","name":"globalConfig","nameLocation":"5823:12:14","nodeType":"VariableDeclaration","scope":1219,"src":"5794:41:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimitGlobalConfig_$1091_memory_ptr","typeString":"struct IRateLimiter.RateLimitGlobalConfig"},"typeName":{"id":1216,"nodeType":"UserDefinedTypeName","pathNode":{"id":1215,"name":"RateLimitGlobalConfig","nameLocations":["5794:21:14"],"nodeType":"IdentifierPath","referencedDeclaration":1091,"src":"5794:21:14"},"referencedDeclaration":1091,"src":"5794:21:14","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimitGlobalConfig_$1091_storage_ptr","typeString":"struct IRateLimiter.RateLimitGlobalConfig"}},"visibility":"internal"}],"src":"5793:43:14"},"scope":1289,"src":"5735:102:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1220,"nodeType":"StructuredDocumentation","src":"5843:377:14","text":" @notice Returns the rate limit state and configuration for a given ID.\n @dev May return unscaled state if `SCALE_DECIMALS` is set, use `getRateLimitUsages` for scaled values.\n @dev Reads the rate limit state from storage without checking defaults.\n @param _id ID of the rate limit\n @return rateLimit Rate limit state and configuration"},"functionSelector":"840d2ec1","id":1228,"implemented":false,"kind":"function","modifiers":[],"name":"rateLimits","nameLocation":"6234:10:14","nodeType":"FunctionDefinition","parameters":{"id":1223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1222,"mutability":"mutable","name":"_id","nameLocation":"6253:3:14","nodeType":"VariableDeclaration","scope":1228,"src":"6245:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1221,"name":"uint256","nodeType":"ElementaryTypeName","src":"6245:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6244:13:14"},"returnParameters":{"id":1227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1226,"mutability":"mutable","name":"rateLimit","nameLocation":"6298:9:14","nodeType":"VariableDeclaration","scope":1228,"src":"6281:26:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimit_$1109_memory_ptr","typeString":"struct IRateLimiter.RateLimit"},"typeName":{"id":1225,"nodeType":"UserDefinedTypeName","pathNode":{"id":1224,"name":"RateLimit","nameLocations":["6281:9:14"],"nodeType":"IdentifierPath","referencedDeclaration":1109,"src":"6281:9:14"},"referencedDeclaration":1109,"src":"6281:9:14","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimit_$1109_storage_ptr","typeString":"struct IRateLimiter.RateLimit"}},"visibility":"internal"}],"src":"6280:28:14"},"scope":1289,"src":"6225:84:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1229,"nodeType":"StructuredDocumentation","src":"6315:175:14","text":" @notice Returns the address exemption status for a given user.\n @param _user Address of the user\n @return isExempt Whether the address is exempt"},"functionSelector":"e1cce134","id":1236,"implemented":false,"kind":"function","modifiers":[],"name":"isRateLimitAddressExempt","nameLocation":"6504:24:14","nodeType":"FunctionDefinition","parameters":{"id":1232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1231,"mutability":"mutable","name":"_user","nameLocation":"6537:5:14","nodeType":"VariableDeclaration","scope":1236,"src":"6529:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1230,"name":"address","nodeType":"ElementaryTypeName","src":"6529:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6528:15:14"},"returnParameters":{"id":1235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1234,"mutability":"mutable","name":"isExempt","nameLocation":"6572:8:14","nodeType":"VariableDeclaration","scope":1236,"src":"6567:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1233,"name":"bool","nodeType":"ElementaryTypeName","src":"6567:4:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6566:15:14"},"scope":1289,"src":"6495:87:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1237,"nodeType":"StructuredDocumentation","src":"6588:666:14","text":" @notice Calculates decayed usages and capacities for a rate limit.\n @dev Potentially scaled up by `SCALE_DECIMALS`.\n @dev Checks config and falls back to default if necessary.\n @dev If a rate limit is disabled in a given direction, the available amount is `type(uint256).max`.\n @param _id ID of the rate limit\n @return outboundUsage Scaled current usage of the outbound rate limit\n @return outboundAvailableAmount Scaled capacity of the outbound rate limit\n @return inboundUsage Scaled current usage of the inbound rate limit\n @return inboundAvailableAmount Scaled capacity of the inbound rate limit"},"functionSelector":"04ce2e3d","id":1250,"implemented":false,"kind":"function","modifiers":[],"name":"getRateLimitUsages","nameLocation":"7268:18:14","nodeType":"FunctionDefinition","parameters":{"id":1240,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1239,"mutability":"mutable","name":"_id","nameLocation":"7304:3:14","nodeType":"VariableDeclaration","scope":1250,"src":"7296:11:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1238,"name":"uint256","nodeType":"ElementaryTypeName","src":"7296:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7286:27:14"},"returnParameters":{"id":1249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1242,"mutability":"mutable","name":"outboundUsage","nameLocation":"7382:13:14","nodeType":"VariableDeclaration","scope":1250,"src":"7374:21:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1241,"name":"uint256","nodeType":"ElementaryTypeName","src":"7374:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1244,"mutability":"mutable","name":"outboundAvailableAmount","nameLocation":"7417:23:14","nodeType":"VariableDeclaration","scope":1250,"src":"7409:31:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1243,"name":"uint256","nodeType":"ElementaryTypeName","src":"7409:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1246,"mutability":"mutable","name":"inboundUsage","nameLocation":"7462:12:14","nodeType":"VariableDeclaration","scope":1250,"src":"7454:20:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1245,"name":"uint256","nodeType":"ElementaryTypeName","src":"7454:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1248,"mutability":"mutable","name":"inboundAvailableAmount","nameLocation":"7496:22:14","nodeType":"VariableDeclaration","scope":1250,"src":"7488:30:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1247,"name":"uint256","nodeType":"ElementaryTypeName","src":"7488:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7360:168:14"},"scope":1289,"src":"7259:270:14","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1251,"nodeType":"StructuredDocumentation","src":"7535:134:14","text":" @notice Sets the global configuration for the rate limiter.\n @param _globalConfig Global configuration to set"},"functionSelector":"d09b13e2","id":1257,"implemented":false,"kind":"function","modifiers":[],"name":"setRateLimitGlobalConfig","nameLocation":"7683:24:14","nodeType":"FunctionDefinition","parameters":{"id":1255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1254,"mutability":"mutable","name":"_globalConfig","nameLocation":"7737:13:14","nodeType":"VariableDeclaration","scope":1257,"src":"7708:42:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimitGlobalConfig_$1091_memory_ptr","typeString":"struct IRateLimiter.RateLimitGlobalConfig"},"typeName":{"id":1253,"nodeType":"UserDefinedTypeName","pathNode":{"id":1252,"name":"RateLimitGlobalConfig","nameLocations":["7708:21:14"],"nodeType":"IdentifierPath","referencedDeclaration":1091,"src":"7708:21:14"},"referencedDeclaration":1091,"src":"7708:21:14","typeDescriptions":{"typeIdentifier":"t_struct$_RateLimitGlobalConfig_$1091_storage_ptr","typeString":"struct IRateLimiter.RateLimitGlobalConfig"}},"visibility":"internal"}],"src":"7707:44:14"},"returnParameters":{"id":1256,"nodeType":"ParameterList","parameters":[],"src":"7760:0:14"},"scope":1289,"src":"7674:87:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1258,"nodeType":"StructuredDocumentation","src":"7767:322:14","text":" @notice Sets ID-specific configurations for the rate limiter.\n @dev Configurations must be significantly larger than windows to avoid precision loss when calculating decays.\n @dev It does not checkpoint rate limits for the configured IDs.\n @param _params Array of configurations to set"},"functionSelector":"ed01d8db","id":1265,"implemented":false,"kind":"function","modifiers":[],"name":"setRateLimitConfigs","nameLocation":"8103:19:14","nodeType":"FunctionDefinition","parameters":{"id":1263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1262,"mutability":"mutable","name":"_params","nameLocation":"8158:7:14","nodeType":"VariableDeclaration","scope":1265,"src":"8123:42:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetRateLimitConfigParam_$1136_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRateLimiter.SetRateLimitConfigParam[]"},"typeName":{"baseType":{"id":1260,"nodeType":"UserDefinedTypeName","pathNode":{"id":1259,"name":"SetRateLimitConfigParam","nameLocations":["8123:23:14"],"nodeType":"IdentifierPath","referencedDeclaration":1136,"src":"8123:23:14"},"referencedDeclaration":1136,"src":"8123:23:14","typeDescriptions":{"typeIdentifier":"t_struct$_SetRateLimitConfigParam_$1136_storage_ptr","typeString":"struct IRateLimiter.SetRateLimitConfigParam"}},"id":1261,"nodeType":"ArrayTypeName","src":"8123:25:14","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetRateLimitConfigParam_$1136_storage_$dyn_storage_ptr","typeString":"struct IRateLimiter.SetRateLimitConfigParam[]"}},"visibility":"internal"}],"src":"8122:44:14"},"returnParameters":{"id":1264,"nodeType":"ParameterList","parameters":[],"src":"8175:0:14"},"scope":1289,"src":"8094:82:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1266,"nodeType":"StructuredDocumentation","src":"8182:180:14","text":" @notice Sets ID-specific states for the rate limiter.\n @dev States cannot be set to a timestamp in the future.\n @param _params Array of states to set"},"functionSelector":"7b837f8e","id":1273,"implemented":false,"kind":"function","modifiers":[],"name":"setRateLimitStates","nameLocation":"8376:18:14","nodeType":"FunctionDefinition","parameters":{"id":1271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1270,"mutability":"mutable","name":"_params","nameLocation":"8429:7:14","nodeType":"VariableDeclaration","scope":1273,"src":"8395:41:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetRateLimitStateParam_$1151_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRateLimiter.SetRateLimitStateParam[]"},"typeName":{"baseType":{"id":1268,"nodeType":"UserDefinedTypeName","pathNode":{"id":1267,"name":"SetRateLimitStateParam","nameLocations":["8395:22:14"],"nodeType":"IdentifierPath","referencedDeclaration":1151,"src":"8395:22:14"},"referencedDeclaration":1151,"src":"8395:22:14","typeDescriptions":{"typeIdentifier":"t_struct$_SetRateLimitStateParam_$1151_storage_ptr","typeString":"struct IRateLimiter.SetRateLimitStateParam"}},"id":1269,"nodeType":"ArrayTypeName","src":"8395:24:14","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetRateLimitStateParam_$1151_storage_$dyn_storage_ptr","typeString":"struct IRateLimiter.SetRateLimitStateParam[]"}},"visibility":"internal"}],"src":"8394:43:14"},"returnParameters":{"id":1272,"nodeType":"ParameterList","parameters":[],"src":"8446:0:14"},"scope":1289,"src":"8367:80:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1274,"nodeType":"StructuredDocumentation","src":"8453:200:14","text":" @notice Sets address exemptions for the rate limiter.\n @dev Only in effect if `addressExemptionEnabled` is true for an ID.\n @param _exemptions Array of exemptions to set"},"functionSelector":"2e367874","id":1281,"implemented":false,"kind":"function","modifiers":[],"name":"setRateLimitAddressExemptions","nameLocation":"8667:29:14","nodeType":"FunctionDefinition","parameters":{"id":1279,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1278,"mutability":"mutable","name":"_exemptions","nameLocation":"8742:11:14","nodeType":"VariableDeclaration","scope":1281,"src":"8697:56:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetRateLimitAddressExemptionParam_$1157_calldata_ptr_$dyn_calldata_ptr","typeString":"struct IRateLimiter.SetRateLimitAddressExemptionParam[]"},"typeName":{"baseType":{"id":1276,"nodeType":"UserDefinedTypeName","pathNode":{"id":1275,"name":"SetRateLimitAddressExemptionParam","nameLocations":["8697:33:14"],"nodeType":"IdentifierPath","referencedDeclaration":1157,"src":"8697:33:14"},"referencedDeclaration":1157,"src":"8697:33:14","typeDescriptions":{"typeIdentifier":"t_struct$_SetRateLimitAddressExemptionParam_$1157_storage_ptr","typeString":"struct IRateLimiter.SetRateLimitAddressExemptionParam"}},"id":1277,"nodeType":"ArrayTypeName","src":"8697:35:14","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SetRateLimitAddressExemptionParam_$1157_storage_$dyn_storage_ptr","typeString":"struct IRateLimiter.SetRateLimitAddressExemptionParam[]"}},"visibility":"internal"}],"src":"8696:58:14"},"returnParameters":{"id":1280,"nodeType":"ParameterList","parameters":[],"src":"8763:0:14"},"scope":1289,"src":"8658:106:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1282,"nodeType":"StructuredDocumentation","src":"8770:429:14","text":" @notice Checkpoints rate limits for multiple IDs, updating decayed usages to storage.\n @dev Recommended to be called atomically before setting new limits or windows through `setRateLimitConfigs`, to\n avoid retroactively applying decays. Alternatively, `setRateLimitStates` can be called to explicitly set\n the desired usages.\n @param _ids Array of rate limit IDs to checkpoint"},"functionSelector":"7d9a5fe9","id":1288,"implemented":false,"kind":"function","modifiers":[],"name":"checkpointRateLimits","nameLocation":"9213:20:14","nodeType":"FunctionDefinition","parameters":{"id":1286,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1285,"mutability":"mutable","name":"_ids","nameLocation":"9253:4:14","nodeType":"VariableDeclaration","scope":1288,"src":"9234:23:14","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":1283,"name":"uint256","nodeType":"ElementaryTypeName","src":"9234:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1284,"nodeType":"ArrayTypeName","src":"9234:9:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"9233:25:14"},"returnParameters":{"id":1287,"nodeType":"ParameterList","parameters":[],"src":"9267:0:14"},"scope":1289,"src":"9204:64:14","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1290,"src":"205:9065:14","usedErrors":[1191,1198,1205,1212],"usedEvents":[1163,1171,1179,1186]}],"src":"32:9239:14"},"id":14},"contracts/interfaces/IOFT.sol":{"ast":{"absolutePath":"contracts/interfaces/IOFT.sol","exportedSymbols":{"IOFT":[1437],"MessagingFee":[33],"MessagingReceipt":[28],"OFTFeeDetail":[1328],"OFTLimit":[1316],"OFTReceipt":[1322],"SendParam":[1310]},"id":1438,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1291,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:15"},{"absolutePath":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","file":"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol","id":1294,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1438,"sourceUnit":203,"src":"58:137:15","symbolAliases":[{"foreign":{"id":1292,"name":"MessagingReceipt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":28,"src":"71:16:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":1293,"name":"MessagingFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":33,"src":"93:12:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"SendParam","documentation":{"id":1295,"nodeType":"StructuredDocumentation","src":"197:82:15","text":" @dev Struct representing token parameters for the OFT send() operation."},"id":1310,"members":[{"constant":false,"id":1297,"mutability":"mutable","name":"dstEid","nameLocation":"310:6:15","nodeType":"VariableDeclaration","scope":1310,"src":"303:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1296,"name":"uint32","nodeType":"ElementaryTypeName","src":"303:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1299,"mutability":"mutable","name":"to","nameLocation":"358:2:15","nodeType":"VariableDeclaration","scope":1310,"src":"350:10:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1298,"name":"bytes32","nodeType":"ElementaryTypeName","src":"350:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1301,"mutability":"mutable","name":"amountLD","nameLocation":"396:8:15","nodeType":"VariableDeclaration","scope":1310,"src":"388:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1300,"name":"uint256","nodeType":"ElementaryTypeName","src":"388:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1303,"mutability":"mutable","name":"minAmountLD","nameLocation":"455:11:15","nodeType":"VariableDeclaration","scope":1310,"src":"447:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1302,"name":"uint256","nodeType":"ElementaryTypeName","src":"447:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1305,"mutability":"mutable","name":"extraOptions","nameLocation":"523:12:15","nodeType":"VariableDeclaration","scope":1310,"src":"517:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1304,"name":"bytes","nodeType":"ElementaryTypeName","src":"517:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1307,"mutability":"mutable","name":"composeMsg","nameLocation":"629:10:15","nodeType":"VariableDeclaration","scope":1310,"src":"623:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1306,"name":"bytes","nodeType":"ElementaryTypeName","src":"623:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1309,"mutability":"mutable","name":"oftCmd","nameLocation":"701:6:15","nodeType":"VariableDeclaration","scope":1310,"src":"695:12:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1308,"name":"bytes","nodeType":"ElementaryTypeName","src":"695:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"SendParam","nameLocation":"287:9:15","nodeType":"StructDefinition","scope":1438,"src":"280:504:15","visibility":"public"},{"canonicalName":"OFTLimit","documentation":{"id":1311,"nodeType":"StructuredDocumentation","src":"786:147:15","text":" @dev Struct representing OFT limit information.\n @dev These amounts can change dynamically and are up the specific oft implementation."},"id":1316,"members":[{"constant":false,"id":1313,"mutability":"mutable","name":"minAmountLD","nameLocation":"964:11:15","nodeType":"VariableDeclaration","scope":1316,"src":"956:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1312,"name":"uint256","nodeType":"ElementaryTypeName","src":"956:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1315,"mutability":"mutable","name":"maxAmountLD","nameLocation":"1060:11:15","nodeType":"VariableDeclaration","scope":1316,"src":"1052:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1314,"name":"uint256","nodeType":"ElementaryTypeName","src":"1052:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"OFTLimit","nameLocation":"941:8:15","nodeType":"StructDefinition","scope":1438,"src":"934:211:15","visibility":"public"},{"canonicalName":"OFTReceipt","documentation":{"id":1317,"nodeType":"StructuredDocumentation","src":"1147:60:15","text":" @dev Struct representing OFT receipt information."},"id":1322,"members":[{"constant":false,"id":1319,"mutability":"mutable","name":"amountSentLD","nameLocation":"1240:12:15","nodeType":"VariableDeclaration","scope":1322,"src":"1232:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1318,"name":"uint256","nodeType":"ElementaryTypeName","src":"1232:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1321,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"1433:16:15","nodeType":"VariableDeclaration","scope":1322,"src":"1425:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1320,"name":"uint256","nodeType":"ElementaryTypeName","src":"1425:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"OFTReceipt","nameLocation":"1215:10:15","nodeType":"StructDefinition","scope":1438,"src":"1208:299:15","visibility":"public"},{"canonicalName":"OFTFeeDetail","documentation":{"id":1323,"nodeType":"StructuredDocumentation","src":"1509:154:15","text":" @dev Struct representing OFT fee details.\n @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI."},"id":1328,"members":[{"constant":false,"id":1325,"mutability":"mutable","name":"feeAmountLD","nameLocation":"1697:11:15","nodeType":"VariableDeclaration","scope":1328,"src":"1690:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1324,"name":"int256","nodeType":"ElementaryTypeName","src":"1690:6:15","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":1327,"mutability":"mutable","name":"description","nameLocation":"1761:11:15","nodeType":"VariableDeclaration","scope":1328,"src":"1754:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1326,"name":"string","nodeType":"ElementaryTypeName","src":"1754:6:15","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"OFTFeeDetail","nameLocation":"1671:12:15","nodeType":"StructDefinition","scope":1438,"src":"1664:138:15","visibility":"public"},{"abstract":false,"baseContracts":[],"canonicalName":"IOFT","contractDependencies":[],"contractKind":"interface","documentation":{"id":1329,"nodeType":"StructuredDocumentation","src":"1804:197:15","text":" @title IOFT\n @dev Interface for the OftChain (OFT) token.\n @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\n @dev This specific interface ID is '0x02e49c2c'."},"fullyImplemented":false,"id":1437,"linearizedBaseContracts":[1437],"name":"IOFT","nameLocation":"2012:4:15","nodeType":"ContractDefinition","nodes":[{"errorSelector":"1e9714b0","id":1331,"name":"InvalidLocalDecimals","nameLocation":"2058:20:15","nodeType":"ErrorDefinition","parameters":{"id":1330,"nodeType":"ParameterList","parameters":[],"src":"2078:2:15"},"src":"2052:29:15"},{"errorSelector":"71c4efed","id":1337,"name":"SlippageExceeded","nameLocation":"2092:16:15","nodeType":"ErrorDefinition","parameters":{"id":1336,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1333,"mutability":"mutable","name":"amountLD","nameLocation":"2117:8:15","nodeType":"VariableDeclaration","scope":1337,"src":"2109:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1332,"name":"uint256","nodeType":"ElementaryTypeName","src":"2109:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1335,"mutability":"mutable","name":"minAmountLD","nameLocation":"2135:11:15","nodeType":"VariableDeclaration","scope":1337,"src":"2127:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1334,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2108:39:15"},"src":"2086:62:15"},{"errorSelector":"e2ce9413","id":1341,"name":"AmountSDOverflowed","nameLocation":"2159:18:15","nodeType":"ErrorDefinition","parameters":{"id":1340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1339,"mutability":"mutable","name":"amountSD","nameLocation":"2186:8:15","nodeType":"VariableDeclaration","scope":1341,"src":"2178:16:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1338,"name":"uint256","nodeType":"ElementaryTypeName","src":"2178:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2177:18:15"},"src":"2153:43:15"},{"anonymous":false,"eventSelector":"85496b760a4b7f8d66384b9df21b381f5d1b1e79f229a47aaf4c232edc2fe59a","id":1353,"name":"OFTSent","nameLocation":"2222:7:15","nodeType":"EventDefinition","parameters":{"id":1352,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1343,"indexed":true,"mutability":"mutable","name":"guid","nameLocation":"2255:4:15","nodeType":"VariableDeclaration","scope":1353,"src":"2239:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1342,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2239:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1345,"indexed":false,"mutability":"mutable","name":"dstEid","nameLocation":"2304:6:15","nodeType":"VariableDeclaration","scope":1353,"src":"2297:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1344,"name":"uint32","nodeType":"ElementaryTypeName","src":"2297:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1347,"indexed":true,"mutability":"mutable","name":"fromAddress","nameLocation":"2364:11:15","nodeType":"VariableDeclaration","scope":1353,"src":"2348:27:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1346,"name":"address","nodeType":"ElementaryTypeName","src":"2348:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1349,"indexed":false,"mutability":"mutable","name":"amountSentLD","nameLocation":"2436:12:15","nodeType":"VariableDeclaration","scope":1353,"src":"2428:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1348,"name":"uint256","nodeType":"ElementaryTypeName","src":"2428:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1351,"indexed":false,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"2510:16:15","nodeType":"VariableDeclaration","scope":1353,"src":"2502:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1350,"name":"uint256","nodeType":"ElementaryTypeName","src":"2502:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2229:351:15"},"src":"2216:365:15"},{"anonymous":false,"eventSelector":"efed6d3500546b29533b128a29e3a94d70788727f0507505ac12eaf2e578fd9c","id":1363,"name":"OFTReceived","nameLocation":"2592:11:15","nodeType":"EventDefinition","parameters":{"id":1362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1355,"indexed":true,"mutability":"mutable","name":"guid","nameLocation":"2629:4:15","nodeType":"VariableDeclaration","scope":1363,"src":"2613:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1354,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2613:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1357,"indexed":false,"mutability":"mutable","name":"srcEid","nameLocation":"2678:6:15","nodeType":"VariableDeclaration","scope":1363,"src":"2671:13:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1356,"name":"uint32","nodeType":"ElementaryTypeName","src":"2671:6:15","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1359,"indexed":true,"mutability":"mutable","name":"toAddress","nameLocation":"2733:9:15","nodeType":"VariableDeclaration","scope":1363,"src":"2717:25:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1358,"name":"address","nodeType":"ElementaryTypeName","src":"2717:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1361,"indexed":false,"mutability":"mutable","name":"amountReceivedLD","nameLocation":"2806:16:15","nodeType":"VariableDeclaration","scope":1363,"src":"2798:24:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1360,"name":"uint256","nodeType":"ElementaryTypeName","src":"2798:7:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2603:273:15"},"src":"2586:291:15"},{"documentation":{"id":1364,"nodeType":"StructuredDocumentation","src":"2883:504:15","text":" @notice Retrieves interfaceID and the version of the OFT.\n @return interfaceId The interface ID.\n @return version The version.\n @dev interfaceId: This specific interface ID is '0x02e49c2c'.\n @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\n @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\n ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)"},"functionSelector":"156a0d0f","id":1371,"implemented":false,"kind":"function","modifiers":[],"name":"oftVersion","nameLocation":"3401:10:15","nodeType":"FunctionDefinition","parameters":{"id":1365,"nodeType":"ParameterList","parameters":[],"src":"3411:2:15"},"returnParameters":{"id":1370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1367,"mutability":"mutable","name":"interfaceId","nameLocation":"3444:11:15","nodeType":"VariableDeclaration","scope":1371,"src":"3437:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1366,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3437:6:15","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"},{"constant":false,"id":1369,"mutability":"mutable","name":"version","nameLocation":"3464:7:15","nodeType":"VariableDeclaration","scope":1371,"src":"3457:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1368,"name":"uint64","nodeType":"ElementaryTypeName","src":"3457:6:15","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3436:36:15"},"scope":1437,"src":"3392:81:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1372,"nodeType":"StructuredDocumentation","src":"3479:161:15","text":" @notice Retrieves the address of the token associated with the OFT.\n @return tokenAddress The address of the ERC20 token implementation."},"functionSelector":"fc0c546a","id":1377,"implemented":false,"kind":"function","modifiers":[],"name":"token","nameLocation":"3654:5:15","nodeType":"FunctionDefinition","parameters":{"id":1373,"nodeType":"ParameterList","parameters":[],"src":"3659:2:15"},"returnParameters":{"id":1376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1375,"mutability":"mutable","name":"tokenAddress","nameLocation":"3693:12:15","nodeType":"VariableDeclaration","scope":1377,"src":"3685:20:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1374,"name":"address","nodeType":"ElementaryTypeName","src":"3685:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3684:22:15"},"scope":1437,"src":"3645:62:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1378,"nodeType":"StructuredDocumentation","src":"3713:355:15","text":" @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\n @return requiresApproval Needs approval of the underlying token implementation.\n @dev Allows things like wallet implementers to determine integration requirements,\n without understanding the underlying token implementation."},"functionSelector":"9f68b964","id":1383,"implemented":false,"kind":"function","modifiers":[],"name":"approvalRequired","nameLocation":"4082:16:15","nodeType":"FunctionDefinition","parameters":{"id":1379,"nodeType":"ParameterList","parameters":[],"src":"4098:2:15"},"returnParameters":{"id":1382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1381,"mutability":"mutable","name":"requiresApproval","nameLocation":"4129:16:15","nodeType":"VariableDeclaration","scope":1383,"src":"4124:21:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1380,"name":"bool","nodeType":"ElementaryTypeName","src":"4124:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4123:23:15"},"scope":1437,"src":"4073:74:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1384,"nodeType":"StructuredDocumentation","src":"4153:118:15","text":" @notice Retrieves the shared decimals of the OFT.\n @return sd The shared decimals of the OFT."},"functionSelector":"857749b0","id":1389,"implemented":false,"kind":"function","modifiers":[],"name":"sharedDecimals","nameLocation":"4285:14:15","nodeType":"FunctionDefinition","parameters":{"id":1385,"nodeType":"ParameterList","parameters":[],"src":"4299:2:15"},"returnParameters":{"id":1388,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1387,"mutability":"mutable","name":"sd","nameLocation":"4331:2:15","nodeType":"VariableDeclaration","scope":1389,"src":"4325:8:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1386,"name":"uint8","nodeType":"ElementaryTypeName","src":"4325:5:15","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4324:10:15"},"scope":1437,"src":"4276:59:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1390,"nodeType":"StructuredDocumentation","src":"4341:345:15","text":" @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\n @param _sendParam The parameters for the send operation.\n @return oftLimit The OFT limit information.\n @return oftFeeDetails The details of OFT fees.\n @return oftReceipt The OFT receipt information."},"functionSelector":"0d35b415","id":1406,"implemented":false,"kind":"function","modifiers":[],"name":"quoteOFT","nameLocation":"4700:8:15","nodeType":"FunctionDefinition","parameters":{"id":1394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1393,"mutability":"mutable","name":"_sendParam","nameLocation":"4737:10:15","nodeType":"VariableDeclaration","scope":1406,"src":"4718:29:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$1310_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":1392,"nodeType":"UserDefinedTypeName","pathNode":{"id":1391,"name":"SendParam","nameLocations":["4718:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1310,"src":"4718:9:15"},"referencedDeclaration":1310,"src":"4718:9:15","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$1310_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"}],"src":"4708:45:15"},"returnParameters":{"id":1405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1397,"mutability":"mutable","name":"oftLimit","nameLocation":"4817:8:15","nodeType":"VariableDeclaration","scope":1406,"src":"4801:24:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$1316_memory_ptr","typeString":"struct OFTLimit"},"typeName":{"id":1396,"nodeType":"UserDefinedTypeName","pathNode":{"id":1395,"name":"OFTLimit","nameLocations":["4801:8:15"],"nodeType":"IdentifierPath","referencedDeclaration":1316,"src":"4801:8:15"},"referencedDeclaration":1316,"src":"4801:8:15","typeDescriptions":{"typeIdentifier":"t_struct$_OFTLimit_$1316_storage_ptr","typeString":"struct OFTLimit"}},"visibility":"internal"},{"constant":false,"id":1401,"mutability":"mutable","name":"oftFeeDetails","nameLocation":"4849:13:15","nodeType":"VariableDeclaration","scope":1406,"src":"4827:35:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$1328_memory_ptr_$dyn_memory_ptr","typeString":"struct OFTFeeDetail[]"},"typeName":{"baseType":{"id":1399,"nodeType":"UserDefinedTypeName","pathNode":{"id":1398,"name":"OFTFeeDetail","nameLocations":["4827:12:15"],"nodeType":"IdentifierPath","referencedDeclaration":1328,"src":"4827:12:15"},"referencedDeclaration":1328,"src":"4827:12:15","typeDescriptions":{"typeIdentifier":"t_struct$_OFTFeeDetail_$1328_storage_ptr","typeString":"struct OFTFeeDetail"}},"id":1400,"nodeType":"ArrayTypeName","src":"4827:14:15","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_OFTFeeDetail_$1328_storage_$dyn_storage_ptr","typeString":"struct OFTFeeDetail[]"}},"visibility":"internal"},{"constant":false,"id":1404,"mutability":"mutable","name":"oftReceipt","nameLocation":"4882:10:15","nodeType":"VariableDeclaration","scope":1406,"src":"4864:28:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$1322_memory_ptr","typeString":"struct OFTReceipt"},"typeName":{"id":1403,"nodeType":"UserDefinedTypeName","pathNode":{"id":1402,"name":"OFTReceipt","nameLocations":["4864:10:15"],"nodeType":"IdentifierPath","referencedDeclaration":1322,"src":"4864:10:15"},"referencedDeclaration":1322,"src":"4864:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$1322_storage_ptr","typeString":"struct OFTReceipt"}},"visibility":"internal"}],"src":"4800:93:15"},"scope":1437,"src":"4691:203:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1407,"nodeType":"StructuredDocumentation","src":"4900:440:15","text":" @notice Provides a quote for the send() operation.\n @param _sendParam The parameters for the send() operation.\n @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\n @return msgFee The calculated LayerZero messaging fee from the send() operation.\n @dev MessagingFee: LayerZero msg fee\n - nativeFee: The native fee.\n - lzTokenFee: The lzToken fee."},"functionSelector":"3b6f743b","id":1418,"implemented":false,"kind":"function","modifiers":[],"name":"quoteSend","nameLocation":"5354:9:15","nodeType":"FunctionDefinition","parameters":{"id":1413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1410,"mutability":"mutable","name":"_sendParam","nameLocation":"5392:10:15","nodeType":"VariableDeclaration","scope":1418,"src":"5373:29:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$1310_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":1409,"nodeType":"UserDefinedTypeName","pathNode":{"id":1408,"name":"SendParam","nameLocations":["5373:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1310,"src":"5373:9:15"},"referencedDeclaration":1310,"src":"5373:9:15","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$1310_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"},{"constant":false,"id":1412,"mutability":"mutable","name":"_payInLzToken","nameLocation":"5417:13:15","nodeType":"VariableDeclaration","scope":1418,"src":"5412:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1411,"name":"bool","nodeType":"ElementaryTypeName","src":"5412:4:15","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"5363:73:15"},"returnParameters":{"id":1417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1416,"mutability":"mutable","name":"msgFee","nameLocation":"5480:6:15","nodeType":"VariableDeclaration","scope":1418,"src":"5460:26:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_memory_ptr","typeString":"struct MessagingFee"},"typeName":{"id":1415,"nodeType":"UserDefinedTypeName","pathNode":{"id":1414,"name":"MessagingFee","nameLocations":["5460:12:15"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"5460:12:15"},"referencedDeclaration":33,"src":"5460:12:15","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"}],"src":"5459:28:15"},"scope":1437,"src":"5345:143:15","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1419,"nodeType":"StructuredDocumentation","src":"5494:730:15","text":" @notice Executes the send() operation.\n @param _sendParam The parameters for the send operation.\n @param _fee The fee information supplied by the caller.\n - nativeFee: The native fee.\n - lzTokenFee: The lzToken fee.\n @param _refundAddress The address to receive any excess funds from fees etc. on the src.\n @return msgReceipt The LayerZero messaging receipt from the send() operation.\n @return oftReceipt The OFT receipt information.\n @dev MessagingReceipt: LayerZero msg receipt\n - guid: The unique identifier for the sent message.\n - nonce: The nonce of the sent message.\n - fee: The LayerZero fee incurred for the message."},"functionSelector":"c7c7f5b3","id":1436,"implemented":false,"kind":"function","modifiers":[],"name":"send","nameLocation":"6238:4:15","nodeType":"FunctionDefinition","parameters":{"id":1428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1422,"mutability":"mutable","name":"_sendParam","nameLocation":"6271:10:15","nodeType":"VariableDeclaration","scope":1436,"src":"6252:29:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$1310_calldata_ptr","typeString":"struct SendParam"},"typeName":{"id":1421,"nodeType":"UserDefinedTypeName","pathNode":{"id":1420,"name":"SendParam","nameLocations":["6252:9:15"],"nodeType":"IdentifierPath","referencedDeclaration":1310,"src":"6252:9:15"},"referencedDeclaration":1310,"src":"6252:9:15","typeDescriptions":{"typeIdentifier":"t_struct$_SendParam_$1310_storage_ptr","typeString":"struct SendParam"}},"visibility":"internal"},{"constant":false,"id":1425,"mutability":"mutable","name":"_fee","nameLocation":"6313:4:15","nodeType":"VariableDeclaration","scope":1436,"src":"6291:26:15","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_calldata_ptr","typeString":"struct MessagingFee"},"typeName":{"id":1424,"nodeType":"UserDefinedTypeName","pathNode":{"id":1423,"name":"MessagingFee","nameLocations":["6291:12:15"],"nodeType":"IdentifierPath","referencedDeclaration":33,"src":"6291:12:15"},"referencedDeclaration":33,"src":"6291:12:15","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingFee_$33_storage_ptr","typeString":"struct MessagingFee"}},"visibility":"internal"},{"constant":false,"id":1427,"mutability":"mutable","name":"_refundAddress","nameLocation":"6335:14:15","nodeType":"VariableDeclaration","scope":1436,"src":"6327:22:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1426,"name":"address","nodeType":"ElementaryTypeName","src":"6327:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6242:113:15"},"returnParameters":{"id":1435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1431,"mutability":"mutable","name":"msgReceipt","nameLocation":"6406:10:15","nodeType":"VariableDeclaration","scope":1436,"src":"6382:34:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_memory_ptr","typeString":"struct MessagingReceipt"},"typeName":{"id":1430,"nodeType":"UserDefinedTypeName","pathNode":{"id":1429,"name":"MessagingReceipt","nameLocations":["6382:16:15"],"nodeType":"IdentifierPath","referencedDeclaration":28,"src":"6382:16:15"},"referencedDeclaration":28,"src":"6382:16:15","typeDescriptions":{"typeIdentifier":"t_struct$_MessagingReceipt_$28_storage_ptr","typeString":"struct MessagingReceipt"}},"visibility":"internal"},{"constant":false,"id":1434,"mutability":"mutable","name":"oftReceipt","nameLocation":"6436:10:15","nodeType":"VariableDeclaration","scope":1436,"src":"6418:28:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$1322_memory_ptr","typeString":"struct OFTReceipt"},"typeName":{"id":1433,"nodeType":"UserDefinedTypeName","pathNode":{"id":1432,"name":"OFTReceipt","nameLocations":["6418:10:15"],"nodeType":"IdentifierPath","referencedDeclaration":1322,"src":"6418:10:15"},"referencedDeclaration":1322,"src":"6418:10:15","typeDescriptions":{"typeIdentifier":"t_struct$_OFTReceipt_$1322_storage_ptr","typeString":"struct OFTReceipt"}},"visibility":"internal"}],"src":"6381:66:15"},"scope":1437,"src":"6229:219:15","stateMutability":"payable","virtual":false,"visibility":"external"}],"scope":1438,"src":"2002:4448:15","usedErrors":[1331,1337,1341],"usedEvents":[1353,1363]}],"src":"32:6419:15"},"id":15},"contracts/interfaces/IOFTDecimalUtils.sol":{"ast":{"absolutePath":"contracts/interfaces/IOFTDecimalUtils.sol","exportedSymbols":{"IOFTDecimalUtils":[1467]},"id":1468,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1439,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:16"},{"abstract":false,"baseContracts":[],"canonicalName":"IOFTDecimalUtils","contractDependencies":[],"contractKind":"interface","documentation":{"id":1440,"nodeType":"StructuredDocumentation","src":"58:156:16","text":" @title IOFTDecimalUtils\n @author LayerZero Labs (tinom.eth)\n @custom:version 1.0.0\n @notice Interface for OFT decimal conversion utilities."},"fullyImplemented":false,"id":1467,"linearizedBaseContracts":[1467],"name":"IOFTDecimalUtils","nameLocation":"225:16:16","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1441,"nodeType":"StructuredDocumentation","src":"248:77:16","text":" @notice Thrown when shared decimals exceed local decimals."},"errorSelector":"1e9714b0","id":1443,"name":"InvalidLocalDecimals","nameLocation":"336:20:16","nodeType":"ErrorDefinition","parameters":{"id":1442,"nodeType":"ParameterList","parameters":[],"src":"356:2:16"},"src":"330:29:16"},{"documentation":{"id":1444,"nodeType":"StructuredDocumentation","src":"365:137:16","text":" @notice Thrown when the amount in shared decimals overflows `uint64`.\n @param amountSD Amount in shared decimals"},"errorSelector":"e2ce9413","id":1448,"name":"AmountSDOverflowed","nameLocation":"513:18:16","nodeType":"ErrorDefinition","parameters":{"id":1447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1446,"mutability":"mutable","name":"amountSD","nameLocation":"540:8:16","nodeType":"VariableDeclaration","scope":1448,"src":"532:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1445,"name":"uint256","nodeType":"ElementaryTypeName","src":"532:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"531:18:16"},"src":"507:43:16"},{"documentation":{"id":1449,"nodeType":"StructuredDocumentation","src":"556:112:16","text":" @notice Returns the local decimals for tokens on this chain.\n @return ld Local decimals"},"functionSelector":"e46e7058","id":1454,"implemented":false,"kind":"function","modifiers":[],"name":"localDecimals","nameLocation":"682:13:16","nodeType":"FunctionDefinition","parameters":{"id":1450,"nodeType":"ParameterList","parameters":[],"src":"695:2:16"},"returnParameters":{"id":1453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1452,"mutability":"mutable","name":"ld","nameLocation":"727:2:16","nodeType":"VariableDeclaration","scope":1454,"src":"721:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1451,"name":"uint8","nodeType":"ElementaryTypeName","src":"721:5:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"720:10:16"},"scope":1467,"src":"673:58:16","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1455,"nodeType":"StructuredDocumentation","src":"737:115:16","text":" @notice Returns the shared decimals for cross-chain messaging.\n @return sd Shared decimals"},"functionSelector":"857749b0","id":1460,"implemented":false,"kind":"function","modifiers":[],"name":"sharedDecimals","nameLocation":"866:14:16","nodeType":"FunctionDefinition","parameters":{"id":1456,"nodeType":"ParameterList","parameters":[],"src":"880:2:16"},"returnParameters":{"id":1459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1458,"mutability":"mutable","name":"sd","nameLocation":"912:2:16","nodeType":"VariableDeclaration","scope":1460,"src":"906:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1457,"name":"uint8","nodeType":"ElementaryTypeName","src":"906:5:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"905:10:16"},"scope":1467,"src":"857:59:16","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1461,"nodeType":"StructuredDocumentation","src":"922:132:16","text":" @notice Returns the conversion rate to convert from local to shared decimals.\n @return rate Conversion rate"},"functionSelector":"963efcaa","id":1466,"implemented":false,"kind":"function","modifiers":[],"name":"decimalConversionRate","nameLocation":"1068:21:16","nodeType":"FunctionDefinition","parameters":{"id":1462,"nodeType":"ParameterList","parameters":[],"src":"1089:2:16"},"returnParameters":{"id":1465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1464,"mutability":"mutable","name":"rate","nameLocation":"1123:4:16","nodeType":"VariableDeclaration","scope":1466,"src":"1115:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1463,"name":"uint256","nodeType":"ElementaryTypeName","src":"1115:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1114:14:16"},"scope":1467,"src":"1059:70:16","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1468,"src":"215:916:16","usedErrors":[1443,1448],"usedEvents":[]}],"src":"32:1100:16"},"id":16},"contracts/interfaces/IOFTExtended.sol":{"ast":{"absolutePath":"contracts/interfaces/IOFTExtended.sol","exportedSymbols":{"IFeeConfig":[979],"IFeeHandler":[1003],"IOAppExtended":[803],"IOFT":[1437],"IOFTExtended":[1495],"IPauseByID":[1082],"IRateLimiter":[1289]},"id":1496,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1469,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:17"},{"absolutePath":"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol","file":"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol","id":1471,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1496,"sourceUnit":804,"src":"58:105:17","symbolAliases":[{"foreign":{"id":1470,"name":"IOAppExtended","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":803,"src":"67:13:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol","file":"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol","id":1473,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1496,"sourceUnit":980,"src":"164:100:17","symbolAliases":[{"foreign":{"id":1472,"name":"IFeeConfig","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":979,"src":"173:10:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol","file":"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol","id":1475,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1496,"sourceUnit":1004,"src":"265:102:17","symbolAliases":[{"foreign":{"id":1474,"name":"IFeeHandler","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1003,"src":"274:11:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol","file":"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol","id":1477,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1496,"sourceUnit":1083,"src":"368:100:17","symbolAliases":[{"foreign":{"id":1476,"name":"IPauseByID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1082,"src":"377:10:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol","file":"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol","id":1479,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1496,"sourceUnit":1290,"src":"469:104:17","symbolAliases":[{"foreign":{"id":1478,"name":"IRateLimiter","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1289,"src":"478:12:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IOFT.sol","file":"./IOFT.sol","id":1481,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1496,"sourceUnit":1438,"src":"574:34:17","symbolAliases":[{"foreign":{"id":1480,"name":"IOFT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1437,"src":"583:4:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1483,"name":"IOFT","nameLocations":["843:4:17"],"nodeType":"IdentifierPath","referencedDeclaration":1437,"src":"843:4:17"},"id":1484,"nodeType":"InheritanceSpecifier","src":"843:4:17"},{"baseName":{"id":1485,"name":"IOAppExtended","nameLocations":["849:13:17"],"nodeType":"IdentifierPath","referencedDeclaration":803,"src":"849:13:17"},"id":1486,"nodeType":"InheritanceSpecifier","src":"849:13:17"},{"baseName":{"id":1487,"name":"IFeeConfig","nameLocations":["864:10:17"],"nodeType":"IdentifierPath","referencedDeclaration":979,"src":"864:10:17"},"id":1488,"nodeType":"InheritanceSpecifier","src":"864:10:17"},{"baseName":{"id":1489,"name":"IFeeHandler","nameLocations":["876:11:17"],"nodeType":"IdentifierPath","referencedDeclaration":1003,"src":"876:11:17"},"id":1490,"nodeType":"InheritanceSpecifier","src":"876:11:17"},{"baseName":{"id":1491,"name":"IPauseByID","nameLocations":["889:10:17"],"nodeType":"IdentifierPath","referencedDeclaration":1082,"src":"889:10:17"},"id":1492,"nodeType":"InheritanceSpecifier","src":"889:10:17"},{"baseName":{"id":1493,"name":"IRateLimiter","nameLocations":["901:12:17"],"nodeType":"IdentifierPath","referencedDeclaration":1289,"src":"901:12:17"},"id":1494,"nodeType":"InheritanceSpecifier","src":"901:12:17"}],"canonicalName":"IOFTExtended","contractDependencies":[],"contractKind":"interface","documentation":{"id":1482,"nodeType":"StructuredDocumentation","src":"610:206:17","text":" @title IOFTExtended\n @author LayerZero Labs (@TRileySchwarz, tinom.eth)\n @custom:version 1.0.0\n @notice Interface for extended OFT contracts with fee, pause, and rate limiter functionality."},"fullyImplemented":false,"id":1495,"linearizedBaseContracts":[1495,1289,1082,1003,979,803,824,878,783,899,238,1437],"name":"IOFTExtended","nameLocation":"827:12:17","nodeType":"ContractDefinition","nodes":[],"scope":1496,"src":"817:99:17","usedErrors":[731,735,737,739,840,927,985,1039,1044,1191,1198,1205,1212,1331,1337,1341],"usedEvents":[745,811,847,917,922,990,1029,1034,1163,1171,1179,1186,1353,1363]}],"src":"32:885:17"},"id":17},"contracts/libs/OFTComposeMsgCodec.sol":{"ast":{"absolutePath":"contracts/libs/OFTComposeMsgCodec.sol","exportedSymbols":{"OFTComposeMsgCodec":[1664]},"id":1665,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1497,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:18"},{"abstract":false,"baseContracts":[],"canonicalName":"OFTComposeMsgCodec","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1664,"linearizedBaseContracts":[1664],"name":"OFTComposeMsgCodec","nameLocation":"66:18:18","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1500,"mutability":"constant","name":"NONCE_OFFSET","nameLocation":"169:12:18","nodeType":"VariableDeclaration","scope":1664,"src":"146:39:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1498,"name":"uint8","nodeType":"ElementaryTypeName","src":"146:5:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"38","id":1499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"184:1:18","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"visibility":"private"},{"constant":true,"id":1503,"mutability":"constant","name":"SRC_EID_OFFSET","nameLocation":"214:14:18","nodeType":"VariableDeclaration","scope":1664,"src":"191:42:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1501,"name":"uint8","nodeType":"ElementaryTypeName","src":"191:5:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3132","id":1502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"231:2:18","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"12"},"visibility":"private"},{"constant":true,"id":1506,"mutability":"constant","name":"AMOUNT_LD_OFFSET","nameLocation":"262:16:18","nodeType":"VariableDeclaration","scope":1664,"src":"239:44:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1504,"name":"uint8","nodeType":"ElementaryTypeName","src":"239:5:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3434","id":1505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"281:2:18","typeDescriptions":{"typeIdentifier":"t_rational_44_by_1","typeString":"int_const 44"},"value":"44"},"visibility":"private"},{"constant":true,"id":1509,"mutability":"constant","name":"COMPOSE_FROM_OFFSET","nameLocation":"312:19:18","nodeType":"VariableDeclaration","scope":1664,"src":"289:47:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1507,"name":"uint8","nodeType":"ElementaryTypeName","src":"289:5:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3736","id":1508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"334:2:18","typeDescriptions":{"typeIdentifier":"t_rational_76_by_1","typeString":"int_const 76"},"value":"76"},"visibility":"private"},{"body":{"id":1533,"nodeType":"Block","src":"842:81:18","statements":[{"expression":{"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1523,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1521,"src":"852:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":1526,"name":"_nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1512,"src":"876:6:18","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":1527,"name":"_srcEid","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1514,"src":"884:7:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":1528,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1516,"src":"893:9:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1529,"name":"_composeMsg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1518,"src":"904:11:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1524,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"859:3:18","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"863:12:18","memberName":"encodePacked","nodeType":"MemberAccess","src":"859:16:18","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"859:57:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"852:64:18","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1532,"nodeType":"ExpressionStatement","src":"852:64:18"}]},"documentation":{"id":1510,"nodeType":"StructuredDocumentation","src":"343:291:18","text":" @dev Encodes a OFT composed message.\n @param _nonce The nonce value.\n @param _srcEid The source endpoint ID.\n @param _amountLD The amount in local decimals.\n @param _composeMsg The composed message.\n @return _msg The encoded Composed message."},"id":1534,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nameLocation":"648:6:18","nodeType":"FunctionDefinition","parameters":{"id":1519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1512,"mutability":"mutable","name":"_nonce","nameLocation":"671:6:18","nodeType":"VariableDeclaration","scope":1534,"src":"664:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1511,"name":"uint64","nodeType":"ElementaryTypeName","src":"664:6:18","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":1514,"mutability":"mutable","name":"_srcEid","nameLocation":"694:7:18","nodeType":"VariableDeclaration","scope":1534,"src":"687:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1513,"name":"uint32","nodeType":"ElementaryTypeName","src":"687:6:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":1516,"mutability":"mutable","name":"_amountLD","nameLocation":"719:9:18","nodeType":"VariableDeclaration","scope":1534,"src":"711:17:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1515,"name":"uint256","nodeType":"ElementaryTypeName","src":"711:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1518,"mutability":"mutable","name":"_composeMsg","nameLocation":"751:11:18","nodeType":"VariableDeclaration","scope":1534,"src":"738:24:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1517,"name":"bytes","nodeType":"ElementaryTypeName","src":"738:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"654:145:18"},"returnParameters":{"id":1522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1521,"mutability":"mutable","name":"_msg","nameLocation":"836:4:18","nodeType":"VariableDeclaration","scope":1534,"src":"823:17:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1520,"name":"bytes","nodeType":"ElementaryTypeName","src":"823:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"822:19:18"},"scope":1664,"src":"639:284:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1552,"nodeType":"Block","src":"1134:59:18","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":1546,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1537,"src":"1165:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1547,"name":"NONCE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1500,"src":"1171:12:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1165:19:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1545,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1158:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes8_$","typeString":"type(bytes8)"},"typeName":{"id":1544,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1158:6:18","typeDescriptions":{}}},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1158:27:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes8","typeString":"bytes8"}],"id":1543,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1151:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":1542,"name":"uint64","nodeType":"ElementaryTypeName","src":"1151:6:18","typeDescriptions":{}}},"id":1550,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1151:35:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":1541,"id":1551,"nodeType":"Return","src":"1144:42:18"}]},"documentation":{"id":1535,"nodeType":"StructuredDocumentation","src":"929:133:18","text":" @dev Retrieves the nonce for the composed message.\n @param _msg The message.\n @return The nonce value."},"id":1553,"implemented":true,"kind":"function","modifiers":[],"name":"nonce","nameLocation":"1076:5:18","nodeType":"FunctionDefinition","parameters":{"id":1538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1537,"mutability":"mutable","name":"_msg","nameLocation":"1097:4:18","nodeType":"VariableDeclaration","scope":1553,"src":"1082:19:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1536,"name":"bytes","nodeType":"ElementaryTypeName","src":"1082:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1081:21:18"},"returnParameters":{"id":1541,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1540,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1553,"src":"1126:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1539,"name":"uint64","nodeType":"ElementaryTypeName","src":"1126:6:18","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1125:8:18"},"scope":1664,"src":"1067:126:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1572,"nodeType":"Block","src":"1425:73:18","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":1565,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1556,"src":"1456:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1567,"name":"SRC_EID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1503,"src":"1474:14:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1456:33:18","startExpression":{"id":1566,"name":"NONCE_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1500,"src":"1461:12:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1564,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1449:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":1563,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1449:6:18","typeDescriptions":{}}},"id":1569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1449:41:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":1562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1442:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":1561,"name":"uint32","nodeType":"ElementaryTypeName","src":"1442:6:18","typeDescriptions":{}}},"id":1570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1442:49:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":1560,"id":1571,"nodeType":"Return","src":"1435:56:18"}]},"documentation":{"id":1554,"nodeType":"StructuredDocumentation","src":"1199:153:18","text":" @dev Retrieves the source endpoint ID for the composed message.\n @param _msg The message.\n @return The source endpoint ID."},"id":1573,"implemented":true,"kind":"function","modifiers":[],"name":"srcEid","nameLocation":"1366:6:18","nodeType":"FunctionDefinition","parameters":{"id":1557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1556,"mutability":"mutable","name":"_msg","nameLocation":"1388:4:18","nodeType":"VariableDeclaration","scope":1573,"src":"1373:19:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1555,"name":"bytes","nodeType":"ElementaryTypeName","src":"1373:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1372:21:18"},"returnParameters":{"id":1560,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1559,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1573,"src":"1417:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":1558,"name":"uint32","nodeType":"ElementaryTypeName","src":"1417:6:18","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"1416:8:18"},"scope":1664,"src":"1357:141:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1592,"nodeType":"Block","src":"1746:79:18","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":1585,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1576,"src":"1779:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1587,"name":"AMOUNT_LD_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1506,"src":"1799:16:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1779:37:18","startExpression":{"id":1586,"name":"SRC_EID_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1503,"src":"1784:14:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1771:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1583,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1771:7:18","typeDescriptions":{}}},"id":1589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1771:46:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1763:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1581,"name":"uint256","nodeType":"ElementaryTypeName","src":"1763:7:18","typeDescriptions":{}}},"id":1590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1763:55:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1580,"id":1591,"nodeType":"Return","src":"1756:62:18"}]},"documentation":{"id":1574,"nodeType":"StructuredDocumentation","src":"1504:166:18","text":" @dev Retrieves the amount in local decimals from the composed message.\n @param _msg The message.\n @return The amount in local decimals."},"id":1593,"implemented":true,"kind":"function","modifiers":[],"name":"amountLD","nameLocation":"1684:8:18","nodeType":"FunctionDefinition","parameters":{"id":1577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1576,"mutability":"mutable","name":"_msg","nameLocation":"1708:4:18","nodeType":"VariableDeclaration","scope":1593,"src":"1693:19:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1575,"name":"bytes","nodeType":"ElementaryTypeName","src":"1693:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1692:21:18"},"returnParameters":{"id":1580,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1579,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1593,"src":"1737:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1578,"name":"uint256","nodeType":"ElementaryTypeName","src":"1737:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1736:9:18"},"scope":1664,"src":"1675:150:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1609,"nodeType":"Block","src":"2062:75:18","statements":[{"expression":{"arguments":[{"baseExpression":{"id":1603,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1596,"src":"2087:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1605,"name":"COMPOSE_FROM_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"2109:19:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2087:42:18","startExpression":{"id":1604,"name":"AMOUNT_LD_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1506,"src":"2092:16:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2079:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1601,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2079:7:18","typeDescriptions":{}}},"id":1607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2079:51:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1600,"id":1608,"nodeType":"Return","src":"2072:58:18"}]},"documentation":{"id":1594,"nodeType":"StructuredDocumentation","src":"1831:152:18","text":" @dev Retrieves the composeFrom value from the composed message.\n @param _msg The message.\n @return The composeFrom value."},"id":1610,"implemented":true,"kind":"function","modifiers":[],"name":"composeFrom","nameLocation":"1997:11:18","nodeType":"FunctionDefinition","parameters":{"id":1597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1596,"mutability":"mutable","name":"_msg","nameLocation":"2024:4:18","nodeType":"VariableDeclaration","scope":1610,"src":"2009:19:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1595,"name":"bytes","nodeType":"ElementaryTypeName","src":"2009:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2008:21:18"},"returnParameters":{"id":1600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1599,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1610,"src":"2053:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1598,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2053:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2052:9:18"},"scope":1664,"src":"1988:149:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1622,"nodeType":"Block","src":"2350:50:18","statements":[{"expression":{"baseExpression":{"id":1618,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1613,"src":"2367:4:18","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2367:26:18","startExpression":{"id":1619,"name":"COMPOSE_FROM_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1509,"src":"2372:19:18","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"functionReturnParameters":1617,"id":1621,"nodeType":"Return","src":"2360:33:18"}]},"documentation":{"id":1611,"nodeType":"StructuredDocumentation","src":"2143:124:18","text":" @dev Retrieves the composed message.\n @param _msg The message.\n @return The composed message."},"id":1623,"implemented":true,"kind":"function","modifiers":[],"name":"composeMsg","nameLocation":"2281:10:18","nodeType":"FunctionDefinition","parameters":{"id":1614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1613,"mutability":"mutable","name":"_msg","nameLocation":"2307:4:18","nodeType":"VariableDeclaration","scope":1623,"src":"2292:19:18","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1612,"name":"bytes","nodeType":"ElementaryTypeName","src":"2292:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2291:21:18"},"returnParameters":{"id":1617,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1616,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1623,"src":"2336:12:18","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1615,"name":"bytes","nodeType":"ElementaryTypeName","src":"2336:5:18","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2335:14:18"},"scope":1664,"src":"2272:128:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1642,"nodeType":"Block","src":"2641:56:18","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1637,"name":"_addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1626,"src":"2682:5:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2674:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1635,"name":"uint160","nodeType":"ElementaryTypeName","src":"2674:7:18","typeDescriptions":{}}},"id":1638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2674:14:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2666:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1633,"name":"uint256","nodeType":"ElementaryTypeName","src":"2666:7:18","typeDescriptions":{}}},"id":1639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2666:23:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1632,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2658:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1631,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2658:7:18","typeDescriptions":{}}},"id":1640,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2658:32:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1630,"id":1641,"nodeType":"Return","src":"2651:39:18"}]},"documentation":{"id":1624,"nodeType":"StructuredDocumentation","src":"2406:157:18","text":" @dev Converts an address to bytes32.\n @param _addr The address to convert.\n @return The bytes32 representation of the address."},"id":1643,"implemented":true,"kind":"function","modifiers":[],"name":"addressToBytes32","nameLocation":"2577:16:18","nodeType":"FunctionDefinition","parameters":{"id":1627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1626,"mutability":"mutable","name":"_addr","nameLocation":"2602:5:18","nodeType":"VariableDeclaration","scope":1643,"src":"2594:13:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1625,"name":"address","nodeType":"ElementaryTypeName","src":"2594:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2593:15:18"},"returnParameters":{"id":1630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1643,"src":"2632:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1628,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2632:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2631:9:18"},"scope":1664,"src":"2568:129:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1662,"nodeType":"Block","src":"2934:53:18","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1657,"name":"_b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1646,"src":"2975:2:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1656,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2967:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1655,"name":"uint256","nodeType":"ElementaryTypeName","src":"2967:7:18","typeDescriptions":{}}},"id":1658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2967:11:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1654,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2959:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1653,"name":"uint160","nodeType":"ElementaryTypeName","src":"2959:7:18","typeDescriptions":{}}},"id":1659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2959:20:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2951:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1651,"name":"address","nodeType":"ElementaryTypeName","src":"2951:7:18","typeDescriptions":{}}},"id":1660,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2951:29:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1650,"id":1661,"nodeType":"Return","src":"2944:36:18"}]},"documentation":{"id":1644,"nodeType":"StructuredDocumentation","src":"2703:156:18","text":" @dev Converts bytes32 to an address.\n @param _b The bytes32 value to convert.\n @return The address representation of bytes32."},"id":1663,"implemented":true,"kind":"function","modifiers":[],"name":"bytes32ToAddress","nameLocation":"2873:16:18","nodeType":"FunctionDefinition","parameters":{"id":1647,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1646,"mutability":"mutable","name":"_b","nameLocation":"2898:2:18","nodeType":"VariableDeclaration","scope":1663,"src":"2890:10:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1645,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2890:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2889:12:18"},"returnParameters":{"id":1650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1649,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1663,"src":"2925:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1648,"name":"address","nodeType":"ElementaryTypeName","src":"2925:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2924:9:18"},"scope":1664,"src":"2864:123:18","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1665,"src":"58:2931:18","usedErrors":[],"usedEvents":[]}],"src":"32:2958:18"},"id":18},"contracts/libs/OFTMsgCodec.sol":{"ast":{"absolutePath":"contracts/libs/OFTMsgCodec.sol","exportedSymbols":{"OFTMsgCodec":[1818]},"id":1819,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1666,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:19"},{"abstract":false,"baseContracts":[],"canonicalName":"OFTMsgCodec","contractDependencies":[],"contractKind":"library","fullyImplemented":true,"id":1818,"linearizedBaseContracts":[1818],"name":"OFTMsgCodec","nameLocation":"66:11:19","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1669,"mutability":"constant","name":"SEND_TO_OFFSET","nameLocation":"170:14:19","nodeType":"VariableDeclaration","scope":1818,"src":"147:42:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1667,"name":"uint8","nodeType":"ElementaryTypeName","src":"147:5:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3332","id":1668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"187:2:19","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"visibility":"private"},{"constant":true,"id":1672,"mutability":"constant","name":"SEND_AMOUNT_SD_OFFSET","nameLocation":"218:21:19","nodeType":"VariableDeclaration","scope":1818,"src":"195:49:19","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1670,"name":"uint8","nodeType":"ElementaryTypeName","src":"195:5:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3430","id":1671,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"242:2:19","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},"visibility":"private"},{"body":{"id":1713,"nodeType":"Block","src":"767:336:19","statements":[{"expression":{"id":1691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1686,"name":"hasCompose","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1684,"src":"777:10:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1687,"name":"_composeMsg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1679,"src":"790:11:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"802:6:19","memberName":"length","nodeType":"MemberAccess","src":"790:18:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"811:1:19","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"790:22:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"777:35:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1692,"nodeType":"ExpressionStatement","src":"777:35:19"},{"expression":{"id":1711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1693,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1682,"src":"926:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"id":1694,"name":"hasCompose","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1684,"src":"933:10:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":1707,"name":"_sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"1073:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1708,"name":"_amountShared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"1082:13:19","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"}],"expression":{"id":1705,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"1056:3:19","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1706,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1060:12:19","memberName":"encodePacked","nodeType":"MemberAccess","src":"1056:16:19","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1709,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1056:40:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"933:163:19","trueExpression":{"arguments":[{"id":1697,"name":"_sendTo","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1675,"src":"975:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1698,"name":"_amountShared","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1677,"src":"984:13:19","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"arguments":[{"expression":{"id":1700,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1016:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1020:6:19","memberName":"sender","nodeType":"MemberAccess","src":"1016:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1699,"name":"addressToBytes32","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1797,"src":"999:16:19","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_bytes32_$","typeString":"function (address) pure returns (bytes32)"}},"id":1702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"999:28:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1703,"name":"_composeMsg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1679,"src":"1029:11:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1695,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"958:3:19","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1696,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"962:12:19","memberName":"encodePacked","nodeType":"MemberAccess","src":"958:16:19","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"958:83:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"926:170:19","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1712,"nodeType":"ExpressionStatement","src":"926:170:19"}]},"documentation":{"id":1673,"nodeType":"StructuredDocumentation","src":"251:341:19","text":" @dev Encodes an OFT LayerZero message.\n @param _sendTo The recipient address.\n @param _amountShared The amount in shared decimals.\n @param _composeMsg The composed message.\n @return _msg The encoded message.\n @return hasCompose A boolean indicating whether the message has a composed payload."},"id":1714,"implemented":true,"kind":"function","modifiers":[],"name":"encode","nameLocation":"606:6:19","nodeType":"FunctionDefinition","parameters":{"id":1680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1675,"mutability":"mutable","name":"_sendTo","nameLocation":"630:7:19","nodeType":"VariableDeclaration","scope":1714,"src":"622:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1674,"name":"bytes32","nodeType":"ElementaryTypeName","src":"622:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1677,"mutability":"mutable","name":"_amountShared","nameLocation":"654:13:19","nodeType":"VariableDeclaration","scope":1714,"src":"647:20:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1676,"name":"uint64","nodeType":"ElementaryTypeName","src":"647:6:19","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":1679,"mutability":"mutable","name":"_composeMsg","nameLocation":"690:11:19","nodeType":"VariableDeclaration","scope":1714,"src":"677:24:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1678,"name":"bytes","nodeType":"ElementaryTypeName","src":"677:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"612:95:19"},"returnParameters":{"id":1685,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1682,"mutability":"mutable","name":"_msg","nameLocation":"744:4:19","nodeType":"VariableDeclaration","scope":1714,"src":"731:17:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1681,"name":"bytes","nodeType":"ElementaryTypeName","src":"731:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1684,"mutability":"mutable","name":"hasCompose","nameLocation":"755:10:19","nodeType":"VariableDeclaration","scope":1714,"src":"750:15:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1683,"name":"bool","nodeType":"ElementaryTypeName","src":"750:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"730:36:19"},"scope":1818,"src":"597:506:19","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1727,"nodeType":"Block","src":"1351:59:19","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1722,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1717,"src":"1368:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1373:6:19","memberName":"length","nodeType":"MemberAccess","src":"1368:11:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1724,"name":"SEND_AMOUNT_SD_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1672,"src":"1382:21:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1368:35:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1721,"id":1726,"nodeType":"Return","src":"1361:42:19"}]},"documentation":{"id":1715,"nodeType":"StructuredDocumentation","src":"1109:167:19","text":" @dev Checks if the OFT message is composed.\n @param _msg The OFT message.\n @return A boolean indicating whether the message is composed."},"id":1728,"implemented":true,"kind":"function","modifiers":[],"name":"isComposed","nameLocation":"1290:10:19","nodeType":"FunctionDefinition","parameters":{"id":1718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1717,"mutability":"mutable","name":"_msg","nameLocation":"1316:4:19","nodeType":"VariableDeclaration","scope":1728,"src":"1301:19:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1716,"name":"bytes","nodeType":"ElementaryTypeName","src":"1301:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1300:21:19"},"returnParameters":{"id":1721,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1720,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1728,"src":"1345:4:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1719,"name":"bool","nodeType":"ElementaryTypeName","src":"1345:4:19","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1344:6:19"},"scope":1818,"src":"1281:129:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1743,"nodeType":"Block","src":"1641:54:19","statements":[{"expression":{"arguments":[{"baseExpression":{"id":1738,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1731,"src":"1666:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1739,"name":"SEND_TO_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"1672:14:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1666:21:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1658:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1736,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1658:7:19","typeDescriptions":{}}},"id":1741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1658:30:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1735,"id":1742,"nodeType":"Return","src":"1651:37:19"}]},"documentation":{"id":1729,"nodeType":"StructuredDocumentation","src":"1416:151:19","text":" @dev Retrieves the recipient address from the OFT message.\n @param _msg The OFT message.\n @return The recipient address."},"id":1744,"implemented":true,"kind":"function","modifiers":[],"name":"sendTo","nameLocation":"1581:6:19","nodeType":"FunctionDefinition","parameters":{"id":1732,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1731,"mutability":"mutable","name":"_msg","nameLocation":"1603:4:19","nodeType":"VariableDeclaration","scope":1744,"src":"1588:19:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1730,"name":"bytes","nodeType":"ElementaryTypeName","src":"1588:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1587:21:19"},"returnParameters":{"id":1735,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1734,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1744,"src":"1632:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1733,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1632:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1631:9:19"},"scope":1818,"src":"1572:123:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1763,"nodeType":"Block","src":"1943:82:19","statements":[{"expression":{"arguments":[{"arguments":[{"baseExpression":{"id":1756,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1747,"src":"1974:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"endExpression":{"id":1758,"name":"SEND_AMOUNT_SD_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1672,"src":"1994:21:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"1974:42:19","startExpression":{"id":1757,"name":"SEND_TO_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1669,"src":"1979:14:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}],"id":1755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1967:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes8_$","typeString":"type(bytes8)"},"typeName":{"id":1754,"name":"bytes8","nodeType":"ElementaryTypeName","src":"1967:6:19","typeDescriptions":{}}},"id":1760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1967:50:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes8","typeString":"bytes8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes8","typeString":"bytes8"}],"id":1753,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1960:6:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":1752,"name":"uint64","nodeType":"ElementaryTypeName","src":"1960:6:19","typeDescriptions":{}}},"id":1761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1960:58:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":1751,"id":1762,"nodeType":"Return","src":"1953:65:19"}]},"documentation":{"id":1745,"nodeType":"StructuredDocumentation","src":"1701:167:19","text":" @dev Retrieves the amount in shared decimals from the OFT message.\n @param _msg The OFT message.\n @return The amount in shared decimals."},"id":1764,"implemented":true,"kind":"function","modifiers":[],"name":"amountSD","nameLocation":"1882:8:19","nodeType":"FunctionDefinition","parameters":{"id":1748,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1747,"mutability":"mutable","name":"_msg","nameLocation":"1906:4:19","nodeType":"VariableDeclaration","scope":1764,"src":"1891:19:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1746,"name":"bytes","nodeType":"ElementaryTypeName","src":"1891:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1890:21:19"},"returnParameters":{"id":1751,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1750,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1764,"src":"1935:6:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1749,"name":"uint64","nodeType":"ElementaryTypeName","src":"1935:6:19","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"1934:8:19"},"scope":1818,"src":"1873:152:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1776,"nodeType":"Block","src":"2263:52:19","statements":[{"expression":{"baseExpression":{"id":1772,"name":"_msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1767,"src":"2280:4:19","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":1774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexRangeAccess","src":"2280:28:19","startExpression":{"id":1773,"name":"SEND_AMOUNT_SD_OFFSET","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1672,"src":"2285:21:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr_slice","typeString":"bytes calldata slice"}},"functionReturnParameters":1771,"id":1775,"nodeType":"Return","src":"2273:35:19"}]},"documentation":{"id":1765,"nodeType":"StructuredDocumentation","src":"2031:149:19","text":" @dev Retrieves the composed message from the OFT message.\n @param _msg The OFT message.\n @return The composed message."},"id":1777,"implemented":true,"kind":"function","modifiers":[],"name":"composeMsg","nameLocation":"2194:10:19","nodeType":"FunctionDefinition","parameters":{"id":1768,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1767,"mutability":"mutable","name":"_msg","nameLocation":"2220:4:19","nodeType":"VariableDeclaration","scope":1777,"src":"2205:19:19","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1766,"name":"bytes","nodeType":"ElementaryTypeName","src":"2205:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2204:21:19"},"returnParameters":{"id":1771,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1770,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1777,"src":"2249:12:19","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1769,"name":"bytes","nodeType":"ElementaryTypeName","src":"2249:5:19","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2248:14:19"},"scope":1818,"src":"2185:130:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1796,"nodeType":"Block","src":"2556:56:19","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1791,"name":"_addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"2597:5:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1790,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2589:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1789,"name":"uint160","nodeType":"ElementaryTypeName","src":"2589:7:19","typeDescriptions":{}}},"id":1792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2589:14:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1788,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2581:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1787,"name":"uint256","nodeType":"ElementaryTypeName","src":"2581:7:19","typeDescriptions":{}}},"id":1793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2581:23:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1786,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2573:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1785,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2573:7:19","typeDescriptions":{}}},"id":1794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2573:32:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":1784,"id":1795,"nodeType":"Return","src":"2566:39:19"}]},"documentation":{"id":1778,"nodeType":"StructuredDocumentation","src":"2321:157:19","text":" @dev Converts an address to bytes32.\n @param _addr The address to convert.\n @return The bytes32 representation of the address."},"id":1797,"implemented":true,"kind":"function","modifiers":[],"name":"addressToBytes32","nameLocation":"2492:16:19","nodeType":"FunctionDefinition","parameters":{"id":1781,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1780,"mutability":"mutable","name":"_addr","nameLocation":"2517:5:19","nodeType":"VariableDeclaration","scope":1797,"src":"2509:13:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1779,"name":"address","nodeType":"ElementaryTypeName","src":"2509:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2508:15:19"},"returnParameters":{"id":1784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1783,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1797,"src":"2547:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1782,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2547:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2546:9:19"},"scope":1818,"src":"2483:129:19","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1816,"nodeType":"Block","src":"2849:53:19","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1811,"name":"_b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"2890:2:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1810,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2882:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1809,"name":"uint256","nodeType":"ElementaryTypeName","src":"2882:7:19","typeDescriptions":{}}},"id":1812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2882:11:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2874:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1807,"name":"uint160","nodeType":"ElementaryTypeName","src":"2874:7:19","typeDescriptions":{}}},"id":1813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:20:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1806,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2866:7:19","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1805,"name":"address","nodeType":"ElementaryTypeName","src":"2866:7:19","typeDescriptions":{}}},"id":1814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2866:29:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1804,"id":1815,"nodeType":"Return","src":"2859:36:19"}]},"documentation":{"id":1798,"nodeType":"StructuredDocumentation","src":"2618:156:19","text":" @dev Converts bytes32 to an address.\n @param _b The bytes32 value to convert.\n @return The address representation of bytes32."},"id":1817,"implemented":true,"kind":"function","modifiers":[],"name":"bytes32ToAddress","nameLocation":"2788:16:19","nodeType":"FunctionDefinition","parameters":{"id":1801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1800,"mutability":"mutable","name":"_b","nameLocation":"2813:2:19","nodeType":"VariableDeclaration","scope":1817,"src":"2805:10:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1799,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2805:7:19","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2804:12:19"},"returnParameters":{"id":1804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1803,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1817,"src":"2840:7:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1802,"name":"address","nodeType":"ElementaryTypeName","src":"2840:7:19","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2839:9:19"},"scope":1818,"src":"2779:123:19","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1819,"src":"58:2846:19","usedErrors":[],"usedEvents":[]}],"src":"32:2873:19"},"id":19},"contracts/utils/OFTDecimalUtils.sol":{"ast":{"absolutePath":"contracts/utils/OFTDecimalUtils.sol","exportedSymbols":{"IOFTDecimalUtils":[1467],"OFTDecimalUtils":[1956]},"id":1957,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1820,"literals":["solidity","^","0.8",".22"],"nodeType":"PragmaDirective","src":"32:24:20"},{"absolutePath":"contracts/interfaces/IOFTDecimalUtils.sol","file":"../interfaces/IOFTDecimalUtils.sol","id":1822,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1957,"sourceUnit":1468,"src":"58:70:20","symbolAliases":[{"foreign":{"id":1821,"name":"IOFTDecimalUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1467,"src":"67:16:20","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1824,"name":"IOFTDecimalUtils","nameLocations":["469:16:20"],"nodeType":"IdentifierPath","referencedDeclaration":1467,"src":"469:16:20"},"id":1825,"nodeType":"InheritanceSpecifier","src":"469:16:20"}],"canonicalName":"OFTDecimalUtils","contractDependencies":[],"contractKind":"contract","documentation":{"id":1823,"nodeType":"StructuredDocumentation","src":"130:301:20","text":" @title OFTDecimalUtils\n @author LayerZero Labs (@TRileySchwarz, tinom.eth)\n @custom:version 1.0.0\n @notice Abstract contract that implements decimal conversion utilities between local and shared decimals.\n @dev It can be inherited in either upgradeable or non-upgradeable contracts."},"fullyImplemented":true,"id":1956,"linearizedBaseContracts":[1956,1467],"name":"OFTDecimalUtils","nameLocation":"450:15:20","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":1826,"nodeType":"StructuredDocumentation","src":"492:47:20","text":"@dev Immutable variable for local decimals."},"id":1828,"mutability":"immutable","name":"LOCAL_DECIMALS","nameLocation":"568:14:20","nodeType":"VariableDeclaration","scope":1956,"src":"544:38:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1827,"name":"uint8","nodeType":"ElementaryTypeName","src":"544:5:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"documentation":{"id":1829,"nodeType":"StructuredDocumentation","src":"589:48:20","text":"@dev Immutable variable for shared decimals."},"id":1831,"mutability":"immutable","name":"SHARED_DECIMALS","nameLocation":"666:15:20","nodeType":"VariableDeclaration","scope":1956,"src":"642:39:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1830,"name":"uint8","nodeType":"ElementaryTypeName","src":"642:5:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"documentation":{"id":1832,"nodeType":"StructuredDocumentation","src":"688:86:20","text":"@dev Immutable variable for the conversion rate between local and shared decimals."},"id":1834,"mutability":"immutable","name":"DECIMAL_CONVERSION_RATE","nameLocation":"805:23:20","nodeType":"VariableDeclaration","scope":1956,"src":"779:49:20","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1833,"name":"uint256","nodeType":"ElementaryTypeName","src":"779:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"body":{"id":1866,"nodeType":"Block","src":"1167:245:20","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1842,"name":"_sharedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"1181:15:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1843,"name":"_localDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"1199:14:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1181:32:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1848,"nodeType":"IfStatement","src":"1177:67:20","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1845,"name":"InvalidLocalDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1443,"src":"1222:20:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":1846,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1222:22:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1847,"nodeType":"RevertStatement","src":"1215:29:20"}},{"expression":{"id":1851,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1849,"name":"LOCAL_DECIMALS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"1255:14:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1850,"name":"_localDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"1272:14:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1255:31:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1852,"nodeType":"ExpressionStatement","src":"1255:31:20"},{"expression":{"id":1855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1853,"name":"SHARED_DECIMALS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"1296:15:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1854,"name":"_sharedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"1314:15:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1296:33:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":1856,"nodeType":"ExpressionStatement","src":"1296:33:20"},{"expression":{"id":1864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1857,"name":"DECIMAL_CONVERSION_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"1339:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":1858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1365:2:20","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1859,"name":"_localDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1837,"src":"1372:14:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1860,"name":"_sharedDecimals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"1389:15:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1372:32:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":1862,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1371:34:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1365:40:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1339:66:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1865,"nodeType":"ExpressionStatement","src":"1339:66:20"}]},"documentation":{"id":1835,"nodeType":"StructuredDocumentation","src":"835:270:20","text":" @dev Sets immutable variables.\n @dev Reverts if the shared decimals are greater than the local decimals.\n @param _localDecimals Local decimals for tokens on this chain\n @param _sharedDecimals Shared decimals for cross-chain messaging"},"id":1867,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1837,"mutability":"mutable","name":"_localDecimals","nameLocation":"1128:14:20","nodeType":"VariableDeclaration","scope":1867,"src":"1122:20:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1836,"name":"uint8","nodeType":"ElementaryTypeName","src":"1122:5:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":1839,"mutability":"mutable","name":"_sharedDecimals","nameLocation":"1150:15:20","nodeType":"VariableDeclaration","scope":1867,"src":"1144:21:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1838,"name":"uint8","nodeType":"ElementaryTypeName","src":"1144:5:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1121:45:20"},"returnParameters":{"id":1841,"nodeType":"ParameterList","parameters":[],"src":"1167:0:20"},"scope":1956,"src":"1110:302:20","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[1454],"body":{"id":1875,"nodeType":"Block","src":"1534:38:20","statements":[{"expression":{"id":1873,"name":"LOCAL_DECIMALS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1828,"src":"1551:14:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":1872,"id":1874,"nodeType":"Return","src":"1544:21:20"}]},"documentation":{"id":1868,"nodeType":"StructuredDocumentation","src":"1418:47:20","text":" @inheritdoc IOFTDecimalUtils"},"functionSelector":"e46e7058","id":1876,"implemented":true,"kind":"function","modifiers":[],"name":"localDecimals","nameLocation":"1479:13:20","nodeType":"FunctionDefinition","parameters":{"id":1869,"nodeType":"ParameterList","parameters":[],"src":"1492:2:20"},"returnParameters":{"id":1872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1871,"mutability":"mutable","name":"ld","nameLocation":"1530:2:20","nodeType":"VariableDeclaration","scope":1876,"src":"1524:8:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1870,"name":"uint8","nodeType":"ElementaryTypeName","src":"1524:5:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1523:10:20"},"scope":1956,"src":"1470:102:20","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1460],"body":{"id":1884,"nodeType":"Block","src":"1695:39:20","statements":[{"expression":{"id":1882,"name":"SHARED_DECIMALS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1831,"src":"1712:15:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":1881,"id":1883,"nodeType":"Return","src":"1705:22:20"}]},"documentation":{"id":1877,"nodeType":"StructuredDocumentation","src":"1578:47:20","text":" @inheritdoc IOFTDecimalUtils"},"functionSelector":"857749b0","id":1885,"implemented":true,"kind":"function","modifiers":[],"name":"sharedDecimals","nameLocation":"1639:14:20","nodeType":"FunctionDefinition","parameters":{"id":1878,"nodeType":"ParameterList","parameters":[],"src":"1653:2:20"},"returnParameters":{"id":1881,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1880,"mutability":"mutable","name":"sd","nameLocation":"1691:2:20","nodeType":"VariableDeclaration","scope":1885,"src":"1685:8:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1879,"name":"uint8","nodeType":"ElementaryTypeName","src":"1685:5:20","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1684:10:20"},"scope":1956,"src":"1630:104:20","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1466],"body":{"id":1893,"nodeType":"Block","src":"1868:47:20","statements":[{"expression":{"id":1891,"name":"DECIMAL_CONVERSION_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"1885:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1890,"id":1892,"nodeType":"Return","src":"1878:30:20"}]},"documentation":{"id":1886,"nodeType":"StructuredDocumentation","src":"1740:47:20","text":" @inheritdoc IOFTDecimalUtils"},"functionSelector":"963efcaa","id":1894,"implemented":true,"kind":"function","modifiers":[],"name":"decimalConversionRate","nameLocation":"1801:21:20","nodeType":"FunctionDefinition","parameters":{"id":1887,"nodeType":"ParameterList","parameters":[],"src":"1822:2:20"},"returnParameters":{"id":1890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1889,"mutability":"mutable","name":"rate","nameLocation":"1862:4:20","nodeType":"VariableDeclaration","scope":1894,"src":"1854:12:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1888,"name":"uint256","nodeType":"ElementaryTypeName","src":"1854:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1853:14:20"},"scope":1956,"src":"1792:123:20","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1909,"nodeType":"Block","src":"2289:87:20","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1902,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1897,"src":"2307:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1903,"name":"DECIMAL_CONVERSION_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"2319:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2307:35:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":1905,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2306:37:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1906,"name":"DECIMAL_CONVERSION_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"2346:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2306:63:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1901,"id":1908,"nodeType":"Return","src":"2299:70:20"}]},"documentation":{"id":1895,"nodeType":"StructuredDocumentation","src":"1921:274:20","text":" @notice Removes dust from the given local decimal amount.\n @dev Prevents the loss of dust when moving amounts between chains with different decimals.\n @param _amountLD Amount in local decimals\n @return amountLD Amount after removing dust"},"id":1910,"implemented":true,"kind":"function","modifiers":[],"name":"_removeDust","nameLocation":"2209:11:20","nodeType":"FunctionDefinition","parameters":{"id":1898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1897,"mutability":"mutable","name":"_amountLD","nameLocation":"2229:9:20","nodeType":"VariableDeclaration","scope":1910,"src":"2221:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1896,"name":"uint256","nodeType":"ElementaryTypeName","src":"2221:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2220:19:20"},"returnParameters":{"id":1901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1900,"mutability":"mutable","name":"amountLD","nameLocation":"2279:8:20","nodeType":"VariableDeclaration","scope":1910,"src":"2271:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1899,"name":"uint256","nodeType":"ElementaryTypeName","src":"2271:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2270:18:20"},"scope":1956,"src":"2200:176:20","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1922,"nodeType":"Block","src":"2655:59:20","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1918,"name":"_amountSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1913,"src":"2672:9:20","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1919,"name":"DECIMAL_CONVERSION_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"2684:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2672:35:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1917,"id":1921,"nodeType":"Return","src":"2665:42:20"}]},"documentation":{"id":1911,"nodeType":"StructuredDocumentation","src":"2382:186:20","text":" @notice Converts an amount from shared decimals into local decimals.\n @param _amountSD Amount in shared decimals\n @return amountLD Amount in local decimals"},"id":1923,"implemented":true,"kind":"function","modifiers":[],"name":"_toLD","nameLocation":"2582:5:20","nodeType":"FunctionDefinition","parameters":{"id":1914,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1913,"mutability":"mutable","name":"_amountSD","nameLocation":"2595:9:20","nodeType":"VariableDeclaration","scope":1923,"src":"2588:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1912,"name":"uint64","nodeType":"ElementaryTypeName","src":"2588:6:20","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2587:18:20"},"returnParameters":{"id":1917,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1916,"mutability":"mutable","name":"amountLD","nameLocation":"2645:8:20","nodeType":"VariableDeclaration","scope":1923,"src":"2637:16:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1915,"name":"uint256","nodeType":"ElementaryTypeName","src":"2637:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2636:18:20"},"scope":1956,"src":"2573:141:20","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1954,"nodeType":"Block","src":"3066:186:20","statements":[{"assignments":[1932],"declarations":[{"constant":false,"id":1932,"mutability":"mutable","name":"_amountSD","nameLocation":"3084:9:20","nodeType":"VariableDeclaration","scope":1954,"src":"3076:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1931,"name":"uint256","nodeType":"ElementaryTypeName","src":"3076:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1936,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1933,"name":"_amountLD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1926,"src":"3096:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":1934,"name":"DECIMAL_CONVERSION_RATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1834,"src":"3108:23:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3096:35:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3076:55:20"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1937,"name":"_amountSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1932,"src":"3145:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":1940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3162:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":1939,"name":"uint64","nodeType":"ElementaryTypeName","src":"3162:6:20","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":1938,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3157:4:20","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1941,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3157:12:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":1942,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3170:3:20","memberName":"max","nodeType":"MemberAccess","src":"3157:16:20","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"3145:28:20","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1948,"nodeType":"IfStatement","src":"3141:70:20","trueBody":{"errorCall":{"arguments":[{"id":1945,"name":"_amountSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1932,"src":"3201:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1944,"name":"AmountSDOverflowed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1448,"src":"3182:18:20","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":1946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3182:29:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1947,"nodeType":"RevertStatement","src":"3175:36:20"}},{"expression":{"arguments":[{"id":1951,"name":"_amountSD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1932,"src":"3235:9:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1950,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3228:6:20","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":1949,"name":"uint64","nodeType":"ElementaryTypeName","src":"3228:6:20","typeDescriptions":{}}},"id":1952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3228:17:20","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":1930,"id":1953,"nodeType":"Return","src":"3221:24:20"}]},"documentation":{"id":1924,"nodeType":"StructuredDocumentation","src":"2720:259:20","text":" @notice Converts an amount from local decimals into shared decimals.\n @dev Reverts if the amount in shared decimals overflows `uint64`.\n @param _amountLD Amount in local decimals\n @return amountSD Amount in shared decimals"},"id":1955,"implemented":true,"kind":"function","modifiers":[],"name":"_toSD","nameLocation":"2993:5:20","nodeType":"FunctionDefinition","parameters":{"id":1927,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1926,"mutability":"mutable","name":"_amountLD","nameLocation":"3007:9:20","nodeType":"VariableDeclaration","scope":1955,"src":"2999:17:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1925,"name":"uint256","nodeType":"ElementaryTypeName","src":"2999:7:20","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2998:19:20"},"returnParameters":{"id":1930,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1929,"mutability":"mutable","name":"amountSD","nameLocation":"3056:8:20","nodeType":"VariableDeclaration","scope":1955,"src":"3049:15:20","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":1928,"name":"uint64","nodeType":"ElementaryTypeName","src":"3049:6:20","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"3048:17:20"},"scope":1956,"src":"2984:268:20","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":1957,"src":"432:2822:20","usedErrors":[1443,1448],"usedEvents":[]}],"src":"32:3223:20"},"id":20}},"contracts":{"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol":{"ILayerZeroEndpointV2":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"}],"name":"ComposeDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"}],"name":"ComposeSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"DefaultReceiveLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"oldLib","type":"address"},{"indexed":false,"internalType":"uint256","name":"expiry","type":"uint256"}],"name":"DefaultReceiveLibraryTimeoutSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"DefaultSendLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"delegate","type":"address"}],"name":"DelegateSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"}],"name":"InboundNonceSkipped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"LibraryRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"extraData","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"LzComposeAlert","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"indexed":false,"internalType":"struct Origin","name":"origin","type":"tuple"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"extraData","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"LzReceiveAlert","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"}],"name":"LzTokenSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"},{"indexed":false,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PacketBurnt","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"indexed":false,"internalType":"struct Origin","name":"origin","type":"tuple"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"}],"name":"PacketDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"},{"indexed":false,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PacketNilified","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"encodedPayload","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"options","type":"bytes"},{"indexed":false,"internalType":"address","name":"sendLibrary","type":"address"}],"name":"PacketSent","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"indexed":false,"internalType":"struct Origin","name":"origin","type":"tuple"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PacketVerified","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"ReceiveLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"oldLib","type":"address"},{"indexed":false,"internalType":"uint256","name":"timeout","type":"uint256"}],"name":"ReceiveLibraryTimeoutSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"SendLibrarySet","type":"event"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes32","name":"_payloadHash","type":"bytes32"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"}],"name":"clear","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"}],"name":"composeQueue","outputs":[{"internalType":"bytes32","name":"messageHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultReceiveLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultReceiveLibraryTimeout","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultSendLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"eid","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint32","name":"_configType","type":"uint32"}],"name":"getConfig","outputs":[{"internalType":"bytes","name":"config","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"getReceiveLibrary","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"bool","name":"isDefault","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRegisteredLibraries","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSendContext","outputs":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"getSendLibrary","outputs":[{"internalType":"address","name":"lib","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"inboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"}],"name":"inboundPayloadHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"initializable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isDefaultSendLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lib","type":"address"}],"name":"isRegisteredLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSendingMessage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isSupportedEid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"}],"name":"isValidReceiveLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"lazyInboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzCompose","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"lzToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativeToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"bytes32","name":"_receiver","type":"bytes32"}],"name":"nextGuid","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes32","name":"_payloadHash","type":"bytes32"}],"name":"nilify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"bytes32","name":"_receiver","type":"bytes32"}],"name":"outboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"receiver","type":"bytes32"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"options","type":"bytes"},{"internalType":"bool","name":"payInLzToken","type":"bool"}],"internalType":"struct MessagingParams","name":"_params","type":"tuple"},{"internalType":"address","name":"_sender","type":"address"}],"name":"quote","outputs":[{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"receiveLibraryTimeout","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lib","type":"address"}],"name":"registerLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"receiver","type":"bytes32"},{"internalType":"bytes","name":"message","type":"bytes"},{"internalType":"bytes","name":"options","type":"bytes"},{"internalType":"bool","name":"payInLzToken","type":"bool"}],"internalType":"struct MessagingParams","name":"_params","type":"tuple"},{"internalType":"address","name":"_refundAddress","type":"address"}],"name":"send","outputs":[{"components":[{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"fee","type":"tuple"}],"internalType":"struct MessagingReceipt","name":"","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"},{"internalType":"bytes","name":"_message","type":"bytes"}],"name":"sendCompose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"address","name":"_lib","type":"address"},{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint32","name":"configType","type":"uint32"},{"internalType":"bytes","name":"config","type":"bytes"}],"internalType":"struct SetConfigParam[]","name":"_params","type":"tuple[]"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"},{"internalType":"uint256","name":"_gracePeriod","type":"uint256"}],"name":"setDefaultReceiveLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint256","name":"_expiry","type":"uint256"}],"name":"setDefaultReceiveLibraryTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"}],"name":"setDefaultSendLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lzToken","type":"address"}],"name":"setLzToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"},{"internalType":"uint256","name":"_gracePeriod","type":"uint256"}],"name":"setReceiveLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint256","name":"_expiry","type":"uint256"}],"name":"setReceiveLibraryTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"}],"name":"setSendLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"}],"name":"skip","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"verifiable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"bytes32","name":"_payloadHash","type":"bytes32"}],"name":"verify","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"burn(address,uint32,bytes32,uint64,bytes32)":"40f80683","clear(address,(uint32,bytes32,uint64),bytes32,bytes)":"2a56c1b0","composeQueue(address,address,bytes32,uint16)":"35d330b0","defaultReceiveLibrary(uint32)":"6f50a803","defaultReceiveLibraryTimeout(uint32)":"6e83f5bb","defaultSendLibrary(uint32)":"f64be4c7","eid()":"416ecebf","getConfig(address,address,uint32,uint32)":"2b3197b9","getReceiveLibrary(address,uint32)":"402f8468","getRegisteredLibraries()":"9132e5c3","getSendContext()":"14f651a9","getSendLibrary(address,uint32)":"b96a277f","inboundNonce(address,uint32,bytes32)":"a0dd43fc","inboundPayloadHash(address,uint32,bytes32,uint64)":"c9fc7bcd","initializable((uint32,bytes32,uint64),address)":"861e1ca5","isDefaultSendLibrary(address,uint32)":"dc93c8a2","isRegisteredLibrary(address)":"dc706a62","isSendingMessage()":"79624ca9","isSupportedEid(uint32)":"6750cd4c","isValidReceiveLibrary(address,uint32,address)":"9d7f9775","lazyInboundNonce(address,uint32,bytes32)":"5b17bb70","lzCompose(address,address,bytes32,uint16,bytes,bytes)":"91d20fa1","lzReceive((uint32,bytes32,uint64),address,bytes32,bytes,bytes)":"0c0c389e","lzToken()":"e4fe1d94","nativeToken()":"e1758bd8","nextGuid(address,uint32,bytes32)":"aafe5e07","nilify(address,uint32,bytes32,uint64,bytes32)":"2e80fbf3","outboundNonce(address,uint32,bytes32)":"9c6d7340","quote((uint32,bytes32,bytes,bytes,bool),address)":"ddc28c58","receiveLibraryTimeout(address,uint32)":"ef667aa1","registerLibrary(address)":"e8964e81","send((uint32,bytes32,bytes,bytes,bool),address)":"2637a450","sendCompose(address,bytes32,uint16,bytes)":"7cb59012","setConfig(address,address,(uint32,uint32,bytes)[])":"6dbd9f90","setDefaultReceiveLibrary(uint32,address,uint256)":"a718531b","setDefaultReceiveLibraryTimeout(uint32,address,uint256)":"d4b4ec8f","setDefaultSendLibrary(uint32,address)":"aafea312","setDelegate(address)":"ca5eb5e1","setLzToken(address)":"c28e0eed","setReceiveLibrary(address,uint32,address,uint256)":"6a14d715","setReceiveLibraryTimeout(address,uint32,address,uint256)":"183c834f","setSendLibrary(address,uint32,address)":"9535ff30","skip(address,uint32,bytes32,uint64)":"d70b8902","verifiable((uint32,bytes32,uint64),address)":"c9a54a99","verify((uint32,bytes32,uint64),address,bytes32)":"a825d747"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"}],\"name\":\"ComposeDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"ComposeSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"DefaultReceiveLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLib\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"DefaultReceiveLibraryTimeoutSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"DefaultSendLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\"}],\"name\":\"DelegateSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InboundNonceSkipped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"LibraryRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"LzComposeAlert\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"LzReceiveAlert\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"LzTokenSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"payloadHash\",\"type\":\"bytes32\"}],\"name\":\"PacketBurnt\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"PacketDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"payloadHash\",\"type\":\"bytes32\"}],\"name\":\"PacketNilified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"encodedPayload\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sendLibrary\",\"type\":\"address\"}],\"name\":\"PacketSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"indexed\":false,\"internalType\":\"struct Origin\",\"name\":\"origin\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"payloadHash\",\"type\":\"bytes32\"}],\"name\":\"PacketVerified\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"ReceiveLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLib\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"}],\"name\":\"ReceiveLibraryTimeoutSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"SendLibrarySet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"clear\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"}],\"name\":\"composeQueue\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultReceiveLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultReceiveLibraryTimeout\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultSendLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eid\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_configType\",\"type\":\"uint32\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"getReceiveLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRegisteredLibraries\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSendContext\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"getSendLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"inboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"}],\"name\":\"inboundPayloadHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"initializable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isDefaultSendLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"isRegisteredLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSendingMessage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isSupportedEid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"isValidReceiveLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"lazyInboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzCompose\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lzToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_receiver\",\"type\":\"bytes32\"}],\"name\":\"nextGuid\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"nilify\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_receiver\",\"type\":\"bytes32\"}],\"name\":\"outboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"receiver\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"payInLzToken\",\"type\":\"bool\"}],\"internalType\":\"struct MessagingParams\",\"name\":\"_params\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"quote\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"receiveLibraryTimeout\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"registerLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"receiver\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"payInLzToken\",\"type\":\"bool\"}],\"internalType\":\"struct MessagingParams\",\"name\":\"_params\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"sendCompose\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configType\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"struct SetConfigParam[]\",\"name\":\"_params\",\"type\":\"tuple[]\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_gracePeriod\",\"type\":\"uint256\"}],\"name\":\"setDefaultReceiveLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expiry\",\"type\":\"uint256\"}],\"name\":\"setDefaultReceiveLibraryTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"}],\"name\":\"setDefaultSendLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lzToken\",\"type\":\"address\"}],\"name\":\"setLzToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_gracePeriod\",\"type\":\"uint256\"}],\"name\":\"setReceiveLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expiry\",\"type\":\"uint256\"}],\"name\":\"setReceiveLibraryTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"}],\"name\":\"setSendLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"}],\"name\":\"skip\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"}],\"name\":\"verifiable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"verify\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setSendLibrary(address,uint32,address)\":{\"notice\":\"------------------- OApp interfaces -------------------\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":\"ILayerZeroEndpointV2\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n uint32 dstEid;\\n bytes32 receiver;\\n bytes message;\\n bytes options;\\n bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n bytes32 guid;\\n uint64 nonce;\\n MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n uint256 nativeFee;\\n uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n uint32 srcEid;\\n bytes32 sender;\\n uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n event PacketDelivered(Origin origin, address receiver);\\n\\n event LzReceiveAlert(\\n address indexed receiver,\\n address indexed executor,\\n Origin origin,\\n bytes32 guid,\\n uint256 gas,\\n uint256 value,\\n bytes message,\\n bytes extraData,\\n bytes reason\\n );\\n\\n event LzTokenSet(address token);\\n\\n event DelegateSet(address sender, address delegate);\\n\\n function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n function send(\\n MessagingParams calldata _params,\\n address _refundAddress\\n ) external payable returns (MessagingReceipt memory);\\n\\n function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n function lzReceive(\\n Origin calldata _origin,\\n address _receiver,\\n bytes32 _guid,\\n bytes calldata _message,\\n bytes calldata _extraData\\n ) external payable;\\n\\n // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n function setLzToken(address _lzToken) external;\\n\\n function lzToken() external view returns (address);\\n\\n function nativeToken() external view returns (address);\\n\\n function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n uint32 eid;\\n uint32 configType;\\n bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n struct Timeout {\\n address lib;\\n uint256 expiry;\\n }\\n\\n event LibraryRegistered(address newLib);\\n event DefaultSendLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n event SendLibrarySet(address sender, uint32 eid, address newLib);\\n event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n function registerLibrary(address _lib) external;\\n\\n function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n function getRegisteredLibraries() external view returns (address[] memory);\\n\\n function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n /// ------------------- OApp interfaces -------------------\\n function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n function getConfig(\\n address _oapp,\\n address _lib,\\n uint32 _eid,\\n uint32 _configType\\n ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n function eid() external view returns (uint32);\\n\\n // this is an emergency function if a message cannot be verified for some reasons\\n // required to provide _nextNonce to avoid race condition\\n function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n function inboundPayloadHash(\\n address _receiver,\\n uint32 _srcEid,\\n bytes32 _sender,\\n uint64 _nonce\\n ) external view returns (bytes32);\\n\\n function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n event LzComposeAlert(\\n address indexed from,\\n address indexed to,\\n address indexed executor,\\n bytes32 guid,\\n uint16 index,\\n uint256 gas,\\n uint256 value,\\n bytes message,\\n bytes extraData,\\n bytes reason\\n );\\n\\n function composeQueue(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index\\n ) external view returns (bytes32 messageHash);\\n\\n function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n function lzCompose(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index,\\n bytes calldata _message,\\n bytes calldata _extraData\\n ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n function isSendingMessage() external view returns (bool);\\n\\n function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"setSendLibrary(address,uint32,address)":{"notice":"------------------- OApp interfaces -------------------"}},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol":{"ILayerZeroReceiver":{"abi":[{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"}],"name":"allowInitializePath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","nextNonce(uint32,bytes32)":"7d25a05e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":\"ILayerZeroReceiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n uint32 dstEid;\\n bytes32 receiver;\\n bytes message;\\n bytes options;\\n bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n bytes32 guid;\\n uint64 nonce;\\n MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n uint256 nativeFee;\\n uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n uint32 srcEid;\\n bytes32 sender;\\n uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n event PacketDelivered(Origin origin, address receiver);\\n\\n event LzReceiveAlert(\\n address indexed receiver,\\n address indexed executor,\\n Origin origin,\\n bytes32 guid,\\n uint256 gas,\\n uint256 value,\\n bytes message,\\n bytes extraData,\\n bytes reason\\n );\\n\\n event LzTokenSet(address token);\\n\\n event DelegateSet(address sender, address delegate);\\n\\n function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n function send(\\n MessagingParams calldata _params,\\n address _refundAddress\\n ) external payable returns (MessagingReceipt memory);\\n\\n function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n function lzReceive(\\n Origin calldata _origin,\\n address _receiver,\\n bytes32 _guid,\\n bytes calldata _message,\\n bytes calldata _extraData\\n ) external payable;\\n\\n // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n function setLzToken(address _lzToken) external;\\n\\n function lzToken() external view returns (address);\\n\\n function nativeToken() external view returns (address);\\n\\n function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n function lzReceive(\\n Origin calldata _origin,\\n bytes32 _guid,\\n bytes calldata _message,\\n address _executor,\\n bytes calldata _extraData\\n ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n uint32 eid;\\n uint32 configType;\\n bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n struct Timeout {\\n address lib;\\n uint256 expiry;\\n }\\n\\n event LibraryRegistered(address newLib);\\n event DefaultSendLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n event SendLibrarySet(address sender, uint32 eid, address newLib);\\n event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n function registerLibrary(address _lib) external;\\n\\n function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n function getRegisteredLibraries() external view returns (address[] memory);\\n\\n function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n /// ------------------- OApp interfaces -------------------\\n function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n function getConfig(\\n address _oapp,\\n address _lib,\\n uint32 _eid,\\n uint32 _configType\\n ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n function eid() external view returns (uint32);\\n\\n // this is an emergency function if a message cannot be verified for some reasons\\n // required to provide _nextNonce to avoid race condition\\n function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n function inboundPayloadHash(\\n address _receiver,\\n uint32 _srcEid,\\n bytes32 _sender,\\n uint64 _nonce\\n ) external view returns (bytes32);\\n\\n function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n event LzComposeAlert(\\n address indexed from,\\n address indexed to,\\n address indexed executor,\\n bytes32 guid,\\n uint16 index,\\n uint256 gas,\\n uint256 value,\\n bytes message,\\n bytes extraData,\\n bytes reason\\n );\\n\\n function composeQueue(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index\\n ) external view returns (bytes32 messageHash);\\n\\n function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n function lzCompose(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index,\\n bytes calldata _message,\\n bytes calldata _extraData\\n ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n function isSendingMessage() external view returns (bool);\\n\\n function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol":{"IMessageLibManager":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"DefaultReceiveLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"oldLib","type":"address"},{"indexed":false,"internalType":"uint256","name":"expiry","type":"uint256"}],"name":"DefaultReceiveLibraryTimeoutSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"DefaultSendLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"LibraryRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"ReceiveLibrarySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"oldLib","type":"address"},{"indexed":false,"internalType":"uint256","name":"timeout","type":"uint256"}],"name":"ReceiveLibraryTimeoutSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"address","name":"newLib","type":"address"}],"name":"SendLibrarySet","type":"event"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultReceiveLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultReceiveLibraryTimeout","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"defaultSendLibrary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint32","name":"_configType","type":"uint32"}],"name":"getConfig","outputs":[{"internalType":"bytes","name":"config","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"getReceiveLibrary","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"bool","name":"isDefault","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRegisteredLibraries","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"getSendLibrary","outputs":[{"internalType":"address","name":"lib","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isDefaultSendLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lib","type":"address"}],"name":"isRegisteredLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"isSupportedEid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"}],"name":"isValidReceiveLibrary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"receiveLibraryTimeout","outputs":[{"internalType":"address","name":"lib","type":"address"},{"internalType":"uint256","name":"expiry","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lib","type":"address"}],"name":"registerLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"address","name":"_lib","type":"address"},{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint32","name":"configType","type":"uint32"},{"internalType":"bytes","name":"config","type":"bytes"}],"internalType":"struct SetConfigParam[]","name":"_params","type":"tuple[]"}],"name":"setConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"},{"internalType":"uint256","name":"_gracePeriod","type":"uint256"}],"name":"setDefaultReceiveLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint256","name":"_expiry","type":"uint256"}],"name":"setDefaultReceiveLibraryTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"}],"name":"setDefaultSendLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"},{"internalType":"uint256","name":"_gracePeriod","type":"uint256"}],"name":"setReceiveLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_lib","type":"address"},{"internalType":"uint256","name":"_expiry","type":"uint256"}],"name":"setReceiveLibraryTimeout","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_newLib","type":"address"}],"name":"setSendLibrary","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"defaultReceiveLibrary(uint32)":"6f50a803","defaultReceiveLibraryTimeout(uint32)":"6e83f5bb","defaultSendLibrary(uint32)":"f64be4c7","getConfig(address,address,uint32,uint32)":"2b3197b9","getReceiveLibrary(address,uint32)":"402f8468","getRegisteredLibraries()":"9132e5c3","getSendLibrary(address,uint32)":"b96a277f","isDefaultSendLibrary(address,uint32)":"dc93c8a2","isRegisteredLibrary(address)":"dc706a62","isSupportedEid(uint32)":"6750cd4c","isValidReceiveLibrary(address,uint32,address)":"9d7f9775","receiveLibraryTimeout(address,uint32)":"ef667aa1","registerLibrary(address)":"e8964e81","setConfig(address,address,(uint32,uint32,bytes)[])":"6dbd9f90","setDefaultReceiveLibrary(uint32,address,uint256)":"a718531b","setDefaultReceiveLibraryTimeout(uint32,address,uint256)":"d4b4ec8f","setDefaultSendLibrary(uint32,address)":"aafea312","setReceiveLibrary(address,uint32,address,uint256)":"6a14d715","setReceiveLibraryTimeout(address,uint32,address,uint256)":"183c834f","setSendLibrary(address,uint32,address)":"9535ff30"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"DefaultReceiveLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLib\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"name\":\"DefaultReceiveLibraryTimeoutSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"DefaultSendLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"LibraryRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"ReceiveLibrarySet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldLib\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timeout\",\"type\":\"uint256\"}],\"name\":\"ReceiveLibraryTimeoutSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newLib\",\"type\":\"address\"}],\"name\":\"SendLibrarySet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultReceiveLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultReceiveLibraryTimeout\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"defaultSendLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_configType\",\"type\":\"uint32\"}],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"getReceiveLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isDefault\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRegisteredLibraries\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"getSendLibrary\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isDefaultSendLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"isRegisteredLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"isSupportedEid\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"isValidReceiveLibrary\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"receiveLibraryTimeout\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"}],\"name\":\"registerLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configType\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"struct SetConfigParam[]\",\"name\":\"_params\",\"type\":\"tuple[]\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_gracePeriod\",\"type\":\"uint256\"}],\"name\":\"setDefaultReceiveLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expiry\",\"type\":\"uint256\"}],\"name\":\"setDefaultReceiveLibraryTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"}],\"name\":\"setDefaultSendLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_gracePeriod\",\"type\":\"uint256\"}],\"name\":\"setReceiveLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_lib\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expiry\",\"type\":\"uint256\"}],\"name\":\"setReceiveLibraryTimeout\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"_newLib\",\"type\":\"address\"}],\"name\":\"setSendLibrary\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"setSendLibrary(address,uint32,address)\":{\"notice\":\"------------------- OApp interfaces -------------------\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":\"IMessageLibManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n uint32 eid;\\n uint32 configType;\\n bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n struct Timeout {\\n address lib;\\n uint256 expiry;\\n }\\n\\n event LibraryRegistered(address newLib);\\n event DefaultSendLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n event SendLibrarySet(address sender, uint32 eid, address newLib);\\n event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n function registerLibrary(address _lib) external;\\n\\n function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n function getRegisteredLibraries() external view returns (address[] memory);\\n\\n function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n /// ------------------- OApp interfaces -------------------\\n function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n function getConfig(\\n address _oapp,\\n address _lib,\\n uint32 _eid,\\n uint32 _configType\\n ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"setSendLibrary(address,uint32,address)":{"notice":"------------------- OApp interfaces -------------------"}},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol":{"IMessagingChannel":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"}],"name":"InboundNonceSkipped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"},{"indexed":false,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PacketBurnt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"sender","type":"bytes32"},{"indexed":false,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"uint64","name":"nonce","type":"uint64"},{"indexed":false,"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"name":"PacketNilified","type":"event"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes32","name":"_payloadHash","type":"bytes32"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eid","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"inboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"}],"name":"inboundPayloadHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"lazyInboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"bytes32","name":"_receiver","type":"bytes32"}],"name":"nextGuid","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes32","name":"_payloadHash","type":"bytes32"}],"name":"nilify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"uint32","name":"_dstEid","type":"uint32"},{"internalType":"bytes32","name":"_receiver","type":"bytes32"}],"name":"outboundNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_oapp","type":"address"},{"internalType":"uint32","name":"_srcEid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"},{"internalType":"uint64","name":"_nonce","type":"uint64"}],"name":"skip","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"burn(address,uint32,bytes32,uint64,bytes32)":"40f80683","eid()":"416ecebf","inboundNonce(address,uint32,bytes32)":"a0dd43fc","inboundPayloadHash(address,uint32,bytes32,uint64)":"c9fc7bcd","lazyInboundNonce(address,uint32,bytes32)":"5b17bb70","nextGuid(address,uint32,bytes32)":"aafe5e07","nilify(address,uint32,bytes32,uint64,bytes32)":"2e80fbf3","outboundNonce(address,uint32,bytes32)":"9c6d7340","skip(address,uint32,bytes32,uint64)":"d70b8902"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InboundNonceSkipped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"payloadHash\",\"type\":\"bytes32\"}],\"name\":\"PacketBurnt\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"payloadHash\",\"type\":\"bytes32\"}],\"name\":\"PacketNilified\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eid\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"inboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"}],\"name\":\"inboundPayloadHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"lazyInboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_receiver\",\"type\":\"bytes32\"}],\"name\":\"nextGuid\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"_payloadHash\",\"type\":\"bytes32\"}],\"name\":\"nilify\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_receiver\",\"type\":\"bytes32\"}],\"name\":\"outboundNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oapp\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"_nonce\",\"type\":\"uint64\"}],\"name\":\"skip\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":\"IMessagingChannel\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n function eid() external view returns (uint32);\\n\\n // this is an emergency function if a message cannot be verified for some reasons\\n // required to provide _nextNonce to avoid race condition\\n function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n function inboundPayloadHash(\\n address _receiver,\\n uint32 _srcEid,\\n bytes32 _sender,\\n uint64 _nonce\\n ) external view returns (bytes32);\\n\\n function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol":{"IMessagingComposer":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"}],"name":"ComposeDelivered","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"}],"name":"ComposeSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"executor","type":"address"},{"indexed":false,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint16","name":"index","type":"uint16"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"message","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"extraData","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"LzComposeAlert","type":"event"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"}],"name":"composeQueue","outputs":[{"internalType":"bytes32","name":"messageHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzCompose","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"uint16","name":"_index","type":"uint16"},{"internalType":"bytes","name":"_message","type":"bytes"}],"name":"sendCompose","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"composeQueue(address,address,bytes32,uint16)":"35d330b0","lzCompose(address,address,bytes32,uint16,bytes,bytes)":"91d20fa1","sendCompose(address,bytes32,uint16,bytes)":"7cb59012"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"}],\"name\":\"ComposeDelivered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"ComposeSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"index\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"LzComposeAlert\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"}],\"name\":\"composeQueue\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"messageHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzCompose\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint16\",\"name\":\"_index\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"sendCompose\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":\"IMessagingComposer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n event LzComposeAlert(\\n address indexed from,\\n address indexed to,\\n address indexed executor,\\n bytes32 guid,\\n uint16 index,\\n uint256 gas,\\n uint256 value,\\n bytes message,\\n bytes extraData,\\n bytes reason\\n );\\n\\n function composeQueue(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index\\n ) external view returns (bytes32 messageHash);\\n\\n function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n function lzCompose(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index,\\n bytes calldata _message,\\n bytes calldata _extraData\\n ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol":{"IMessagingContext":{"abi":[{"inputs":[],"name":"getSendContext","outputs":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"address","name":"sender","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSendingMessage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"getSendContext()":"14f651a9","isSendingMessage()":"79624ca9"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getSendContext\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isSendingMessage\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":\"IMessagingContext\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n function isSendingMessage() external view returns (bool);\\n\\n function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppCore.sol":{"IOAppCore":{"abi":[{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"peer","type":"bytes32"}],"name":"PeerSet","type":"event"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"iEndpoint","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"setPeer","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"kind":"dev","methods":{"endpoint()":{"returns":{"iEndpoint":"The LayerZero endpoint as an interface."}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol contract.","senderVersion":"The version of the OAppSender.sol contract."}},"peers(uint32)":{"params":{"_eid":"The endpoint ID."},"returns":{"peer":"The peer address (OApp instance) associated with the corresponding endpoint."}},"setDelegate(address)":{"params":{"_delegate":"The address of the delegate to be set."}},"setPeer(uint32,bytes32)":{"params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}}},"title":"IOAppCore","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"endpoint()":"5e280f11","oAppVersion()":"17442b70","peers(uint32)":"bb0b6a53","setDelegate(address)":"ca5eb5e1","setPeer(uint32,bytes32)":"3400288b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"iEndpoint\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"endpoint()\":{\"returns\":{\"iEndpoint\":\"The LayerZero endpoint as an interface.\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"peers(uint32)\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"returns\":{\"peer\":\"The peer address (OApp instance) associated with the corresponding endpoint.\"}},\"setDelegate(address)\":{\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setPeer(uint32,bytes32)\":{\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}}},\"title\":\"IOAppCore\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp Core.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppCore.sol\":\"IOAppCore\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n uint32 dstEid;\\n bytes32 receiver;\\n bytes message;\\n bytes options;\\n bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n bytes32 guid;\\n uint64 nonce;\\n MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n uint256 nativeFee;\\n uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n uint32 srcEid;\\n bytes32 sender;\\n uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n event PacketDelivered(Origin origin, address receiver);\\n\\n event LzReceiveAlert(\\n address indexed receiver,\\n address indexed executor,\\n Origin origin,\\n bytes32 guid,\\n uint256 gas,\\n uint256 value,\\n bytes message,\\n bytes extraData,\\n bytes reason\\n );\\n\\n event LzTokenSet(address token);\\n\\n event DelegateSet(address sender, address delegate);\\n\\n function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n function send(\\n MessagingParams calldata _params,\\n address _refundAddress\\n ) external payable returns (MessagingReceipt memory);\\n\\n function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n function lzReceive(\\n Origin calldata _origin,\\n address _receiver,\\n bytes32 _guid,\\n bytes calldata _message,\\n bytes calldata _extraData\\n ) external payable;\\n\\n // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n function setLzToken(address _lzToken) external;\\n\\n function lzToken() external view returns (address);\\n\\n function nativeToken() external view returns (address);\\n\\n function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n uint32 eid;\\n uint32 configType;\\n bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n struct Timeout {\\n address lib;\\n uint256 expiry;\\n }\\n\\n event LibraryRegistered(address newLib);\\n event DefaultSendLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n event SendLibrarySet(address sender, uint32 eid, address newLib);\\n event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n function registerLibrary(address _lib) external;\\n\\n function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n function getRegisteredLibraries() external view returns (address[] memory);\\n\\n function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n /// ------------------- OApp interfaces -------------------\\n function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n function getConfig(\\n address _oapp,\\n address _lib,\\n uint32 _eid,\\n uint32 _configType\\n ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n function eid() external view returns (uint32);\\n\\n // this is an emergency function if a message cannot be verified for some reasons\\n // required to provide _nextNonce to avoid race condition\\n function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n function inboundPayloadHash(\\n address _receiver,\\n uint32 _srcEid,\\n bytes32 _sender,\\n uint64 _nonce\\n ) external view returns (bytes32);\\n\\n function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n event LzComposeAlert(\\n address indexed from,\\n address indexed to,\\n address indexed executor,\\n bytes32 guid,\\n uint16 index,\\n uint256 gas,\\n uint256 value,\\n bytes message,\\n bytes extraData,\\n bytes reason\\n );\\n\\n function composeQueue(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index\\n ) external view returns (bytes32 messageHash);\\n\\n function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n function lzCompose(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index,\\n bytes calldata _message,\\n bytes calldata _extraData\\n ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n function isSendingMessage() external view returns (bool);\\n\\n function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n // Custom error messages\\n error OnlyPeer(uint32 eid, bytes32 sender);\\n error NoPeer(uint32 eid);\\n error InvalidEndpointCall();\\n error InvalidDelegate();\\n\\n // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n event PeerSet(uint32 eid, bytes32 peer);\\n\\n /**\\n * @notice Retrieves the OApp version information.\\n * @return senderVersion The version of the OAppSender.sol contract.\\n * @return receiverVersion The version of the OAppReceiver.sol contract.\\n */\\n function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n /**\\n * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n * @return iEndpoint The LayerZero endpoint as an interface.\\n */\\n function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n /**\\n * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n * @param _eid The endpoint ID.\\n * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n */\\n function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n /**\\n * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n * @param _eid The endpoint ID.\\n * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n */\\n function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n /**\\n * @notice Sets the delegate address for the OApp Core.\\n * @param _delegate The address of the delegate to be set.\\n */\\n function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x9dca296f89f2a87cb3e75e1eb089bc61da25f897df627c391fe680d1deb84d33\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp Core."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"version":1}}},"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol":{"IOAppExtended":{"abi":[{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"name":"InvalidOptions","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"indexed":false,"internalType":"struct IOAppOptionsType3.EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"EnforcedOptionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"msgInspector","type":"address"}],"name":"MsgInspectorSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"peer","type":"bytes32"}],"name":"PeerSet","type":"event"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"}],"name":"allowInitializePath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint16","name":"_msgType","type":"uint16"},{"internalType":"bytes","name":"_extraOptions","type":"bytes"}],"name":"combineOptions","outputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"iEndpoint","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint16","name":"_msgType","type":"uint16"}],"name":"enforcedOptions","outputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"}],"name":"isComposeMsgSender","outputs":[{"internalType":"bool","name":"isSender","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"msgInspector","outputs":[{"internalType":"address","name":"inspector","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"internalType":"struct IOAppOptionsType3.EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"setEnforcedOptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_msgInspector","type":"address"}],"name":"setMsgInspector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"setPeer","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"LayerZero Labs (@TRileySchwarz, tinom.eth)","custom:version":"1.0.0","details":"`IOAppReceiver` must precede `IOAppCore` for C3 linearization compatibility with `OApp`, where `OAppReceiver`'s linearization places `IOAppReceiver` before `IOAppCore`.","errors":{"InvalidOptions(bytes)":[{"params":{"options":"Invalid options"}}]},"events":{"EnforcedOptionSet((uint32,uint16,bytes)[])":{"params":{"_enforcedOptions":"Array of enforced options"}},"MsgInspectorSet(address)":{"params":{"msgInspector":"Address of the new message inspector"}}},"kind":"dev","methods":{"combineOptions(uint32,uint16,bytes)":{"params":{"_eid":"Endpoint ID","_extraOptions":"Additional options passed by the caller","_msgType":"Message type, as defined by the OApp"},"returns":{"options":"Combination of caller specified options AND enforced options"}},"endpoint()":{"returns":{"iEndpoint":"The LayerZero endpoint as an interface."}},"enforcedOptions(uint32,uint16)":{"params":{"_eid":"Endpoint ID","_msgType":"Message type, as defined by the OApp"},"returns":{"options":"Enforced options"}},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_message":"The lzReceive payload.","_origin":"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.","_sender":"The sender address."},"returns":{"isSender":"Is a valid sender."}},"msgInspector()":{"returns":{"inspector":"Address of the message inspector"}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol contract.","senderVersion":"The version of the OAppSender.sol contract."}},"peers(uint32)":{"params":{"_eid":"The endpoint ID."},"returns":{"peer":"The peer address (OApp instance) associated with the corresponding endpoint."}},"setDelegate(address)":{"params":{"_delegate":"The address of the delegate to be set."}},"setEnforcedOptions((uint32,uint16,bytes)[])":{"details":"Provides a way for the OApp to enforce things like paying for minimum destination `lzReceive` gas amounts.These enforced options can vary as the potential options/execution on the remote may differ as per the `msgType`. E.g., the amount of `lzReceive` gas necessary to deliver a `lzCompose` message adds overhead you don't want to pay if you are only sending a standard message such as `lzReceive` WITHOUT `sendCompose`.","params":{"_enforcedOptions":"Array of enforced options"}},"setMsgInspector(address)":{"params":{"_msgInspector":"Address of the new message inspector"}},"setPeer(uint32,bytes32)":{"params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}}},"title":"IOAppExtended","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","combineOptions(uint32,uint16,bytes)":"bc70b354","endpoint()":"5e280f11","enforcedOptions(uint32,uint16)":"5535d461","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","msgInspector()":"111ecdad","nextNonce(uint32,bytes32)":"7d25a05e","oAppVersion()":"17442b70","peers(uint32)":"bb0b6a53","setDelegate(address)":"ca5eb5e1","setEnforcedOptions((uint32,uint16,bytes)[])":"b98bd070","setMsgInspector(address)":"6fc1b31e","setPeer(uint32,bytes32)":"3400288b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IOAppOptionsType3.EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"msgInspector\",\"type\":\"address\"}],\"name\":\"MsgInspectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"iEndpoint\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSender\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"msgInspector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"inspector\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct IOAppOptionsType3.EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_msgInspector\",\"type\":\"address\"}],\"name\":\"setMsgInspector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"LayerZero Labs (@TRileySchwarz, tinom.eth)\",\"custom:version\":\"1.0.0\",\"details\":\"`IOAppReceiver` must precede `IOAppCore` for C3 linearization compatibility with `OApp`, where `OAppReceiver`'s linearization places `IOAppReceiver` before `IOAppCore`.\",\"errors\":{\"InvalidOptions(bytes)\":[{\"params\":{\"options\":\"Invalid options\"}}]},\"events\":{\"EnforcedOptionSet((uint32,uint16,bytes)[])\":{\"params\":{\"_enforcedOptions\":\"Array of enforced options\"}},\"MsgInspectorSet(address)\":{\"params\":{\"msgInspector\":\"Address of the new message inspector\"}}},\"kind\":\"dev\",\"methods\":{\"combineOptions(uint32,uint16,bytes)\":{\"params\":{\"_eid\":\"Endpoint ID\",\"_extraOptions\":\"Additional options passed by the caller\",\"_msgType\":\"Message type, as defined by the OApp\"},\"returns\":{\"options\":\"Combination of caller specified options AND enforced options\"}},\"endpoint()\":{\"returns\":{\"iEndpoint\":\"The LayerZero endpoint as an interface.\"}},\"enforcedOptions(uint32,uint16)\":{\"params\":{\"_eid\":\"Endpoint ID\",\"_msgType\":\"Message type, as defined by the OApp\"},\"returns\":{\"options\":\"Enforced options\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_message\":\"The lzReceive payload.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\",\"_sender\":\"The sender address.\"},\"returns\":{\"isSender\":\"Is a valid sender.\"}},\"msgInspector()\":{\"returns\":{\"inspector\":\"Address of the message inspector\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"peers(uint32)\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"returns\":{\"peer\":\"The peer address (OApp instance) associated with the corresponding endpoint.\"}},\"setDelegate(address)\":{\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Provides a way for the OApp to enforce things like paying for minimum destination `lzReceive` gas amounts.These enforced options can vary as the potential options/execution on the remote may differ as per the `msgType`. E.g., the amount of `lzReceive` gas necessary to deliver a `lzCompose` message adds overhead you don't want to pay if you are only sending a standard message such as `lzReceive` WITHOUT `sendCompose`.\",\"params\":{\"_enforcedOptions\":\"Array of enforced options\"}},\"setMsgInspector(address)\":{\"params\":{\"_msgInspector\":\"Address of the new message inspector\"}},\"setPeer(uint32,bytes32)\":{\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}}},\"title\":\"IOAppExtended\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidOptions(bytes)\":[{\"notice\":\"Thrown when invalid options are provided.\"}]},\"events\":{\"EnforcedOptionSet((uint32,uint16,bytes)[])\":{\"notice\":\"Emitted when enforced options are set.\"},\"MsgInspectorSet(address)\":{\"notice\":\"Emitted when a new message inspector is set.\"}},\"kind\":\"user\",\"methods\":{\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"enforcedOptions(uint32,uint16)\":{\"notice\":\"Returns the enforced options for a given endpoint ID and message type.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"msgInspector()\":{\"notice\":\"Retrieves the message inspector address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp Core.\"},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"notice\":\"Sets enforced options for specific endpoint and message type combinations.\"},\"setMsgInspector(address)\":{\"notice\":\"Sets the message inspector address.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"}},\"notice\":\"Aggregate interface for extended OApp contracts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol\":\"IOAppExtended\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n uint32 dstEid;\\n bytes32 receiver;\\n bytes message;\\n bytes options;\\n bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n bytes32 guid;\\n uint64 nonce;\\n MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n uint256 nativeFee;\\n uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n uint32 srcEid;\\n bytes32 sender;\\n uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n event PacketDelivered(Origin origin, address receiver);\\n\\n event LzReceiveAlert(\\n address indexed receiver,\\n address indexed executor,\\n Origin origin,\\n bytes32 guid,\\n uint256 gas,\\n uint256 value,\\n bytes message,\\n bytes extraData,\\n bytes reason\\n );\\n\\n event LzTokenSet(address token);\\n\\n event DelegateSet(address sender, address delegate);\\n\\n function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n function send(\\n MessagingParams calldata _params,\\n address _refundAddress\\n ) external payable returns (MessagingReceipt memory);\\n\\n function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n function lzReceive(\\n Origin calldata _origin,\\n address _receiver,\\n bytes32 _guid,\\n bytes calldata _message,\\n bytes calldata _extraData\\n ) external payable;\\n\\n // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n function setLzToken(address _lzToken) external;\\n\\n function lzToken() external view returns (address);\\n\\n function nativeToken() external view returns (address);\\n\\n function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n function lzReceive(\\n Origin calldata _origin,\\n bytes32 _guid,\\n bytes calldata _message,\\n address _executor,\\n bytes calldata _extraData\\n ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n uint32 eid;\\n uint32 configType;\\n bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n struct Timeout {\\n address lib;\\n uint256 expiry;\\n }\\n\\n event LibraryRegistered(address newLib);\\n event DefaultSendLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n event SendLibrarySet(address sender, uint32 eid, address newLib);\\n event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n function registerLibrary(address _lib) external;\\n\\n function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n function getRegisteredLibraries() external view returns (address[] memory);\\n\\n function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n /// ------------------- OApp interfaces -------------------\\n function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n function getConfig(\\n address _oapp,\\n address _lib,\\n uint32 _eid,\\n uint32 _configType\\n ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n function eid() external view returns (uint32);\\n\\n // this is an emergency function if a message cannot be verified for some reasons\\n // required to provide _nextNonce to avoid race condition\\n function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n function inboundPayloadHash(\\n address _receiver,\\n uint32 _srcEid,\\n bytes32 _sender,\\n uint64 _nonce\\n ) external view returns (bytes32);\\n\\n function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n event LzComposeAlert(\\n address indexed from,\\n address indexed to,\\n address indexed executor,\\n bytes32 guid,\\n uint16 index,\\n uint256 gas,\\n uint256 value,\\n bytes message,\\n bytes extraData,\\n bytes reason\\n );\\n\\n function composeQueue(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index\\n ) external view returns (bytes32 messageHash);\\n\\n function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n function lzCompose(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index,\\n bytes calldata _message,\\n bytes calldata _extraData\\n ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n function isSendingMessage() external view returns (bool);\\n\\n function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n // Custom error messages\\n error OnlyPeer(uint32 eid, bytes32 sender);\\n error NoPeer(uint32 eid);\\n error InvalidEndpointCall();\\n error InvalidDelegate();\\n\\n // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n event PeerSet(uint32 eid, bytes32 peer);\\n\\n /**\\n * @notice Retrieves the OApp version information.\\n * @return senderVersion The version of the OAppSender.sol contract.\\n * @return receiverVersion The version of the OAppReceiver.sol contract.\\n */\\n function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n /**\\n * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n * @return iEndpoint The LayerZero endpoint as an interface.\\n */\\n function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n /**\\n * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n * @param _eid The endpoint ID.\\n * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n */\\n function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n /**\\n * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n * @param _eid The endpoint ID.\\n * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n */\\n function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n /**\\n * @notice Sets the delegate address for the OApp Core.\\n * @param _delegate The address of the delegate to be set.\\n */\\n function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x9dca296f89f2a87cb3e75e1eb089bc61da25f897df627c391fe680d1deb84d33\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nimport { IOAppCore } from \\\"./IOAppCore.sol\\\";\\nimport { IOAppMsgInspection } from \\\"./IOAppMsgInspection.sol\\\";\\nimport { IOAppOptionsType3 } from \\\"./IOAppOptionsType3.sol\\\";\\nimport { IOAppReceiver } from \\\"./IOAppReceiver.sol\\\";\\n\\n/**\\n * @title IOAppExtended\\n * @author LayerZero Labs (@TRileySchwarz, tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Aggregate interface for extended OApp contracts.\\n * @dev `IOAppReceiver` must precede `IOAppCore` for C3 linearization compatibility with `OApp`,\\n * where `OAppReceiver`'s linearization places `IOAppReceiver` before `IOAppCore`.\\n */\\ninterface IOAppExtended is IOAppReceiver, IOAppCore, IOAppOptionsType3, IOAppMsgInspection {}\\n\",\"keccak256\":\"0x94bd71ff38fd3657a3ace8603ce3905f9578ad12eb0d3b43e4643f5cb71c4692\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppMsgInspection.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IOAppMsgInspection\\n * @author LayerZero Labs (@TRileySchwarz, tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Interface for the `OAppMsgInspection` contract.\\n */\\ninterface IOAppMsgInspection {\\n /**\\n * @notice Emitted when a new message inspector is set.\\n * @param msgInspector Address of the new message inspector\\n */\\n event MsgInspectorSet(address msgInspector);\\n\\n /**\\n * @notice Retrieves the message inspector address.\\n * @return inspector Address of the message inspector\\n */\\n function msgInspector() external view returns (address inspector);\\n\\n /**\\n * @notice Sets the message inspector address.\\n * @param _msgInspector Address of the new message inspector\\n */\\n function setMsgInspector(address _msgInspector) external;\\n}\\n\",\"keccak256\":\"0x546b4cddb65a4a7bd1f7eee2a0bed098d9695fb3c1a37ba466540c7b66a70a2c\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IOAppOptionsType3\\n * @author LayerZero Labs\\n * @custom:version 1.0.0\\n * @notice Interface for the `IOAppOptionsType3` contract.\\n */\\ninterface IOAppOptionsType3 {\\n /**\\n * @notice Struct representing enforced option parameters.\\n * @param eid Endpoint ID\\n * @param msgType OApp message type\\n * @param options Additional options\\n */\\n struct EnforcedOptionParam {\\n uint32 eid;\\n uint16 msgType;\\n bytes options;\\n }\\n\\n /**\\n * @notice Thrown when invalid options are provided.\\n * @param options Invalid options\\n */\\n error InvalidOptions(bytes options);\\n\\n /**\\n * @notice Emitted when enforced options are set.\\n * @param _enforcedOptions Array of enforced options\\n */\\n event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\\n\\n /**\\n * @notice Returns the enforced options for a given endpoint ID and message type.\\n * @param _eid Endpoint ID\\n * @param _msgType Message type, as defined by the OApp\\n * @return options Enforced options\\n */\\n function enforcedOptions(uint32 _eid, uint16 _msgType) external view returns (bytes memory options);\\n\\n /**\\n * @notice Combines options for a given endpoint and message type.\\n * @param _eid Endpoint ID\\n * @param _msgType Message type, as defined by the OApp\\n * @param _extraOptions Additional options passed by the caller\\n * @return options Combination of caller specified options AND enforced options\\n */\\n function combineOptions(\\n uint32 _eid,\\n uint16 _msgType,\\n bytes calldata _extraOptions\\n ) external view returns (bytes memory options);\\n\\n /**\\n * @notice Sets enforced options for specific endpoint and message type combinations.\\n * @dev Provides a way for the OApp to enforce things like paying for minimum destination `lzReceive` gas amounts.\\n * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the\\n * `msgType`. E.g., the amount of `lzReceive` gas necessary to deliver a `lzCompose` message adds overhead you\\n * don't want to pay if you are only sending a standard message such as `lzReceive` WITHOUT `sendCompose`.\\n * @param _enforcedOptions Array of enforced options\\n */\\n function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\\n}\\n\",\"keccak256\":\"0x0ae949f44f74a44c855253fbc7651666a69de17b6d0fc32080c182bc35fcf21c\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nimport {\\n ILayerZeroReceiver,\\n Origin\\n} from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n /**\\n * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n * @param _origin The origin information containing the source endpoint and sender address.\\n * - srcEid: The source chain endpoint ID.\\n * - sender: The sender address on the src chain.\\n * - nonce: The nonce of the message.\\n * @param _message The lzReceive payload.\\n * @param _sender The sender address.\\n * @return isSender Is a valid sender.\\n *\\n * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n * @dev The default sender IS the OAppReceiver implementer.\\n */\\n function isComposeMsgSender(\\n Origin calldata _origin,\\n bytes calldata _message,\\n address _sender\\n ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0x3331edf546452e3b08f9d668b625579c42967214a75665b1e8118a4f708193e9\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidOptions(bytes)":[{"notice":"Thrown when invalid options are provided."}]},"events":{"EnforcedOptionSet((uint32,uint16,bytes)[])":{"notice":"Emitted when enforced options are set."},"MsgInspectorSet(address)":{"notice":"Emitted when a new message inspector is set."}},"kind":"user","methods":{"combineOptions(uint32,uint16,bytes)":{"notice":"Combines options for a given endpoint and message type."},"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"enforcedOptions(uint32,uint16)":{"notice":"Returns the enforced options for a given endpoint ID and message type."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."},"msgInspector()":{"notice":"Retrieves the message inspector address."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp Core."},"setEnforcedOptions((uint32,uint16,bytes)[])":{"notice":"Sets enforced options for specific endpoint and message type combinations."},"setMsgInspector(address)":{"notice":"Sets the message inspector address."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."}},"notice":"Aggregate interface for extended OApp contracts.","version":1}}},"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppMsgInspection.sol":{"IOAppMsgInspection":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"msgInspector","type":"address"}],"name":"MsgInspectorSet","type":"event"},{"inputs":[],"name":"msgInspector","outputs":[{"internalType":"address","name":"inspector","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_msgInspector","type":"address"}],"name":"setMsgInspector","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"LayerZero Labs (@TRileySchwarz, tinom.eth)","custom:version":"1.0.0","events":{"MsgInspectorSet(address)":{"params":{"msgInspector":"Address of the new message inspector"}}},"kind":"dev","methods":{"msgInspector()":{"returns":{"inspector":"Address of the message inspector"}},"setMsgInspector(address)":{"params":{"_msgInspector":"Address of the new message inspector"}}},"title":"IOAppMsgInspection","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"msgInspector()":"111ecdad","setMsgInspector(address)":"6fc1b31e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"msgInspector\",\"type\":\"address\"}],\"name\":\"MsgInspectorSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"msgInspector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"inspector\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_msgInspector\",\"type\":\"address\"}],\"name\":\"setMsgInspector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"LayerZero Labs (@TRileySchwarz, tinom.eth)\",\"custom:version\":\"1.0.0\",\"events\":{\"MsgInspectorSet(address)\":{\"params\":{\"msgInspector\":\"Address of the new message inspector\"}}},\"kind\":\"dev\",\"methods\":{\"msgInspector()\":{\"returns\":{\"inspector\":\"Address of the message inspector\"}},\"setMsgInspector(address)\":{\"params\":{\"_msgInspector\":\"Address of the new message inspector\"}}},\"title\":\"IOAppMsgInspection\",\"version\":1},\"userdoc\":{\"events\":{\"MsgInspectorSet(address)\":{\"notice\":\"Emitted when a new message inspector is set.\"}},\"kind\":\"user\",\"methods\":{\"msgInspector()\":{\"notice\":\"Retrieves the message inspector address.\"},\"setMsgInspector(address)\":{\"notice\":\"Sets the message inspector address.\"}},\"notice\":\"Interface for the `OAppMsgInspection` contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppMsgInspection.sol\":\"IOAppMsgInspection\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppMsgInspection.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IOAppMsgInspection\\n * @author LayerZero Labs (@TRileySchwarz, tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Interface for the `OAppMsgInspection` contract.\\n */\\ninterface IOAppMsgInspection {\\n /**\\n * @notice Emitted when a new message inspector is set.\\n * @param msgInspector Address of the new message inspector\\n */\\n event MsgInspectorSet(address msgInspector);\\n\\n /**\\n * @notice Retrieves the message inspector address.\\n * @return inspector Address of the message inspector\\n */\\n function msgInspector() external view returns (address inspector);\\n\\n /**\\n * @notice Sets the message inspector address.\\n * @param _msgInspector Address of the new message inspector\\n */\\n function setMsgInspector(address _msgInspector) external;\\n}\\n\",\"keccak256\":\"0x546b4cddb65a4a7bd1f7eee2a0bed098d9695fb3c1a37ba466540c7b66a70a2c\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"events":{"MsgInspectorSet(address)":{"notice":"Emitted when a new message inspector is set."}},"kind":"user","methods":{"msgInspector()":{"notice":"Retrieves the message inspector address."},"setMsgInspector(address)":{"notice":"Sets the message inspector address."}},"notice":"Interface for the `OAppMsgInspection` contract.","version":1}}},"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppOptionsType3.sol":{"IOAppOptionsType3":{"abi":[{"inputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"name":"InvalidOptions","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"indexed":false,"internalType":"struct IOAppOptionsType3.EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"EnforcedOptionSet","type":"event"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint16","name":"_msgType","type":"uint16"},{"internalType":"bytes","name":"_extraOptions","type":"bytes"}],"name":"combineOptions","outputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint16","name":"_msgType","type":"uint16"}],"name":"enforcedOptions","outputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"internalType":"struct IOAppOptionsType3.EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"setEnforcedOptions","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"LayerZero Labs","custom:version":"1.0.0","errors":{"InvalidOptions(bytes)":[{"params":{"options":"Invalid options"}}]},"events":{"EnforcedOptionSet((uint32,uint16,bytes)[])":{"params":{"_enforcedOptions":"Array of enforced options"}}},"kind":"dev","methods":{"combineOptions(uint32,uint16,bytes)":{"params":{"_eid":"Endpoint ID","_extraOptions":"Additional options passed by the caller","_msgType":"Message type, as defined by the OApp"},"returns":{"options":"Combination of caller specified options AND enforced options"}},"enforcedOptions(uint32,uint16)":{"params":{"_eid":"Endpoint ID","_msgType":"Message type, as defined by the OApp"},"returns":{"options":"Enforced options"}},"setEnforcedOptions((uint32,uint16,bytes)[])":{"details":"Provides a way for the OApp to enforce things like paying for minimum destination `lzReceive` gas amounts.These enforced options can vary as the potential options/execution on the remote may differ as per the `msgType`. E.g., the amount of `lzReceive` gas necessary to deliver a `lzCompose` message adds overhead you don't want to pay if you are only sending a standard message such as `lzReceive` WITHOUT `sendCompose`.","params":{"_enforcedOptions":"Array of enforced options"}}},"title":"IOAppOptionsType3","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"combineOptions(uint32,uint16,bytes)":"bc70b354","enforcedOptions(uint32,uint16)":"5535d461","setEnforcedOptions((uint32,uint16,bytes)[])":"b98bd070"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IOAppOptionsType3.EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct IOAppOptionsType3.EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"LayerZero Labs\",\"custom:version\":\"1.0.0\",\"errors\":{\"InvalidOptions(bytes)\":[{\"params\":{\"options\":\"Invalid options\"}}]},\"events\":{\"EnforcedOptionSet((uint32,uint16,bytes)[])\":{\"params\":{\"_enforcedOptions\":\"Array of enforced options\"}}},\"kind\":\"dev\",\"methods\":{\"combineOptions(uint32,uint16,bytes)\":{\"params\":{\"_eid\":\"Endpoint ID\",\"_extraOptions\":\"Additional options passed by the caller\",\"_msgType\":\"Message type, as defined by the OApp\"},\"returns\":{\"options\":\"Combination of caller specified options AND enforced options\"}},\"enforcedOptions(uint32,uint16)\":{\"params\":{\"_eid\":\"Endpoint ID\",\"_msgType\":\"Message type, as defined by the OApp\"},\"returns\":{\"options\":\"Enforced options\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Provides a way for the OApp to enforce things like paying for minimum destination `lzReceive` gas amounts.These enforced options can vary as the potential options/execution on the remote may differ as per the `msgType`. E.g., the amount of `lzReceive` gas necessary to deliver a `lzCompose` message adds overhead you don't want to pay if you are only sending a standard message such as `lzReceive` WITHOUT `sendCompose`.\",\"params\":{\"_enforcedOptions\":\"Array of enforced options\"}}},\"title\":\"IOAppOptionsType3\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidOptions(bytes)\":[{\"notice\":\"Thrown when invalid options are provided.\"}]},\"events\":{\"EnforcedOptionSet((uint32,uint16,bytes)[])\":{\"notice\":\"Emitted when enforced options are set.\"}},\"kind\":\"user\",\"methods\":{\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"enforcedOptions(uint32,uint16)\":{\"notice\":\"Returns the enforced options for a given endpoint ID and message type.\"},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"notice\":\"Sets enforced options for specific endpoint and message type combinations.\"}},\"notice\":\"Interface for the `IOAppOptionsType3` contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppOptionsType3.sol\":\"IOAppOptionsType3\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IOAppOptionsType3\\n * @author LayerZero Labs\\n * @custom:version 1.0.0\\n * @notice Interface for the `IOAppOptionsType3` contract.\\n */\\ninterface IOAppOptionsType3 {\\n /**\\n * @notice Struct representing enforced option parameters.\\n * @param eid Endpoint ID\\n * @param msgType OApp message type\\n * @param options Additional options\\n */\\n struct EnforcedOptionParam {\\n uint32 eid;\\n uint16 msgType;\\n bytes options;\\n }\\n\\n /**\\n * @notice Thrown when invalid options are provided.\\n * @param options Invalid options\\n */\\n error InvalidOptions(bytes options);\\n\\n /**\\n * @notice Emitted when enforced options are set.\\n * @param _enforcedOptions Array of enforced options\\n */\\n event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\\n\\n /**\\n * @notice Returns the enforced options for a given endpoint ID and message type.\\n * @param _eid Endpoint ID\\n * @param _msgType Message type, as defined by the OApp\\n * @return options Enforced options\\n */\\n function enforcedOptions(uint32 _eid, uint16 _msgType) external view returns (bytes memory options);\\n\\n /**\\n * @notice Combines options for a given endpoint and message type.\\n * @param _eid Endpoint ID\\n * @param _msgType Message type, as defined by the OApp\\n * @param _extraOptions Additional options passed by the caller\\n * @return options Combination of caller specified options AND enforced options\\n */\\n function combineOptions(\\n uint32 _eid,\\n uint16 _msgType,\\n bytes calldata _extraOptions\\n ) external view returns (bytes memory options);\\n\\n /**\\n * @notice Sets enforced options for specific endpoint and message type combinations.\\n * @dev Provides a way for the OApp to enforce things like paying for minimum destination `lzReceive` gas amounts.\\n * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the\\n * `msgType`. E.g., the amount of `lzReceive` gas necessary to deliver a `lzCompose` message adds overhead you\\n * don't want to pay if you are only sending a standard message such as `lzReceive` WITHOUT `sendCompose`.\\n * @param _enforcedOptions Array of enforced options\\n */\\n function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\\n}\\n\",\"keccak256\":\"0x0ae949f44f74a44c855253fbc7651666a69de17b6d0fc32080c182bc35fcf21c\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidOptions(bytes)":[{"notice":"Thrown when invalid options are provided."}]},"events":{"EnforcedOptionSet((uint32,uint16,bytes)[])":{"notice":"Emitted when enforced options are set."}},"kind":"user","methods":{"combineOptions(uint32,uint16,bytes)":{"notice":"Combines options for a given endpoint and message type."},"enforcedOptions(uint32,uint16)":{"notice":"Returns the enforced options for a given endpoint ID and message type."},"setEnforcedOptions((uint32,uint16,bytes)[])":{"notice":"Sets enforced options for specific endpoint and message type combinations."}},"notice":"Interface for the `IOAppOptionsType3` contract.","version":1}}},"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppReceiver.sol":{"IOAppReceiver":{"abi":[{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"}],"name":"allowInitializePath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"}],"name":"isComposeMsgSender","outputs":[{"internalType":"bool","name":"isSender","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"}],"devdoc":{"kind":"dev","methods":{"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_message":"The lzReceive payload.","_origin":"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.","_sender":"The sender address."},"returns":{"isSender":"Is a valid sender."}}},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","nextNonce(uint32,bytes32)":"7d25a05e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSender\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_message\":\"The lzReceive payload.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\",\"_sender\":\"The sender address.\"},\"returns\":{\"isSender\":\"Is a valid sender.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppReceiver.sol\":\"IOAppReceiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n uint32 dstEid;\\n bytes32 receiver;\\n bytes message;\\n bytes options;\\n bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n bytes32 guid;\\n uint64 nonce;\\n MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n uint256 nativeFee;\\n uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n uint32 srcEid;\\n bytes32 sender;\\n uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n event PacketDelivered(Origin origin, address receiver);\\n\\n event LzReceiveAlert(\\n address indexed receiver,\\n address indexed executor,\\n Origin origin,\\n bytes32 guid,\\n uint256 gas,\\n uint256 value,\\n bytes message,\\n bytes extraData,\\n bytes reason\\n );\\n\\n event LzTokenSet(address token);\\n\\n event DelegateSet(address sender, address delegate);\\n\\n function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n function send(\\n MessagingParams calldata _params,\\n address _refundAddress\\n ) external payable returns (MessagingReceipt memory);\\n\\n function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n function lzReceive(\\n Origin calldata _origin,\\n address _receiver,\\n bytes32 _guid,\\n bytes calldata _message,\\n bytes calldata _extraData\\n ) external payable;\\n\\n // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n function setLzToken(address _lzToken) external;\\n\\n function lzToken() external view returns (address);\\n\\n function nativeToken() external view returns (address);\\n\\n function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n function lzReceive(\\n Origin calldata _origin,\\n bytes32 _guid,\\n bytes calldata _message,\\n address _executor,\\n bytes calldata _extraData\\n ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n uint32 eid;\\n uint32 configType;\\n bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n struct Timeout {\\n address lib;\\n uint256 expiry;\\n }\\n\\n event LibraryRegistered(address newLib);\\n event DefaultSendLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n event SendLibrarySet(address sender, uint32 eid, address newLib);\\n event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n function registerLibrary(address _lib) external;\\n\\n function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n function getRegisteredLibraries() external view returns (address[] memory);\\n\\n function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n /// ------------------- OApp interfaces -------------------\\n function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n function getConfig(\\n address _oapp,\\n address _lib,\\n uint32 _eid,\\n uint32 _configType\\n ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n function eid() external view returns (uint32);\\n\\n // this is an emergency function if a message cannot be verified for some reasons\\n // required to provide _nextNonce to avoid race condition\\n function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n function inboundPayloadHash(\\n address _receiver,\\n uint32 _srcEid,\\n bytes32 _sender,\\n uint64 _nonce\\n ) external view returns (bytes32);\\n\\n function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n event LzComposeAlert(\\n address indexed from,\\n address indexed to,\\n address indexed executor,\\n bytes32 guid,\\n uint16 index,\\n uint256 gas,\\n uint256 value,\\n bytes message,\\n bytes extraData,\\n bytes reason\\n );\\n\\n function composeQueue(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index\\n ) external view returns (bytes32 messageHash);\\n\\n function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n function lzCompose(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index,\\n bytes calldata _message,\\n bytes calldata _extraData\\n ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n function isSendingMessage() external view returns (bool);\\n\\n function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nimport {\\n ILayerZeroReceiver,\\n Origin\\n} from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n /**\\n * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n * @param _origin The origin information containing the source endpoint and sender address.\\n * - srcEid: The source chain endpoint ID.\\n * - sender: The sender address on the src chain.\\n * - nonce: The nonce of the message.\\n * @param _message The lzReceive payload.\\n * @param _sender The sender address.\\n * @return isSender Is a valid sender.\\n *\\n * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n * @dev The default sender IS the OAppReceiver implementer.\\n */\\n function isComposeMsgSender(\\n Origin calldata _origin,\\n bytes calldata _message,\\n address _sender\\n ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0x3331edf546452e3b08f9d668b625579c42967214a75665b1e8118a4f708193e9\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."}},"version":1}}},"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol":{"IFeeConfig":{"abi":[{"inputs":[{"internalType":"uint16","name":"feeBps","type":"uint16"}],"name":"InvalidBps","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"feeBps","type":"uint16"}],"name":"DefaultFeeBpsSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint16","name":"feeBps","type":"uint16"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"FeeBpsSet","type":"event"},{"inputs":[],"name":"defaultFeeBps","outputs":[{"internalType":"uint16","name":"fee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"feeBps","outputs":[{"components":[{"internalType":"uint16","name":"feeBps","type":"uint16"},{"internalType":"bool","name":"enabled","type":"bool"}],"internalType":"struct IFeeConfig.FeeConfig","name":"config","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amountAfterFee","type":"uint256"}],"name":"getAmountBeforeFee","outputs":[{"internalType":"uint256","name":"amountBeforeFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"getFee","outputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_feeBps","type":"uint16"}],"name":"setDefaultFeeBps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint16","name":"_feeBps","type":"uint16"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setFeeBps","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"LayerZero Labs (@TRileySchwarz, tinom.eth)","custom:version":"1.0.0","errors":{"InvalidBps(uint16)":[{"params":{"feeBps":"Invalid fee basis points (BPS)"}}]},"events":{"DefaultFeeBpsSet(uint16)":{"params":{"feeBps":"Default fee basis points (BPS)"}},"FeeBpsSet(uint256,uint16,bool)":{"params":{"enabled":"Whether the fee is enabled for the destination","feeBps":"Fee basis points (BPS)","id":"Destination ID"}}},"kind":"dev","methods":{"defaultFeeBps()":{"returns":{"fee":"Default fee basis points (BPS)"}},"feeBps(uint256)":{"params":{"_id":"Destination ID"},"returns":{"config":"Configured fee for the destination ID"}},"getAmountBeforeFee(uint256,uint256)":{"params":{"_amountAfterFee":"Desired amount after fees","_id":"Destination ID"},"returns":{"amountBeforeFee":"Required amount before fees"}},"getFee(uint256,uint256)":{"params":{"_amount":"Amount to calculate the fee for","_id":"Destination ID"},"returns":{"fee":"Fee amount"}},"setDefaultFeeBps(uint16)":{"params":{"_feeBps":"New default fee basis points (BPS)"}},"setFeeBps(uint256,uint16,bool)":{"params":{"_enabled":"Whether the fee is enabled for the destination","_feeBps":"Fee basis points to set","_id":"Destination ID"}}},"title":"IFeeConfig","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"defaultFeeBps()":"bcae25a4","feeBps(uint256)":"a060cc21","getAmountBeforeFee(uint256,uint256)":"62e9ad7c","getFee(uint256,uint256)":"d250185c","setDefaultFeeBps(uint16)":"4488b652","setFeeBps(uint256,uint16,bool)":"49aa4b6a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"feeBps\",\"type\":\"uint16\"}],\"name\":\"InvalidBps\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"feeBps\",\"type\":\"uint16\"}],\"name\":\"DefaultFeeBpsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"feeBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"FeeBpsSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"defaultFeeBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"fee\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"feeBps\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"feeBps\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"internalType\":\"struct IFeeConfig.FeeConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountAfterFee\",\"type\":\"uint256\"}],\"name\":\"getAmountBeforeFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountBeforeFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"getFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_feeBps\",\"type\":\"uint16\"}],\"name\":\"setDefaultFeeBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"_feeBps\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"_enabled\",\"type\":\"bool\"}],\"name\":\"setFeeBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"LayerZero Labs (@TRileySchwarz, tinom.eth)\",\"custom:version\":\"1.0.0\",\"errors\":{\"InvalidBps(uint16)\":[{\"params\":{\"feeBps\":\"Invalid fee basis points (BPS)\"}}]},\"events\":{\"DefaultFeeBpsSet(uint16)\":{\"params\":{\"feeBps\":\"Default fee basis points (BPS)\"}},\"FeeBpsSet(uint256,uint16,bool)\":{\"params\":{\"enabled\":\"Whether the fee is enabled for the destination\",\"feeBps\":\"Fee basis points (BPS)\",\"id\":\"Destination ID\"}}},\"kind\":\"dev\",\"methods\":{\"defaultFeeBps()\":{\"returns\":{\"fee\":\"Default fee basis points (BPS)\"}},\"feeBps(uint256)\":{\"params\":{\"_id\":\"Destination ID\"},\"returns\":{\"config\":\"Configured fee for the destination ID\"}},\"getAmountBeforeFee(uint256,uint256)\":{\"params\":{\"_amountAfterFee\":\"Desired amount after fees\",\"_id\":\"Destination ID\"},\"returns\":{\"amountBeforeFee\":\"Required amount before fees\"}},\"getFee(uint256,uint256)\":{\"params\":{\"_amount\":\"Amount to calculate the fee for\",\"_id\":\"Destination ID\"},\"returns\":{\"fee\":\"Fee amount\"}},\"setDefaultFeeBps(uint16)\":{\"params\":{\"_feeBps\":\"New default fee basis points (BPS)\"}},\"setFeeBps(uint256,uint16,bool)\":{\"params\":{\"_enabled\":\"Whether the fee is enabled for the destination\",\"_feeBps\":\"Fee basis points to set\",\"_id\":\"Destination ID\"}}},\"title\":\"IFeeConfig\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidBps(uint16)\":[{\"notice\":\"Thrown when the fee basis points (BPS) are invalid.\"}]},\"events\":{\"DefaultFeeBpsSet(uint16)\":{\"notice\":\"Emitted when the default fee basis points (BPS) are set.\"},\"FeeBpsSet(uint256,uint16,bool)\":{\"notice\":\"Emitted when the fee basis points (BPS) are set for a specific destination ID.\"}},\"kind\":\"user\",\"methods\":{\"defaultFeeBps()\":{\"notice\":\"Retrieves default fee basis points (BPS) used if no fee is configured for the destination ID.\"},\"feeBps(uint256)\":{\"notice\":\"Retrieves the configured fee for a given ID.\"},\"getAmountBeforeFee(uint256,uint256)\":{\"notice\":\"Retrieves the pre-fee amount required to yield a given post-fee amount.\"},\"getFee(uint256,uint256)\":{\"notice\":\"Retrieves the fee for a destination ID and amount.\"},\"setDefaultFeeBps(uint16)\":{\"notice\":\"Set the default fee basis points (BPS) for all destinations.\"},\"setFeeBps(uint256,uint16,bool)\":{\"notice\":\"Sets the fee basis points for a specific destination ID.\"}},\"notice\":\"Interface for the `FeeConfig` contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol\":\"IFeeConfig\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IFeeConfig\\n * @author LayerZero Labs (@TRileySchwarz, tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Interface for the `FeeConfig` contract.\\n */\\ninterface IFeeConfig {\\n /**\\n * @notice Configuration for a fee.\\n * @param feeBps Fee basis points (BPS)\\n * @param enabled False to fallback to the default fee basis points (BPS)\\n */\\n struct FeeConfig {\\n uint16 feeBps;\\n bool enabled;\\n }\\n\\n /**\\n * @notice Emitted when the fee basis points (BPS) are set for a specific destination ID.\\n * @param id Destination ID\\n * @param feeBps Fee basis points (BPS)\\n * @param enabled Whether the fee is enabled for the destination\\n */\\n event FeeBpsSet(uint256 id, uint16 feeBps, bool enabled);\\n\\n /**\\n * @notice Emitted when the default fee basis points (BPS) are set.\\n * @param feeBps Default fee basis points (BPS)\\n */\\n event DefaultFeeBpsSet(uint16 feeBps);\\n\\n /**\\n * @notice Thrown when the fee basis points (BPS) are invalid.\\n * @param feeBps Invalid fee basis points (BPS)\\n */\\n error InvalidBps(uint16 feeBps);\\n\\n /**\\n * @notice Retrieves the fee for a destination ID and amount.\\n * @param _id Destination ID\\n * @param _amount Amount to calculate the fee for\\n * @return fee Fee amount\\n */\\n function getFee(uint256 _id, uint256 _amount) external view returns (uint256 fee);\\n\\n /**\\n * @notice Retrieves the pre-fee amount required to yield a given post-fee amount.\\n * @param _id Destination ID\\n * @param _amountAfterFee Desired amount after fees\\n * @return amountBeforeFee Required amount before fees\\n */\\n function getAmountBeforeFee(uint256 _id, uint256 _amountAfterFee) external view returns (uint256 amountBeforeFee);\\n\\n /**\\n * @notice Retrieves default fee basis points (BPS) used if no fee is configured for the destination ID.\\n * @return fee Default fee basis points (BPS)\\n */\\n function defaultFeeBps() external view returns (uint16 fee);\\n\\n /**\\n * @notice Retrieves the configured fee for a given ID.\\n * @param _id Destination ID\\n * @return config Configured fee for the destination ID\\n */\\n function feeBps(uint256 _id) external view returns (FeeConfig memory config);\\n\\n /**\\n * @notice Set the default fee basis points (BPS) for all destinations.\\n * @param _feeBps New default fee basis points (BPS)\\n */\\n function setDefaultFeeBps(uint16 _feeBps) external;\\n\\n /**\\n * @notice Sets the fee basis points for a specific destination ID.\\n * @param _id Destination ID\\n * @param _feeBps Fee basis points to set\\n * @param _enabled Whether the fee is enabled for the destination\\n */\\n function setFeeBps(uint256 _id, uint16 _feeBps, bool _enabled) external;\\n}\\n\",\"keccak256\":\"0x5f3a969637af29109d4641483ee7d47b5c5d400d4d1e4c7a05253ceb3578cc7d\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidBps(uint16)":[{"notice":"Thrown when the fee basis points (BPS) are invalid."}]},"events":{"DefaultFeeBpsSet(uint16)":{"notice":"Emitted when the default fee basis points (BPS) are set."},"FeeBpsSet(uint256,uint16,bool)":{"notice":"Emitted when the fee basis points (BPS) are set for a specific destination ID."}},"kind":"user","methods":{"defaultFeeBps()":{"notice":"Retrieves default fee basis points (BPS) used if no fee is configured for the destination ID."},"feeBps(uint256)":{"notice":"Retrieves the configured fee for a given ID."},"getAmountBeforeFee(uint256,uint256)":{"notice":"Retrieves the pre-fee amount required to yield a given post-fee amount."},"getFee(uint256,uint256)":{"notice":"Retrieves the fee for a destination ID and amount."},"setDefaultFeeBps(uint16)":{"notice":"Set the default fee basis points (BPS) for all destinations."},"setFeeBps(uint256,uint16,bool)":{"notice":"Sets the fee basis points for a specific destination ID."}},"notice":"Interface for the `FeeConfig` contract.","version":1}}},"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol":{"IFeeHandler":{"abi":[{"inputs":[],"name":"InvalidFeeDeposit","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeDeposit","type":"address"}],"name":"FeeDepositSet","type":"event"},{"inputs":[],"name":"feeDeposit","outputs":[{"internalType":"address","name":"deposit","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_feeDeposit","type":"address"}],"name":"setFeeDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"LayerZero Labs (tinom.eth)","custom:version":"1.0.0","events":{"FeeDepositSet(address)":{"params":{"feeDeposit":"New fee deposit address"}}},"kind":"dev","methods":{"feeDeposit()":{"returns":{"deposit":"Address that will receive any accrued fees"}},"setFeeDeposit(address)":{"params":{"_feeDeposit":"Address that will receive any accrued fees"}}},"title":"IFeeHandler","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"feeDeposit()":"abca7290","setFeeDeposit(address)":"7a883d6e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidFeeDeposit\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"feeDeposit\",\"type\":\"address\"}],\"name\":\"FeeDepositSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"feeDeposit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deposit\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeDeposit\",\"type\":\"address\"}],\"name\":\"setFeeDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"LayerZero Labs (tinom.eth)\",\"custom:version\":\"1.0.0\",\"events\":{\"FeeDepositSet(address)\":{\"params\":{\"feeDeposit\":\"New fee deposit address\"}}},\"kind\":\"dev\",\"methods\":{\"feeDeposit()\":{\"returns\":{\"deposit\":\"Address that will receive any accrued fees\"}},\"setFeeDeposit(address)\":{\"params\":{\"_feeDeposit\":\"Address that will receive any accrued fees\"}}},\"title\":\"IFeeHandler\",\"version\":1},\"userdoc\":{\"errors\":{\"InvalidFeeDeposit()\":[{\"notice\":\"Thrown when the fee deposit address is invalid.\"}]},\"events\":{\"FeeDepositSet(address)\":{\"notice\":\"Emitted when the fee deposit is updated.\"}},\"kind\":\"user\",\"methods\":{\"feeDeposit()\":{\"notice\":\"Returns the address to which fees are forwarded.\"},\"setFeeDeposit(address)\":{\"notice\":\"Sets the fee deposit address.\"}},\"notice\":\"Interface for the `FeeHandler` contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol\":\"IFeeHandler\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IFeeHandler\\n * @author LayerZero Labs (tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Interface for the `FeeHandler` contract.\\n */\\ninterface IFeeHandler {\\n /**\\n * @notice Thrown when the fee deposit address is invalid.\\n */\\n error InvalidFeeDeposit();\\n\\n /**\\n * @notice Emitted when the fee deposit is updated.\\n * @param feeDeposit New fee deposit address\\n */\\n event FeeDepositSet(address indexed feeDeposit);\\n\\n /**\\n * @notice Returns the address to which fees are forwarded.\\n * @return deposit Address that will receive any accrued fees\\n */\\n function feeDeposit() external view returns (address deposit);\\n\\n /**\\n * @notice Sets the fee deposit address.\\n * @param _feeDeposit Address that will receive any accrued fees\\n */\\n function setFeeDeposit(address _feeDeposit) external;\\n}\\n\",\"keccak256\":\"0xf90d8bb8330789b7a2964a8e91e6daa16d53e88b3645126bf7e60842d01b05ca\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"InvalidFeeDeposit()":[{"notice":"Thrown when the fee deposit address is invalid."}]},"events":{"FeeDepositSet(address)":{"notice":"Emitted when the fee deposit is updated."}},"kind":"user","methods":{"feeDeposit()":{"notice":"Returns the address to which fees are forwarded."},"setFeeDeposit(address)":{"notice":"Sets the fee deposit address."}},"notice":"Interface for the `FeeHandler` contract.","version":1}}},"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol":{"IPauseByID":{"abi":[{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool"}],"name":"PauseStateIdempotent","type":"error"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"Paused","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"DefaultPauseSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bool","name":"paused","type":"bool"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"PauseSet","type":"event"},{"inputs":[],"name":"defaultPaused","outputs":[{"internalType":"bool","name":"paused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"isPaused","outputs":[{"internalType":"bool","name":"paused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"pauseConfig","outputs":[{"components":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"bool","name":"enabled","type":"bool"}],"internalType":"struct IPauseByID.PauseConfig","name":"config","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setDefaultPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"bool","name":"enabled","type":"bool"}],"internalType":"struct IPauseByID.SetPausedParam[]","name":"_params","type":"tuple[]"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"LayerZero Labs (tinom.eth)","custom:version":"1.0.0","errors":{"PauseStateIdempotent(bool)":[{"params":{"isPaused":"Whether transfers are paused"}}],"Paused(uint256)":[{"params":{"id":"Destination ID that is paused"}}]},"events":{"DefaultPauseSet(bool)":{"params":{"paused":"Default pause status"}},"PauseSet(uint256,bool,bool)":{"params":{"enabled":"Whether the pause config is enabled for the destination","id":"Destination ID","paused":"Whether transfers are paused for this ID"}}},"kind":"dev","methods":{"defaultPaused()":{"returns":{"paused":"Default pause status"}},"isPaused(uint256)":{"params":{"_id":"Destination ID"},"returns":{"paused":"Whether transfers are paused"}},"pauseConfig(uint256)":{"params":{"_id":"Destination ID"},"returns":{"config":"Configured pause setting for the destination ID"}},"setDefaultPaused(bool)":{"params":{"_paused":"New default pause status"}},"setPaused((uint256,bool,bool)[])":{"params":{"_params":"Array of pause configurations"}}},"title":"IPauseByID","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"defaultPaused()":"13053500","isPaused(uint256)":"bdf2a43c","pauseConfig(uint256)":"063de7ea","setDefaultPaused(bool)":"a6af01d7","setPaused((uint256,bool,bool)[])":"88c0a4ab"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"PauseStateIdempotent\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"DefaultPauseSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"PauseSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"defaultPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"pauseConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"internalType\":\"struct IPauseByID.PauseConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_paused\",\"type\":\"bool\"}],\"name\":\"setDefaultPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"internalType\":\"struct IPauseByID.SetPausedParam[]\",\"name\":\"_params\",\"type\":\"tuple[]\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"LayerZero Labs (tinom.eth)\",\"custom:version\":\"1.0.0\",\"errors\":{\"PauseStateIdempotent(bool)\":[{\"params\":{\"isPaused\":\"Whether transfers are paused\"}}],\"Paused(uint256)\":[{\"params\":{\"id\":\"Destination ID that is paused\"}}]},\"events\":{\"DefaultPauseSet(bool)\":{\"params\":{\"paused\":\"Default pause status\"}},\"PauseSet(uint256,bool,bool)\":{\"params\":{\"enabled\":\"Whether the pause config is enabled for the destination\",\"id\":\"Destination ID\",\"paused\":\"Whether transfers are paused for this ID\"}}},\"kind\":\"dev\",\"methods\":{\"defaultPaused()\":{\"returns\":{\"paused\":\"Default pause status\"}},\"isPaused(uint256)\":{\"params\":{\"_id\":\"Destination ID\"},\"returns\":{\"paused\":\"Whether transfers are paused\"}},\"pauseConfig(uint256)\":{\"params\":{\"_id\":\"Destination ID\"},\"returns\":{\"config\":\"Configured pause setting for the destination ID\"}},\"setDefaultPaused(bool)\":{\"params\":{\"_paused\":\"New default pause status\"}},\"setPaused((uint256,bool,bool)[])\":{\"params\":{\"_params\":\"Array of pause configurations\"}}},\"title\":\"IPauseByID\",\"version\":1},\"userdoc\":{\"errors\":{\"PauseStateIdempotent(bool)\":[{\"notice\":\"Thrown when setting pause state is idempotent (no change).\"}],\"Paused(uint256)\":[{\"notice\":\"Thrown when attempting to transfer while paused.\"}]},\"events\":{\"DefaultPauseSet(bool)\":{\"notice\":\"Emitted when the default pause status is set.\"},\"PauseSet(uint256,bool,bool)\":{\"notice\":\"Emitted when the pause status is set for a specific destination ID.\"}},\"kind\":\"user\",\"methods\":{\"defaultPaused()\":{\"notice\":\"Retrieves default pause status used if no pause config is set for the destination ID.\"},\"isPaused(uint256)\":{\"notice\":\"Checks if transfers to a destination ID are paused.\"},\"pauseConfig(uint256)\":{\"notice\":\"Retrieves the configured pause setting for a given ID.\"},\"setDefaultPaused(bool)\":{\"notice\":\"Set the default pause status for all destinations.\"},\"setPaused((uint256,bool,bool)[])\":{\"notice\":\"Sets the pause status for an array of destination IDs.\"}},\"notice\":\"Interface for the `PauseByID` contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol\":\"IPauseByID\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IPauseByID\\n * @author LayerZero Labs (tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Interface for the `PauseByID` contract.\\n */\\ninterface IPauseByID {\\n /**\\n * @notice Configuration for a pause setting.\\n * @param paused Whether transfers are paused for this ID\\n * @param enabled False to fallback to the default pause setting\\n */\\n struct PauseConfig {\\n bool paused;\\n bool enabled;\\n }\\n\\n /**\\n * @notice Parameter for setting pause state.\\n * @param id Destination ID\\n * @param paused Whether transfers are paused for this ID\\n * @param enabled Whether the pause config is enabled for the destination\\n */\\n struct SetPausedParam {\\n uint256 id;\\n bool paused;\\n bool enabled;\\n }\\n\\n /**\\n * @notice Emitted when the pause status is set for a specific destination ID.\\n * @param id Destination ID\\n * @param paused Whether transfers are paused for this ID\\n * @param enabled Whether the pause config is enabled for the destination\\n */\\n event PauseSet(uint256 id, bool paused, bool enabled);\\n\\n /**\\n * @notice Emitted when the default pause status is set.\\n * @param paused Default pause status\\n */\\n event DefaultPauseSet(bool paused);\\n\\n /**\\n * @notice Thrown when attempting to transfer while paused.\\n * @param id Destination ID that is paused\\n */\\n error Paused(uint256 id);\\n\\n /**\\n * @notice Thrown when setting pause state is idempotent (no change).\\n * @param isPaused Whether transfers are paused\\n */\\n error PauseStateIdempotent(bool isPaused);\\n\\n /**\\n * @notice Checks if transfers to a destination ID are paused.\\n * @param _id Destination ID\\n * @return paused Whether transfers are paused\\n */\\n function isPaused(uint256 _id) external view returns (bool paused);\\n\\n /**\\n * @notice Retrieves default pause status used if no pause config is set for the destination ID.\\n * @return paused Default pause status\\n */\\n function defaultPaused() external view returns (bool paused);\\n\\n /**\\n * @notice Retrieves the configured pause setting for a given ID.\\n * @param _id Destination ID\\n * @return config Configured pause setting for the destination ID\\n */\\n function pauseConfig(uint256 _id) external view returns (PauseConfig memory config);\\n\\n /**\\n * @notice Set the default pause status for all destinations.\\n * @param _paused New default pause status\\n */\\n function setDefaultPaused(bool _paused) external;\\n\\n /**\\n * @notice Sets the pause status for an array of destination IDs.\\n * @param _params Array of pause configurations\\n */\\n function setPaused(SetPausedParam[] calldata _params) external;\\n}\\n\",\"keccak256\":\"0xd06b9cb06242dacf1adec9cc4275d41c12b44dd236dbaa0373833134b6ab9a04\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"PauseStateIdempotent(bool)":[{"notice":"Thrown when setting pause state is idempotent (no change)."}],"Paused(uint256)":[{"notice":"Thrown when attempting to transfer while paused."}]},"events":{"DefaultPauseSet(bool)":{"notice":"Emitted when the default pause status is set."},"PauseSet(uint256,bool,bool)":{"notice":"Emitted when the pause status is set for a specific destination ID."}},"kind":"user","methods":{"defaultPaused()":{"notice":"Retrieves default pause status used if no pause config is set for the destination ID."},"isPaused(uint256)":{"notice":"Checks if transfers to a destination ID are paused."},"pauseConfig(uint256)":{"notice":"Retrieves the configured pause setting for a given ID."},"setDefaultPaused(bool)":{"notice":"Set the default pause status for all destinations."},"setPaused((uint256,bool,bool)[])":{"notice":"Sets the pause status for an array of destination IDs."}},"notice":"Interface for the `PauseByID` contract.","version":1}}},"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol":{"IRateLimiter":{"abi":[{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"isExempt","type":"bool"}],"name":"ExemptionStateIdempotent","type":"error"},{"inputs":[{"internalType":"uint8","name":"scaledDecimals","type":"uint8"}],"name":"InvalidScaledDecimals","type":"error"},{"inputs":[{"internalType":"uint40","name":"lastUpdated","type":"uint40"},{"internalType":"uint40","name":"currentTimestamp","type":"uint40"}],"name":"LastUpdatedInFuture","type":"error"},{"inputs":[{"internalType":"uint256","name":"availableAmount","type":"uint256"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"name":"RateLimitExceeded","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"isExempt","type":"bool"}],"name":"RateLimitAddressExemptionUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"components":[{"internalType":"bool","name":"overrideDefaultConfig","type":"bool"},{"internalType":"bool","name":"outboundEnabled","type":"bool"},{"internalType":"bool","name":"inboundEnabled","type":"bool"},{"internalType":"bool","name":"netAccountingEnabled","type":"bool"},{"internalType":"bool","name":"addressExemptionEnabled","type":"bool"},{"internalType":"uint96","name":"outboundLimit","type":"uint96"},{"internalType":"uint96","name":"inboundLimit","type":"uint96"},{"internalType":"uint32","name":"outboundWindow","type":"uint32"},{"internalType":"uint32","name":"inboundWindow","type":"uint32"}],"indexed":false,"internalType":"struct IRateLimiter.RateLimitConfig","name":"config","type":"tuple"}],"name":"RateLimitConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"bool","name":"useGlobalState","type":"bool"},{"internalType":"bool","name":"isGloballyDisabled","type":"bool"}],"indexed":false,"internalType":"struct IRateLimiter.RateLimitGlobalConfig","name":"globalConfig","type":"tuple"}],"name":"RateLimitGlobalConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"components":[{"internalType":"uint96","name":"outboundUsage","type":"uint96"},{"internalType":"uint96","name":"inboundUsage","type":"uint96"},{"internalType":"uint40","name":"lastUpdated","type":"uint40"}],"indexed":false,"internalType":"struct IRateLimiter.RateLimitState","name":"state","type":"tuple"}],"name":"RateLimitStateUpdated","type":"event"},{"inputs":[{"internalType":"uint256[]","name":"_ids","type":"uint256[]"}],"name":"checkpointRateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getRateLimitGlobalConfig","outputs":[{"components":[{"internalType":"bool","name":"useGlobalState","type":"bool"},{"internalType":"bool","name":"isGloballyDisabled","type":"bool"}],"internalType":"struct IRateLimiter.RateLimitGlobalConfig","name":"globalConfig","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getRateLimitUsages","outputs":[{"internalType":"uint256","name":"outboundUsage","type":"uint256"},{"internalType":"uint256","name":"outboundAvailableAmount","type":"uint256"},{"internalType":"uint256","name":"inboundUsage","type":"uint256"},{"internalType":"uint256","name":"inboundAvailableAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isRateLimitAddressExempt","outputs":[{"internalType":"bool","name":"isExempt","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"rateLimits","outputs":[{"components":[{"internalType":"uint96","name":"outboundUsage","type":"uint96"},{"internalType":"uint96","name":"inboundUsage","type":"uint96"},{"internalType":"uint40","name":"lastUpdated","type":"uint40"},{"internalType":"uint24","name":"configBitmap","type":"uint24"},{"internalType":"uint96","name":"outboundLimit","type":"uint96"},{"internalType":"uint32","name":"outboundWindow","type":"uint32"},{"internalType":"uint96","name":"inboundLimit","type":"uint96"},{"internalType":"uint32","name":"inboundWindow","type":"uint32"}],"internalType":"struct IRateLimiter.RateLimit","name":"rateLimit","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"isExempt","type":"bool"}],"internalType":"struct IRateLimiter.SetRateLimitAddressExemptionParam[]","name":"_exemptions","type":"tuple[]"}],"name":"setRateLimitAddressExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"components":[{"internalType":"bool","name":"overrideDefaultConfig","type":"bool"},{"internalType":"bool","name":"outboundEnabled","type":"bool"},{"internalType":"bool","name":"inboundEnabled","type":"bool"},{"internalType":"bool","name":"netAccountingEnabled","type":"bool"},{"internalType":"bool","name":"addressExemptionEnabled","type":"bool"},{"internalType":"uint96","name":"outboundLimit","type":"uint96"},{"internalType":"uint96","name":"inboundLimit","type":"uint96"},{"internalType":"uint32","name":"outboundWindow","type":"uint32"},{"internalType":"uint32","name":"inboundWindow","type":"uint32"}],"internalType":"struct IRateLimiter.RateLimitConfig","name":"config","type":"tuple"}],"internalType":"struct IRateLimiter.SetRateLimitConfigParam[]","name":"_params","type":"tuple[]"}],"name":"setRateLimitConfigs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bool","name":"useGlobalState","type":"bool"},{"internalType":"bool","name":"isGloballyDisabled","type":"bool"}],"internalType":"struct IRateLimiter.RateLimitGlobalConfig","name":"_globalConfig","type":"tuple"}],"name":"setRateLimitGlobalConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"components":[{"internalType":"uint96","name":"outboundUsage","type":"uint96"},{"internalType":"uint96","name":"inboundUsage","type":"uint96"},{"internalType":"uint40","name":"lastUpdated","type":"uint40"}],"internalType":"struct IRateLimiter.RateLimitState","name":"state","type":"tuple"}],"internalType":"struct IRateLimiter.SetRateLimitStateParam[]","name":"_params","type":"tuple[]"}],"name":"setRateLimitStates","outputs":[],"stateMutability":"nonpayable","type":"function"}],"devdoc":{"author":"LayerZero Labs (tinom.eth)","custom:version":"1.0.0","errors":{"ExemptionStateIdempotent(address,bool)":[{"params":{"isExempt":"Whether the address is exempt","user":"User address"}}],"InvalidScaledDecimals(uint8)":[{"params":{"scaledDecimals":"Scaled decimals"}}],"LastUpdatedInFuture(uint40,uint40)":[{"params":{"currentTimestamp":"Current block timestamp","lastUpdated":"Last updated timestamp"}}],"RateLimitExceeded(uint256,uint256)":[{"params":{"availableAmount":"Remaining capacity of the rate limit","requestedAmount":"Amount requested"}}]},"events":{"RateLimitAddressExemptionUpdated(address,bool)":{"params":{"isExempt":"Whether the address is exempt","user":"Address of the user"}},"RateLimitConfigUpdated(uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))":{"params":{"config":"Parameters for the updated rate limit configuration","id":"ID of the rate limit configuration"}},"RateLimitGlobalConfigUpdated((bool,bool))":{"params":{"globalConfig":"Updated global configuration"}},"RateLimitStateUpdated(uint256,(uint96,uint96,uint40))":{"params":{"id":"ID of the rate limit state","state":"Parameters for the updated rate limit state"}}},"kind":"dev","methods":{"checkpointRateLimits(uint256[])":{"details":"Recommended to be called atomically before setting new limits or windows through `setRateLimitConfigs`, to avoid retroactively applying decays. Alternatively, `setRateLimitStates` can be called to explicitly set the desired usages.","params":{"_ids":"Array of rate limit IDs to checkpoint"}},"getRateLimitGlobalConfig()":{"returns":{"globalConfig":"Global configuration"}},"getRateLimitUsages(uint256)":{"details":"Potentially scaled up by `SCALE_DECIMALS`.Checks config and falls back to default if necessary.If a rate limit is disabled in a given direction, the available amount is `type(uint256).max`.","params":{"_id":"ID of the rate limit"},"returns":{"inboundAvailableAmount":"Scaled capacity of the inbound rate limit","inboundUsage":"Scaled current usage of the inbound rate limit","outboundAvailableAmount":"Scaled capacity of the outbound rate limit","outboundUsage":"Scaled current usage of the outbound rate limit"}},"isRateLimitAddressExempt(address)":{"params":{"_user":"Address of the user"},"returns":{"isExempt":"Whether the address is exempt"}},"rateLimits(uint256)":{"details":"May return unscaled state if `SCALE_DECIMALS` is set, use `getRateLimitUsages` for scaled values.Reads the rate limit state from storage without checking defaults.","params":{"_id":"ID of the rate limit"},"returns":{"rateLimit":"Rate limit state and configuration"}},"setRateLimitAddressExemptions((address,bool)[])":{"details":"Only in effect if `addressExemptionEnabled` is true for an ID.","params":{"_exemptions":"Array of exemptions to set"}},"setRateLimitConfigs((uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))[])":{"details":"Configurations must be significantly larger than windows to avoid precision loss when calculating decays.It does not checkpoint rate limits for the configured IDs.","params":{"_params":"Array of configurations to set"}},"setRateLimitGlobalConfig((bool,bool))":{"params":{"_globalConfig":"Global configuration to set"}},"setRateLimitStates((uint256,(uint96,uint96,uint40))[])":{"details":"States cannot be set to a timestamp in the future.","params":{"_params":"Array of states to set"}}},"title":"IRateLimiter","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"checkpointRateLimits(uint256[])":"7d9a5fe9","getRateLimitGlobalConfig()":"fe51ea41","getRateLimitUsages(uint256)":"04ce2e3d","isRateLimitAddressExempt(address)":"e1cce134","rateLimits(uint256)":"840d2ec1","setRateLimitAddressExemptions((address,bool)[])":"2e367874","setRateLimitConfigs((uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))[])":"ed01d8db","setRateLimitGlobalConfig((bool,bool))":"d09b13e2","setRateLimitStates((uint256,(uint96,uint96,uint40))[])":"7b837f8e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isExempt\",\"type\":\"bool\"}],\"name\":\"ExemptionStateIdempotent\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"scaledDecimals\",\"type\":\"uint8\"}],\"name\":\"InvalidScaledDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint40\",\"name\":\"lastUpdated\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"currentTimestamp\",\"type\":\"uint40\"}],\"name\":\"LastUpdatedInFuture\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"availableAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"name\":\"RateLimitExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isExempt\",\"type\":\"bool\"}],\"name\":\"RateLimitAddressExemptionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"overrideDefaultConfig\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"outboundEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"inboundEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"netAccountingEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"addressExemptionEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint96\",\"name\":\"outboundLimit\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"inboundLimit\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"outboundWindow\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"inboundWindow\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct IRateLimiter.RateLimitConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"RateLimitConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"useGlobalState\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isGloballyDisabled\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct IRateLimiter.RateLimitGlobalConfig\",\"name\":\"globalConfig\",\"type\":\"tuple\"}],\"name\":\"RateLimitGlobalConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint96\",\"name\":\"outboundUsage\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"inboundUsage\",\"type\":\"uint96\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdated\",\"type\":\"uint40\"}],\"indexed\":false,\"internalType\":\"struct IRateLimiter.RateLimitState\",\"name\":\"state\",\"type\":\"tuple\"}],\"name\":\"RateLimitStateUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_ids\",\"type\":\"uint256[]\"}],\"name\":\"checkpointRateLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRateLimitGlobalConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"useGlobalState\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isGloballyDisabled\",\"type\":\"bool\"}],\"internalType\":\"struct IRateLimiter.RateLimitGlobalConfig\",\"name\":\"globalConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"getRateLimitUsages\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"outboundUsage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outboundAvailableAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inboundUsage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inboundAvailableAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"isRateLimitAddressExempt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isExempt\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"rateLimits\",\"outputs\":[{\"components\":[{\"internalType\":\"uint96\",\"name\":\"outboundUsage\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"inboundUsage\",\"type\":\"uint96\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdated\",\"type\":\"uint40\"},{\"internalType\":\"uint24\",\"name\":\"configBitmap\",\"type\":\"uint24\"},{\"internalType\":\"uint96\",\"name\":\"outboundLimit\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"outboundWindow\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"inboundLimit\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"inboundWindow\",\"type\":\"uint32\"}],\"internalType\":\"struct IRateLimiter.RateLimit\",\"name\":\"rateLimit\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isExempt\",\"type\":\"bool\"}],\"internalType\":\"struct IRateLimiter.SetRateLimitAddressExemptionParam[]\",\"name\":\"_exemptions\",\"type\":\"tuple[]\"}],\"name\":\"setRateLimitAddressExemptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"overrideDefaultConfig\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"outboundEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"inboundEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"netAccountingEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"addressExemptionEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint96\",\"name\":\"outboundLimit\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"inboundLimit\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"outboundWindow\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"inboundWindow\",\"type\":\"uint32\"}],\"internalType\":\"struct IRateLimiter.RateLimitConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"internalType\":\"struct IRateLimiter.SetRateLimitConfigParam[]\",\"name\":\"_params\",\"type\":\"tuple[]\"}],\"name\":\"setRateLimitConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"useGlobalState\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isGloballyDisabled\",\"type\":\"bool\"}],\"internalType\":\"struct IRateLimiter.RateLimitGlobalConfig\",\"name\":\"_globalConfig\",\"type\":\"tuple\"}],\"name\":\"setRateLimitGlobalConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint96\",\"name\":\"outboundUsage\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"inboundUsage\",\"type\":\"uint96\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdated\",\"type\":\"uint40\"}],\"internalType\":\"struct IRateLimiter.RateLimitState\",\"name\":\"state\",\"type\":\"tuple\"}],\"internalType\":\"struct IRateLimiter.SetRateLimitStateParam[]\",\"name\":\"_params\",\"type\":\"tuple[]\"}],\"name\":\"setRateLimitStates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"LayerZero Labs (tinom.eth)\",\"custom:version\":\"1.0.0\",\"errors\":{\"ExemptionStateIdempotent(address,bool)\":[{\"params\":{\"isExempt\":\"Whether the address is exempt\",\"user\":\"User address\"}}],\"InvalidScaledDecimals(uint8)\":[{\"params\":{\"scaledDecimals\":\"Scaled decimals\"}}],\"LastUpdatedInFuture(uint40,uint40)\":[{\"params\":{\"currentTimestamp\":\"Current block timestamp\",\"lastUpdated\":\"Last updated timestamp\"}}],\"RateLimitExceeded(uint256,uint256)\":[{\"params\":{\"availableAmount\":\"Remaining capacity of the rate limit\",\"requestedAmount\":\"Amount requested\"}}]},\"events\":{\"RateLimitAddressExemptionUpdated(address,bool)\":{\"params\":{\"isExempt\":\"Whether the address is exempt\",\"user\":\"Address of the user\"}},\"RateLimitConfigUpdated(uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))\":{\"params\":{\"config\":\"Parameters for the updated rate limit configuration\",\"id\":\"ID of the rate limit configuration\"}},\"RateLimitGlobalConfigUpdated((bool,bool))\":{\"params\":{\"globalConfig\":\"Updated global configuration\"}},\"RateLimitStateUpdated(uint256,(uint96,uint96,uint40))\":{\"params\":{\"id\":\"ID of the rate limit state\",\"state\":\"Parameters for the updated rate limit state\"}}},\"kind\":\"dev\",\"methods\":{\"checkpointRateLimits(uint256[])\":{\"details\":\"Recommended to be called atomically before setting new limits or windows through `setRateLimitConfigs`, to avoid retroactively applying decays. Alternatively, `setRateLimitStates` can be called to explicitly set the desired usages.\",\"params\":{\"_ids\":\"Array of rate limit IDs to checkpoint\"}},\"getRateLimitGlobalConfig()\":{\"returns\":{\"globalConfig\":\"Global configuration\"}},\"getRateLimitUsages(uint256)\":{\"details\":\"Potentially scaled up by `SCALE_DECIMALS`.Checks config and falls back to default if necessary.If a rate limit is disabled in a given direction, the available amount is `type(uint256).max`.\",\"params\":{\"_id\":\"ID of the rate limit\"},\"returns\":{\"inboundAvailableAmount\":\"Scaled capacity of the inbound rate limit\",\"inboundUsage\":\"Scaled current usage of the inbound rate limit\",\"outboundAvailableAmount\":\"Scaled capacity of the outbound rate limit\",\"outboundUsage\":\"Scaled current usage of the outbound rate limit\"}},\"isRateLimitAddressExempt(address)\":{\"params\":{\"_user\":\"Address of the user\"},\"returns\":{\"isExempt\":\"Whether the address is exempt\"}},\"rateLimits(uint256)\":{\"details\":\"May return unscaled state if `SCALE_DECIMALS` is set, use `getRateLimitUsages` for scaled values.Reads the rate limit state from storage without checking defaults.\",\"params\":{\"_id\":\"ID of the rate limit\"},\"returns\":{\"rateLimit\":\"Rate limit state and configuration\"}},\"setRateLimitAddressExemptions((address,bool)[])\":{\"details\":\"Only in effect if `addressExemptionEnabled` is true for an ID.\",\"params\":{\"_exemptions\":\"Array of exemptions to set\"}},\"setRateLimitConfigs((uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))[])\":{\"details\":\"Configurations must be significantly larger than windows to avoid precision loss when calculating decays.It does not checkpoint rate limits for the configured IDs.\",\"params\":{\"_params\":\"Array of configurations to set\"}},\"setRateLimitGlobalConfig((bool,bool))\":{\"params\":{\"_globalConfig\":\"Global configuration to set\"}},\"setRateLimitStates((uint256,(uint96,uint96,uint40))[])\":{\"details\":\"States cannot be set to a timestamp in the future.\",\"params\":{\"_params\":\"Array of states to set\"}}},\"title\":\"IRateLimiter\",\"version\":1},\"userdoc\":{\"errors\":{\"ExemptionStateIdempotent(address,bool)\":[{\"notice\":\"Thrown when a user is already in the desired state (exempt or not exempt).\"}],\"InvalidScaledDecimals(uint8)\":[{\"notice\":\"Thrown when the scaled decimals are invalid.\"}],\"LastUpdatedInFuture(uint40,uint40)\":[{\"notice\":\"Thrown when a rate limit state is set to a timestamp in the future.\"}],\"RateLimitExceeded(uint256,uint256)\":[{\"notice\":\"Thrown when a rate limit is exceeded.\"}]},\"events\":{\"RateLimitAddressExemptionUpdated(address,bool)\":{\"notice\":\"Emitted when a rate limit address exemption is updated.\"},\"RateLimitConfigUpdated(uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))\":{\"notice\":\"Emitted when a rate limit configuration is updated.\"},\"RateLimitGlobalConfigUpdated((bool,bool))\":{\"notice\":\"Emitted when the global rate limiter configuration is updated.\"},\"RateLimitStateUpdated(uint256,(uint96,uint96,uint40))\":{\"notice\":\"Emitted when a rate limit state is updated.\"}},\"kind\":\"user\",\"methods\":{\"checkpointRateLimits(uint256[])\":{\"notice\":\"Checkpoints rate limits for multiple IDs, updating decayed usages to storage.\"},\"getRateLimitGlobalConfig()\":{\"notice\":\"Returns the global configuration for the rate limiter.\"},\"getRateLimitUsages(uint256)\":{\"notice\":\"Calculates decayed usages and capacities for a rate limit.\"},\"isRateLimitAddressExempt(address)\":{\"notice\":\"Returns the address exemption status for a given user.\"},\"rateLimits(uint256)\":{\"notice\":\"Returns the rate limit state and configuration for a given ID.\"},\"setRateLimitAddressExemptions((address,bool)[])\":{\"notice\":\"Sets address exemptions for the rate limiter.\"},\"setRateLimitConfigs((uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))[])\":{\"notice\":\"Sets ID-specific configurations for the rate limiter.\"},\"setRateLimitGlobalConfig((bool,bool))\":{\"notice\":\"Sets the global configuration for the rate limiter.\"},\"setRateLimitStates((uint256,(uint96,uint96,uint40))[])\":{\"notice\":\"Sets ID-specific states for the rate limiter.\"}},\"notice\":\"Interface for the `RateLimiter` contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol\":\"IRateLimiter\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IRateLimiter\\n * @author LayerZero Labs (tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Interface for the `RateLimiter` contract.\\n */\\ninterface IRateLimiter {\\n /**\\n * @notice Global configuration for the rate limiter.\\n * @param useGlobalState Whether to use global state for the rate limiter, instead of per-ID rules\\n * @param isGloballyDisabled Whether the rate limiter is globally disabled\\n */\\n struct RateLimitGlobalConfig {\\n bool useGlobalState;\\n bool isGloballyDisabled;\\n }\\n\\n /**\\n * @notice Rate limit state for a given ID.\\n * @param outboundUsage Current usage of the outbound rate limit\\n * @param inboundUsage Current usage of the inbound rate limit\\n * @param lastUpdated Last updated timestamp\\n * @param configBitmap Bitmap of the rate limit configuration\\n * @param outboundLimit Limit of the outbound rate limit\\n * @param outboundWindow Window of the outbound rate limit\\n * @param inboundLimit Limit of the inbound rate limit\\n * @param inboundWindow Window of the inbound rate limit\\n */\\n struct RateLimit {\\n uint96 outboundUsage;\\n uint96 inboundUsage;\\n uint40 lastUpdated;\\n uint24 configBitmap;\\n uint96 outboundLimit;\\n uint32 outboundWindow;\\n uint96 inboundLimit;\\n uint32 inboundWindow;\\n }\\n\\n /**\\n * @notice Rate limit configuration.\\n * @param overrideDefaultConfig Whether to override the default configuration\\n * @param outboundEnabled Whether the outbound rate limit is enabled\\n * @param inboundEnabled Whether the inbound rate limit is enabled\\n * @param netAccountingEnabled Whether net accounting is enabled\\n * @param addressExemptionEnabled Whether address exemption is enabled\\n * @param outboundLimit Limit of the outbound rate limit\\n * @param inboundLimit Limit of the inbound rate limit\\n * @param outboundWindow Window of the outbound rate limit\\n * @param inboundWindow Window of the inbound rate limit\\n */\\n struct RateLimitConfig {\\n bool overrideDefaultConfig;\\n bool outboundEnabled;\\n bool inboundEnabled;\\n bool netAccountingEnabled;\\n bool addressExemptionEnabled;\\n uint96 outboundLimit;\\n uint96 inboundLimit;\\n uint32 outboundWindow;\\n uint32 inboundWindow;\\n }\\n\\n /**\\n * @notice Parameters for setting a rate limit configuration.\\n * @param id ID of the rate limit configuration\\n * @param config Configuration to set\\n */\\n struct SetRateLimitConfigParam {\\n uint256 id;\\n RateLimitConfig config;\\n }\\n\\n /**\\n * @notice Rate limit state.\\n * @param outboundUsage Current usage of the outbound rate limit\\n * @param inboundUsage Current usage of the inbound rate limit\\n * @param lastUpdated Last updated timestamp\\n */\\n struct RateLimitState {\\n uint96 outboundUsage;\\n uint96 inboundUsage;\\n uint40 lastUpdated;\\n }\\n\\n /**\\n * @notice Parameters for setting a rate limit state.\\n * @param id ID of the rate limit state\\n * @param state State to set\\n */\\n struct SetRateLimitStateParam {\\n uint256 id;\\n RateLimitState state;\\n }\\n\\n /**\\n * @notice Parameter for setting a rate limit address exemption.\\n * @param user Address of the user\\n * @param isExempt Whether the address should be exempt from the rate limit\\n */\\n struct SetRateLimitAddressExemptionParam {\\n address user;\\n bool isExempt;\\n }\\n\\n /**\\n * @notice Emitted when the global rate limiter configuration is updated.\\n * @param globalConfig Updated global configuration\\n */\\n event RateLimitGlobalConfigUpdated(RateLimitGlobalConfig globalConfig);\\n\\n /**\\n * @notice Emitted when a rate limit configuration is updated.\\n * @param id ID of the rate limit configuration\\n * @param config Parameters for the updated rate limit configuration\\n */\\n event RateLimitConfigUpdated(uint256 indexed id, RateLimitConfig config);\\n\\n /**\\n * @notice Emitted when a rate limit state is updated.\\n * @param id ID of the rate limit state\\n * @param state Parameters for the updated rate limit state\\n */\\n event RateLimitStateUpdated(uint256 indexed id, RateLimitState state);\\n\\n /**\\n * @notice Emitted when a rate limit address exemption is updated.\\n * @param user Address of the user\\n * @param isExempt Whether the address is exempt\\n */\\n event RateLimitAddressExemptionUpdated(address indexed user, bool isExempt);\\n\\n /**\\n * @notice Thrown when the scaled decimals are invalid.\\n * @param scaledDecimals Scaled decimals\\n */\\n error InvalidScaledDecimals(uint8 scaledDecimals);\\n\\n /**\\n * @notice Thrown when a rate limit state is set to a timestamp in the future.\\n * @param lastUpdated Last updated timestamp\\n * @param currentTimestamp Current block timestamp\\n */\\n error LastUpdatedInFuture(uint40 lastUpdated, uint40 currentTimestamp);\\n\\n /**\\n * @notice Thrown when a rate limit is exceeded.\\n * @param availableAmount Remaining capacity of the rate limit\\n * @param requestedAmount Amount requested\\n */\\n error RateLimitExceeded(uint256 availableAmount, uint256 requestedAmount);\\n\\n /**\\n * @notice Thrown when a user is already in the desired state (exempt or not exempt).\\n * @param user User address\\n * @param isExempt Whether the address is exempt\\n */\\n error ExemptionStateIdempotent(address user, bool isExempt);\\n\\n /**\\n * @notice Returns the global configuration for the rate limiter.\\n * @return globalConfig Global configuration\\n */\\n function getRateLimitGlobalConfig() external view returns (RateLimitGlobalConfig memory globalConfig);\\n\\n /**\\n * @notice Returns the rate limit state and configuration for a given ID.\\n * @dev May return unscaled state if `SCALE_DECIMALS` is set, use `getRateLimitUsages` for scaled values.\\n * @dev Reads the rate limit state from storage without checking defaults.\\n * @param _id ID of the rate limit\\n * @return rateLimit Rate limit state and configuration\\n */\\n function rateLimits(uint256 _id) external view returns (RateLimit memory rateLimit);\\n\\n /**\\n * @notice Returns the address exemption status for a given user.\\n * @param _user Address of the user\\n * @return isExempt Whether the address is exempt\\n */\\n function isRateLimitAddressExempt(address _user) external view returns (bool isExempt);\\n\\n /**\\n * @notice Calculates decayed usages and capacities for a rate limit.\\n * @dev Potentially scaled up by `SCALE_DECIMALS`.\\n * @dev Checks config and falls back to default if necessary.\\n * @dev If a rate limit is disabled in a given direction, the available amount is `type(uint256).max`.\\n * @param _id ID of the rate limit\\n * @return outboundUsage Scaled current usage of the outbound rate limit\\n * @return outboundAvailableAmount Scaled capacity of the outbound rate limit\\n * @return inboundUsage Scaled current usage of the inbound rate limit\\n * @return inboundAvailableAmount Scaled capacity of the inbound rate limit\\n */\\n function getRateLimitUsages(\\n uint256 _id\\n )\\n external\\n view\\n returns (\\n uint256 outboundUsage,\\n uint256 outboundAvailableAmount,\\n uint256 inboundUsage,\\n uint256 inboundAvailableAmount\\n );\\n\\n /**\\n * @notice Sets the global configuration for the rate limiter.\\n * @param _globalConfig Global configuration to set\\n */\\n function setRateLimitGlobalConfig(RateLimitGlobalConfig memory _globalConfig) external;\\n\\n /**\\n * @notice Sets ID-specific configurations for the rate limiter.\\n * @dev Configurations must be significantly larger than windows to avoid precision loss when calculating decays.\\n * @dev It does not checkpoint rate limits for the configured IDs.\\n * @param _params Array of configurations to set\\n */\\n function setRateLimitConfigs(SetRateLimitConfigParam[] calldata _params) external;\\n\\n /**\\n * @notice Sets ID-specific states for the rate limiter.\\n * @dev States cannot be set to a timestamp in the future.\\n * @param _params Array of states to set\\n */\\n function setRateLimitStates(SetRateLimitStateParam[] calldata _params) external;\\n\\n /**\\n * @notice Sets address exemptions for the rate limiter.\\n * @dev Only in effect if `addressExemptionEnabled` is true for an ID.\\n * @param _exemptions Array of exemptions to set\\n */\\n function setRateLimitAddressExemptions(SetRateLimitAddressExemptionParam[] calldata _exemptions) external;\\n\\n /**\\n * @notice Checkpoints rate limits for multiple IDs, updating decayed usages to storage.\\n * @dev Recommended to be called atomically before setting new limits or windows through `setRateLimitConfigs`, to\\n * avoid retroactively applying decays. Alternatively, `setRateLimitStates` can be called to explicitly set\\n * the desired usages.\\n * @param _ids Array of rate limit IDs to checkpoint\\n */\\n function checkpointRateLimits(uint256[] calldata _ids) external;\\n}\\n\",\"keccak256\":\"0x2fc3491749652cab84a7e4fadef1cc79183134083e9982d528220bbf3a7083fe\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"ExemptionStateIdempotent(address,bool)":[{"notice":"Thrown when a user is already in the desired state (exempt or not exempt)."}],"InvalidScaledDecimals(uint8)":[{"notice":"Thrown when the scaled decimals are invalid."}],"LastUpdatedInFuture(uint40,uint40)":[{"notice":"Thrown when a rate limit state is set to a timestamp in the future."}],"RateLimitExceeded(uint256,uint256)":[{"notice":"Thrown when a rate limit is exceeded."}]},"events":{"RateLimitAddressExemptionUpdated(address,bool)":{"notice":"Emitted when a rate limit address exemption is updated."},"RateLimitConfigUpdated(uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))":{"notice":"Emitted when a rate limit configuration is updated."},"RateLimitGlobalConfigUpdated((bool,bool))":{"notice":"Emitted when the global rate limiter configuration is updated."},"RateLimitStateUpdated(uint256,(uint96,uint96,uint40))":{"notice":"Emitted when a rate limit state is updated."}},"kind":"user","methods":{"checkpointRateLimits(uint256[])":{"notice":"Checkpoints rate limits for multiple IDs, updating decayed usages to storage."},"getRateLimitGlobalConfig()":{"notice":"Returns the global configuration for the rate limiter."},"getRateLimitUsages(uint256)":{"notice":"Calculates decayed usages and capacities for a rate limit."},"isRateLimitAddressExempt(address)":{"notice":"Returns the address exemption status for a given user."},"rateLimits(uint256)":{"notice":"Returns the rate limit state and configuration for a given ID."},"setRateLimitAddressExemptions((address,bool)[])":{"notice":"Sets address exemptions for the rate limiter."},"setRateLimitConfigs((uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))[])":{"notice":"Sets ID-specific configurations for the rate limiter."},"setRateLimitGlobalConfig((bool,bool))":{"notice":"Sets the global configuration for the rate limiter."},"setRateLimitStates((uint256,(uint96,uint96,uint40))[])":{"notice":"Sets ID-specific states for the rate limiter."}},"notice":"Interface for the `RateLimiter` contract.","version":1}}},"contracts/interfaces/IOFT.sol":{"IOFT":{"abi":[{"inputs":[{"internalType":"uint256","name":"amountSD","type":"uint256"}],"name":"AmountSDOverflowed","type":"error"},{"inputs":[],"name":"InvalidLocalDecimals","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"}],"name":"SlippageExceeded","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"dstEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTSent","type":"event"},{"inputs":[],"name":"approvalRequired","outputs":[{"internalType":"bool","name":"requiresApproval","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oftVersion","outputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"}],"name":"quoteOFT","outputs":[{"components":[{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"uint256","name":"maxAmountLD","type":"uint256"}],"internalType":"struct OFTLimit","name":"oftLimit","type":"tuple"},{"components":[{"internalType":"int256","name":"feeAmountLD","type":"int256"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct OFTFeeDetail[]","name":"oftFeeDetails","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"oftReceipt","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"internalType":"bool","name":"_payInLzToken","type":"bool"}],"name":"quoteSend","outputs":[{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"msgFee","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"_fee","type":"tuple"},{"internalType":"address","name":"_refundAddress","type":"address"}],"name":"send","outputs":[{"components":[{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"fee","type":"tuple"}],"internalType":"struct MessagingReceipt","name":"msgReceipt","type":"tuple"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"oftReceipt","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"sd","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Interface for the OftChain (OFT) token.Does not inherit ERC20 to accommodate usage by OFTAdapter as well.This specific interface ID is '0x02e49c2c'.","kind":"dev","methods":{"approvalRequired()":{"details":"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.","returns":{"requiresApproval":"Needs approval of the underlying token implementation."}},"oftVersion()":{"details":"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)","returns":{"interfaceId":"The interface ID.","version":"The version."}},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"params":{"_sendParam":"The parameters for the send operation."},"returns":{"oftFeeDetails":"The details of OFT fees.","oftLimit":"The OFT limit information.","oftReceipt":"The OFT receipt information."}},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"details":"MessagingFee: LayerZero msg fee - nativeFee: The native fee. - lzTokenFee: The lzToken fee.","params":{"_payInLzToken":"Flag indicating whether the caller is paying in the LZ token.","_sendParam":"The parameters for the send() operation."},"returns":{"msgFee":"The calculated LayerZero messaging fee from the send() operation."}},"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":{"details":"MessagingReceipt: LayerZero msg receipt - guid: The unique identifier for the sent message. - nonce: The nonce of the sent message. - fee: The LayerZero fee incurred for the message.","params":{"_fee":"The fee information supplied by the caller. - nativeFee: The native fee. - lzTokenFee: The lzToken fee.","_refundAddress":"The address to receive any excess funds from fees etc. on the src.","_sendParam":"The parameters for the send operation."},"returns":{"msgReceipt":"The LayerZero messaging receipt from the send() operation.","oftReceipt":"The OFT receipt information."}},"sharedDecimals()":{"returns":{"sd":"The shared decimals of the OFT."}},"token()":{"returns":{"tokenAddress":"The address of the ERC20 token implementation."}}},"title":"IOFT","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"approvalRequired()":"9f68b964","oftVersion()":"156a0d0f","quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":"0d35b415","quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":"3b6f743b","send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":"c7c7f5b3","sharedDecimals()":"857749b0","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountSD\",\"type\":\"uint256\"}],\"name\":\"AmountSDOverflowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"requiresApproval\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"oftLimit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct OFTFeeDetail[]\",\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"msgFee\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"_fee\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"msgReceipt\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"sd\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the OftChain (OFT) token.Does not inherit ERC20 to accommodate usage by OFTAdapter as well.This specific interface ID is '0x02e49c2c'.\",\"kind\":\"dev\",\"methods\":{\"approvalRequired()\":{\"details\":\"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.\",\"returns\":{\"requiresApproval\":\"Needs approval of the underlying token implementation.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"oftFeeDetails\":\"The details of OFT fees.\",\"oftLimit\":\"The OFT limit information.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"msgFee\":\"The calculated LayerZero messaging fee from the send() operation.\"}},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"MessagingReceipt: LayerZero msg receipt - guid: The unique identifier for the sent message. - nonce: The nonce of the sent message. - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The fee information supplied by the caller. - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds from fees etc. on the src.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"msgReceipt\":\"The LayerZero messaging receipt from the send() operation.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"sharedDecimals()\":{\"returns\":{\"sd\":\"The shared decimals of the OFT.\"}},\"token()\":{\"returns\":{\"tokenAddress\":\"The address of the ERC20 token implementation.\"}}},\"title\":\"IOFT\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"notice\":\"Executes the send() operation.\"},\"sharedDecimals()\":{\"notice\":\"Retrieves the shared decimals of the OFT.\"},\"token()\":{\"notice\":\"Retrieves the address of the token associated with the OFT.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IOFT.sol\":\"IOFT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n uint32 dstEid;\\n bytes32 receiver;\\n bytes message;\\n bytes options;\\n bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n bytes32 guid;\\n uint64 nonce;\\n MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n uint256 nativeFee;\\n uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n uint32 srcEid;\\n bytes32 sender;\\n uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n event PacketDelivered(Origin origin, address receiver);\\n\\n event LzReceiveAlert(\\n address indexed receiver,\\n address indexed executor,\\n Origin origin,\\n bytes32 guid,\\n uint256 gas,\\n uint256 value,\\n bytes message,\\n bytes extraData,\\n bytes reason\\n );\\n\\n event LzTokenSet(address token);\\n\\n event DelegateSet(address sender, address delegate);\\n\\n function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n function send(\\n MessagingParams calldata _params,\\n address _refundAddress\\n ) external payable returns (MessagingReceipt memory);\\n\\n function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n function lzReceive(\\n Origin calldata _origin,\\n address _receiver,\\n bytes32 _guid,\\n bytes calldata _message,\\n bytes calldata _extraData\\n ) external payable;\\n\\n // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n function setLzToken(address _lzToken) external;\\n\\n function lzToken() external view returns (address);\\n\\n function nativeToken() external view returns (address);\\n\\n function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n uint32 eid;\\n uint32 configType;\\n bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n struct Timeout {\\n address lib;\\n uint256 expiry;\\n }\\n\\n event LibraryRegistered(address newLib);\\n event DefaultSendLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n event SendLibrarySet(address sender, uint32 eid, address newLib);\\n event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n function registerLibrary(address _lib) external;\\n\\n function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n function getRegisteredLibraries() external view returns (address[] memory);\\n\\n function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n /// ------------------- OApp interfaces -------------------\\n function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n function getConfig(\\n address _oapp,\\n address _lib,\\n uint32 _eid,\\n uint32 _configType\\n ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n function eid() external view returns (uint32);\\n\\n // this is an emergency function if a message cannot be verified for some reasons\\n // required to provide _nextNonce to avoid race condition\\n function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n function inboundPayloadHash(\\n address _receiver,\\n uint32 _srcEid,\\n bytes32 _sender,\\n uint64 _nonce\\n ) external view returns (bytes32);\\n\\n function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n event LzComposeAlert(\\n address indexed from,\\n address indexed to,\\n address indexed executor,\\n bytes32 guid,\\n uint16 index,\\n uint256 gas,\\n uint256 value,\\n bytes message,\\n bytes extraData,\\n bytes reason\\n );\\n\\n function composeQueue(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index\\n ) external view returns (bytes32 messageHash);\\n\\n function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n function lzCompose(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index,\\n bytes calldata _message,\\n bytes calldata _extraData\\n ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n function isSendingMessage() external view returns (bool);\\n\\n function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"contracts/interfaces/IOFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nimport {\\n MessagingReceipt,\\n MessagingFee\\n} from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @dev Struct representing token parameters for the OFT send() operation.\\n */\\nstruct SendParam {\\n uint32 dstEid; // Destination endpoint ID.\\n bytes32 to; // Recipient address.\\n uint256 amountLD; // Amount to send in local decimals.\\n uint256 minAmountLD; // Minimum amount to send in local decimals.\\n bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.\\n bytes composeMsg; // The composed message for the send() operation.\\n bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.\\n}\\n\\n/**\\n * @dev Struct representing OFT limit information.\\n * @dev These amounts can change dynamically and are up the specific oft implementation.\\n */\\nstruct OFTLimit {\\n uint256 minAmountLD; // Minimum amount in local decimals that can be sent to the recipient.\\n uint256 maxAmountLD; // Maximum amount in local decimals that can be sent to the recipient.\\n}\\n\\n/**\\n * @dev Struct representing OFT receipt information.\\n */\\nstruct OFTReceipt {\\n uint256 amountSentLD; // Amount of tokens ACTUALLY debited from the sender in local decimals.\\n // @dev In non-default implementations, the amountReceivedLD COULD differ from this value.\\n uint256 amountReceivedLD; // Amount of tokens to be received on the remote side.\\n}\\n\\n/**\\n * @dev Struct representing OFT fee details.\\n * @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI.\\n */\\nstruct OFTFeeDetail {\\n int256 feeAmountLD; // Amount of the fee in local decimals.\\n string description; // Description of the fee.\\n}\\n\\n/**\\n * @title IOFT\\n * @dev Interface for the OftChain (OFT) token.\\n * @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\\n * @dev This specific interface ID is '0x02e49c2c'.\\n */\\ninterface IOFT {\\n // Custom error messages\\n error InvalidLocalDecimals();\\n error SlippageExceeded(uint256 amountLD, uint256 minAmountLD);\\n error AmountSDOverflowed(uint256 amountSD);\\n\\n // Events\\n event OFTSent(\\n bytes32 indexed guid, // GUID of the OFT message.\\n uint32 dstEid, // Destination Endpoint ID.\\n address indexed fromAddress, // Address of the sender on the src chain.\\n uint256 amountSentLD, // Amount of tokens sent in local decimals.\\n uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n );\\n event OFTReceived(\\n bytes32 indexed guid, // GUID of the OFT message.\\n uint32 srcEid, // Source Endpoint ID.\\n address indexed toAddress, // Address of the recipient on the dst chain.\\n uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n );\\n\\n /**\\n * @notice Retrieves interfaceID and the version of the OFT.\\n * @return interfaceId The interface ID.\\n * @return version The version.\\n *\\n * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n */\\n function oftVersion() external view returns (bytes4 interfaceId, uint64 version);\\n\\n /**\\n * @notice Retrieves the address of the token associated with the OFT.\\n * @return tokenAddress The address of the ERC20 token implementation.\\n */\\n function token() external view returns (address tokenAddress);\\n\\n /**\\n * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n * @return requiresApproval Needs approval of the underlying token implementation.\\n *\\n * @dev Allows things like wallet implementers to determine integration requirements,\\n * without understanding the underlying token implementation.\\n */\\n function approvalRequired() external view returns (bool requiresApproval);\\n\\n /**\\n * @notice Retrieves the shared decimals of the OFT.\\n * @return sd The shared decimals of the OFT.\\n */\\n function sharedDecimals() external view returns (uint8 sd);\\n\\n /**\\n * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n * @param _sendParam The parameters for the send operation.\\n * @return oftLimit The OFT limit information.\\n * @return oftFeeDetails The details of OFT fees.\\n * @return oftReceipt The OFT receipt information.\\n */\\n function quoteOFT(\\n SendParam calldata _sendParam\\n )\\n external\\n view\\n returns (OFTLimit memory oftLimit, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory oftReceipt);\\n\\n /**\\n * @notice Provides a quote for the send() operation.\\n * @param _sendParam The parameters for the send() operation.\\n * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n * @return msgFee The calculated LayerZero messaging fee from the send() operation.\\n *\\n * @dev MessagingFee: LayerZero msg fee\\n * - nativeFee: The native fee.\\n * - lzTokenFee: The lzToken fee.\\n */\\n function quoteSend(\\n SendParam calldata _sendParam,\\n bool _payInLzToken\\n ) external view returns (MessagingFee memory msgFee);\\n\\n /**\\n * @notice Executes the send() operation.\\n * @param _sendParam The parameters for the send operation.\\n * @param _fee The fee information supplied by the caller.\\n * - nativeFee: The native fee.\\n * - lzTokenFee: The lzToken fee.\\n * @param _refundAddress The address to receive any excess funds from fees etc. on the src.\\n * @return msgReceipt The LayerZero messaging receipt from the send() operation.\\n * @return oftReceipt The OFT receipt information.\\n *\\n * @dev MessagingReceipt: LayerZero msg receipt\\n * - guid: The unique identifier for the sent message.\\n * - nonce: The nonce of the sent message.\\n * - fee: The LayerZero fee incurred for the message.\\n */\\n function send(\\n SendParam calldata _sendParam,\\n MessagingFee calldata _fee,\\n address _refundAddress\\n ) external payable returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt);\\n}\\n\",\"keccak256\":\"0x14c97a3527f93a0181f4207824cd0c484ba3e5035c2d16075c8d68137e85f68a\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{"approvalRequired()":{"notice":"Indicates whether the OFT contract requires approval of the 'token()' to send."},"oftVersion()":{"notice":"Retrieves interfaceID and the version of the OFT."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"notice":"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation."},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"notice":"Provides a quote for the send() operation."},"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":{"notice":"Executes the send() operation."},"sharedDecimals()":{"notice":"Retrieves the shared decimals of the OFT."},"token()":{"notice":"Retrieves the address of the token associated with the OFT."}},"version":1}}},"contracts/interfaces/IOFTDecimalUtils.sol":{"IOFTDecimalUtils":{"abi":[{"inputs":[{"internalType":"uint256","name":"amountSD","type":"uint256"}],"name":"AmountSDOverflowed","type":"error"},{"inputs":[],"name":"InvalidLocalDecimals","type":"error"},{"inputs":[],"name":"decimalConversionRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"localDecimals","outputs":[{"internalType":"uint8","name":"ld","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"sd","type":"uint8"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"LayerZero Labs (tinom.eth)","custom:version":"1.0.0","errors":{"AmountSDOverflowed(uint256)":[{"params":{"amountSD":"Amount in shared decimals"}}]},"kind":"dev","methods":{"decimalConversionRate()":{"returns":{"rate":"Conversion rate"}},"localDecimals()":{"returns":{"ld":"Local decimals"}},"sharedDecimals()":{"returns":{"sd":"Shared decimals"}}},"title":"IOFTDecimalUtils","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"decimalConversionRate()":"963efcaa","localDecimals()":"e46e7058","sharedDecimals()":"857749b0"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountSD\",\"type\":\"uint256\"}],\"name\":\"AmountSDOverflowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"decimalConversionRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"localDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"ld\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"sd\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"LayerZero Labs (tinom.eth)\",\"custom:version\":\"1.0.0\",\"errors\":{\"AmountSDOverflowed(uint256)\":[{\"params\":{\"amountSD\":\"Amount in shared decimals\"}}]},\"kind\":\"dev\",\"methods\":{\"decimalConversionRate()\":{\"returns\":{\"rate\":\"Conversion rate\"}},\"localDecimals()\":{\"returns\":{\"ld\":\"Local decimals\"}},\"sharedDecimals()\":{\"returns\":{\"sd\":\"Shared decimals\"}}},\"title\":\"IOFTDecimalUtils\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountSDOverflowed(uint256)\":[{\"notice\":\"Thrown when the amount in shared decimals overflows `uint64`.\"}],\"InvalidLocalDecimals()\":[{\"notice\":\"Thrown when shared decimals exceed local decimals.\"}]},\"kind\":\"user\",\"methods\":{\"decimalConversionRate()\":{\"notice\":\"Returns the conversion rate to convert from local to shared decimals.\"},\"localDecimals()\":{\"notice\":\"Returns the local decimals for tokens on this chain.\"},\"sharedDecimals()\":{\"notice\":\"Returns the shared decimals for cross-chain messaging.\"}},\"notice\":\"Interface for OFT decimal conversion utilities.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IOFTDecimalUtils.sol\":\"IOFTDecimalUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IOFTDecimalUtils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IOFTDecimalUtils\\n * @author LayerZero Labs (tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Interface for OFT decimal conversion utilities.\\n */\\ninterface IOFTDecimalUtils {\\n /**\\n * @notice Thrown when shared decimals exceed local decimals.\\n */\\n error InvalidLocalDecimals();\\n\\n /**\\n * @notice Thrown when the amount in shared decimals overflows `uint64`.\\n * @param amountSD Amount in shared decimals\\n */\\n error AmountSDOverflowed(uint256 amountSD);\\n\\n /**\\n * @notice Returns the local decimals for tokens on this chain.\\n * @return ld Local decimals\\n */\\n function localDecimals() external view returns (uint8 ld);\\n\\n /**\\n * @notice Returns the shared decimals for cross-chain messaging.\\n * @return sd Shared decimals\\n */\\n function sharedDecimals() external view returns (uint8 sd);\\n\\n /**\\n * @notice Returns the conversion rate to convert from local to shared decimals.\\n * @return rate Conversion rate\\n */\\n function decimalConversionRate() external view returns (uint256 rate);\\n}\\n\",\"keccak256\":\"0xd51464ec9d8d9cdfaea3aac71fb9efc9c53d9a730f10381dd104bc919b74a956\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"AmountSDOverflowed(uint256)":[{"notice":"Thrown when the amount in shared decimals overflows `uint64`."}],"InvalidLocalDecimals()":[{"notice":"Thrown when shared decimals exceed local decimals."}]},"kind":"user","methods":{"decimalConversionRate()":{"notice":"Returns the conversion rate to convert from local to shared decimals."},"localDecimals()":{"notice":"Returns the local decimals for tokens on this chain."},"sharedDecimals()":{"notice":"Returns the shared decimals for cross-chain messaging."}},"notice":"Interface for OFT decimal conversion utilities.","version":1}}},"contracts/interfaces/IOFTExtended.sol":{"IOFTExtended":{"abi":[{"inputs":[{"internalType":"uint256","name":"amountSD","type":"uint256"}],"name":"AmountSDOverflowed","type":"error"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"isExempt","type":"bool"}],"name":"ExemptionStateIdempotent","type":"error"},{"inputs":[{"internalType":"uint16","name":"feeBps","type":"uint16"}],"name":"InvalidBps","type":"error"},{"inputs":[],"name":"InvalidDelegate","type":"error"},{"inputs":[],"name":"InvalidEndpointCall","type":"error"},{"inputs":[],"name":"InvalidFeeDeposit","type":"error"},{"inputs":[],"name":"InvalidLocalDecimals","type":"error"},{"inputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"name":"InvalidOptions","type":"error"},{"inputs":[{"internalType":"uint8","name":"scaledDecimals","type":"uint8"}],"name":"InvalidScaledDecimals","type":"error"},{"inputs":[{"internalType":"uint40","name":"lastUpdated","type":"uint40"},{"internalType":"uint40","name":"currentTimestamp","type":"uint40"}],"name":"LastUpdatedInFuture","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"}],"name":"NoPeer","type":"error"},{"inputs":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"}],"name":"OnlyPeer","type":"error"},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool"}],"name":"PauseStateIdempotent","type":"error"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"Paused","type":"error"},{"inputs":[{"internalType":"uint256","name":"availableAmount","type":"uint256"},{"internalType":"uint256","name":"requestedAmount","type":"uint256"}],"name":"RateLimitExceeded","type":"error"},{"inputs":[{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"}],"name":"SlippageExceeded","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"feeBps","type":"uint16"}],"name":"DefaultFeeBpsSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"DefaultPauseSet","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"indexed":false,"internalType":"struct IOAppOptionsType3.EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"EnforcedOptionSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint16","name":"feeBps","type":"uint16"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"FeeBpsSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeDeposit","type":"address"}],"name":"FeeDepositSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"msgInspector","type":"address"}],"name":"MsgInspectorSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"srcEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"toAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"guid","type":"bytes32"},{"indexed":false,"internalType":"uint32","name":"dstEid","type":"uint32"},{"indexed":true,"internalType":"address","name":"fromAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"name":"OFTSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"bool","name":"paused","type":"bool"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"PauseSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"eid","type":"uint32"},{"indexed":false,"internalType":"bytes32","name":"peer","type":"bytes32"}],"name":"PeerSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"isExempt","type":"bool"}],"name":"RateLimitAddressExemptionUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"components":[{"internalType":"bool","name":"overrideDefaultConfig","type":"bool"},{"internalType":"bool","name":"outboundEnabled","type":"bool"},{"internalType":"bool","name":"inboundEnabled","type":"bool"},{"internalType":"bool","name":"netAccountingEnabled","type":"bool"},{"internalType":"bool","name":"addressExemptionEnabled","type":"bool"},{"internalType":"uint96","name":"outboundLimit","type":"uint96"},{"internalType":"uint96","name":"inboundLimit","type":"uint96"},{"internalType":"uint32","name":"outboundWindow","type":"uint32"},{"internalType":"uint32","name":"inboundWindow","type":"uint32"}],"indexed":false,"internalType":"struct IRateLimiter.RateLimitConfig","name":"config","type":"tuple"}],"name":"RateLimitConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"bool","name":"useGlobalState","type":"bool"},{"internalType":"bool","name":"isGloballyDisabled","type":"bool"}],"indexed":false,"internalType":"struct IRateLimiter.RateLimitGlobalConfig","name":"globalConfig","type":"tuple"}],"name":"RateLimitGlobalConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"components":[{"internalType":"uint96","name":"outboundUsage","type":"uint96"},{"internalType":"uint96","name":"inboundUsage","type":"uint96"},{"internalType":"uint40","name":"lastUpdated","type":"uint40"}],"indexed":false,"internalType":"struct IRateLimiter.RateLimitState","name":"state","type":"tuple"}],"name":"RateLimitStateUpdated","type":"event"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"}],"name":"allowInitializePath","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"approvalRequired","outputs":[{"internalType":"bool","name":"requiresApproval","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_ids","type":"uint256[]"}],"name":"checkpointRateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint16","name":"_msgType","type":"uint16"},{"internalType":"bytes","name":"_extraOptions","type":"bytes"}],"name":"combineOptions","outputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultFeeBps","outputs":[{"internalType":"uint16","name":"fee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"defaultPaused","outputs":[{"internalType":"bool","name":"paused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endpoint","outputs":[{"internalType":"contract ILayerZeroEndpointV2","name":"iEndpoint","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"uint16","name":"_msgType","type":"uint16"}],"name":"enforcedOptions","outputs":[{"internalType":"bytes","name":"options","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"feeBps","outputs":[{"components":[{"internalType":"uint16","name":"feeBps","type":"uint16"},{"internalType":"bool","name":"enabled","type":"bool"}],"internalType":"struct IFeeConfig.FeeConfig","name":"config","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDeposit","outputs":[{"internalType":"address","name":"deposit","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amountAfterFee","type":"uint256"}],"name":"getAmountBeforeFee","outputs":[{"internalType":"uint256","name":"amountBeforeFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"getFee","outputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRateLimitGlobalConfig","outputs":[{"components":[{"internalType":"bool","name":"useGlobalState","type":"bool"},{"internalType":"bool","name":"isGloballyDisabled","type":"bool"}],"internalType":"struct IRateLimiter.RateLimitGlobalConfig","name":"globalConfig","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"getRateLimitUsages","outputs":[{"internalType":"uint256","name":"outboundUsage","type":"uint256"},{"internalType":"uint256","name":"outboundAvailableAmount","type":"uint256"},{"internalType":"uint256","name":"inboundUsage","type":"uint256"},{"internalType":"uint256","name":"inboundAvailableAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_sender","type":"address"}],"name":"isComposeMsgSender","outputs":[{"internalType":"bool","name":"isSender","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"isPaused","outputs":[{"internalType":"bool","name":"paused","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"isRateLimitAddressExempt","outputs":[{"internalType":"bool","name":"isExempt","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"srcEid","type":"uint32"},{"internalType":"bytes32","name":"sender","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"}],"internalType":"struct Origin","name":"_origin","type":"tuple"},{"internalType":"bytes32","name":"_guid","type":"bytes32"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"address","name":"_executor","type":"address"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"msgInspector","outputs":[{"internalType":"address","name":"inspector","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_sender","type":"bytes32"}],"name":"nextNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oAppVersion","outputs":[{"internalType":"uint64","name":"senderVersion","type":"uint64"},{"internalType":"uint64","name":"receiverVersion","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oftVersion","outputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"},{"internalType":"uint64","name":"version","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"pauseConfig","outputs":[{"components":[{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"bool","name":"enabled","type":"bool"}],"internalType":"struct IPauseByID.PauseConfig","name":"config","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"peers","outputs":[{"internalType":"bytes32","name":"peer","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"}],"name":"quoteOFT","outputs":[{"components":[{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"uint256","name":"maxAmountLD","type":"uint256"}],"internalType":"struct OFTLimit","name":"oftLimit","type":"tuple"},{"components":[{"internalType":"int256","name":"feeAmountLD","type":"int256"},{"internalType":"string","name":"description","type":"string"}],"internalType":"struct OFTFeeDetail[]","name":"oftFeeDetails","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"oftReceipt","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"internalType":"bool","name":"_payInLzToken","type":"bool"}],"name":"quoteSend","outputs":[{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"msgFee","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"}],"name":"rateLimits","outputs":[{"components":[{"internalType":"uint96","name":"outboundUsage","type":"uint96"},{"internalType":"uint96","name":"inboundUsage","type":"uint96"},{"internalType":"uint40","name":"lastUpdated","type":"uint40"},{"internalType":"uint24","name":"configBitmap","type":"uint24"},{"internalType":"uint96","name":"outboundLimit","type":"uint96"},{"internalType":"uint32","name":"outboundWindow","type":"uint32"},{"internalType":"uint96","name":"inboundLimit","type":"uint96"},{"internalType":"uint32","name":"inboundWindow","type":"uint32"}],"internalType":"struct IRateLimiter.RateLimit","name":"rateLimit","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"dstEid","type":"uint32"},{"internalType":"bytes32","name":"to","type":"bytes32"},{"internalType":"uint256","name":"amountLD","type":"uint256"},{"internalType":"uint256","name":"minAmountLD","type":"uint256"},{"internalType":"bytes","name":"extraOptions","type":"bytes"},{"internalType":"bytes","name":"composeMsg","type":"bytes"},{"internalType":"bytes","name":"oftCmd","type":"bytes"}],"internalType":"struct SendParam","name":"_sendParam","type":"tuple"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"_fee","type":"tuple"},{"internalType":"address","name":"_refundAddress","type":"address"}],"name":"send","outputs":[{"components":[{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"fee","type":"tuple"}],"internalType":"struct MessagingReceipt","name":"msgReceipt","type":"tuple"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"internalType":"struct OFTReceipt","name":"oftReceipt","type":"tuple"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_feeBps","type":"uint16"}],"name":"setDefaultFeeBps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setDefaultPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"}],"name":"setDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint32","name":"eid","type":"uint32"},{"internalType":"uint16","name":"msgType","type":"uint16"},{"internalType":"bytes","name":"options","type":"bytes"}],"internalType":"struct IOAppOptionsType3.EnforcedOptionParam[]","name":"_enforcedOptions","type":"tuple[]"}],"name":"setEnforcedOptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint16","name":"_feeBps","type":"uint16"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setFeeBps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeDeposit","type":"address"}],"name":"setFeeDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_msgInspector","type":"address"}],"name":"setMsgInspector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bool","name":"paused","type":"bool"},{"internalType":"bool","name":"enabled","type":"bool"}],"internalType":"struct IPauseByID.SetPausedParam[]","name":"_params","type":"tuple[]"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"bytes32","name":"_peer","type":"bytes32"}],"name":"setPeer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"isExempt","type":"bool"}],"internalType":"struct IRateLimiter.SetRateLimitAddressExemptionParam[]","name":"_exemptions","type":"tuple[]"}],"name":"setRateLimitAddressExemptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"components":[{"internalType":"bool","name":"overrideDefaultConfig","type":"bool"},{"internalType":"bool","name":"outboundEnabled","type":"bool"},{"internalType":"bool","name":"inboundEnabled","type":"bool"},{"internalType":"bool","name":"netAccountingEnabled","type":"bool"},{"internalType":"bool","name":"addressExemptionEnabled","type":"bool"},{"internalType":"uint96","name":"outboundLimit","type":"uint96"},{"internalType":"uint96","name":"inboundLimit","type":"uint96"},{"internalType":"uint32","name":"outboundWindow","type":"uint32"},{"internalType":"uint32","name":"inboundWindow","type":"uint32"}],"internalType":"struct IRateLimiter.RateLimitConfig","name":"config","type":"tuple"}],"internalType":"struct IRateLimiter.SetRateLimitConfigParam[]","name":"_params","type":"tuple[]"}],"name":"setRateLimitConfigs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"bool","name":"useGlobalState","type":"bool"},{"internalType":"bool","name":"isGloballyDisabled","type":"bool"}],"internalType":"struct IRateLimiter.RateLimitGlobalConfig","name":"_globalConfig","type":"tuple"}],"name":"setRateLimitGlobalConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"components":[{"internalType":"uint96","name":"outboundUsage","type":"uint96"},{"internalType":"uint96","name":"inboundUsage","type":"uint96"},{"internalType":"uint40","name":"lastUpdated","type":"uint40"}],"internalType":"struct IRateLimiter.RateLimitState","name":"state","type":"tuple"}],"internalType":"struct IRateLimiter.SetRateLimitStateParam[]","name":"_params","type":"tuple[]"}],"name":"setRateLimitStates","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"sd","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"LayerZero Labs (@TRileySchwarz, tinom.eth)","custom:version":"1.0.0","errors":{"ExemptionStateIdempotent(address,bool)":[{"params":{"isExempt":"Whether the address is exempt","user":"User address"}}],"InvalidBps(uint16)":[{"params":{"feeBps":"Invalid fee basis points (BPS)"}}],"InvalidOptions(bytes)":[{"params":{"options":"Invalid options"}}],"InvalidScaledDecimals(uint8)":[{"params":{"scaledDecimals":"Scaled decimals"}}],"LastUpdatedInFuture(uint40,uint40)":[{"params":{"currentTimestamp":"Current block timestamp","lastUpdated":"Last updated timestamp"}}],"PauseStateIdempotent(bool)":[{"params":{"isPaused":"Whether transfers are paused"}}],"Paused(uint256)":[{"params":{"id":"Destination ID that is paused"}}],"RateLimitExceeded(uint256,uint256)":[{"params":{"availableAmount":"Remaining capacity of the rate limit","requestedAmount":"Amount requested"}}]},"events":{"DefaultFeeBpsSet(uint16)":{"params":{"feeBps":"Default fee basis points (BPS)"}},"DefaultPauseSet(bool)":{"params":{"paused":"Default pause status"}},"EnforcedOptionSet((uint32,uint16,bytes)[])":{"params":{"_enforcedOptions":"Array of enforced options"}},"FeeBpsSet(uint256,uint16,bool)":{"params":{"enabled":"Whether the fee is enabled for the destination","feeBps":"Fee basis points (BPS)","id":"Destination ID"}},"FeeDepositSet(address)":{"params":{"feeDeposit":"New fee deposit address"}},"MsgInspectorSet(address)":{"params":{"msgInspector":"Address of the new message inspector"}},"PauseSet(uint256,bool,bool)":{"params":{"enabled":"Whether the pause config is enabled for the destination","id":"Destination ID","paused":"Whether transfers are paused for this ID"}},"RateLimitAddressExemptionUpdated(address,bool)":{"params":{"isExempt":"Whether the address is exempt","user":"Address of the user"}},"RateLimitConfigUpdated(uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))":{"params":{"config":"Parameters for the updated rate limit configuration","id":"ID of the rate limit configuration"}},"RateLimitGlobalConfigUpdated((bool,bool))":{"params":{"globalConfig":"Updated global configuration"}},"RateLimitStateUpdated(uint256,(uint96,uint96,uint40))":{"params":{"id":"ID of the rate limit state","state":"Parameters for the updated rate limit state"}}},"kind":"dev","methods":{"approvalRequired()":{"details":"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.","returns":{"requiresApproval":"Needs approval of the underlying token implementation."}},"checkpointRateLimits(uint256[])":{"details":"Recommended to be called atomically before setting new limits or windows through `setRateLimitConfigs`, to avoid retroactively applying decays. Alternatively, `setRateLimitStates` can be called to explicitly set the desired usages.","params":{"_ids":"Array of rate limit IDs to checkpoint"}},"combineOptions(uint32,uint16,bytes)":{"params":{"_eid":"Endpoint ID","_extraOptions":"Additional options passed by the caller","_msgType":"Message type, as defined by the OApp"},"returns":{"options":"Combination of caller specified options AND enforced options"}},"defaultFeeBps()":{"returns":{"fee":"Default fee basis points (BPS)"}},"defaultPaused()":{"returns":{"paused":"Default pause status"}},"endpoint()":{"returns":{"iEndpoint":"The LayerZero endpoint as an interface."}},"enforcedOptions(uint32,uint16)":{"params":{"_eid":"Endpoint ID","_msgType":"Message type, as defined by the OApp"},"returns":{"options":"Enforced options"}},"feeBps(uint256)":{"params":{"_id":"Destination ID"},"returns":{"config":"Configured fee for the destination ID"}},"feeDeposit()":{"returns":{"deposit":"Address that will receive any accrued fees"}},"getAmountBeforeFee(uint256,uint256)":{"params":{"_amountAfterFee":"Desired amount after fees","_id":"Destination ID"},"returns":{"amountBeforeFee":"Required amount before fees"}},"getFee(uint256,uint256)":{"params":{"_amount":"Amount to calculate the fee for","_id":"Destination ID"},"returns":{"fee":"Fee amount"}},"getRateLimitGlobalConfig()":{"returns":{"globalConfig":"Global configuration"}},"getRateLimitUsages(uint256)":{"details":"Potentially scaled up by `SCALE_DECIMALS`.Checks config and falls back to default if necessary.If a rate limit is disabled in a given direction, the available amount is `type(uint256).max`.","params":{"_id":"ID of the rate limit"},"returns":{"inboundAvailableAmount":"Scaled capacity of the inbound rate limit","inboundUsage":"Scaled current usage of the inbound rate limit","outboundAvailableAmount":"Scaled capacity of the outbound rate limit","outboundUsage":"Scaled current usage of the outbound rate limit"}},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"details":"Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.The default sender IS the OAppReceiver implementer.","params":{"_message":"The lzReceive payload.","_origin":"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.","_sender":"The sender address."},"returns":{"isSender":"Is a valid sender."}},"isPaused(uint256)":{"params":{"_id":"Destination ID"},"returns":{"paused":"Whether transfers are paused"}},"isRateLimitAddressExempt(address)":{"params":{"_user":"Address of the user"},"returns":{"isExempt":"Whether the address is exempt"}},"msgInspector()":{"returns":{"inspector":"Address of the message inspector"}},"oAppVersion()":{"returns":{"receiverVersion":"The version of the OAppReceiver.sol contract.","senderVersion":"The version of the OAppSender.sol contract."}},"oftVersion()":{"details":"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)","returns":{"interfaceId":"The interface ID.","version":"The version."}},"pauseConfig(uint256)":{"params":{"_id":"Destination ID"},"returns":{"config":"Configured pause setting for the destination ID"}},"peers(uint32)":{"params":{"_eid":"The endpoint ID."},"returns":{"peer":"The peer address (OApp instance) associated with the corresponding endpoint."}},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"params":{"_sendParam":"The parameters for the send operation."},"returns":{"oftFeeDetails":"The details of OFT fees.","oftLimit":"The OFT limit information.","oftReceipt":"The OFT receipt information."}},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"details":"MessagingFee: LayerZero msg fee - nativeFee: The native fee. - lzTokenFee: The lzToken fee.","params":{"_payInLzToken":"Flag indicating whether the caller is paying in the LZ token.","_sendParam":"The parameters for the send() operation."},"returns":{"msgFee":"The calculated LayerZero messaging fee from the send() operation."}},"rateLimits(uint256)":{"details":"May return unscaled state if `SCALE_DECIMALS` is set, use `getRateLimitUsages` for scaled values.Reads the rate limit state from storage without checking defaults.","params":{"_id":"ID of the rate limit"},"returns":{"rateLimit":"Rate limit state and configuration"}},"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":{"details":"MessagingReceipt: LayerZero msg receipt - guid: The unique identifier for the sent message. - nonce: The nonce of the sent message. - fee: The LayerZero fee incurred for the message.","params":{"_fee":"The fee information supplied by the caller. - nativeFee: The native fee. - lzTokenFee: The lzToken fee.","_refundAddress":"The address to receive any excess funds from fees etc. on the src.","_sendParam":"The parameters for the send operation."},"returns":{"msgReceipt":"The LayerZero messaging receipt from the send() operation.","oftReceipt":"The OFT receipt information."}},"setDefaultFeeBps(uint16)":{"params":{"_feeBps":"New default fee basis points (BPS)"}},"setDefaultPaused(bool)":{"params":{"_paused":"New default pause status"}},"setDelegate(address)":{"params":{"_delegate":"The address of the delegate to be set."}},"setEnforcedOptions((uint32,uint16,bytes)[])":{"details":"Provides a way for the OApp to enforce things like paying for minimum destination `lzReceive` gas amounts.These enforced options can vary as the potential options/execution on the remote may differ as per the `msgType`. E.g., the amount of `lzReceive` gas necessary to deliver a `lzCompose` message adds overhead you don't want to pay if you are only sending a standard message such as `lzReceive` WITHOUT `sendCompose`.","params":{"_enforcedOptions":"Array of enforced options"}},"setFeeBps(uint256,uint16,bool)":{"params":{"_enabled":"Whether the fee is enabled for the destination","_feeBps":"Fee basis points to set","_id":"Destination ID"}},"setFeeDeposit(address)":{"params":{"_feeDeposit":"Address that will receive any accrued fees"}},"setMsgInspector(address)":{"params":{"_msgInspector":"Address of the new message inspector"}},"setPaused((uint256,bool,bool)[])":{"params":{"_params":"Array of pause configurations"}},"setPeer(uint32,bytes32)":{"params":{"_eid":"The endpoint ID.","_peer":"The address of the peer to be associated with the corresponding endpoint."}},"setRateLimitAddressExemptions((address,bool)[])":{"details":"Only in effect if `addressExemptionEnabled` is true for an ID.","params":{"_exemptions":"Array of exemptions to set"}},"setRateLimitConfigs((uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))[])":{"details":"Configurations must be significantly larger than windows to avoid precision loss when calculating decays.It does not checkpoint rate limits for the configured IDs.","params":{"_params":"Array of configurations to set"}},"setRateLimitGlobalConfig((bool,bool))":{"params":{"_globalConfig":"Global configuration to set"}},"setRateLimitStates((uint256,(uint96,uint96,uint40))[])":{"details":"States cannot be set to a timestamp in the future.","params":{"_params":"Array of states to set"}},"sharedDecimals()":{"returns":{"sd":"The shared decimals of the OFT."}},"token()":{"returns":{"tokenAddress":"The address of the ERC20 token implementation."}}},"title":"IOFTExtended","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"allowInitializePath((uint32,bytes32,uint64))":"ff7bd03d","approvalRequired()":"9f68b964","checkpointRateLimits(uint256[])":"7d9a5fe9","combineOptions(uint32,uint16,bytes)":"bc70b354","defaultFeeBps()":"bcae25a4","defaultPaused()":"13053500","endpoint()":"5e280f11","enforcedOptions(uint32,uint16)":"5535d461","feeBps(uint256)":"a060cc21","feeDeposit()":"abca7290","getAmountBeforeFee(uint256,uint256)":"62e9ad7c","getFee(uint256,uint256)":"d250185c","getRateLimitGlobalConfig()":"fe51ea41","getRateLimitUsages(uint256)":"04ce2e3d","isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":"82413eac","isPaused(uint256)":"bdf2a43c","isRateLimitAddressExempt(address)":"e1cce134","lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)":"13137d65","msgInspector()":"111ecdad","nextNonce(uint32,bytes32)":"7d25a05e","oAppVersion()":"17442b70","oftVersion()":"156a0d0f","pauseConfig(uint256)":"063de7ea","peers(uint32)":"bb0b6a53","quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":"0d35b415","quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":"3b6f743b","rateLimits(uint256)":"840d2ec1","send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":"c7c7f5b3","setDefaultFeeBps(uint16)":"4488b652","setDefaultPaused(bool)":"a6af01d7","setDelegate(address)":"ca5eb5e1","setEnforcedOptions((uint32,uint16,bytes)[])":"b98bd070","setFeeBps(uint256,uint16,bool)":"49aa4b6a","setFeeDeposit(address)":"7a883d6e","setMsgInspector(address)":"6fc1b31e","setPaused((uint256,bool,bool)[])":"88c0a4ab","setPeer(uint32,bytes32)":"3400288b","setRateLimitAddressExemptions((address,bool)[])":"2e367874","setRateLimitConfigs((uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))[])":"ed01d8db","setRateLimitGlobalConfig((bool,bool))":"d09b13e2","setRateLimitStates((uint256,(uint96,uint96,uint40))[])":"7b837f8e","sharedDecimals()":"857749b0","token()":"fc0c546a"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountSD\",\"type\":\"uint256\"}],\"name\":\"AmountSDOverflowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isExempt\",\"type\":\"bool\"}],\"name\":\"ExemptionStateIdempotent\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"feeBps\",\"type\":\"uint16\"}],\"name\":\"InvalidBps\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDelegate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEndpointCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFeeDeposit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"name\":\"InvalidOptions\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"scaledDecimals\",\"type\":\"uint8\"}],\"name\":\"InvalidScaledDecimals\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint40\",\"name\":\"lastUpdated\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"currentTimestamp\",\"type\":\"uint40\"}],\"name\":\"LastUpdatedInFuture\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"}],\"name\":\"NoPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"}],\"name\":\"OnlyPeer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"isPaused\",\"type\":\"bool\"}],\"name\":\"PauseStateIdempotent\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Paused\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"availableAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedAmount\",\"type\":\"uint256\"}],\"name\":\"RateLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"}],\"name\":\"SlippageExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"feeBps\",\"type\":\"uint16\"}],\"name\":\"DefaultFeeBpsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"DefaultPauseSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct IOAppOptionsType3.EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"EnforcedOptionSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"feeBps\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"FeeBpsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"feeDeposit\",\"type\":\"address\"}],\"name\":\"FeeDepositSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"msgInspector\",\"type\":\"address\"}],\"name\":\"MsgInspectorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"name\":\"OFTSent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"PauseSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"name\":\"PeerSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isExempt\",\"type\":\"bool\"}],\"name\":\"RateLimitAddressExemptionUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"overrideDefaultConfig\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"outboundEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"inboundEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"netAccountingEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"addressExemptionEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint96\",\"name\":\"outboundLimit\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"inboundLimit\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"outboundWindow\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"inboundWindow\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct IRateLimiter.RateLimitConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"name\":\"RateLimitConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"useGlobalState\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isGloballyDisabled\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"struct IRateLimiter.RateLimitGlobalConfig\",\"name\":\"globalConfig\",\"type\":\"tuple\"}],\"name\":\"RateLimitGlobalConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint96\",\"name\":\"outboundUsage\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"inboundUsage\",\"type\":\"uint96\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdated\",\"type\":\"uint40\"}],\"indexed\":false,\"internalType\":\"struct IRateLimiter.RateLimitState\",\"name\":\"state\",\"type\":\"tuple\"}],\"name\":\"RateLimitStateUpdated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"}],\"name\":\"allowInitializePath\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"approvalRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"requiresApproval\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_ids\",\"type\":\"uint256[]\"}],\"name\":\"checkpointRateLimits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"_extraOptions\",\"type\":\"bytes\"}],\"name\":\"combineOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultFeeBps\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"fee\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"defaultPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"endpoint\",\"outputs\":[{\"internalType\":\"contract ILayerZeroEndpointV2\",\"name\":\"iEndpoint\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_msgType\",\"type\":\"uint16\"}],\"name\":\"enforcedOptions\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"feeBps\",\"outputs\":[{\"components\":[{\"internalType\":\"uint16\",\"name\":\"feeBps\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"internalType\":\"struct IFeeConfig.FeeConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeDeposit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deposit\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amountAfterFee\",\"type\":\"uint256\"}],\"name\":\"getAmountBeforeFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountBeforeFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"getFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRateLimitGlobalConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"useGlobalState\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isGloballyDisabled\",\"type\":\"bool\"}],\"internalType\":\"struct IRateLimiter.RateLimitGlobalConfig\",\"name\":\"globalConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"getRateLimitUsages\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"outboundUsage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"outboundAvailableAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inboundUsage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"inboundAvailableAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"isComposeMsgSender\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isSender\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"isRateLimitAddressExempt\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isExempt\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"srcEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"struct Origin\",\"name\":\"_origin\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"_guid\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"_executor\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"lzReceive\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"msgInspector\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"inspector\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_sender\",\"type\":\"bytes32\"}],\"name\":\"nextNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oAppVersion\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"senderVersion\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"receiverVersion\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oftVersion\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"},{\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"pauseConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"internalType\":\"struct IPauseByID.PauseConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"}],\"name\":\"peers\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"peer\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"}],\"name\":\"quoteOFT\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxAmountLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTLimit\",\"name\":\"oftLimit\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"feeAmountLD\",\"type\":\"int256\"},{\"internalType\":\"string\",\"name\":\"description\",\"type\":\"string\"}],\"internalType\":\"struct OFTFeeDetail[]\",\"name\":\"oftFeeDetails\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"_payInLzToken\",\"type\":\"bool\"}],\"name\":\"quoteSend\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"msgFee\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"}],\"name\":\"rateLimits\",\"outputs\":[{\"components\":[{\"internalType\":\"uint96\",\"name\":\"outboundUsage\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"inboundUsage\",\"type\":\"uint96\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdated\",\"type\":\"uint40\"},{\"internalType\":\"uint24\",\"name\":\"configBitmap\",\"type\":\"uint24\"},{\"internalType\":\"uint96\",\"name\":\"outboundLimit\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"outboundWindow\",\"type\":\"uint32\"},{\"internalType\":\"uint96\",\"name\":\"inboundLimit\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"inboundWindow\",\"type\":\"uint32\"}],\"internalType\":\"struct IRateLimiter.RateLimit\",\"name\":\"rateLimit\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"dstEid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"to\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"amountLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minAmountLD\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"extraOptions\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"composeMsg\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"oftCmd\",\"type\":\"bytes\"}],\"internalType\":\"struct SendParam\",\"name\":\"_sendParam\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"_fee\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"_refundAddress\",\"type\":\"address\"}],\"name\":\"send\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"guid\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"nativeFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lzTokenFee\",\"type\":\"uint256\"}],\"internalType\":\"struct MessagingFee\",\"name\":\"fee\",\"type\":\"tuple\"}],\"internalType\":\"struct MessagingReceipt\",\"name\":\"msgReceipt\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amountSentLD\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountReceivedLD\",\"type\":\"uint256\"}],\"internalType\":\"struct OFTReceipt\",\"name\":\"oftReceipt\",\"type\":\"tuple\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"_feeBps\",\"type\":\"uint16\"}],\"name\":\"setDefaultFeeBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_paused\",\"type\":\"bool\"}],\"name\":\"setDefaultPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_delegate\",\"type\":\"address\"}],\"name\":\"setDelegate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"eid\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"msgType\",\"type\":\"uint16\"},{\"internalType\":\"bytes\",\"name\":\"options\",\"type\":\"bytes\"}],\"internalType\":\"struct IOAppOptionsType3.EnforcedOptionParam[]\",\"name\":\"_enforcedOptions\",\"type\":\"tuple[]\"}],\"name\":\"setEnforcedOptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"_feeBps\",\"type\":\"uint16\"},{\"internalType\":\"bool\",\"name\":\"_enabled\",\"type\":\"bool\"}],\"name\":\"setFeeBps\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeDeposit\",\"type\":\"address\"}],\"name\":\"setFeeDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_msgInspector\",\"type\":\"address\"}],\"name\":\"setMsgInspector\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"internalType\":\"struct IPauseByID.SetPausedParam[]\",\"name\":\"_params\",\"type\":\"tuple[]\"}],\"name\":\"setPaused\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_eid\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"_peer\",\"type\":\"bytes32\"}],\"name\":\"setPeer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isExempt\",\"type\":\"bool\"}],\"internalType\":\"struct IRateLimiter.SetRateLimitAddressExemptionParam[]\",\"name\":\"_exemptions\",\"type\":\"tuple[]\"}],\"name\":\"setRateLimitAddressExemptions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"overrideDefaultConfig\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"outboundEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"inboundEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"netAccountingEnabled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"addressExemptionEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint96\",\"name\":\"outboundLimit\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"inboundLimit\",\"type\":\"uint96\"},{\"internalType\":\"uint32\",\"name\":\"outboundWindow\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"inboundWindow\",\"type\":\"uint32\"}],\"internalType\":\"struct IRateLimiter.RateLimitConfig\",\"name\":\"config\",\"type\":\"tuple\"}],\"internalType\":\"struct IRateLimiter.SetRateLimitConfigParam[]\",\"name\":\"_params\",\"type\":\"tuple[]\"}],\"name\":\"setRateLimitConfigs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"useGlobalState\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isGloballyDisabled\",\"type\":\"bool\"}],\"internalType\":\"struct IRateLimiter.RateLimitGlobalConfig\",\"name\":\"_globalConfig\",\"type\":\"tuple\"}],\"name\":\"setRateLimitGlobalConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint96\",\"name\":\"outboundUsage\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"inboundUsage\",\"type\":\"uint96\"},{\"internalType\":\"uint40\",\"name\":\"lastUpdated\",\"type\":\"uint40\"}],\"internalType\":\"struct IRateLimiter.RateLimitState\",\"name\":\"state\",\"type\":\"tuple\"}],\"internalType\":\"struct IRateLimiter.SetRateLimitStateParam[]\",\"name\":\"_params\",\"type\":\"tuple[]\"}],\"name\":\"setRateLimitStates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"sd\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"LayerZero Labs (@TRileySchwarz, tinom.eth)\",\"custom:version\":\"1.0.0\",\"errors\":{\"ExemptionStateIdempotent(address,bool)\":[{\"params\":{\"isExempt\":\"Whether the address is exempt\",\"user\":\"User address\"}}],\"InvalidBps(uint16)\":[{\"params\":{\"feeBps\":\"Invalid fee basis points (BPS)\"}}],\"InvalidOptions(bytes)\":[{\"params\":{\"options\":\"Invalid options\"}}],\"InvalidScaledDecimals(uint8)\":[{\"params\":{\"scaledDecimals\":\"Scaled decimals\"}}],\"LastUpdatedInFuture(uint40,uint40)\":[{\"params\":{\"currentTimestamp\":\"Current block timestamp\",\"lastUpdated\":\"Last updated timestamp\"}}],\"PauseStateIdempotent(bool)\":[{\"params\":{\"isPaused\":\"Whether transfers are paused\"}}],\"Paused(uint256)\":[{\"params\":{\"id\":\"Destination ID that is paused\"}}],\"RateLimitExceeded(uint256,uint256)\":[{\"params\":{\"availableAmount\":\"Remaining capacity of the rate limit\",\"requestedAmount\":\"Amount requested\"}}]},\"events\":{\"DefaultFeeBpsSet(uint16)\":{\"params\":{\"feeBps\":\"Default fee basis points (BPS)\"}},\"DefaultPauseSet(bool)\":{\"params\":{\"paused\":\"Default pause status\"}},\"EnforcedOptionSet((uint32,uint16,bytes)[])\":{\"params\":{\"_enforcedOptions\":\"Array of enforced options\"}},\"FeeBpsSet(uint256,uint16,bool)\":{\"params\":{\"enabled\":\"Whether the fee is enabled for the destination\",\"feeBps\":\"Fee basis points (BPS)\",\"id\":\"Destination ID\"}},\"FeeDepositSet(address)\":{\"params\":{\"feeDeposit\":\"New fee deposit address\"}},\"MsgInspectorSet(address)\":{\"params\":{\"msgInspector\":\"Address of the new message inspector\"}},\"PauseSet(uint256,bool,bool)\":{\"params\":{\"enabled\":\"Whether the pause config is enabled for the destination\",\"id\":\"Destination ID\",\"paused\":\"Whether transfers are paused for this ID\"}},\"RateLimitAddressExemptionUpdated(address,bool)\":{\"params\":{\"isExempt\":\"Whether the address is exempt\",\"user\":\"Address of the user\"}},\"RateLimitConfigUpdated(uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))\":{\"params\":{\"config\":\"Parameters for the updated rate limit configuration\",\"id\":\"ID of the rate limit configuration\"}},\"RateLimitGlobalConfigUpdated((bool,bool))\":{\"params\":{\"globalConfig\":\"Updated global configuration\"}},\"RateLimitStateUpdated(uint256,(uint96,uint96,uint40))\":{\"params\":{\"id\":\"ID of the rate limit state\",\"state\":\"Parameters for the updated rate limit state\"}}},\"kind\":\"dev\",\"methods\":{\"approvalRequired()\":{\"details\":\"Allows things like wallet implementers to determine integration requirements, without understanding the underlying token implementation.\",\"returns\":{\"requiresApproval\":\"Needs approval of the underlying token implementation.\"}},\"checkpointRateLimits(uint256[])\":{\"details\":\"Recommended to be called atomically before setting new limits or windows through `setRateLimitConfigs`, to avoid retroactively applying decays. Alternatively, `setRateLimitStates` can be called to explicitly set the desired usages.\",\"params\":{\"_ids\":\"Array of rate limit IDs to checkpoint\"}},\"combineOptions(uint32,uint16,bytes)\":{\"params\":{\"_eid\":\"Endpoint ID\",\"_extraOptions\":\"Additional options passed by the caller\",\"_msgType\":\"Message type, as defined by the OApp\"},\"returns\":{\"options\":\"Combination of caller specified options AND enforced options\"}},\"defaultFeeBps()\":{\"returns\":{\"fee\":\"Default fee basis points (BPS)\"}},\"defaultPaused()\":{\"returns\":{\"paused\":\"Default pause status\"}},\"endpoint()\":{\"returns\":{\"iEndpoint\":\"The LayerZero endpoint as an interface.\"}},\"enforcedOptions(uint32,uint16)\":{\"params\":{\"_eid\":\"Endpoint ID\",\"_msgType\":\"Message type, as defined by the OApp\"},\"returns\":{\"options\":\"Enforced options\"}},\"feeBps(uint256)\":{\"params\":{\"_id\":\"Destination ID\"},\"returns\":{\"config\":\"Configured fee for the destination ID\"}},\"feeDeposit()\":{\"returns\":{\"deposit\":\"Address that will receive any accrued fees\"}},\"getAmountBeforeFee(uint256,uint256)\":{\"params\":{\"_amountAfterFee\":\"Desired amount after fees\",\"_id\":\"Destination ID\"},\"returns\":{\"amountBeforeFee\":\"Required amount before fees\"}},\"getFee(uint256,uint256)\":{\"params\":{\"_amount\":\"Amount to calculate the fee for\",\"_id\":\"Destination ID\"},\"returns\":{\"fee\":\"Fee amount\"}},\"getRateLimitGlobalConfig()\":{\"returns\":{\"globalConfig\":\"Global configuration\"}},\"getRateLimitUsages(uint256)\":{\"details\":\"Potentially scaled up by `SCALE_DECIMALS`.Checks config and falls back to default if necessary.If a rate limit is disabled in a given direction, the available amount is `type(uint256).max`.\",\"params\":{\"_id\":\"ID of the rate limit\"},\"returns\":{\"inboundAvailableAmount\":\"Scaled capacity of the inbound rate limit\",\"inboundUsage\":\"Scaled current usage of the inbound rate limit\",\"outboundAvailableAmount\":\"Scaled capacity of the outbound rate limit\",\"outboundUsage\":\"Scaled current usage of the outbound rate limit\"}},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"details\":\"Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.The default sender IS the OAppReceiver implementer.\",\"params\":{\"_message\":\"The lzReceive payload.\",\"_origin\":\"The origin information containing the source endpoint and sender address. - srcEid: The source chain endpoint ID. - sender: The sender address on the src chain. - nonce: The nonce of the message.\",\"_sender\":\"The sender address.\"},\"returns\":{\"isSender\":\"Is a valid sender.\"}},\"isPaused(uint256)\":{\"params\":{\"_id\":\"Destination ID\"},\"returns\":{\"paused\":\"Whether transfers are paused\"}},\"isRateLimitAddressExempt(address)\":{\"params\":{\"_user\":\"Address of the user\"},\"returns\":{\"isExempt\":\"Whether the address is exempt\"}},\"msgInspector()\":{\"returns\":{\"inspector\":\"Address of the message inspector\"}},\"oAppVersion()\":{\"returns\":{\"receiverVersion\":\"The version of the OAppReceiver.sol contract.\",\"senderVersion\":\"The version of the OAppSender.sol contract.\"}},\"oftVersion()\":{\"details\":\"interfaceId: This specific interface ID is '0x02e49c2c'.version: Indicates a cross-chain compatible msg encoding with other OFTs.If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented. ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\",\"returns\":{\"interfaceId\":\"The interface ID.\",\"version\":\"The version.\"}},\"pauseConfig(uint256)\":{\"params\":{\"_id\":\"Destination ID\"},\"returns\":{\"config\":\"Configured pause setting for the destination ID\"}},\"peers(uint32)\":{\"params\":{\"_eid\":\"The endpoint ID.\"},\"returns\":{\"peer\":\"The peer address (OApp instance) associated with the corresponding endpoint.\"}},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"params\":{\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"oftFeeDetails\":\"The details of OFT fees.\",\"oftLimit\":\"The OFT limit information.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"details\":\"MessagingFee: LayerZero msg fee - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"params\":{\"_payInLzToken\":\"Flag indicating whether the caller is paying in the LZ token.\",\"_sendParam\":\"The parameters for the send() operation.\"},\"returns\":{\"msgFee\":\"The calculated LayerZero messaging fee from the send() operation.\"}},\"rateLimits(uint256)\":{\"details\":\"May return unscaled state if `SCALE_DECIMALS` is set, use `getRateLimitUsages` for scaled values.Reads the rate limit state from storage without checking defaults.\",\"params\":{\"_id\":\"ID of the rate limit\"},\"returns\":{\"rateLimit\":\"Rate limit state and configuration\"}},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"details\":\"MessagingReceipt: LayerZero msg receipt - guid: The unique identifier for the sent message. - nonce: The nonce of the sent message. - fee: The LayerZero fee incurred for the message.\",\"params\":{\"_fee\":\"The fee information supplied by the caller. - nativeFee: The native fee. - lzTokenFee: The lzToken fee.\",\"_refundAddress\":\"The address to receive any excess funds from fees etc. on the src.\",\"_sendParam\":\"The parameters for the send operation.\"},\"returns\":{\"msgReceipt\":\"The LayerZero messaging receipt from the send() operation.\",\"oftReceipt\":\"The OFT receipt information.\"}},\"setDefaultFeeBps(uint16)\":{\"params\":{\"_feeBps\":\"New default fee basis points (BPS)\"}},\"setDefaultPaused(bool)\":{\"params\":{\"_paused\":\"New default pause status\"}},\"setDelegate(address)\":{\"params\":{\"_delegate\":\"The address of the delegate to be set.\"}},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"details\":\"Provides a way for the OApp to enforce things like paying for minimum destination `lzReceive` gas amounts.These enforced options can vary as the potential options/execution on the remote may differ as per the `msgType`. E.g., the amount of `lzReceive` gas necessary to deliver a `lzCompose` message adds overhead you don't want to pay if you are only sending a standard message such as `lzReceive` WITHOUT `sendCompose`.\",\"params\":{\"_enforcedOptions\":\"Array of enforced options\"}},\"setFeeBps(uint256,uint16,bool)\":{\"params\":{\"_enabled\":\"Whether the fee is enabled for the destination\",\"_feeBps\":\"Fee basis points to set\",\"_id\":\"Destination ID\"}},\"setFeeDeposit(address)\":{\"params\":{\"_feeDeposit\":\"Address that will receive any accrued fees\"}},\"setMsgInspector(address)\":{\"params\":{\"_msgInspector\":\"Address of the new message inspector\"}},\"setPaused((uint256,bool,bool)[])\":{\"params\":{\"_params\":\"Array of pause configurations\"}},\"setPeer(uint32,bytes32)\":{\"params\":{\"_eid\":\"The endpoint ID.\",\"_peer\":\"The address of the peer to be associated with the corresponding endpoint.\"}},\"setRateLimitAddressExemptions((address,bool)[])\":{\"details\":\"Only in effect if `addressExemptionEnabled` is true for an ID.\",\"params\":{\"_exemptions\":\"Array of exemptions to set\"}},\"setRateLimitConfigs((uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))[])\":{\"details\":\"Configurations must be significantly larger than windows to avoid precision loss when calculating decays.It does not checkpoint rate limits for the configured IDs.\",\"params\":{\"_params\":\"Array of configurations to set\"}},\"setRateLimitGlobalConfig((bool,bool))\":{\"params\":{\"_globalConfig\":\"Global configuration to set\"}},\"setRateLimitStates((uint256,(uint96,uint96,uint40))[])\":{\"details\":\"States cannot be set to a timestamp in the future.\",\"params\":{\"_params\":\"Array of states to set\"}},\"sharedDecimals()\":{\"returns\":{\"sd\":\"The shared decimals of the OFT.\"}},\"token()\":{\"returns\":{\"tokenAddress\":\"The address of the ERC20 token implementation.\"}}},\"title\":\"IOFTExtended\",\"version\":1},\"userdoc\":{\"errors\":{\"ExemptionStateIdempotent(address,bool)\":[{\"notice\":\"Thrown when a user is already in the desired state (exempt or not exempt).\"}],\"InvalidBps(uint16)\":[{\"notice\":\"Thrown when the fee basis points (BPS) are invalid.\"}],\"InvalidFeeDeposit()\":[{\"notice\":\"Thrown when the fee deposit address is invalid.\"}],\"InvalidOptions(bytes)\":[{\"notice\":\"Thrown when invalid options are provided.\"}],\"InvalidScaledDecimals(uint8)\":[{\"notice\":\"Thrown when the scaled decimals are invalid.\"}],\"LastUpdatedInFuture(uint40,uint40)\":[{\"notice\":\"Thrown when a rate limit state is set to a timestamp in the future.\"}],\"PauseStateIdempotent(bool)\":[{\"notice\":\"Thrown when setting pause state is idempotent (no change).\"}],\"Paused(uint256)\":[{\"notice\":\"Thrown when attempting to transfer while paused.\"}],\"RateLimitExceeded(uint256,uint256)\":[{\"notice\":\"Thrown when a rate limit is exceeded.\"}]},\"events\":{\"DefaultFeeBpsSet(uint16)\":{\"notice\":\"Emitted when the default fee basis points (BPS) are set.\"},\"DefaultPauseSet(bool)\":{\"notice\":\"Emitted when the default pause status is set.\"},\"EnforcedOptionSet((uint32,uint16,bytes)[])\":{\"notice\":\"Emitted when enforced options are set.\"},\"FeeBpsSet(uint256,uint16,bool)\":{\"notice\":\"Emitted when the fee basis points (BPS) are set for a specific destination ID.\"},\"FeeDepositSet(address)\":{\"notice\":\"Emitted when the fee deposit is updated.\"},\"MsgInspectorSet(address)\":{\"notice\":\"Emitted when a new message inspector is set.\"},\"PauseSet(uint256,bool,bool)\":{\"notice\":\"Emitted when the pause status is set for a specific destination ID.\"},\"RateLimitAddressExemptionUpdated(address,bool)\":{\"notice\":\"Emitted when a rate limit address exemption is updated.\"},\"RateLimitConfigUpdated(uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))\":{\"notice\":\"Emitted when a rate limit configuration is updated.\"},\"RateLimitGlobalConfigUpdated((bool,bool))\":{\"notice\":\"Emitted when the global rate limiter configuration is updated.\"},\"RateLimitStateUpdated(uint256,(uint96,uint96,uint40))\":{\"notice\":\"Emitted when a rate limit state is updated.\"}},\"kind\":\"user\",\"methods\":{\"approvalRequired()\":{\"notice\":\"Indicates whether the OFT contract requires approval of the 'token()' to send.\"},\"checkpointRateLimits(uint256[])\":{\"notice\":\"Checkpoints rate limits for multiple IDs, updating decayed usages to storage.\"},\"combineOptions(uint32,uint16,bytes)\":{\"notice\":\"Combines options for a given endpoint and message type.\"},\"defaultFeeBps()\":{\"notice\":\"Retrieves default fee basis points (BPS) used if no fee is configured for the destination ID.\"},\"defaultPaused()\":{\"notice\":\"Retrieves default pause status used if no pause config is set for the destination ID.\"},\"endpoint()\":{\"notice\":\"Retrieves the LayerZero endpoint associated with the OApp.\"},\"enforcedOptions(uint32,uint16)\":{\"notice\":\"Returns the enforced options for a given endpoint ID and message type.\"},\"feeBps(uint256)\":{\"notice\":\"Retrieves the configured fee for a given ID.\"},\"feeDeposit()\":{\"notice\":\"Returns the address to which fees are forwarded.\"},\"getAmountBeforeFee(uint256,uint256)\":{\"notice\":\"Retrieves the pre-fee amount required to yield a given post-fee amount.\"},\"getFee(uint256,uint256)\":{\"notice\":\"Retrieves the fee for a destination ID and amount.\"},\"getRateLimitGlobalConfig()\":{\"notice\":\"Returns the global configuration for the rate limiter.\"},\"getRateLimitUsages(uint256)\":{\"notice\":\"Calculates decayed usages and capacities for a rate limit.\"},\"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)\":{\"notice\":\"Indicates whether an address is an approved composeMsg sender to the Endpoint.\"},\"isPaused(uint256)\":{\"notice\":\"Checks if transfers to a destination ID are paused.\"},\"isRateLimitAddressExempt(address)\":{\"notice\":\"Returns the address exemption status for a given user.\"},\"msgInspector()\":{\"notice\":\"Retrieves the message inspector address.\"},\"oAppVersion()\":{\"notice\":\"Retrieves the OApp version information.\"},\"oftVersion()\":{\"notice\":\"Retrieves interfaceID and the version of the OFT.\"},\"pauseConfig(uint256)\":{\"notice\":\"Retrieves the configured pause setting for a given ID.\"},\"peers(uint32)\":{\"notice\":\"Retrieves the peer (OApp) associated with a corresponding endpoint.\"},\"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))\":{\"notice\":\"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\"},\"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)\":{\"notice\":\"Provides a quote for the send() operation.\"},\"rateLimits(uint256)\":{\"notice\":\"Returns the rate limit state and configuration for a given ID.\"},\"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\":{\"notice\":\"Executes the send() operation.\"},\"setDefaultFeeBps(uint16)\":{\"notice\":\"Set the default fee basis points (BPS) for all destinations.\"},\"setDefaultPaused(bool)\":{\"notice\":\"Set the default pause status for all destinations.\"},\"setDelegate(address)\":{\"notice\":\"Sets the delegate address for the OApp Core.\"},\"setEnforcedOptions((uint32,uint16,bytes)[])\":{\"notice\":\"Sets enforced options for specific endpoint and message type combinations.\"},\"setFeeBps(uint256,uint16,bool)\":{\"notice\":\"Sets the fee basis points for a specific destination ID.\"},\"setFeeDeposit(address)\":{\"notice\":\"Sets the fee deposit address.\"},\"setMsgInspector(address)\":{\"notice\":\"Sets the message inspector address.\"},\"setPaused((uint256,bool,bool)[])\":{\"notice\":\"Sets the pause status for an array of destination IDs.\"},\"setPeer(uint32,bytes32)\":{\"notice\":\"Sets the peer address (OApp instance) for a corresponding endpoint.\"},\"setRateLimitAddressExemptions((address,bool)[])\":{\"notice\":\"Sets address exemptions for the rate limiter.\"},\"setRateLimitConfigs((uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))[])\":{\"notice\":\"Sets ID-specific configurations for the rate limiter.\"},\"setRateLimitGlobalConfig((bool,bool))\":{\"notice\":\"Sets the global configuration for the rate limiter.\"},\"setRateLimitStates((uint256,(uint96,uint96,uint40))[])\":{\"notice\":\"Sets ID-specific states for the rate limiter.\"},\"sharedDecimals()\":{\"notice\":\"Retrieves the shared decimals of the OFT.\"},\"token()\":{\"notice\":\"Retrieves the address of the token associated with the OFT.\"}},\"notice\":\"Interface for extended OFT contracts with fee, pause, and rate limiter functionality.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IOFTExtended.sol\":\"IOFTExtended\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { IMessageLibManager } from \\\"./IMessageLibManager.sol\\\";\\nimport { IMessagingComposer } from \\\"./IMessagingComposer.sol\\\";\\nimport { IMessagingChannel } from \\\"./IMessagingChannel.sol\\\";\\nimport { IMessagingContext } from \\\"./IMessagingContext.sol\\\";\\n\\nstruct MessagingParams {\\n uint32 dstEid;\\n bytes32 receiver;\\n bytes message;\\n bytes options;\\n bool payInLzToken;\\n}\\n\\nstruct MessagingReceipt {\\n bytes32 guid;\\n uint64 nonce;\\n MessagingFee fee;\\n}\\n\\nstruct MessagingFee {\\n uint256 nativeFee;\\n uint256 lzTokenFee;\\n}\\n\\nstruct Origin {\\n uint32 srcEid;\\n bytes32 sender;\\n uint64 nonce;\\n}\\n\\ninterface ILayerZeroEndpointV2 is IMessageLibManager, IMessagingComposer, IMessagingChannel, IMessagingContext {\\n event PacketSent(bytes encodedPayload, bytes options, address sendLibrary);\\n\\n event PacketVerified(Origin origin, address receiver, bytes32 payloadHash);\\n\\n event PacketDelivered(Origin origin, address receiver);\\n\\n event LzReceiveAlert(\\n address indexed receiver,\\n address indexed executor,\\n Origin origin,\\n bytes32 guid,\\n uint256 gas,\\n uint256 value,\\n bytes message,\\n bytes extraData,\\n bytes reason\\n );\\n\\n event LzTokenSet(address token);\\n\\n event DelegateSet(address sender, address delegate);\\n\\n function quote(MessagingParams calldata _params, address _sender) external view returns (MessagingFee memory);\\n\\n function send(\\n MessagingParams calldata _params,\\n address _refundAddress\\n ) external payable returns (MessagingReceipt memory);\\n\\n function verify(Origin calldata _origin, address _receiver, bytes32 _payloadHash) external;\\n\\n function verifiable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n function initializable(Origin calldata _origin, address _receiver) external view returns (bool);\\n\\n function lzReceive(\\n Origin calldata _origin,\\n address _receiver,\\n bytes32 _guid,\\n bytes calldata _message,\\n bytes calldata _extraData\\n ) external payable;\\n\\n // oapp can burn messages partially by calling this function with its own business logic if messages are verified in order\\n function clear(address _oapp, Origin calldata _origin, bytes32 _guid, bytes calldata _message) external;\\n\\n function setLzToken(address _lzToken) external;\\n\\n function lzToken() external view returns (address);\\n\\n function nativeToken() external view returns (address);\\n\\n function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0xf7f941bee89ea6369950fe54e8ac476ae6478b958b20fc0e8a83e8ff1364eac3\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nimport { Origin } from \\\"./ILayerZeroEndpointV2.sol\\\";\\n\\ninterface ILayerZeroReceiver {\\n function allowInitializePath(Origin calldata _origin) external view returns (bool);\\n\\n function nextNonce(uint32 _eid, bytes32 _sender) external view returns (uint64);\\n\\n function lzReceive(\\n Origin calldata _origin,\\n bytes32 _guid,\\n bytes calldata _message,\\n address _executor,\\n bytes calldata _extraData\\n ) external payable;\\n}\\n\",\"keccak256\":\"0x9641abba8d53b08bb517d1b74801dd15ea7b84d77a6719085bd96c8ea94e3ca0\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\nstruct SetConfigParam {\\n uint32 eid;\\n uint32 configType;\\n bytes config;\\n}\\n\\ninterface IMessageLibManager {\\n struct Timeout {\\n address lib;\\n uint256 expiry;\\n }\\n\\n event LibraryRegistered(address newLib);\\n event DefaultSendLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibrarySet(uint32 eid, address newLib);\\n event DefaultReceiveLibraryTimeoutSet(uint32 eid, address oldLib, uint256 expiry);\\n event SendLibrarySet(address sender, uint32 eid, address newLib);\\n event ReceiveLibrarySet(address receiver, uint32 eid, address newLib);\\n event ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout);\\n\\n function registerLibrary(address _lib) external;\\n\\n function isRegisteredLibrary(address _lib) external view returns (bool);\\n\\n function getRegisteredLibraries() external view returns (address[] memory);\\n\\n function setDefaultSendLibrary(uint32 _eid, address _newLib) external;\\n\\n function defaultSendLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibrary(uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function defaultReceiveLibrary(uint32 _eid) external view returns (address);\\n\\n function setDefaultReceiveLibraryTimeout(uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function defaultReceiveLibraryTimeout(uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function isSupportedEid(uint32 _eid) external view returns (bool);\\n\\n function isValidReceiveLibrary(address _receiver, uint32 _eid, address _lib) external view returns (bool);\\n\\n /// ------------------- OApp interfaces -------------------\\n function setSendLibrary(address _oapp, uint32 _eid, address _newLib) external;\\n\\n function getSendLibrary(address _sender, uint32 _eid) external view returns (address lib);\\n\\n function isDefaultSendLibrary(address _sender, uint32 _eid) external view returns (bool);\\n\\n function setReceiveLibrary(address _oapp, uint32 _eid, address _newLib, uint256 _gracePeriod) external;\\n\\n function getReceiveLibrary(address _receiver, uint32 _eid) external view returns (address lib, bool isDefault);\\n\\n function setReceiveLibraryTimeout(address _oapp, uint32 _eid, address _lib, uint256 _expiry) external;\\n\\n function receiveLibraryTimeout(address _receiver, uint32 _eid) external view returns (address lib, uint256 expiry);\\n\\n function setConfig(address _oapp, address _lib, SetConfigParam[] calldata _params) external;\\n\\n function getConfig(\\n address _oapp,\\n address _lib,\\n uint32 _eid,\\n uint32 _configType\\n ) external view returns (bytes memory config);\\n}\\n\",\"keccak256\":\"0x919b37133adff4dc528e3061deb2789c3149971b530c61e556fb3d09ab315dfc\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingChannel {\\n event InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce);\\n event PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n event PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash);\\n\\n function eid() external view returns (uint32);\\n\\n // this is an emergency function if a message cannot be verified for some reasons\\n // required to provide _nextNonce to avoid race condition\\n function skip(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce) external;\\n\\n function nilify(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function burn(address _oapp, uint32 _srcEid, bytes32 _sender, uint64 _nonce, bytes32 _payloadHash) external;\\n\\n function nextGuid(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (bytes32);\\n\\n function inboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n\\n function outboundNonce(address _sender, uint32 _dstEid, bytes32 _receiver) external view returns (uint64);\\n\\n function inboundPayloadHash(\\n address _receiver,\\n uint32 _srcEid,\\n bytes32 _sender,\\n uint64 _nonce\\n ) external view returns (bytes32);\\n\\n function lazyInboundNonce(address _receiver, uint32 _srcEid, bytes32 _sender) external view returns (uint64);\\n}\\n\",\"keccak256\":\"0x0878f64dffebf58c4165569416372f40860fab546b88cd926eba0d5cb6d8d972\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingComposer {\\n event ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message);\\n event ComposeDelivered(address from, address to, bytes32 guid, uint16 index);\\n event LzComposeAlert(\\n address indexed from,\\n address indexed to,\\n address indexed executor,\\n bytes32 guid,\\n uint16 index,\\n uint256 gas,\\n uint256 value,\\n bytes message,\\n bytes extraData,\\n bytes reason\\n );\\n\\n function composeQueue(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index\\n ) external view returns (bytes32 messageHash);\\n\\n function sendCompose(address _to, bytes32 _guid, uint16 _index, bytes calldata _message) external;\\n\\n function lzCompose(\\n address _from,\\n address _to,\\n bytes32 _guid,\\n uint16 _index,\\n bytes calldata _message,\\n bytes calldata _extraData\\n ) external payable;\\n}\\n\",\"keccak256\":\"0x85bc7090134529ec474866dc4bb1c48692d518c756eb0a961c82574829c51901\",\"license\":\"MIT\"},\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\npragma solidity >=0.8.0;\\n\\ninterface IMessagingContext {\\n function isSendingMessage() external view returns (bool);\\n\\n function getSendContext() external view returns (uint32 dstEid, address sender);\\n}\\n\",\"keccak256\":\"0xff0c546c2813dae3e440882f46b377375f7461b0714efd80bd3f0c6e5cb8da4e\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppCore.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nimport { ILayerZeroEndpointV2 } from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @title IOAppCore\\n */\\ninterface IOAppCore {\\n // Custom error messages\\n error OnlyPeer(uint32 eid, bytes32 sender);\\n error NoPeer(uint32 eid);\\n error InvalidEndpointCall();\\n error InvalidDelegate();\\n\\n // Event emitted when a peer (OApp) is set for a corresponding endpoint\\n event PeerSet(uint32 eid, bytes32 peer);\\n\\n /**\\n * @notice Retrieves the OApp version information.\\n * @return senderVersion The version of the OAppSender.sol contract.\\n * @return receiverVersion The version of the OAppReceiver.sol contract.\\n */\\n function oAppVersion() external view returns (uint64 senderVersion, uint64 receiverVersion);\\n\\n /**\\n * @notice Retrieves the LayerZero endpoint associated with the OApp.\\n * @return iEndpoint The LayerZero endpoint as an interface.\\n */\\n function endpoint() external view returns (ILayerZeroEndpointV2 iEndpoint);\\n\\n /**\\n * @notice Retrieves the peer (OApp) associated with a corresponding endpoint.\\n * @param _eid The endpoint ID.\\n * @return peer The peer address (OApp instance) associated with the corresponding endpoint.\\n */\\n function peers(uint32 _eid) external view returns (bytes32 peer);\\n\\n /**\\n * @notice Sets the peer address (OApp instance) for a corresponding endpoint.\\n * @param _eid The endpoint ID.\\n * @param _peer The address of the peer to be associated with the corresponding endpoint.\\n */\\n function setPeer(uint32 _eid, bytes32 _peer) external;\\n\\n /**\\n * @notice Sets the delegate address for the OApp Core.\\n * @param _delegate The address of the delegate to be set.\\n */\\n function setDelegate(address _delegate) external;\\n}\\n\",\"keccak256\":\"0x9dca296f89f2a87cb3e75e1eb089bc61da25f897df627c391fe680d1deb84d33\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nimport { IOAppCore } from \\\"./IOAppCore.sol\\\";\\nimport { IOAppMsgInspection } from \\\"./IOAppMsgInspection.sol\\\";\\nimport { IOAppOptionsType3 } from \\\"./IOAppOptionsType3.sol\\\";\\nimport { IOAppReceiver } from \\\"./IOAppReceiver.sol\\\";\\n\\n/**\\n * @title IOAppExtended\\n * @author LayerZero Labs (@TRileySchwarz, tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Aggregate interface for extended OApp contracts.\\n * @dev `IOAppReceiver` must precede `IOAppCore` for C3 linearization compatibility with `OApp`,\\n * where `OAppReceiver`'s linearization places `IOAppReceiver` before `IOAppCore`.\\n */\\ninterface IOAppExtended is IOAppReceiver, IOAppCore, IOAppOptionsType3, IOAppMsgInspection {}\\n\",\"keccak256\":\"0x94bd71ff38fd3657a3ace8603ce3905f9578ad12eb0d3b43e4643f5cb71c4692\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppMsgInspection.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IOAppMsgInspection\\n * @author LayerZero Labs (@TRileySchwarz, tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Interface for the `OAppMsgInspection` contract.\\n */\\ninterface IOAppMsgInspection {\\n /**\\n * @notice Emitted when a new message inspector is set.\\n * @param msgInspector Address of the new message inspector\\n */\\n event MsgInspectorSet(address msgInspector);\\n\\n /**\\n * @notice Retrieves the message inspector address.\\n * @return inspector Address of the message inspector\\n */\\n function msgInspector() external view returns (address inspector);\\n\\n /**\\n * @notice Sets the message inspector address.\\n * @param _msgInspector Address of the new message inspector\\n */\\n function setMsgInspector(address _msgInspector) external;\\n}\\n\",\"keccak256\":\"0x546b4cddb65a4a7bd1f7eee2a0bed098d9695fb3c1a37ba466540c7b66a70a2c\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppOptionsType3.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IOAppOptionsType3\\n * @author LayerZero Labs\\n * @custom:version 1.0.0\\n * @notice Interface for the `IOAppOptionsType3` contract.\\n */\\ninterface IOAppOptionsType3 {\\n /**\\n * @notice Struct representing enforced option parameters.\\n * @param eid Endpoint ID\\n * @param msgType OApp message type\\n * @param options Additional options\\n */\\n struct EnforcedOptionParam {\\n uint32 eid;\\n uint16 msgType;\\n bytes options;\\n }\\n\\n /**\\n * @notice Thrown when invalid options are provided.\\n * @param options Invalid options\\n */\\n error InvalidOptions(bytes options);\\n\\n /**\\n * @notice Emitted when enforced options are set.\\n * @param _enforcedOptions Array of enforced options\\n */\\n event EnforcedOptionSet(EnforcedOptionParam[] _enforcedOptions);\\n\\n /**\\n * @notice Returns the enforced options for a given endpoint ID and message type.\\n * @param _eid Endpoint ID\\n * @param _msgType Message type, as defined by the OApp\\n * @return options Enforced options\\n */\\n function enforcedOptions(uint32 _eid, uint16 _msgType) external view returns (bytes memory options);\\n\\n /**\\n * @notice Combines options for a given endpoint and message type.\\n * @param _eid Endpoint ID\\n * @param _msgType Message type, as defined by the OApp\\n * @param _extraOptions Additional options passed by the caller\\n * @return options Combination of caller specified options AND enforced options\\n */\\n function combineOptions(\\n uint32 _eid,\\n uint16 _msgType,\\n bytes calldata _extraOptions\\n ) external view returns (bytes memory options);\\n\\n /**\\n * @notice Sets enforced options for specific endpoint and message type combinations.\\n * @dev Provides a way for the OApp to enforce things like paying for minimum destination `lzReceive` gas amounts.\\n * @dev These enforced options can vary as the potential options/execution on the remote may differ as per the\\n * `msgType`. E.g., the amount of `lzReceive` gas necessary to deliver a `lzCompose` message adds overhead you\\n * don't want to pay if you are only sending a standard message such as `lzReceive` WITHOUT `sendCompose`.\\n * @param _enforcedOptions Array of enforced options\\n */\\n function setEnforcedOptions(EnforcedOptionParam[] calldata _enforcedOptions) external;\\n}\\n\",\"keccak256\":\"0x0ae949f44f74a44c855253fbc7651666a69de17b6d0fc32080c182bc35fcf21c\",\"license\":\"MIT\"},\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppReceiver.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nimport {\\n ILayerZeroReceiver,\\n Origin\\n} from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\\\";\\n\\ninterface IOAppReceiver is ILayerZeroReceiver {\\n /**\\n * @notice Indicates whether an address is an approved composeMsg sender to the Endpoint.\\n * @param _origin The origin information containing the source endpoint and sender address.\\n * - srcEid: The source chain endpoint ID.\\n * - sender: The sender address on the src chain.\\n * - nonce: The nonce of the message.\\n * @param _message The lzReceive payload.\\n * @param _sender The sender address.\\n * @return isSender Is a valid sender.\\n *\\n * @dev Applications can optionally choose to implement a separate composeMsg sender that is NOT the bridging layer.\\n * @dev The default sender IS the OAppReceiver implementer.\\n */\\n function isComposeMsgSender(\\n Origin calldata _origin,\\n bytes calldata _message,\\n address _sender\\n ) external view returns (bool isSender);\\n}\\n\",\"keccak256\":\"0x3331edf546452e3b08f9d668b625579c42967214a75665b1e8118a4f708193e9\",\"license\":\"MIT\"},\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IFeeConfig\\n * @author LayerZero Labs (@TRileySchwarz, tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Interface for the `FeeConfig` contract.\\n */\\ninterface IFeeConfig {\\n /**\\n * @notice Configuration for a fee.\\n * @param feeBps Fee basis points (BPS)\\n * @param enabled False to fallback to the default fee basis points (BPS)\\n */\\n struct FeeConfig {\\n uint16 feeBps;\\n bool enabled;\\n }\\n\\n /**\\n * @notice Emitted when the fee basis points (BPS) are set for a specific destination ID.\\n * @param id Destination ID\\n * @param feeBps Fee basis points (BPS)\\n * @param enabled Whether the fee is enabled for the destination\\n */\\n event FeeBpsSet(uint256 id, uint16 feeBps, bool enabled);\\n\\n /**\\n * @notice Emitted when the default fee basis points (BPS) are set.\\n * @param feeBps Default fee basis points (BPS)\\n */\\n event DefaultFeeBpsSet(uint16 feeBps);\\n\\n /**\\n * @notice Thrown when the fee basis points (BPS) are invalid.\\n * @param feeBps Invalid fee basis points (BPS)\\n */\\n error InvalidBps(uint16 feeBps);\\n\\n /**\\n * @notice Retrieves the fee for a destination ID and amount.\\n * @param _id Destination ID\\n * @param _amount Amount to calculate the fee for\\n * @return fee Fee amount\\n */\\n function getFee(uint256 _id, uint256 _amount) external view returns (uint256 fee);\\n\\n /**\\n * @notice Retrieves the pre-fee amount required to yield a given post-fee amount.\\n * @param _id Destination ID\\n * @param _amountAfterFee Desired amount after fees\\n * @return amountBeforeFee Required amount before fees\\n */\\n function getAmountBeforeFee(uint256 _id, uint256 _amountAfterFee) external view returns (uint256 amountBeforeFee);\\n\\n /**\\n * @notice Retrieves default fee basis points (BPS) used if no fee is configured for the destination ID.\\n * @return fee Default fee basis points (BPS)\\n */\\n function defaultFeeBps() external view returns (uint16 fee);\\n\\n /**\\n * @notice Retrieves the configured fee for a given ID.\\n * @param _id Destination ID\\n * @return config Configured fee for the destination ID\\n */\\n function feeBps(uint256 _id) external view returns (FeeConfig memory config);\\n\\n /**\\n * @notice Set the default fee basis points (BPS) for all destinations.\\n * @param _feeBps New default fee basis points (BPS)\\n */\\n function setDefaultFeeBps(uint16 _feeBps) external;\\n\\n /**\\n * @notice Sets the fee basis points for a specific destination ID.\\n * @param _id Destination ID\\n * @param _feeBps Fee basis points to set\\n * @param _enabled Whether the fee is enabled for the destination\\n */\\n function setFeeBps(uint256 _id, uint16 _feeBps, bool _enabled) external;\\n}\\n\",\"keccak256\":\"0x5f3a969637af29109d4641483ee7d47b5c5d400d4d1e4c7a05253ceb3578cc7d\",\"license\":\"MIT\"},\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IFeeHandler\\n * @author LayerZero Labs (tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Interface for the `FeeHandler` contract.\\n */\\ninterface IFeeHandler {\\n /**\\n * @notice Thrown when the fee deposit address is invalid.\\n */\\n error InvalidFeeDeposit();\\n\\n /**\\n * @notice Emitted when the fee deposit is updated.\\n * @param feeDeposit New fee deposit address\\n */\\n event FeeDepositSet(address indexed feeDeposit);\\n\\n /**\\n * @notice Returns the address to which fees are forwarded.\\n * @return deposit Address that will receive any accrued fees\\n */\\n function feeDeposit() external view returns (address deposit);\\n\\n /**\\n * @notice Sets the fee deposit address.\\n * @param _feeDeposit Address that will receive any accrued fees\\n */\\n function setFeeDeposit(address _feeDeposit) external;\\n}\\n\",\"keccak256\":\"0xf90d8bb8330789b7a2964a8e91e6daa16d53e88b3645126bf7e60842d01b05ca\",\"license\":\"MIT\"},\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IPauseByID\\n * @author LayerZero Labs (tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Interface for the `PauseByID` contract.\\n */\\ninterface IPauseByID {\\n /**\\n * @notice Configuration for a pause setting.\\n * @param paused Whether transfers are paused for this ID\\n * @param enabled False to fallback to the default pause setting\\n */\\n struct PauseConfig {\\n bool paused;\\n bool enabled;\\n }\\n\\n /**\\n * @notice Parameter for setting pause state.\\n * @param id Destination ID\\n * @param paused Whether transfers are paused for this ID\\n * @param enabled Whether the pause config is enabled for the destination\\n */\\n struct SetPausedParam {\\n uint256 id;\\n bool paused;\\n bool enabled;\\n }\\n\\n /**\\n * @notice Emitted when the pause status is set for a specific destination ID.\\n * @param id Destination ID\\n * @param paused Whether transfers are paused for this ID\\n * @param enabled Whether the pause config is enabled for the destination\\n */\\n event PauseSet(uint256 id, bool paused, bool enabled);\\n\\n /**\\n * @notice Emitted when the default pause status is set.\\n * @param paused Default pause status\\n */\\n event DefaultPauseSet(bool paused);\\n\\n /**\\n * @notice Thrown when attempting to transfer while paused.\\n * @param id Destination ID that is paused\\n */\\n error Paused(uint256 id);\\n\\n /**\\n * @notice Thrown when setting pause state is idempotent (no change).\\n * @param isPaused Whether transfers are paused\\n */\\n error PauseStateIdempotent(bool isPaused);\\n\\n /**\\n * @notice Checks if transfers to a destination ID are paused.\\n * @param _id Destination ID\\n * @return paused Whether transfers are paused\\n */\\n function isPaused(uint256 _id) external view returns (bool paused);\\n\\n /**\\n * @notice Retrieves default pause status used if no pause config is set for the destination ID.\\n * @return paused Default pause status\\n */\\n function defaultPaused() external view returns (bool paused);\\n\\n /**\\n * @notice Retrieves the configured pause setting for a given ID.\\n * @param _id Destination ID\\n * @return config Configured pause setting for the destination ID\\n */\\n function pauseConfig(uint256 _id) external view returns (PauseConfig memory config);\\n\\n /**\\n * @notice Set the default pause status for all destinations.\\n * @param _paused New default pause status\\n */\\n function setDefaultPaused(bool _paused) external;\\n\\n /**\\n * @notice Sets the pause status for an array of destination IDs.\\n * @param _params Array of pause configurations\\n */\\n function setPaused(SetPausedParam[] calldata _params) external;\\n}\\n\",\"keccak256\":\"0xd06b9cb06242dacf1adec9cc4275d41c12b44dd236dbaa0373833134b6ab9a04\",\"license\":\"MIT\"},\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IRateLimiter\\n * @author LayerZero Labs (tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Interface for the `RateLimiter` contract.\\n */\\ninterface IRateLimiter {\\n /**\\n * @notice Global configuration for the rate limiter.\\n * @param useGlobalState Whether to use global state for the rate limiter, instead of per-ID rules\\n * @param isGloballyDisabled Whether the rate limiter is globally disabled\\n */\\n struct RateLimitGlobalConfig {\\n bool useGlobalState;\\n bool isGloballyDisabled;\\n }\\n\\n /**\\n * @notice Rate limit state for a given ID.\\n * @param outboundUsage Current usage of the outbound rate limit\\n * @param inboundUsage Current usage of the inbound rate limit\\n * @param lastUpdated Last updated timestamp\\n * @param configBitmap Bitmap of the rate limit configuration\\n * @param outboundLimit Limit of the outbound rate limit\\n * @param outboundWindow Window of the outbound rate limit\\n * @param inboundLimit Limit of the inbound rate limit\\n * @param inboundWindow Window of the inbound rate limit\\n */\\n struct RateLimit {\\n uint96 outboundUsage;\\n uint96 inboundUsage;\\n uint40 lastUpdated;\\n uint24 configBitmap;\\n uint96 outboundLimit;\\n uint32 outboundWindow;\\n uint96 inboundLimit;\\n uint32 inboundWindow;\\n }\\n\\n /**\\n * @notice Rate limit configuration.\\n * @param overrideDefaultConfig Whether to override the default configuration\\n * @param outboundEnabled Whether the outbound rate limit is enabled\\n * @param inboundEnabled Whether the inbound rate limit is enabled\\n * @param netAccountingEnabled Whether net accounting is enabled\\n * @param addressExemptionEnabled Whether address exemption is enabled\\n * @param outboundLimit Limit of the outbound rate limit\\n * @param inboundLimit Limit of the inbound rate limit\\n * @param outboundWindow Window of the outbound rate limit\\n * @param inboundWindow Window of the inbound rate limit\\n */\\n struct RateLimitConfig {\\n bool overrideDefaultConfig;\\n bool outboundEnabled;\\n bool inboundEnabled;\\n bool netAccountingEnabled;\\n bool addressExemptionEnabled;\\n uint96 outboundLimit;\\n uint96 inboundLimit;\\n uint32 outboundWindow;\\n uint32 inboundWindow;\\n }\\n\\n /**\\n * @notice Parameters for setting a rate limit configuration.\\n * @param id ID of the rate limit configuration\\n * @param config Configuration to set\\n */\\n struct SetRateLimitConfigParam {\\n uint256 id;\\n RateLimitConfig config;\\n }\\n\\n /**\\n * @notice Rate limit state.\\n * @param outboundUsage Current usage of the outbound rate limit\\n * @param inboundUsage Current usage of the inbound rate limit\\n * @param lastUpdated Last updated timestamp\\n */\\n struct RateLimitState {\\n uint96 outboundUsage;\\n uint96 inboundUsage;\\n uint40 lastUpdated;\\n }\\n\\n /**\\n * @notice Parameters for setting a rate limit state.\\n * @param id ID of the rate limit state\\n * @param state State to set\\n */\\n struct SetRateLimitStateParam {\\n uint256 id;\\n RateLimitState state;\\n }\\n\\n /**\\n * @notice Parameter for setting a rate limit address exemption.\\n * @param user Address of the user\\n * @param isExempt Whether the address should be exempt from the rate limit\\n */\\n struct SetRateLimitAddressExemptionParam {\\n address user;\\n bool isExempt;\\n }\\n\\n /**\\n * @notice Emitted when the global rate limiter configuration is updated.\\n * @param globalConfig Updated global configuration\\n */\\n event RateLimitGlobalConfigUpdated(RateLimitGlobalConfig globalConfig);\\n\\n /**\\n * @notice Emitted when a rate limit configuration is updated.\\n * @param id ID of the rate limit configuration\\n * @param config Parameters for the updated rate limit configuration\\n */\\n event RateLimitConfigUpdated(uint256 indexed id, RateLimitConfig config);\\n\\n /**\\n * @notice Emitted when a rate limit state is updated.\\n * @param id ID of the rate limit state\\n * @param state Parameters for the updated rate limit state\\n */\\n event RateLimitStateUpdated(uint256 indexed id, RateLimitState state);\\n\\n /**\\n * @notice Emitted when a rate limit address exemption is updated.\\n * @param user Address of the user\\n * @param isExempt Whether the address is exempt\\n */\\n event RateLimitAddressExemptionUpdated(address indexed user, bool isExempt);\\n\\n /**\\n * @notice Thrown when the scaled decimals are invalid.\\n * @param scaledDecimals Scaled decimals\\n */\\n error InvalidScaledDecimals(uint8 scaledDecimals);\\n\\n /**\\n * @notice Thrown when a rate limit state is set to a timestamp in the future.\\n * @param lastUpdated Last updated timestamp\\n * @param currentTimestamp Current block timestamp\\n */\\n error LastUpdatedInFuture(uint40 lastUpdated, uint40 currentTimestamp);\\n\\n /**\\n * @notice Thrown when a rate limit is exceeded.\\n * @param availableAmount Remaining capacity of the rate limit\\n * @param requestedAmount Amount requested\\n */\\n error RateLimitExceeded(uint256 availableAmount, uint256 requestedAmount);\\n\\n /**\\n * @notice Thrown when a user is already in the desired state (exempt or not exempt).\\n * @param user User address\\n * @param isExempt Whether the address is exempt\\n */\\n error ExemptionStateIdempotent(address user, bool isExempt);\\n\\n /**\\n * @notice Returns the global configuration for the rate limiter.\\n * @return globalConfig Global configuration\\n */\\n function getRateLimitGlobalConfig() external view returns (RateLimitGlobalConfig memory globalConfig);\\n\\n /**\\n * @notice Returns the rate limit state and configuration for a given ID.\\n * @dev May return unscaled state if `SCALE_DECIMALS` is set, use `getRateLimitUsages` for scaled values.\\n * @dev Reads the rate limit state from storage without checking defaults.\\n * @param _id ID of the rate limit\\n * @return rateLimit Rate limit state and configuration\\n */\\n function rateLimits(uint256 _id) external view returns (RateLimit memory rateLimit);\\n\\n /**\\n * @notice Returns the address exemption status for a given user.\\n * @param _user Address of the user\\n * @return isExempt Whether the address is exempt\\n */\\n function isRateLimitAddressExempt(address _user) external view returns (bool isExempt);\\n\\n /**\\n * @notice Calculates decayed usages and capacities for a rate limit.\\n * @dev Potentially scaled up by `SCALE_DECIMALS`.\\n * @dev Checks config and falls back to default if necessary.\\n * @dev If a rate limit is disabled in a given direction, the available amount is `type(uint256).max`.\\n * @param _id ID of the rate limit\\n * @return outboundUsage Scaled current usage of the outbound rate limit\\n * @return outboundAvailableAmount Scaled capacity of the outbound rate limit\\n * @return inboundUsage Scaled current usage of the inbound rate limit\\n * @return inboundAvailableAmount Scaled capacity of the inbound rate limit\\n */\\n function getRateLimitUsages(\\n uint256 _id\\n )\\n external\\n view\\n returns (\\n uint256 outboundUsage,\\n uint256 outboundAvailableAmount,\\n uint256 inboundUsage,\\n uint256 inboundAvailableAmount\\n );\\n\\n /**\\n * @notice Sets the global configuration for the rate limiter.\\n * @param _globalConfig Global configuration to set\\n */\\n function setRateLimitGlobalConfig(RateLimitGlobalConfig memory _globalConfig) external;\\n\\n /**\\n * @notice Sets ID-specific configurations for the rate limiter.\\n * @dev Configurations must be significantly larger than windows to avoid precision loss when calculating decays.\\n * @dev It does not checkpoint rate limits for the configured IDs.\\n * @param _params Array of configurations to set\\n */\\n function setRateLimitConfigs(SetRateLimitConfigParam[] calldata _params) external;\\n\\n /**\\n * @notice Sets ID-specific states for the rate limiter.\\n * @dev States cannot be set to a timestamp in the future.\\n * @param _params Array of states to set\\n */\\n function setRateLimitStates(SetRateLimitStateParam[] calldata _params) external;\\n\\n /**\\n * @notice Sets address exemptions for the rate limiter.\\n * @dev Only in effect if `addressExemptionEnabled` is true for an ID.\\n * @param _exemptions Array of exemptions to set\\n */\\n function setRateLimitAddressExemptions(SetRateLimitAddressExemptionParam[] calldata _exemptions) external;\\n\\n /**\\n * @notice Checkpoints rate limits for multiple IDs, updating decayed usages to storage.\\n * @dev Recommended to be called atomically before setting new limits or windows through `setRateLimitConfigs`, to\\n * avoid retroactively applying decays. Alternatively, `setRateLimitStates` can be called to explicitly set\\n * the desired usages.\\n * @param _ids Array of rate limit IDs to checkpoint\\n */\\n function checkpointRateLimits(uint256[] calldata _ids) external;\\n}\\n\",\"keccak256\":\"0x2fc3491749652cab84a7e4fadef1cc79183134083e9982d528220bbf3a7083fe\",\"license\":\"MIT\"},\"contracts/interfaces/IOFT.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nimport {\\n MessagingReceipt,\\n MessagingFee\\n} from \\\"@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\\\";\\n\\n/**\\n * @dev Struct representing token parameters for the OFT send() operation.\\n */\\nstruct SendParam {\\n uint32 dstEid; // Destination endpoint ID.\\n bytes32 to; // Recipient address.\\n uint256 amountLD; // Amount to send in local decimals.\\n uint256 minAmountLD; // Minimum amount to send in local decimals.\\n bytes extraOptions; // Additional options supplied by the caller to be used in the LayerZero message.\\n bytes composeMsg; // The composed message for the send() operation.\\n bytes oftCmd; // The OFT command to be executed, unused in default OFT implementations.\\n}\\n\\n/**\\n * @dev Struct representing OFT limit information.\\n * @dev These amounts can change dynamically and are up the specific oft implementation.\\n */\\nstruct OFTLimit {\\n uint256 minAmountLD; // Minimum amount in local decimals that can be sent to the recipient.\\n uint256 maxAmountLD; // Maximum amount in local decimals that can be sent to the recipient.\\n}\\n\\n/**\\n * @dev Struct representing OFT receipt information.\\n */\\nstruct OFTReceipt {\\n uint256 amountSentLD; // Amount of tokens ACTUALLY debited from the sender in local decimals.\\n // @dev In non-default implementations, the amountReceivedLD COULD differ from this value.\\n uint256 amountReceivedLD; // Amount of tokens to be received on the remote side.\\n}\\n\\n/**\\n * @dev Struct representing OFT fee details.\\n * @dev Future proof mechanism to provide a standardized way to communicate fees to things like a UI.\\n */\\nstruct OFTFeeDetail {\\n int256 feeAmountLD; // Amount of the fee in local decimals.\\n string description; // Description of the fee.\\n}\\n\\n/**\\n * @title IOFT\\n * @dev Interface for the OftChain (OFT) token.\\n * @dev Does not inherit ERC20 to accommodate usage by OFTAdapter as well.\\n * @dev This specific interface ID is '0x02e49c2c'.\\n */\\ninterface IOFT {\\n // Custom error messages\\n error InvalidLocalDecimals();\\n error SlippageExceeded(uint256 amountLD, uint256 minAmountLD);\\n error AmountSDOverflowed(uint256 amountSD);\\n\\n // Events\\n event OFTSent(\\n bytes32 indexed guid, // GUID of the OFT message.\\n uint32 dstEid, // Destination Endpoint ID.\\n address indexed fromAddress, // Address of the sender on the src chain.\\n uint256 amountSentLD, // Amount of tokens sent in local decimals.\\n uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n );\\n event OFTReceived(\\n bytes32 indexed guid, // GUID of the OFT message.\\n uint32 srcEid, // Source Endpoint ID.\\n address indexed toAddress, // Address of the recipient on the dst chain.\\n uint256 amountReceivedLD // Amount of tokens received in local decimals.\\n );\\n\\n /**\\n * @notice Retrieves interfaceID and the version of the OFT.\\n * @return interfaceId The interface ID.\\n * @return version The version.\\n *\\n * @dev interfaceId: This specific interface ID is '0x02e49c2c'.\\n * @dev version: Indicates a cross-chain compatible msg encoding with other OFTs.\\n * @dev If a new feature is added to the OFT cross-chain msg encoding, the version will be incremented.\\n * ie. localOFT version(x,1) CAN send messages to remoteOFT version(x,1)\\n */\\n function oftVersion() external view returns (bytes4 interfaceId, uint64 version);\\n\\n /**\\n * @notice Retrieves the address of the token associated with the OFT.\\n * @return tokenAddress The address of the ERC20 token implementation.\\n */\\n function token() external view returns (address tokenAddress);\\n\\n /**\\n * @notice Indicates whether the OFT contract requires approval of the 'token()' to send.\\n * @return requiresApproval Needs approval of the underlying token implementation.\\n *\\n * @dev Allows things like wallet implementers to determine integration requirements,\\n * without understanding the underlying token implementation.\\n */\\n function approvalRequired() external view returns (bool requiresApproval);\\n\\n /**\\n * @notice Retrieves the shared decimals of the OFT.\\n * @return sd The shared decimals of the OFT.\\n */\\n function sharedDecimals() external view returns (uint8 sd);\\n\\n /**\\n * @notice Provides the fee breakdown and settings data for an OFT. Unused in the default implementation.\\n * @param _sendParam The parameters for the send operation.\\n * @return oftLimit The OFT limit information.\\n * @return oftFeeDetails The details of OFT fees.\\n * @return oftReceipt The OFT receipt information.\\n */\\n function quoteOFT(\\n SendParam calldata _sendParam\\n )\\n external\\n view\\n returns (OFTLimit memory oftLimit, OFTFeeDetail[] memory oftFeeDetails, OFTReceipt memory oftReceipt);\\n\\n /**\\n * @notice Provides a quote for the send() operation.\\n * @param _sendParam The parameters for the send() operation.\\n * @param _payInLzToken Flag indicating whether the caller is paying in the LZ token.\\n * @return msgFee The calculated LayerZero messaging fee from the send() operation.\\n *\\n * @dev MessagingFee: LayerZero msg fee\\n * - nativeFee: The native fee.\\n * - lzTokenFee: The lzToken fee.\\n */\\n function quoteSend(\\n SendParam calldata _sendParam,\\n bool _payInLzToken\\n ) external view returns (MessagingFee memory msgFee);\\n\\n /**\\n * @notice Executes the send() operation.\\n * @param _sendParam The parameters for the send operation.\\n * @param _fee The fee information supplied by the caller.\\n * - nativeFee: The native fee.\\n * - lzTokenFee: The lzToken fee.\\n * @param _refundAddress The address to receive any excess funds from fees etc. on the src.\\n * @return msgReceipt The LayerZero messaging receipt from the send() operation.\\n * @return oftReceipt The OFT receipt information.\\n *\\n * @dev MessagingReceipt: LayerZero msg receipt\\n * - guid: The unique identifier for the sent message.\\n * - nonce: The nonce of the sent message.\\n * - fee: The LayerZero fee incurred for the message.\\n */\\n function send(\\n SendParam calldata _sendParam,\\n MessagingFee calldata _fee,\\n address _refundAddress\\n ) external payable returns (MessagingReceipt memory msgReceipt, OFTReceipt memory oftReceipt);\\n}\\n\",\"keccak256\":\"0x14c97a3527f93a0181f4207824cd0c484ba3e5035c2d16075c8d68137e85f68a\",\"license\":\"MIT\"},\"contracts/interfaces/IOFTExtended.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nimport { IOAppExtended } from \\\"@layerzerolabs/oapp-evm-contracts/contracts/interfaces/IOAppExtended.sol\\\";\\nimport { IFeeConfig } from \\\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeConfig.sol\\\";\\nimport { IFeeHandler } from \\\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IFeeHandler.sol\\\";\\nimport { IPauseByID } from \\\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IPauseByID.sol\\\";\\nimport { IRateLimiter } from \\\"@layerzerolabs/utils-evm-contracts/contracts/interfaces/IRateLimiter.sol\\\";\\nimport { IOFT } from \\\"./IOFT.sol\\\";\\n\\n/**\\n * @title IOFTExtended\\n * @author LayerZero Labs (@TRileySchwarz, tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Interface for extended OFT contracts with fee, pause, and rate limiter functionality.\\n */\\ninterface IOFTExtended is IOFT, IOAppExtended, IFeeConfig, IFeeHandler, IPauseByID, IRateLimiter {}\\n\",\"keccak256\":\"0xe8bfaa9dc416026712751a6ea8b0e74828a2ee4a9ef9237616ef7e59b71a52b4\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"ExemptionStateIdempotent(address,bool)":[{"notice":"Thrown when a user is already in the desired state (exempt or not exempt)."}],"InvalidBps(uint16)":[{"notice":"Thrown when the fee basis points (BPS) are invalid."}],"InvalidFeeDeposit()":[{"notice":"Thrown when the fee deposit address is invalid."}],"InvalidOptions(bytes)":[{"notice":"Thrown when invalid options are provided."}],"InvalidScaledDecimals(uint8)":[{"notice":"Thrown when the scaled decimals are invalid."}],"LastUpdatedInFuture(uint40,uint40)":[{"notice":"Thrown when a rate limit state is set to a timestamp in the future."}],"PauseStateIdempotent(bool)":[{"notice":"Thrown when setting pause state is idempotent (no change)."}],"Paused(uint256)":[{"notice":"Thrown when attempting to transfer while paused."}],"RateLimitExceeded(uint256,uint256)":[{"notice":"Thrown when a rate limit is exceeded."}]},"events":{"DefaultFeeBpsSet(uint16)":{"notice":"Emitted when the default fee basis points (BPS) are set."},"DefaultPauseSet(bool)":{"notice":"Emitted when the default pause status is set."},"EnforcedOptionSet((uint32,uint16,bytes)[])":{"notice":"Emitted when enforced options are set."},"FeeBpsSet(uint256,uint16,bool)":{"notice":"Emitted when the fee basis points (BPS) are set for a specific destination ID."},"FeeDepositSet(address)":{"notice":"Emitted when the fee deposit is updated."},"MsgInspectorSet(address)":{"notice":"Emitted when a new message inspector is set."},"PauseSet(uint256,bool,bool)":{"notice":"Emitted when the pause status is set for a specific destination ID."},"RateLimitAddressExemptionUpdated(address,bool)":{"notice":"Emitted when a rate limit address exemption is updated."},"RateLimitConfigUpdated(uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))":{"notice":"Emitted when a rate limit configuration is updated."},"RateLimitGlobalConfigUpdated((bool,bool))":{"notice":"Emitted when the global rate limiter configuration is updated."},"RateLimitStateUpdated(uint256,(uint96,uint96,uint40))":{"notice":"Emitted when a rate limit state is updated."}},"kind":"user","methods":{"approvalRequired()":{"notice":"Indicates whether the OFT contract requires approval of the 'token()' to send."},"checkpointRateLimits(uint256[])":{"notice":"Checkpoints rate limits for multiple IDs, updating decayed usages to storage."},"combineOptions(uint32,uint16,bytes)":{"notice":"Combines options for a given endpoint and message type."},"defaultFeeBps()":{"notice":"Retrieves default fee basis points (BPS) used if no fee is configured for the destination ID."},"defaultPaused()":{"notice":"Retrieves default pause status used if no pause config is set for the destination ID."},"endpoint()":{"notice":"Retrieves the LayerZero endpoint associated with the OApp."},"enforcedOptions(uint32,uint16)":{"notice":"Returns the enforced options for a given endpoint ID and message type."},"feeBps(uint256)":{"notice":"Retrieves the configured fee for a given ID."},"feeDeposit()":{"notice":"Returns the address to which fees are forwarded."},"getAmountBeforeFee(uint256,uint256)":{"notice":"Retrieves the pre-fee amount required to yield a given post-fee amount."},"getFee(uint256,uint256)":{"notice":"Retrieves the fee for a destination ID and amount."},"getRateLimitGlobalConfig()":{"notice":"Returns the global configuration for the rate limiter."},"getRateLimitUsages(uint256)":{"notice":"Calculates decayed usages and capacities for a rate limit."},"isComposeMsgSender((uint32,bytes32,uint64),bytes,address)":{"notice":"Indicates whether an address is an approved composeMsg sender to the Endpoint."},"isPaused(uint256)":{"notice":"Checks if transfers to a destination ID are paused."},"isRateLimitAddressExempt(address)":{"notice":"Returns the address exemption status for a given user."},"msgInspector()":{"notice":"Retrieves the message inspector address."},"oAppVersion()":{"notice":"Retrieves the OApp version information."},"oftVersion()":{"notice":"Retrieves interfaceID and the version of the OFT."},"pauseConfig(uint256)":{"notice":"Retrieves the configured pause setting for a given ID."},"peers(uint32)":{"notice":"Retrieves the peer (OApp) associated with a corresponding endpoint."},"quoteOFT((uint32,bytes32,uint256,uint256,bytes,bytes,bytes))":{"notice":"Provides the fee breakdown and settings data for an OFT. Unused in the default implementation."},"quoteSend((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),bool)":{"notice":"Provides a quote for the send() operation."},"rateLimits(uint256)":{"notice":"Returns the rate limit state and configuration for a given ID."},"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)":{"notice":"Executes the send() operation."},"setDefaultFeeBps(uint16)":{"notice":"Set the default fee basis points (BPS) for all destinations."},"setDefaultPaused(bool)":{"notice":"Set the default pause status for all destinations."},"setDelegate(address)":{"notice":"Sets the delegate address for the OApp Core."},"setEnforcedOptions((uint32,uint16,bytes)[])":{"notice":"Sets enforced options for specific endpoint and message type combinations."},"setFeeBps(uint256,uint16,bool)":{"notice":"Sets the fee basis points for a specific destination ID."},"setFeeDeposit(address)":{"notice":"Sets the fee deposit address."},"setMsgInspector(address)":{"notice":"Sets the message inspector address."},"setPaused((uint256,bool,bool)[])":{"notice":"Sets the pause status for an array of destination IDs."},"setPeer(uint32,bytes32)":{"notice":"Sets the peer address (OApp instance) for a corresponding endpoint."},"setRateLimitAddressExemptions((address,bool)[])":{"notice":"Sets address exemptions for the rate limiter."},"setRateLimitConfigs((uint256,(bool,bool,bool,bool,bool,uint96,uint96,uint32,uint32))[])":{"notice":"Sets ID-specific configurations for the rate limiter."},"setRateLimitGlobalConfig((bool,bool))":{"notice":"Sets the global configuration for the rate limiter."},"setRateLimitStates((uint256,(uint96,uint96,uint40))[])":{"notice":"Sets ID-specific states for the rate limiter."},"sharedDecimals()":{"notice":"Retrieves the shared decimals of the OFT."},"token()":{"notice":"Retrieves the address of the token associated with the OFT."}},"notice":"Interface for extended OFT contracts with fee, pause, and rate limiter functionality.","version":1}}},"contracts/libs/OFTComposeMsgCodec.sol":{"OFTComposeMsgCodec":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d978b2d6c2fe0efba64b26b230aded307f5c609d18675d3883894b50cedeed2c64736f6c63430008170033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 PUSH25 0xB2D6C2FE0EFBA64B26B230ADED307F5C609D18675D3883894B POP 0xCE 0xDE 0xED 0x2C PUSH5 0x736F6C6343 STOP ADDMOD OR STOP CALLER ","sourceMap":"58:2931:18:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;58:2931:18;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d978b2d6c2fe0efba64b26b230aded307f5c609d18675d3883894b50cedeed2c64736f6c63430008170033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 PUSH25 0xB2D6C2FE0EFBA64B26B230ADED307F5C609D18675D3883894B POP 0xCE 0xDE 0xED 0x2C PUSH5 0x736F6C6343 STOP ADDMOD OR STOP CALLER ","sourceMap":"58:2931:18:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"addressToBytes32(address)":"infinite","amountLD(bytes calldata)":"infinite","bytes32ToAddress(bytes32)":"infinite","composeFrom(bytes calldata)":"infinite","composeMsg(bytes calldata)":"infinite","encode(uint64,uint32,uint256,bytes memory)":"infinite","nonce(bytes calldata)":"infinite","srcEid(bytes calldata)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libs/OFTComposeMsgCodec.sol\":\"OFTComposeMsgCodec\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"contracts/libs/OFTComposeMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nlibrary OFTComposeMsgCodec {\\n // Offset constants for decoding composed messages\\n uint8 private constant NONCE_OFFSET = 8;\\n uint8 private constant SRC_EID_OFFSET = 12;\\n uint8 private constant AMOUNT_LD_OFFSET = 44;\\n uint8 private constant COMPOSE_FROM_OFFSET = 76;\\n\\n /**\\n * @dev Encodes a OFT composed message.\\n * @param _nonce The nonce value.\\n * @param _srcEid The source endpoint ID.\\n * @param _amountLD The amount in local decimals.\\n * @param _composeMsg The composed message.\\n * @return _msg The encoded Composed message.\\n */\\n function encode(\\n uint64 _nonce,\\n uint32 _srcEid,\\n uint256 _amountLD,\\n bytes memory _composeMsg // 0x[composeFrom][composeMsg]\\n ) internal pure returns (bytes memory _msg) {\\n _msg = abi.encodePacked(_nonce, _srcEid, _amountLD, _composeMsg);\\n }\\n\\n /**\\n * @dev Retrieves the nonce for the composed message.\\n * @param _msg The message.\\n * @return The nonce value.\\n */\\n function nonce(bytes calldata _msg) internal pure returns (uint64) {\\n return uint64(bytes8(_msg[:NONCE_OFFSET]));\\n }\\n\\n /**\\n * @dev Retrieves the source endpoint ID for the composed message.\\n * @param _msg The message.\\n * @return The source endpoint ID.\\n */\\n function srcEid(bytes calldata _msg) internal pure returns (uint32) {\\n return uint32(bytes4(_msg[NONCE_OFFSET:SRC_EID_OFFSET]));\\n }\\n\\n /**\\n * @dev Retrieves the amount in local decimals from the composed message.\\n * @param _msg The message.\\n * @return The amount in local decimals.\\n */\\n function amountLD(bytes calldata _msg) internal pure returns (uint256) {\\n return uint256(bytes32(_msg[SRC_EID_OFFSET:AMOUNT_LD_OFFSET]));\\n }\\n\\n /**\\n * @dev Retrieves the composeFrom value from the composed message.\\n * @param _msg The message.\\n * @return The composeFrom value.\\n */\\n function composeFrom(bytes calldata _msg) internal pure returns (bytes32) {\\n return bytes32(_msg[AMOUNT_LD_OFFSET:COMPOSE_FROM_OFFSET]);\\n }\\n\\n /**\\n * @dev Retrieves the composed message.\\n * @param _msg The message.\\n * @return The composed message.\\n */\\n function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n return _msg[COMPOSE_FROM_OFFSET:];\\n }\\n\\n /**\\n * @dev Converts an address to bytes32.\\n * @param _addr The address to convert.\\n * @return The bytes32 representation of the address.\\n */\\n function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n return bytes32(uint256(uint160(_addr)));\\n }\\n\\n /**\\n * @dev Converts bytes32 to an address.\\n * @param _b The bytes32 value to convert.\\n * @return The address representation of bytes32.\\n */\\n function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n return address(uint160(uint256(_b)));\\n }\\n}\\n\",\"keccak256\":\"0x3a090d3bdf97bafbca0eb027abd7c97f2a75acdc4aeb9e7fe528ce6e52fd6c20\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/libs/OFTMsgCodec.sol":{"OFTMsgCodec":{"abi":[],"devdoc":{"kind":"dev","methods":{},"version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022dfa7519fa1b60880747276439d7ea6d8780350ca1424a67ab968542112d8a664736f6c63430008170033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 0xDF 0xA7 MLOAD SWAP16 LOG1 0xB6 ADDMOD DUP1 PUSH21 0x7276439D7EA6D8780350CA1424A67AB968542112D8 0xA6 PUSH5 0x736F6C6343 STOP ADDMOD OR STOP CALLER ","sourceMap":"58:2846:19:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;58:2846:19;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022dfa7519fa1b60880747276439d7ea6d8780350ca1424a67ab968542112d8a664736f6c63430008170033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 0xDF 0xA7 MLOAD SWAP16 LOG1 0xB6 ADDMOD DUP1 PUSH21 0x7276439D7EA6D8780350CA1424A67AB968542112D8 0xA6 PUSH5 0x736F6C6343 STOP ADDMOD OR STOP CALLER ","sourceMap":"58:2846:19:-:0;;;;;;;;"},"gasEstimates":{"creation":{"codeDepositCost":"17200","executionCost":"103","totalCost":"17303"},"internal":{"addressToBytes32(address)":"infinite","amountSD(bytes calldata)":"infinite","bytes32ToAddress(bytes32)":"infinite","composeMsg(bytes calldata)":"infinite","encode(bytes32,uint64,bytes memory)":"infinite","isComposed(bytes calldata)":"infinite","sendTo(bytes calldata)":"infinite"}},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libs/OFTMsgCodec.sol\":\"OFTMsgCodec\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"contracts/libs/OFTMsgCodec.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nlibrary OFTMsgCodec {\\n // Offset constants for encoding and decoding OFT messages\\n uint8 private constant SEND_TO_OFFSET = 32;\\n uint8 private constant SEND_AMOUNT_SD_OFFSET = 40;\\n\\n /**\\n * @dev Encodes an OFT LayerZero message.\\n * @param _sendTo The recipient address.\\n * @param _amountShared The amount in shared decimals.\\n * @param _composeMsg The composed message.\\n * @return _msg The encoded message.\\n * @return hasCompose A boolean indicating whether the message has a composed payload.\\n */\\n function encode(\\n bytes32 _sendTo,\\n uint64 _amountShared,\\n bytes memory _composeMsg\\n ) internal view returns (bytes memory _msg, bool hasCompose) {\\n hasCompose = _composeMsg.length > 0;\\n // @dev Remote chains will want to know the composed function caller ie. msg.sender on the src.\\n _msg = hasCompose\\n ? abi.encodePacked(_sendTo, _amountShared, addressToBytes32(msg.sender), _composeMsg)\\n : abi.encodePacked(_sendTo, _amountShared);\\n }\\n\\n /**\\n * @dev Checks if the OFT message is composed.\\n * @param _msg The OFT message.\\n * @return A boolean indicating whether the message is composed.\\n */\\n function isComposed(bytes calldata _msg) internal pure returns (bool) {\\n return _msg.length > SEND_AMOUNT_SD_OFFSET;\\n }\\n\\n /**\\n * @dev Retrieves the recipient address from the OFT message.\\n * @param _msg The OFT message.\\n * @return The recipient address.\\n */\\n function sendTo(bytes calldata _msg) internal pure returns (bytes32) {\\n return bytes32(_msg[:SEND_TO_OFFSET]);\\n }\\n\\n /**\\n * @dev Retrieves the amount in shared decimals from the OFT message.\\n * @param _msg The OFT message.\\n * @return The amount in shared decimals.\\n */\\n function amountSD(bytes calldata _msg) internal pure returns (uint64) {\\n return uint64(bytes8(_msg[SEND_TO_OFFSET:SEND_AMOUNT_SD_OFFSET]));\\n }\\n\\n /**\\n * @dev Retrieves the composed message from the OFT message.\\n * @param _msg The OFT message.\\n * @return The composed message.\\n */\\n function composeMsg(bytes calldata _msg) internal pure returns (bytes memory) {\\n return _msg[SEND_AMOUNT_SD_OFFSET:];\\n }\\n\\n /**\\n * @dev Converts an address to bytes32.\\n * @param _addr The address to convert.\\n * @return The bytes32 representation of the address.\\n */\\n function addressToBytes32(address _addr) internal pure returns (bytes32) {\\n return bytes32(uint256(uint160(_addr)));\\n }\\n\\n /**\\n * @dev Converts bytes32 to an address.\\n * @param _b The bytes32 value to convert.\\n * @return The address representation of bytes32.\\n */\\n function bytes32ToAddress(bytes32 _b) internal pure returns (address) {\\n return address(uint160(uint256(_b)));\\n }\\n}\\n\",\"keccak256\":\"0x030afe6126f761bf1763a36adec0da4a93dec4a74ea1187356646dc2f2d9ef67\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"kind":"user","methods":{},"version":1}}},"contracts/utils/OFTDecimalUtils.sol":{"OFTDecimalUtils":{"abi":[{"inputs":[{"internalType":"uint256","name":"amountSD","type":"uint256"}],"name":"AmountSDOverflowed","type":"error"},{"inputs":[],"name":"InvalidLocalDecimals","type":"error"},{"inputs":[],"name":"decimalConversionRate","outputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"localDecimals","outputs":[{"internalType":"uint8","name":"ld","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sharedDecimals","outputs":[{"internalType":"uint8","name":"sd","type":"uint8"}],"stateMutability":"view","type":"function"}],"devdoc":{"author":"LayerZero Labs (@TRileySchwarz, tinom.eth)","custom:version":"1.0.0","details":"It can be inherited in either upgradeable or non-upgradeable contracts.","errors":{"AmountSDOverflowed(uint256)":[{"params":{"amountSD":"Amount in shared decimals"}}]},"kind":"dev","methods":{"constructor":{"details":"Sets immutable variables.Reverts if the shared decimals are greater than the local decimals.","params":{"_localDecimals":"Local decimals for tokens on this chain","_sharedDecimals":"Shared decimals for cross-chain messaging"}},"decimalConversionRate()":{"returns":{"rate":"Conversion rate"}},"localDecimals()":{"returns":{"ld":"Local decimals"}},"sharedDecimals()":{"returns":{"sd":"Shared decimals"}}},"stateVariables":{"DECIMAL_CONVERSION_RATE":{"details":"Immutable variable for the conversion rate between local and shared decimals."},"LOCAL_DECIMALS":{"details":"Immutable variable for local decimals."},"SHARED_DECIMALS":{"details":"Immutable variable for shared decimals."}},"title":"OFTDecimalUtils","version":1},"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"gasEstimates":null,"methodIdentifiers":{"decimalConversionRate()":"963efcaa","localDecimals()":"e46e7058","sharedDecimals()":"857749b0"}},"metadata":"{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountSD\",\"type\":\"uint256\"}],\"name\":\"AmountSDOverflowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLocalDecimals\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"decimalConversionRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"localDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"ld\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sharedDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"sd\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"LayerZero Labs (@TRileySchwarz, tinom.eth)\",\"custom:version\":\"1.0.0\",\"details\":\"It can be inherited in either upgradeable or non-upgradeable contracts.\",\"errors\":{\"AmountSDOverflowed(uint256)\":[{\"params\":{\"amountSD\":\"Amount in shared decimals\"}}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Sets immutable variables.Reverts if the shared decimals are greater than the local decimals.\",\"params\":{\"_localDecimals\":\"Local decimals for tokens on this chain\",\"_sharedDecimals\":\"Shared decimals for cross-chain messaging\"}},\"decimalConversionRate()\":{\"returns\":{\"rate\":\"Conversion rate\"}},\"localDecimals()\":{\"returns\":{\"ld\":\"Local decimals\"}},\"sharedDecimals()\":{\"returns\":{\"sd\":\"Shared decimals\"}}},\"stateVariables\":{\"DECIMAL_CONVERSION_RATE\":{\"details\":\"Immutable variable for the conversion rate between local and shared decimals.\"},\"LOCAL_DECIMALS\":{\"details\":\"Immutable variable for local decimals.\"},\"SHARED_DECIMALS\":{\"details\":\"Immutable variable for shared decimals.\"}},\"title\":\"OFTDecimalUtils\",\"version\":1},\"userdoc\":{\"errors\":{\"AmountSDOverflowed(uint256)\":[{\"notice\":\"Thrown when the amount in shared decimals overflows `uint64`.\"}],\"InvalidLocalDecimals()\":[{\"notice\":\"Thrown when shared decimals exceed local decimals.\"}]},\"kind\":\"user\",\"methods\":{\"decimalConversionRate()\":{\"notice\":\"Returns the conversion rate to convert from local to shared decimals.\"},\"localDecimals()\":{\"notice\":\"Returns the local decimals for tokens on this chain.\"},\"sharedDecimals()\":{\"notice\":\"Returns the shared decimals for cross-chain messaging.\"}},\"notice\":\"Abstract contract that implements decimal conversion utilities between local and shared decimals.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/utils/OFTDecimalUtils.sol\":\"OFTDecimalUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IOFTDecimalUtils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\n/**\\n * @title IOFTDecimalUtils\\n * @author LayerZero Labs (tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Interface for OFT decimal conversion utilities.\\n */\\ninterface IOFTDecimalUtils {\\n /**\\n * @notice Thrown when shared decimals exceed local decimals.\\n */\\n error InvalidLocalDecimals();\\n\\n /**\\n * @notice Thrown when the amount in shared decimals overflows `uint64`.\\n * @param amountSD Amount in shared decimals\\n */\\n error AmountSDOverflowed(uint256 amountSD);\\n\\n /**\\n * @notice Returns the local decimals for tokens on this chain.\\n * @return ld Local decimals\\n */\\n function localDecimals() external view returns (uint8 ld);\\n\\n /**\\n * @notice Returns the shared decimals for cross-chain messaging.\\n * @return sd Shared decimals\\n */\\n function sharedDecimals() external view returns (uint8 sd);\\n\\n /**\\n * @notice Returns the conversion rate to convert from local to shared decimals.\\n * @return rate Conversion rate\\n */\\n function decimalConversionRate() external view returns (uint256 rate);\\n}\\n\",\"keccak256\":\"0xd51464ec9d8d9cdfaea3aac71fb9efc9c53d9a730f10381dd104bc919b74a956\",\"license\":\"MIT\"},\"contracts/utils/OFTDecimalUtils.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.22;\\n\\nimport { IOFTDecimalUtils } from \\\"../interfaces/IOFTDecimalUtils.sol\\\";\\n\\n/**\\n * @title OFTDecimalUtils\\n * @author LayerZero Labs (@TRileySchwarz, tinom.eth)\\n * @custom:version 1.0.0\\n * @notice Abstract contract that implements decimal conversion utilities between local and shared decimals.\\n * @dev It can be inherited in either upgradeable or non-upgradeable contracts.\\n */\\nabstract contract OFTDecimalUtils is IOFTDecimalUtils {\\n /// @dev Immutable variable for local decimals.\\n uint8 private immutable LOCAL_DECIMALS;\\n\\n /// @dev Immutable variable for shared decimals.\\n uint8 private immutable SHARED_DECIMALS;\\n\\n /// @dev Immutable variable for the conversion rate between local and shared decimals.\\n uint256 private immutable DECIMAL_CONVERSION_RATE;\\n\\n /**\\n * @dev Sets immutable variables.\\n * @dev Reverts if the shared decimals are greater than the local decimals.\\n * @param _localDecimals Local decimals for tokens on this chain\\n * @param _sharedDecimals Shared decimals for cross-chain messaging\\n */\\n constructor(uint8 _localDecimals, uint8 _sharedDecimals) {\\n if (_sharedDecimals > _localDecimals) revert InvalidLocalDecimals();\\n\\n LOCAL_DECIMALS = _localDecimals;\\n SHARED_DECIMALS = _sharedDecimals;\\n DECIMAL_CONVERSION_RATE = 10 ** (_localDecimals - _sharedDecimals);\\n }\\n\\n /**\\n * @inheritdoc IOFTDecimalUtils\\n */\\n function localDecimals() public view virtual returns (uint8 ld) {\\n return LOCAL_DECIMALS;\\n }\\n\\n /**\\n * @inheritdoc IOFTDecimalUtils\\n */\\n function sharedDecimals() public view virtual returns (uint8 sd) {\\n return SHARED_DECIMALS;\\n }\\n\\n /**\\n * @inheritdoc IOFTDecimalUtils\\n */\\n function decimalConversionRate() public view virtual returns (uint256 rate) {\\n return DECIMAL_CONVERSION_RATE;\\n }\\n\\n /**\\n * @notice Removes dust from the given local decimal amount.\\n * @dev Prevents the loss of dust when moving amounts between chains with different decimals.\\n * @param _amountLD Amount in local decimals\\n * @return amountLD Amount after removing dust\\n */\\n function _removeDust(uint256 _amountLD) internal view virtual returns (uint256 amountLD) {\\n return (_amountLD / DECIMAL_CONVERSION_RATE) * DECIMAL_CONVERSION_RATE;\\n }\\n\\n /**\\n * @notice Converts an amount from shared decimals into local decimals.\\n * @param _amountSD Amount in shared decimals\\n * @return amountLD Amount in local decimals\\n */\\n function _toLD(uint64 _amountSD) internal view virtual returns (uint256 amountLD) {\\n return _amountSD * DECIMAL_CONVERSION_RATE;\\n }\\n\\n /**\\n * @notice Converts an amount from local decimals into shared decimals.\\n * @dev Reverts if the amount in shared decimals overflows `uint64`.\\n * @param _amountLD Amount in local decimals\\n * @return amountSD Amount in shared decimals\\n */\\n function _toSD(uint256 _amountLD) internal view virtual returns (uint64 amountSD) {\\n uint256 _amountSD = _amountLD / DECIMAL_CONVERSION_RATE;\\n if (_amountSD > type(uint64).max) revert AmountSDOverflowed(_amountSD);\\n return uint64(_amountSD);\\n }\\n}\\n\",\"keccak256\":\"0x3019daba935dd79d69116ff11ebbe847c8a74f7abf5a5b6c33296580d472cb91\",\"license\":\"MIT\"}},\"version\":1}","storageLayout":{"storage":[],"types":null},"userdoc":{"errors":{"AmountSDOverflowed(uint256)":[{"notice":"Thrown when the amount in shared decimals overflows `uint64`."}],"InvalidLocalDecimals()":[{"notice":"Thrown when shared decimals exceed local decimals."}]},"kind":"user","methods":{"decimalConversionRate()":{"notice":"Returns the conversion rate to convert from local to shared decimals."},"localDecimals()":{"notice":"Returns the local decimals for tokens on this chain."},"sharedDecimals()":{"notice":"Returns the shared decimals for cross-chain messaging."}},"notice":"Abstract contract that implements decimal conversion utilities between local and shared decimals.","version":1}}}}}}