@coti-io/coti-contracts 1.2.0 → 1.3.1

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 (481) hide show
  1. package/.github/workflows/npm-publish.yml +1 -1
  2. package/contracts/access/DataPrivacyFramework/DataPrivacyFramework.sol +1 -1
  3. package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +1 -1
  4. package/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.sol +2 -4
  5. package/contracts/disperse/disperseToken/MintDisperser.sol +1 -3
  6. package/contracts/disperse/disperseToken/TokenDisperser.sol +1 -1
  7. package/contracts/messaging/PrivateMessaging.sol +456 -0
  8. package/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock.sol +1 -1
  9. package/contracts/mocks/messaging/PrivateMessagingHarness.sol +54 -0
  10. package/contracts/mocks/oracle/CotiPriceConsumerMock.sol +31 -0
  11. package/contracts/mocks/token/ERC20DecimalsMock.sol +21 -0
  12. package/contracts/mocks/token/ERC20Mock.sol +1 -1
  13. package/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.sol +1 -1
  14. package/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.sol +9 -4
  15. package/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.sol +1 -1
  16. package/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.sol +1 -1
  17. package/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock.sol +1 -1
  18. package/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.sol +1 -1
  19. package/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol +1 -1
  20. package/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.sol +1 -1
  21. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.sol +1 -1
  22. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.sol +1 -1
  23. package/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock.sol +1 -1
  24. package/contracts/mocks/utils/mpc/Arithmetic128TestsContract.sol +1 -1
  25. package/contracts/mocks/utils/mpc/Arithmetic256TestsContract.sol +1 -1
  26. package/contracts/mocks/utils/mpc/ArithmeticAddTestsContract.sol +196 -0
  27. package/contracts/mocks/utils/mpc/ArithmeticMulTestsContract.sol +194 -0
  28. package/contracts/mocks/utils/mpc/ArithmeticSigned128TestsContract.sol +63 -0
  29. package/contracts/mocks/utils/mpc/ArithmeticSigned256TestsContract.sol +107 -0
  30. package/contracts/mocks/utils/mpc/ArithmeticSignedNarrowTestsContract.sol +123 -0
  31. package/contracts/mocks/utils/mpc/ArithmeticSubTestsContract.sol +196 -0
  32. package/contracts/mocks/utils/mpc/Bitwise128TestsContract.sol +1 -1
  33. package/contracts/mocks/utils/mpc/Bitwise256TestsContract.sol +1 -1
  34. package/contracts/mocks/utils/mpc/BitwiseTestsContract.sol +1 -1
  35. package/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.sol +1 -1
  36. package/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.sol +1 -1
  37. package/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol +1 -1
  38. package/contracts/mocks/utils/mpc/Comparison128TestsContract.sol +1 -1
  39. package/contracts/mocks/utils/mpc/Comparison1TestsContract.sol +1 -1
  40. package/contracts/mocks/utils/mpc/Comparison256TestsContract.sol +1 -1
  41. package/contracts/mocks/utils/mpc/Comparison2TestsContract.sol +1 -1
  42. package/contracts/mocks/utils/mpc/MinMax128TestsContract.sol +1 -1
  43. package/contracts/mocks/utils/mpc/MinMax256TestsContract.sol +1 -1
  44. package/contracts/mocks/utils/mpc/MinMaxTestsContract.sol +1 -1
  45. package/contracts/mocks/utils/mpc/MinimalImplementation.sol +1 -1
  46. package/contracts/mocks/utils/mpc/MinimalProxy.sol +1 -1
  47. package/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.sol +1 -1
  48. package/contracts/mocks/utils/mpc/MiscellaneousTestsContract.sol +1 -1
  49. package/contracts/mocks/utils/mpc/MpcOperations128TestContract.sol +1 -1
  50. package/contracts/mocks/utils/mpc/MpcOperationsTestContract.sol +4 -4
  51. package/contracts/mocks/utils/mpc/Mux128TestsContract.sol +1 -1
  52. package/contracts/mocks/utils/mpc/Mux256TestsContract.sol +1 -1
  53. package/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.sol +1 -1
  54. package/contracts/mocks/utils/mpc/OnBoard128TestsContract.sol +1 -1
  55. package/contracts/mocks/utils/mpc/OnBoard256TestsContract.sol +1 -1
  56. package/contracts/mocks/utils/mpc/PrivacyImplementationV1.sol +1 -1
  57. package/contracts/mocks/utils/mpc/PrivacyImplementationV2.sol +1 -1
  58. package/contracts/mocks/utils/mpc/PrivacyProxy.sol +1 -1
  59. package/contracts/mocks/utils/mpc/Random128TestsContract.sol +1 -1
  60. package/contracts/mocks/utils/mpc/Random256TestsContract.sol +1 -1
  61. package/contracts/mocks/utils/mpc/Shift128TestsContract.sol +1 -1
  62. package/contracts/mocks/utils/mpc/Shift256TestsContract.sol +1 -1
  63. package/contracts/mocks/utils/mpc/ShiftTestsContract.sol +1 -1
  64. package/contracts/mocks/utils/mpc/StringTestsContract.sol +1 -1
  65. package/contracts/mocks/utils/mpc/Transfer128TestsContract.sol +1 -1
  66. package/contracts/mocks/utils/mpc/Transfer256TestsContract.sol +1 -1
  67. package/contracts/mocks/utils/mpc/TransferScalarTestsContract.sol +1 -1
  68. package/contracts/mocks/utils/mpc/TransferTestsContract.sol +1 -1
  69. package/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.sol +1 -1
  70. package/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.sol +1 -1
  71. package/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract.sol +1 -1
  72. package/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract.sol +1 -1
  73. package/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol +1 -1
  74. package/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract.sol +1 -1
  75. package/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract.sol +1 -1
  76. package/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol +1 -1
  77. package/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.sol +1 -1
  78. package/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.sol +2 -2
  79. package/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.sol +1 -1
  80. package/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.sol +1 -1
  81. package/contracts/node/CotiNodeRewards.sol +3 -3
  82. package/contracts/node/SoulboundNodeNFT.sol +23 -24
  83. package/contracts/onboard/AccountOnboard.sol +1 -1
  84. package/contracts/oracle/CotiPriceConsumer.sol +103 -0
  85. package/contracts/oracle/ICotiPriceConsumer.sol +15 -0
  86. package/contracts/oracle/IStdReference.sol +26 -0
  87. package/contracts/pod/IInbox.sol +231 -0
  88. package/contracts/pod/IInboxMiner.sol +53 -0
  89. package/contracts/pod/InboxUser.sol +29 -0
  90. package/contracts/pod/InboxUserCotiTestnet.sol +13 -0
  91. package/contracts/pod/PodNetworkConstants.sol +30 -0
  92. package/contracts/pod/examples/MpcAdder.sol +57 -0
  93. package/contracts/pod/examples/MpcAdderPausable.sol +25 -0
  94. package/contracts/pod/examples/MpcAdderPausable.sol.bak +25 -0
  95. package/contracts/pod/examples/it128/PodAdder128.sol +48 -0
  96. package/contracts/pod/examples/it256/PodAdder256.sol +48 -0
  97. package/contracts/pod/fee/IInboxFeeManager.sol +40 -0
  98. package/contracts/pod/manifest.json +52 -0
  99. package/contracts/pod/mpc/PodLib.sol +10 -0
  100. package/contracts/pod/mpc/PodLib128.sol +361 -0
  101. package/contracts/pod/mpc/PodLib256.sol +361 -0
  102. package/contracts/pod/mpc/PodLib64.sol +385 -0
  103. package/contracts/pod/mpc/PodLibBase.sol +72 -0
  104. package/contracts/pod/mpc/PodUser.sol +58 -0
  105. package/contracts/pod/mpc/PodUserFuji.sol +14 -0
  106. package/contracts/pod/mpc/PodUserSepolia.sol +13 -0
  107. package/contracts/pod/mpc/coti-side/IPodExecutorOps.sol +99 -0
  108. package/contracts/pod/mpccodec/MpcAbiCodec.sol +482 -0
  109. package/contracts/pod/privacy/IPodPriceOracle.sol +20 -0
  110. package/contracts/pod/privacy/IPrivacyPortal.sol +248 -0
  111. package/contracts/pod/privacy/IPrivacyPortalFactory.sol +88 -0
  112. package/contracts/pod/privacy/PortalFeeOracle.sol +51 -0
  113. package/contracts/pod/privacy/PrivacyPortal.sol +871 -0
  114. package/contracts/pod/privacy/PrivacyPortalFactory.sol +492 -0
  115. package/contracts/pod/privacy/PrivacyPortalFeeLib.sol +98 -0
  116. package/contracts/pod/privacy/mocks/CloneHelper.sol +14 -0
  117. package/contracts/pod/privacy/mocks/MockERC20.sol +26 -0
  118. package/contracts/pod/privacy/mocks/MockPodERC20ForPortal.sol +160 -0
  119. package/contracts/pod/privacy/mocks/MockPrivacyPortalFactory.sol +125 -0
  120. package/contracts/pod/privacy/mocks/MockWrappedNative.sol +24 -0
  121. package/contracts/pod/token/erc7984/Erc7984Constants.sol +9 -0
  122. package/contracts/pod/token/erc7984/Erc7984Pointers.sol +29 -0
  123. package/contracts/pod/token/erc7984/IERC7984.sol +69 -0
  124. package/contracts/pod/token/erc7984/IERC7984PortalWrapper.sol +31 -0
  125. package/contracts/pod/token/erc7984/PodErc7984Mixin.sol +125 -0
  126. package/contracts/pod/token/erc7984/README.md +60 -0
  127. package/contracts/pod/token/perc20/IPodERC20.sol +298 -0
  128. package/contracts/pod/token/perc20/PodERC20.sol +1021 -0
  129. package/contracts/pod/token/perc20/PodErc20Mintable.sol +88 -0
  130. package/contracts/pod/token/perc20/PodErc20MintableInitializable.sol +42 -0
  131. package/contracts/pod/token/perc20/cotiside/IPodErc20CotiSide.sol +88 -0
  132. package/contracts/pod/token/perc20/cotiside/PodErc20CotiMother.sol +529 -0
  133. package/contracts/pod/utils/IWrappedNative.sol +11 -0
  134. package/contracts/privacyBridge/PrivacyBridge.sol +376 -94
  135. package/contracts/privacyBridge/PrivacyBridgeCotiNative.sol +210 -162
  136. package/contracts/privacyBridge/PrivacyBridgeERC20.sol +242 -160
  137. package/contracts/privacyBridge/PrivacyBridgeUSDCe.sol +8 -2
  138. package/contracts/privacyBridge/PrivacyBridgeUSDT.sol +8 -2
  139. package/contracts/privacyBridge/PrivacyBridgeWADA.sol +8 -2
  140. package/contracts/privacyBridge/PrivacyBridgeWBTC.sol +8 -2
  141. package/contracts/privacyBridge/PrivacyBridgeWETH.sol +8 -2
  142. package/contracts/privacyBridge/PrivacyBridgegCoti.sol +8 -2
  143. package/contracts/token/PrivateERC20/IPrivateERC20.sol +1 -1
  144. package/contracts/token/PrivateERC20/ITokenReceiver.sol +1 -1
  145. package/contracts/token/PrivateERC20/ITokenReceiverEncrypted.sol +1 -1
  146. package/contracts/token/PrivateERC20/PrivateERC20.sol +5 -5
  147. package/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.sol +1 -1
  148. package/contracts/token/PrivateERC20/tokens/PrivateCOTI.sol +1 -1
  149. package/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.sol +1 -1
  150. package/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.sol +1 -1
  151. package/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.sol +1 -1
  152. package/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.sol +1 -1
  153. package/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.sol +1 -1
  154. package/contracts/token/PrivateERC721/IERC721Errors.sol +1 -1
  155. package/contracts/token/PrivateERC721/PrivateERC721.sol +1 -1
  156. package/contracts/token/PrivateERC721/extensions/IPrivateERC721URIStorage.sol +1 -1
  157. package/contracts/token/PrivateERC721/extensions/PrivateERC721URIStorage.sol +1 -1
  158. package/contracts/token/points/CotiTokenPoints004.sol +43 -0
  159. package/contracts/utils/mpc/MpcCore.sol +610 -1
  160. package/contracts/utils/mpc/MpcInterface.sol +1 -1
  161. package/hardhat.config.ts +9 -15
  162. package/package.json +4 -4
  163. package/scripts/add-bridge-operators.cjs +87 -0
  164. package/scripts/deploy-coti-price-consumer-mainnet.cjs +49 -0
  165. package/scripts/deployCotiNodeRewards.ts +51 -0
  166. package/scripts/deployCotiTokenPoints004.ts +61 -0
  167. package/scripts/deployFixedRatioCoinDisperserUnlimitedWindow.ts +68 -0
  168. package/scripts/redeploy-private-and-bridges.cjs +201 -0
  169. package/scripts/set-bridge-limits-mainnet.cjs +177 -0
  170. package/scripts/verify-mainnet-private-bridges.cjs +289 -0
  171. package/scripts/verifyCotiTokenPoints004.ts +123 -0
  172. package/scripts/verifyFixedRatioCoinDisperserUnlimitedWindow.ts +112 -0
  173. package/sonar-project.properties +11 -0
  174. package/test/messaging/PrivateMessaging.test.ts +158 -0
  175. package/test/pod/privacy/PrivacyPortal.access.test.ts +756 -0
  176. package/test/pod/privacy/PrivacyPortal.recovery.test.ts +263 -0
  177. package/test/privacyBridge/UnifiedPrivacyBridges.test.cjs +1665 -0
  178. package/test/token/PrivateERC20/PrivacyBridge.fees.test.ts +162 -239
  179. package/test/utils/mpc/CheckedSignedArithmetic256.test.ts +163 -0
  180. package/test/utils/mpc/NegativeCases.test.ts +3 -3
  181. package/test/utils/mpc/Precompile.test.ts +6 -6
  182. package/typechain-types/@openzeppelin/contracts/access/AccessControl.ts +324 -0
  183. package/typechain-types/@openzeppelin/contracts/access/AccessControlEnumerable.ts +361 -0
  184. package/typechain-types/@openzeppelin/contracts/access/IAccessControl.ts +292 -0
  185. package/typechain-types/@openzeppelin/contracts/access/IAccessControlEnumerable.ts +329 -0
  186. package/typechain-types/@openzeppelin/contracts/access/extensions/AccessControlEnumerable.ts +375 -0
  187. package/typechain-types/@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.ts +329 -0
  188. package/typechain-types/@openzeppelin/contracts/access/extensions/index.ts +5 -0
  189. package/typechain-types/@openzeppelin/contracts/access/index.ts +6 -0
  190. package/typechain-types/@openzeppelin/contracts/index.ts +2 -0
  191. package/typechain-types/@openzeppelin/contracts/interfaces/IERC1363.ts +412 -0
  192. package/typechain-types/@openzeppelin/contracts/interfaces/IERC5267.ts +151 -0
  193. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.ts +69 -0
  194. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.ts +69 -0
  195. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.ts +69 -0
  196. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +6 -0
  197. package/typechain-types/@openzeppelin/contracts/interfaces/index.ts +4 -0
  198. package/typechain-types/@openzeppelin/contracts/security/Pausable.ts +150 -0
  199. package/typechain-types/@openzeppelin/contracts/security/index.ts +4 -0
  200. package/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts +286 -0
  201. package/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts +6 -6
  202. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.ts +313 -0
  203. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.ts +356 -0
  204. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.ts +423 -0
  205. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts +286 -0
  206. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +4 -0
  207. package/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts +3 -0
  208. package/typechain-types/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.ts +69 -0
  209. package/typechain-types/@openzeppelin/contracts/token/ERC20/utils/index.ts +4 -0
  210. package/typechain-types/@openzeppelin/contracts/token/ERC721/ERC721.ts +420 -0
  211. package/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.ts +420 -0
  212. package/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/index.ts +4 -0
  213. package/typechain-types/@openzeppelin/contracts/token/ERC721/index.ts +3 -0
  214. package/typechain-types/@openzeppelin/contracts/utils/Nonces.ts +85 -0
  215. package/typechain-types/@openzeppelin/contracts/utils/Pausable.ts +150 -0
  216. package/typechain-types/@openzeppelin/contracts/utils/ReentrancyGuard.ts +69 -0
  217. package/typechain-types/@openzeppelin/contracts/utils/ShortStrings.ts +69 -0
  218. package/typechain-types/@openzeppelin/contracts/utils/Strings.ts +69 -0
  219. package/typechain-types/@openzeppelin/contracts/utils/cryptography/ECDSA.ts +69 -0
  220. package/typechain-types/@openzeppelin/contracts/utils/cryptography/EIP712.ts +151 -0
  221. package/typechain-types/@openzeppelin/contracts/utils/cryptography/index.ts +5 -0
  222. package/typechain-types/@openzeppelin/contracts/utils/index.ts +9 -0
  223. package/typechain-types/@openzeppelin/contracts/utils/math/SafeCast.ts +69 -0
  224. package/typechain-types/@openzeppelin/contracts/utils/math/index.ts +4 -0
  225. package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1.ts +735 -0
  226. package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.ts +734 -0
  227. package/typechain-types/contracts/disperse/coinByRatio/index.ts +2 -0
  228. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/IOwnable.ts +95 -0
  229. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser.ts +22 -0
  230. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +1 -0
  231. package/typechain-types/contracts/index.ts +8 -0
  232. package/typechain-types/contracts/messaging/PrivateMessaging.ts +871 -0
  233. package/typechain-types/contracts/messaging/index.ts +4 -0
  234. package/typechain-types/contracts/mocks/index.ts +4 -0
  235. package/typechain-types/contracts/mocks/messaging/PrivateMessagingHarness.ts +951 -0
  236. package/typechain-types/contracts/mocks/messaging/index.ts +4 -0
  237. package/typechain-types/contracts/mocks/oracle/CotiPriceConsumerMock.ts +163 -0
  238. package/typechain-types/contracts/mocks/oracle/index.ts +4 -0
  239. package/typechain-types/contracts/mocks/token/ERC20DecimalsMock.ts +305 -0
  240. package/typechain-types/contracts/mocks/token/ERC20Mock.ts +324 -0
  241. package/typechain-types/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.ts +108 -0
  242. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.ts +1906 -0
  243. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.ts +1296 -0
  244. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.ts +1270 -0
  245. package/typechain-types/contracts/mocks/{utils/mpc/Bitwise128BitTestsContract.ts → token/PrivateERC20/PrivateERC20GtCallerMock.ts} +47 -67
  246. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.ts +757 -25
  247. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/IPrivateERC20TransferAndCallEncrypted.ts +102 -0
  248. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/PrivateERC20ReentrantReceiverMock.ts +154 -0
  249. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/index.ts +5 -0
  250. package/typechain-types/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.ts +155 -0
  251. package/typechain-types/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.ts +107 -0
  252. package/typechain-types/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.ts +100 -0
  253. package/typechain-types/contracts/mocks/token/PrivateERC20/index.ts +10 -0
  254. package/typechain-types/contracts/mocks/token/index.ts +2 -0
  255. package/typechain-types/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.ts +6 -6
  256. package/typechain-types/contracts/node/CotiNodeRewards.ts +566 -0
  257. package/typechain-types/contracts/node/SoulboundNodeNFT.sol/IERC5192.ts +123 -0
  258. package/typechain-types/contracts/node/SoulboundNodeNFT.sol/SoulboundNodeNFT.ts +975 -0
  259. package/typechain-types/contracts/node/SoulboundNodeNFT.sol/index.ts +5 -0
  260. package/typechain-types/contracts/node/index.ts +6 -0
  261. package/typechain-types/contracts/oracle/CotiPriceConsumer.ts +256 -0
  262. package/typechain-types/contracts/oracle/ICotiPriceConsumer.ts +119 -0
  263. package/typechain-types/contracts/oracle/IStdReference.ts +136 -0
  264. package/typechain-types/contracts/oracle/index.ts +6 -0
  265. package/typechain-types/contracts/privacyBridge/PrivacyBridge.ts +1642 -0
  266. package/typechain-types/contracts/privacyBridge/PrivacyBridgeCotiNative.ts +1884 -0
  267. package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/IHasDecimals.ts +84 -0
  268. package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20.ts +1906 -0
  269. package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/index.ts +5 -0
  270. package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDCe.ts +1906 -0
  271. package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDT.ts +1906 -0
  272. package/typechain-types/contracts/privacyBridge/PrivacyBridgeWADA.ts +1906 -0
  273. package/typechain-types/contracts/privacyBridge/PrivacyBridgeWBTC.ts +1906 -0
  274. package/typechain-types/contracts/privacyBridge/PrivacyBridgeWETH.ts +1906 -0
  275. package/typechain-types/contracts/privacyBridge/PrivacyBridgegCoti.ts +1906 -0
  276. package/typechain-types/contracts/privacyBridge/index.ts +13 -0
  277. package/typechain-types/contracts/token/PrivateERC20/IPrivateERC20.ts +439 -19
  278. package/typechain-types/contracts/token/PrivateERC20/ITokenReceiver.ts +100 -0
  279. package/typechain-types/contracts/token/PrivateERC20/ITokenReceiverEncrypted.ts +99 -0
  280. package/typechain-types/contracts/token/PrivateERC20/PrivateERC20.ts +763 -15
  281. package/typechain-types/contracts/token/PrivateERC20/index.ts +4 -0
  282. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.ts +1270 -0
  283. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTI.ts +1270 -0
  284. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.ts +1270 -0
  285. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.ts +1270 -0
  286. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.ts +1270 -0
  287. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.ts +1270 -0
  288. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.ts +1270 -0
  289. package/typechain-types/contracts/token/PrivateERC20/tokens/index.ts +10 -0
  290. package/typechain-types/contracts/token/index.ts +2 -0
  291. package/typechain-types/contracts/token/points/CotiTokenPoints004.sol/COTITokenPoints004.ts +826 -0
  292. package/typechain-types/contracts/token/points/CotiTokenPoints004.ts +826 -0
  293. package/typechain-types/contracts/token/points/index.ts +4 -0
  294. package/typechain-types/factories/@openzeppelin/contracts/access/AccessControlEnumerable__factory.ts +276 -0
  295. package/typechain-types/factories/@openzeppelin/contracts/access/AccessControl__factory.ts +250 -0
  296. package/typechain-types/factories/@openzeppelin/contracts/access/IAccessControlEnumerable__factory.ts +244 -0
  297. package/typechain-types/factories/@openzeppelin/contracts/access/IAccessControl__factory.ts +218 -0
  298. package/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +22 -0
  299. package/typechain-types/factories/@openzeppelin/contracts/access/extensions/AccessControlEnumerable__factory.ts +316 -0
  300. package/typechain-types/factories/@openzeppelin/contracts/access/extensions/IAccessControlEnumerable__factory.ts +265 -0
  301. package/typechain-types/factories/@openzeppelin/contracts/access/extensions/index.ts +5 -0
  302. package/typechain-types/factories/@openzeppelin/contracts/access/index.ts +5 -0
  303. package/typechain-types/factories/@openzeppelin/contracts/index.ts +1 -0
  304. package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1363__factory.ts +393 -0
  305. package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC5267__factory.ts +71 -0
  306. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors__factory.ts +127 -0
  307. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors__factory.ts +111 -0
  308. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors__factory.ts +128 -0
  309. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +6 -0
  310. package/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts +3 -0
  311. package/typechain-types/factories/@openzeppelin/contracts/security/Pausable__factory.ts +61 -0
  312. package/typechain-types/factories/@openzeppelin/contracts/security/index.ts +4 -0
  313. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +330 -0
  314. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +3 -3
  315. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable__factory.ts +364 -0
  316. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable__factory.ts +382 -0
  317. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit__factory.ts +540 -0
  318. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts +247 -0
  319. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +4 -0
  320. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts +2 -0
  321. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/utils/SafeERC20__factory.ts +96 -0
  322. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/utils/index.ts +4 -0
  323. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/ERC721__factory.ts +455 -0
  324. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata__factory.ts +355 -0
  325. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/index.ts +4 -0
  326. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/index.ts +2 -0
  327. package/typechain-types/factories/@openzeppelin/contracts/utils/Nonces__factory.ts +57 -0
  328. package/typechain-types/factories/@openzeppelin/contracts/utils/Pausable__factory.ts +71 -0
  329. package/typechain-types/factories/@openzeppelin/contracts/utils/ReentrancyGuard__factory.ts +30 -0
  330. package/typechain-types/factories/@openzeppelin/contracts/utils/ShortStrings__factory.ts +83 -0
  331. package/typechain-types/factories/@openzeppelin/contracts/utils/Strings__factory.ts +90 -0
  332. package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.ts +91 -0
  333. package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/EIP712__factory.ts +87 -0
  334. package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/index.ts +5 -0
  335. package/typechain-types/factories/@openzeppelin/contracts/utils/index.ts +7 -0
  336. package/typechain-types/factories/@openzeppelin/contracts/utils/math/SafeCast__factory.ts +118 -0
  337. package/typechain-types/factories/@openzeppelin/contracts/utils/math/index.ts +4 -0
  338. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1__factory.ts +802 -0
  339. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow__factory.ts +749 -0
  340. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperser__factory.ts +12 -1
  341. package/typechain-types/factories/contracts/disperse/coinByRatio/index.ts +2 -0
  342. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/IOwnable__factory.ts +35 -0
  343. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser__factory.ts +41 -1
  344. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +1 -0
  345. package/typechain-types/factories/contracts/disperse/disperseToken/TokenDisperser__factory.ts +12 -1
  346. package/typechain-types/factories/contracts/index.ts +4 -0
  347. package/typechain-types/factories/contracts/messaging/PrivateMessaging__factory.ts +1035 -0
  348. package/typechain-types/factories/contracts/messaging/index.ts +4 -0
  349. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
  350. package/typechain-types/factories/contracts/mocks/index.ts +2 -0
  351. package/typechain-types/factories/contracts/mocks/messaging/PrivateMessagingHarness__factory.ts +1161 -0
  352. package/typechain-types/factories/contracts/mocks/messaging/index.ts +4 -0
  353. package/typechain-types/factories/contracts/mocks/oracle/CotiPriceConsumerMock__factory.ts +159 -0
  354. package/typechain-types/factories/contracts/mocks/oracle/index.ts +4 -0
  355. package/typechain-types/factories/contracts/mocks/token/ERC20DecimalsMock__factory.ts +432 -0
  356. package/typechain-types/factories/contracts/mocks/token/ERC20Mock__factory.ts +430 -0
  357. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock__factory.ts +125 -0
  358. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock__factory.ts +1885 -0
  359. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock__factory.ts +1540 -0
  360. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock__factory.ts +1492 -0
  361. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock__factory.ts +165 -0
  362. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +794 -52
  363. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/IPrivateERC20TransferAndCallEncrypted__factory.ts +54 -0
  364. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/PrivateERC20ReentrantReceiverMock__factory.ts +159 -0
  365. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/index.ts +5 -0
  366. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock__factory.ts +164 -0
  367. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock__factory.ts +130 -0
  368. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock__factory.ts +102 -0
  369. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/index.ts +9 -0
  370. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
  371. package/typechain-types/factories/contracts/mocks/token/index.ts +2 -0
  372. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128TestsContract__factory.ts +1 -1
  373. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256TestsContract__factory.ts +1 -1
  374. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +1 -1
  375. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128TestsContract__factory.ts +1 -1
  376. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256TestsContract__factory.ts +1 -1
  377. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +1 -1
  378. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract__factory.ts +1 -1
  379. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract__factory.ts +1 -1
  380. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol/CheckedArithmeticWithOverflowBitTestsContract__factory.ts +1 -1
  381. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128TestsContract__factory.ts +1 -1
  382. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
  383. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256TestsContract__factory.ts +1 -1
  384. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +1 -1
  385. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax128TestsContract__factory.ts +1 -1
  386. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax256TestsContract__factory.ts +1 -1
  387. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
  388. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalImplementation__factory.ts +1 -1
  389. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalProxy__factory.ts +1 -1
  390. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
  391. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
  392. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperations128TestContract__factory.ts +1 -1
  393. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperationsTestContract__factory.ts +1 -1
  394. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux128TestsContract__factory.ts +1 -1
  395. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux256TestsContract__factory.ts +1 -1
  396. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +1 -1
  397. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard128TestsContract__factory.ts +1 -1
  398. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard256TestsContract__factory.ts +1 -1
  399. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV1__factory.ts +1 -1
  400. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV2__factory.ts +1 -1
  401. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyProxy__factory.ts +1 -1
  402. package/typechain-types/factories/contracts/mocks/utils/mpc/Random128TestsContract__factory.ts +1 -1
  403. package/typechain-types/factories/contracts/mocks/utils/mpc/Random256TestsContract__factory.ts +1 -1
  404. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift128TestsContract__factory.ts +1 -1
  405. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift256TestsContract__factory.ts +1 -1
  406. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  407. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  408. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer128TestsContract__factory.ts +1 -1
  409. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer256TestsContract__factory.ts +1 -1
  410. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
  411. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
  412. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract__factory.ts +1 -1
  413. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract__factory.ts +1 -1
  414. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +1 -1
  415. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +1 -1
  416. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +1 -1
  417. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +1 -1
  418. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +1 -1
  419. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +1 -1
  420. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract__factory.ts +1 -1
  421. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract__factory.ts +1 -1
  422. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract__factory.ts +1 -1
  423. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +4 -22
  424. package/typechain-types/factories/contracts/node/CotiNodeRewards__factory.ts +576 -0
  425. package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/IERC5192__factory.ts +54 -0
  426. package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/SoulboundNodeNFT__factory.ts +1072 -0
  427. package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/index.ts +5 -0
  428. package/typechain-types/factories/contracts/node/index.ts +5 -0
  429. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +1 -1
  430. package/typechain-types/factories/contracts/oracle/CotiPriceConsumer__factory.ts +295 -0
  431. package/typechain-types/factories/contracts/oracle/ICotiPriceConsumer__factory.ts +73 -0
  432. package/typechain-types/factories/contracts/oracle/IStdReference__factory.ts +107 -0
  433. package/typechain-types/factories/contracts/oracle/index.ts +6 -0
  434. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeCotiNative__factory.ts +1753 -0
  435. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/IHasDecimals__factory.ts +38 -0
  436. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20__factory.ts +1766 -0
  437. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/index.ts +5 -0
  438. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDCe__factory.ts +1870 -0
  439. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDT__factory.ts +1870 -0
  440. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWADA__factory.ts +1870 -0
  441. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWBTC__factory.ts +1870 -0
  442. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWETH__factory.ts +1870 -0
  443. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridge__factory.ts +1444 -0
  444. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgegCoti__factory.ts +1870 -0
  445. package/typechain-types/factories/contracts/privacyBridge/index.ts +12 -0
  446. package/typechain-types/factories/contracts/token/PrivateERC20/IPrivateERC20__factory.ts +481 -35
  447. package/typechain-types/factories/contracts/token/PrivateERC20/ITokenReceiverEncrypted__factory.ts +53 -0
  448. package/typechain-types/factories/contracts/token/PrivateERC20/ITokenReceiver__factory.ts +54 -0
  449. package/typechain-types/factories/contracts/token/PrivateERC20/PrivateERC20__factory.ts +812 -52
  450. package/typechain-types/factories/contracts/token/PrivateERC20/index.ts +3 -0
  451. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC__factory.ts +1471 -0
  452. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken__factory.ts +1477 -0
  453. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTI__factory.ts +1468 -0
  454. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateTetherUSD__factory.ts +1471 -0
  455. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedADA__factory.ts +1471 -0
  456. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC__factory.ts +1471 -0
  457. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedEther__factory.ts +1477 -0
  458. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/index.ts +10 -0
  459. package/typechain-types/factories/contracts/token/index.ts +1 -0
  460. package/typechain-types/factories/contracts/token/points/CotiTokenPoints004.sol/COTITokenPoints004__factory.ts +992 -0
  461. package/typechain-types/factories/contracts/token/points/CotiTokenPoints004__factory.ts +992 -0
  462. package/typechain-types/factories/contracts/token/points/index.ts +4 -0
  463. package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +1 -1
  464. package/typechain-types/hardhat.d.ts +1414 -118
  465. package/typechain-types/index.ts +138 -2
  466. package/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol +0 -408
  467. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract.ts +0 -341
  468. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract.ts +0 -347
  469. package/typechain-types/contracts/mocks/utils/mpc/Bitwise256BitTestsContract.ts +0 -186
  470. package/typechain-types/contracts/mocks/utils/mpc/Comparison128BitTestsContract.ts +0 -260
  471. package/typechain-types/contracts/mocks/utils/mpc/Comparison256BitTestsContract.ts +0 -260
  472. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.ts +0 -302
  473. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.ts +0 -322
  474. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract__factory.ts +0 -349
  475. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract__factory.ts +0 -364
  476. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128BitTestsContract__factory.ts +0 -182
  477. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256BitTestsContract__factory.ts +0 -182
  478. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128BitTestsContract__factory.ts +0 -255
  479. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256BitTestsContract__factory.ts +0 -255
  480. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract__factory.ts +0 -332
  481. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract__factory.ts +0 -380
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import "../../../utils/mpc/MpcCore.sol";
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import "../../../utils/mpc/MpcCore.sol";
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import "../../../utils/mpc/MpcCore.sol";
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import "../../../utils/mpc/MpcCore.sol";
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import "../../../utils/mpc/MpcCore.sol";
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import "../../../utils/mpc/MpcCore.sol";
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import "../../../utils/mpc/MpcCore.sol";
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import "../../../utils/mpc/MpcCore.sol";
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import "../../../utils/mpc/MpcCore.sol";
5
5
 
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import "../../../utils/mpc/MpcCore.sol";
5
5
 
@@ -51,7 +51,7 @@ contract ValidateCiphertext256TestsContract {
51
51
  gtUint256 validatedValue = MpcCore.validateCiphertext(input);
52
52
 
53
53
  // Add 1 to the value
54
- gtUint256 one = MpcCore.setPublic256(1);
54
+ gtUint256 one = MpcCore.setPublic256(uint256(1));
55
55
  gtUint256 result = MpcCore.add(validatedValue, one);
56
56
 
57
57
  // Decrypt and return
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import "../../../utils/mpc/MpcCore.sol";
5
5
 
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
 
3
- pragma solidity ^0.8.19;
3
+ pragma solidity ^0.8.20;
4
4
 
5
5
  import "../../../token/PrivateERC20/IPrivateERC20.sol";
6
6
  import "../../../utils/mpc/MpcCore.sol";
@@ -1,8 +1,8 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
5
- import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol";
5
+ import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
6
6
 
7
7
  /**
8
8
  * @title CotiNodeRewards
@@ -59,7 +59,7 @@ contract CotiNodeRewards is Ownable, ReentrancyGuard {
59
59
  error AlreadyRewardedInEpoch(address wallet, uint256 epoch);
60
60
  error InvalidEpoch(uint256 epoch);
61
61
 
62
- constructor() Ownable() {
62
+ constructor() Ownable(msg.sender) {
63
63
  eligibilityRules[RULE_PLATFORM_COTI_AMOUNT] = 100_000 * 10**DECIMALS_COTI; // 100k COTI
64
64
  eligibilityRules[RULE_PLATFORM_USDC_AMOUNT] = 50_000 * 10**DECIMALS_USDC; // 50k USDC
65
65
  eligibilityRules[RULE_FULL_NODE_UPTIME_PERCENTAGE_THRESHOLD] = 98; // 98%
@@ -67,7 +67,7 @@ contract SoulboundNodeNFT is ERC721, Ownable, IERC5192 {
67
67
  /// @notice Last minted token ID (starts at 0, first mint = 1)
68
68
  uint256 public nextTokenId;
69
69
 
70
- /// @notice Maximum length (in bytes) for nodeName and socialURL
70
+ /// @notice Maximum length (in bytes) for name and socialURL
71
71
  uint256 public constant MAX_TEXT_BYTES = 150;
72
72
 
73
73
  /**
@@ -78,8 +78,8 @@ contract SoulboundNodeNFT is ERC721, Ownable, IERC5192 {
78
78
 
79
79
  /// @notice Node-specific metadata stored on-chain
80
80
  struct NodeData {
81
- string nodeName; // required
82
- string nodeImageURI; // optional (ipfs:// or https://)
81
+ string name; // required
82
+ string image; // optional (ipfs:// or https://)
83
83
  string socialURL; // optional
84
84
  bool isHot; // true = hot node, false = cold node
85
85
  }
@@ -91,8 +91,8 @@ contract SoulboundNodeNFT is ERC721, Ownable, IERC5192 {
91
91
  event NodeMinted(
92
92
  address indexed to,
93
93
  uint256 indexed tokenId,
94
- string nodeName,
95
- string nodeImageURI,
94
+ string name,
95
+ string image,
96
96
  string socialURL
97
97
  );
98
98
 
@@ -121,8 +121,7 @@ contract SoulboundNodeNFT is ERC721, Ownable, IERC5192 {
121
121
  string memory name_,
122
122
  string memory symbol_,
123
123
  address initialOwner
124
- ) ERC721(name_, symbol_) {
125
- _transferOwnership(initialOwner);
124
+ ) ERC721(name_, symbol_) Ownable(initialOwner) {
126
125
  mintPaused = false;
127
126
  }
128
127
 
@@ -187,8 +186,8 @@ contract SoulboundNodeNFT is ERC721, Ownable, IERC5192 {
187
186
  /**
188
187
  * @notice Mint a new soulbound Node NFT
189
188
  * @param to Recipient address
190
- * @param nodeName Node name (required, <=150 bytes)
191
- * @param nodeImageURI Optional image URI
189
+ * @param name Node name (required, <=150 bytes)
190
+ * @param image Optional image URI
192
191
  * @param socialURL Optional social URL (<=150 bytes)
193
192
  * @return tokenId The ID of the newly minted token
194
193
  * @dev Restrictions:
@@ -199,22 +198,22 @@ contract SoulboundNodeNFT is ERC721, Ownable, IERC5192 {
199
198
  * - Minting is paused (MintPaused)
200
199
  * - to is the zero address (InvalidRecipient)
201
200
  * - to already owns an NFT (AlreadyOwnsNodeNFT)
202
- * - nodeName is empty (NodeNameRequired)
203
- * - nodeName exceeds MAX_TEXT_BYTES (NodeNameTooLong)
201
+ * - name is empty (NodeNameRequired)
202
+ * - name exceeds MAX_TEXT_BYTES (NodeNameTooLong)
204
203
  * - socialURL exceeds MAX_TEXT_BYTES (SocialURLTooLong)
205
204
  * @dev Emits Locked and NodeMinted events
206
205
  */
207
206
  function mintNode(
208
207
  address to,
209
- string calldata nodeName,
210
- string calldata nodeImageURI,
208
+ string calldata name,
209
+ string calldata image,
211
210
  string calldata socialURL
212
211
  ) external onlyOwner returns (uint256 tokenId) {
213
212
  if (mintPaused) revert MintPaused();
214
213
  if (to == address(0)) revert InvalidRecipient();
215
214
  if (balanceOf(to) != 0) revert AlreadyOwnsNodeNFT();
216
- if (bytes(nodeName).length == 0) revert NodeNameRequired();
217
- if (bytes(nodeName).length > MAX_TEXT_BYTES) revert NodeNameTooLong();
215
+ if (bytes(name).length == 0) revert NodeNameRequired();
216
+ if (bytes(name).length > MAX_TEXT_BYTES) revert NodeNameTooLong();
218
217
  if (bytes(socialURL).length > MAX_TEXT_BYTES) revert SocialURLTooLong();
219
218
 
220
219
  tokenId = ++nextTokenId;
@@ -222,21 +221,21 @@ contract SoulboundNodeNFT is ERC721, Ownable, IERC5192 {
222
221
  _safeMint(to, tokenId);
223
222
 
224
223
  _nodeData[tokenId] = NodeData({
225
- nodeName: nodeName,
226
- nodeImageURI: nodeImageURI,
224
+ name: name,
225
+ image: image,
227
226
  socialURL: socialURL,
228
227
  // Default new nodes to hot; can be updated later via setNodeHotStatus
229
228
  isHot: true
230
229
  });
231
230
 
232
231
  emit Locked(tokenId);
233
- emit NodeMinted(to, tokenId, nodeName, nodeImageURI, socialURL);
232
+ emit NodeMinted(to, tokenId, name, image, socialURL);
234
233
  }
235
234
 
236
235
  /**
237
236
  * @notice Get node metadata for a token
238
237
  * @param tokenId Token ID to query
239
- * @return NodeData struct containing nodeName, nodeImageURI, and socialURL
238
+ * @return NodeData struct containing name, image, and socialURL
240
239
  * @dev Reverts if the token does not exist (NonexistentToken)
241
240
  */
242
241
  function nodeData(uint256 tokenId) external view returns (NodeData memory) {
@@ -295,7 +294,7 @@ contract SoulboundNodeNFT is ERC721, Ownable, IERC5192 {
295
294
  if (msg.sender != tokenOwner && msg.sender != owner())
296
295
  revert NotAuthorized();
297
296
 
298
- _nodeData[tokenId].nodeImageURI = newImageURI;
297
+ _nodeData[tokenId].image = newImageURI;
299
298
  emit ImageURIUpdated(tokenId, newImageURI);
300
299
  }
301
300
 
@@ -349,7 +348,7 @@ contract SoulboundNodeNFT is ERC721, Ownable, IERC5192 {
349
348
  if (bytes(newNodeName).length > MAX_TEXT_BYTES)
350
349
  revert NodeNameTooLong();
351
350
 
352
- _nodeData[tokenId].nodeName = newNodeName;
351
+ _nodeData[tokenId].name = newNodeName;
353
352
  emit NodeNameUpdated(tokenId, newNodeName);
354
353
  }
355
354
 
@@ -456,16 +455,16 @@ contract SoulboundNodeNFT is ERC721, Ownable, IERC5192 {
456
455
 
457
456
  string memory attributes = string.concat(
458
457
  '[{"trait_type":"Node name","value":"',
459
- _escapeJSON(d.nodeName),
458
+ _escapeJSON(d.name),
460
459
  '"}',
461
460
  ',{"trait_type":"Social URL","value":"',
462
461
  _escapeJSON(d.socialURL),
463
462
  '"}]'
464
463
  );
465
464
 
466
- string memory imagePart = bytes(d.nodeImageURI).length == 0
465
+ string memory imagePart = bytes(d.image).length == 0
467
466
  ? ""
468
- : string.concat(',"image":"', _escapeJSON(d.nodeImageURI), '"');
467
+ : string.concat(',"image":"', _escapeJSON(d.image), '"');
469
468
 
470
469
  string memory json = string.concat(
471
470
  '{"name":"Node #',
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: MIT
2
2
 
3
- pragma solidity ^0.8.19;
3
+ pragma solidity ^0.8.20;
4
4
 
5
5
  import "../utils/mpc/MpcCore.sol";
6
6
 
@@ -0,0 +1,103 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.20;
3
+
4
+ import "./IStdReference.sol";
5
+
6
+ /**
7
+ * @title CotiPriceConsumer
8
+ * @notice Retrieves token/USD prices from the Band Protocol oracle.
9
+ * @dev All prices returned by Band Protocol are scaled by 1e18.
10
+ * For example, a rate of 50000000000000000 means $0.05.
11
+ */
12
+ contract CotiPriceConsumer {
13
+ /// @notice Band Protocol StdReferenceProxy on COTI .
14
+ IStdReference public immutable ref;
15
+
16
+ /// @notice Maximum acceptable age (in seconds) for oracle data before it is considered stale.
17
+ uint256 public maxStaleness;
18
+
19
+ /// @notice Emitted when the staleness threshold is updated.
20
+ event MaxStalenessUpdated(uint256 oldValue, uint256 newValue);
21
+
22
+ /// @notice Thrown when the oracle data is older than the allowed staleness window.
23
+ error StaleOracleData(uint256 lastUpdated, uint256 threshold);
24
+
25
+ address public owner;
26
+
27
+ /// @notice Minimum allowed staleness threshold (1 hour).
28
+ uint256 public constant MIN_STALENESS = 1 hours;
29
+
30
+ /// @notice Thrown when the staleness value is below the minimum.
31
+ error StalenessTooLow(uint256 provided, uint256 minimum);
32
+
33
+ modifier onlyOwner() {
34
+ require(msg.sender == owner, "CotiPriceConsumer: caller is not the owner");
35
+ _;
36
+ }
37
+
38
+ /**
39
+ * @param _ref Address of the Band Protocol StdReferenceProxy contract.
40
+ * @param _maxStaleness Maximum acceptable data age in seconds (0 = no staleness check).
41
+ */
42
+ constructor(address _ref, uint256 _maxStaleness) {
43
+ require(_ref != address(0), "CotiPriceConsumer: zero ref address");
44
+ if (_maxStaleness < MIN_STALENESS) revert StalenessTooLow(_maxStaleness, MIN_STALENESS);
45
+ ref = IStdReference(_ref);
46
+ maxStaleness = _maxStaleness;
47
+ owner = msg.sender;
48
+ }
49
+
50
+ /// @notice Returns the rate, last update timestamp, and current block timestamp for any base/USD pair.
51
+ /// @return rate The price scaled by 1e18
52
+ /// @return lastUpdated Block timestamp when the oracle data was last updated
53
+ /// @return blockTimestamp The current block.timestamp
54
+ function getPriceWithMeta(string calldata _base) external view returns (uint256 rate, uint256 lastUpdated, uint256 blockTimestamp) {
55
+ IStdReference.ReferenceData memory data = _getPrice(_base);
56
+ rate = data.rate;
57
+ lastUpdated = data.lastUpdatedBase;
58
+ blockTimestamp = block.timestamp;
59
+ }
60
+
61
+
62
+ // ──────────────────────────────────────────────────────────────────────
63
+ // Internal helper
64
+ // ──────────────────────────────────────────────────────────────────────
65
+
66
+ /**
67
+ * @dev Queries the Band oracle for `_base`/USD and optionally enforces staleness.
68
+ */
69
+ function _getPrice(string memory _base) internal view returns (IStdReference.ReferenceData memory data) {
70
+ data = ref.getReferenceData(_base, "USD");
71
+
72
+ uint256 threshold = block.timestamp - maxStaleness;
73
+ if (data.lastUpdatedBase < threshold) {
74
+ revert StaleOracleData(data.lastUpdatedBase, threshold);
75
+ }
76
+ }
77
+
78
+
79
+ // ──────────────────────────────────────────────────────────────────────
80
+ // Generic getter — query any symbol the oracle supports
81
+ // ──────────────────────────────────────────────────────────────────────
82
+
83
+ /// @notice Returns the rate for an arbitrary base/USD pair scaled by 1e18.
84
+ function getPrice(string calldata _base) external view returns (uint256) {
85
+ return _getPrice(_base).rate;
86
+ }
87
+
88
+
89
+ /// @notice Returns the full ReferenceData for an arbitrary base/USD pair.
90
+ function getPriceData(string calldata _base) external view returns (IStdReference.ReferenceData memory) {
91
+ return _getPrice(_base);
92
+ }
93
+
94
+ /**
95
+ * @notice Updates the maximum staleness threshold.
96
+ * @param _maxStaleness New threshold in seconds (0 = disable check).
97
+ */
98
+ function setMaxStaleness(uint256 _maxStaleness) external onlyOwner {
99
+ if (_maxStaleness < MIN_STALENESS) revert StalenessTooLow(_maxStaleness, MIN_STALENESS);
100
+ emit MaxStalenessUpdated(maxStaleness, _maxStaleness);
101
+ maxStaleness = _maxStaleness;
102
+ }
103
+ }
@@ -0,0 +1,15 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.20;
3
+
4
+ /**
5
+ * @title ICotiPriceConsumer
6
+ * @notice Minimal interface for the CotiPriceConsumer oracle used by the bridge
7
+ */
8
+ interface ICotiPriceConsumer {
9
+
10
+ /// @notice Returns the rate for an arbitrary base/USD pair scaled by 1e18.
11
+ function getPrice(string calldata _base) external view returns (uint256);
12
+
13
+ /// @notice Returns rate + metadata for any base/USD pair.
14
+ function getPriceWithMeta(string calldata _base) external view returns (uint256 rate, uint256 lastUpdated, uint256 blockTimestamp);
15
+ }
@@ -0,0 +1,26 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.20;
3
+
4
+ /**
5
+ * @title IStdReference
6
+ * @notice Band Protocol Standard Reference interface for querying price data.
7
+ */
8
+ interface IStdReference {
9
+ struct ReferenceData {
10
+ uint256 rate; // base/quote exchange rate, scaled by 1e18
11
+ uint256 lastUpdatedBase; // UNIX epoch when the base price was last updated
12
+ uint256 lastUpdatedQuote; // UNIX epoch when the quote price was last updated
13
+ }
14
+
15
+ /// @notice Returns the price data for a single base/quote pair.
16
+ function getReferenceData(
17
+ string memory _base,
18
+ string memory _quote
19
+ ) external view returns (ReferenceData memory);
20
+
21
+ /// @notice Returns the price data for multiple base/quote pairs.
22
+ function getReferenceDataBulk(
23
+ string[] memory _bases,
24
+ string[] memory _quotes
25
+ ) external view returns (ReferenceData[] memory);
26
+ }
@@ -0,0 +1,231 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ /// @title IInbox
5
+ /// @notice Cross-chain request/response inbox: send messages to remote chains, execute incoming calls, and query state.
6
+ /// @dev Fee-related fields on {Request} are **gas unit** budgets, not wei. See {InboxFeeManager}.
7
+ interface IInbox {
8
+ // --- Types ---
9
+
10
+ /// @notice Classification of the current inbox execution when delivering an error callback.
11
+ /// @dev Used by source `errorSelector` handlers: ignore {NotErrorContext}; branch on {SystemError} vs {Exception}.
12
+ /// Call only from `errorSelector` entrypoints — linked success `respond` legs can also report {Exception}.
13
+ enum InboxErrorType {
14
+ /// @notice No active message, or the active call is not a linked error/system delivery.
15
+ NotErrorContext,
16
+ /// @notice Inbox system-error return leg (`originalSender` is {SYSTEM_SENDER}).
17
+ SystemError,
18
+ /// @notice Linked return leg for a request that registered an `errorSelector` (app `raise`).
19
+ Exception
20
+ }
21
+
22
+ /// @notice Minimal payload for Inbox system-error callbacks (`errorSelector(bytes data)`).
23
+ /// @dev App `raise` payloads are dApp-defined; decode them only when {inboxErrorType()} is {Exception}.
24
+ /// System encode failure uses `errorCode = 2`. Attribution is via {SYSTEM_SENDER} on the return leg.
25
+ struct ErrorData {
26
+ uint64 errorCode;
27
+ bytes message;
28
+ }
29
+
30
+ /// @notice Encoded method call and optional MPC ABI metadata.
31
+ struct MpcMethodCall {
32
+ /// @notice Function selector to re-encode with MPC GTs; zero means `data` is raw calldata.
33
+ bytes4 selector;
34
+ /// @notice ABI-encoded arguments or raw calldata.
35
+ bytes data;
36
+ /// @notice MPC datatype descriptors used by {MpcAbiCodec}.
37
+ bytes8[] datatypes;
38
+ /// @notice MPC ciphertext length descriptors used by {MpcAbiCodec}.
39
+ bytes32[] datalens;
40
+ }
41
+
42
+ /// @notice Stored outbound or incoming cross-chain request.
43
+ struct Request {
44
+ /// @notice Packed request id containing source chain id and nonce.
45
+ bytes32 requestId;
46
+ /// @notice Destination chain id for outbound requests, or source chain id for incoming requests.
47
+ uint256 targetChainId;
48
+ /// @notice Contract invoked on the destination/current chain.
49
+ address targetContract;
50
+ /// @notice Method call executed on the target.
51
+ MpcMethodCall methodCall;
52
+ /// @notice Immediate caller that submitted the request.
53
+ address callerContract;
54
+ /// @notice Application contract that should receive responses/errors.
55
+ address originalSender;
56
+ /// @notice Request creation or ingestion timestamp.
57
+ uint64 timestamp;
58
+ /// @notice Callback selector used for two-way success responses.
59
+ bytes4 callbackSelector;
60
+ /// @notice Error selector invoked with `errorSelector(bytes data)` for app `raise` **or** Inbox system errors.
61
+ /// @dev Same delivery path. Distinguish with {inboxErrorType()}: {SystemError} ({ErrorData} payload,
62
+ /// {SYSTEM_SENDER}) vs {Exception} (dApp-defined `raise` bytes). System errors are not eligible for
63
+ /// `retryFailedRequest`. Auth: `onlyInbox` + non-zero {inboxSourceRequestId}.
64
+ bytes4 errorSelector;
65
+ /// @notice True when a success response is expected.
66
+ bool isTwoWay;
67
+ /// @notice True after an incoming request or linked response has been processed.
68
+ bool executed;
69
+ /// @dev If this request is a one-way response or error delivery, links to the original two-way request ID.
70
+ bytes32 sourceRequestId;
71
+ /// @dev Gas unit budget for the remote execution leg (`call{gas: ...}` cap). Not wei.
72
+ uint256 targetFee;
73
+ /// @dev Gas unit budget for the callback leg on the source chain. Not wei.
74
+ uint256 callerFee;
75
+ }
76
+
77
+ /// @notice Response metadata for an incoming request.
78
+ struct Response {
79
+ /// @notice Outbound request id that delivered the response.
80
+ bytes32 responseRequestId;
81
+ /// @notice Response payload returned by the target contract.
82
+ bytes response;
83
+ }
84
+
85
+ /// @notice Stored execution or encoding error for a request.
86
+ struct Error {
87
+ /// @notice Request id that failed.
88
+ bytes32 requestId;
89
+ /// @notice Protocol-defined error code.
90
+ uint64 errorCode;
91
+ /// @notice Revert data or encoded error message.
92
+ bytes errorMessage;
93
+ }
94
+
95
+ /// @notice Active incoming execution context exposed to target contracts.
96
+ struct ExecutionContext {
97
+ /// @notice Remote chain that sent the current request.
98
+ uint256 remoteChainId;
99
+ /// @notice Remote contract that sent the current request.
100
+ address remoteContract;
101
+ /// @notice Current incoming request id.
102
+ bytes32 requestId;
103
+ }
104
+
105
+ // --- External: sends (payable) ---
106
+
107
+ /// @notice Send a two-way message with callback and error handlers on the remote chain.
108
+ /// @param targetChainId Destination chain ID.
109
+ /// @param targetContract Contract to call on the destination chain.
110
+ /// @param methodCall Calldata and MPC metadata.
111
+ /// @param callbackSelector Selector invoked on the source chain when the remote call succeeds.
112
+ /// @param errorSelector Selector invoked on the source chain when the remote call fails.
113
+ /// @param callbackFeeLocalWei Wei from `msg.value` reserved for the callback leg (converted to gas units in fee logic).
114
+ /// @return requestId The new outbound request ID.
115
+ function sendTwoWayMessage(
116
+ uint256 targetChainId,
117
+ address targetContract,
118
+ MpcMethodCall calldata methodCall,
119
+ bytes4 callbackSelector,
120
+ bytes4 errorSelector,
121
+ uint256 callbackFeeLocalWei
122
+ ) external payable returns (bytes32);
123
+
124
+ /// @notice Send a one-way message with an error handler only (no callback).
125
+ /// @param targetChainId Destination chain ID.
126
+ /// @param targetContract Contract to call on the destination chain.
127
+ /// @param methodCall Calldata and MPC metadata.
128
+ /// @param errorSelector Selector invoked on error.
129
+ /// @return requestId The new outbound request ID.
130
+ function sendOneWayMessage(
131
+ uint256 targetChainId,
132
+ address targetContract,
133
+ MpcMethodCall calldata methodCall,
134
+ bytes4 errorSelector
135
+ ) external payable returns (bytes32);
136
+
137
+ // --- External: execution (non-payable) ---
138
+
139
+ /// @notice Respond to the current incoming message (two-way flow).
140
+ /// @dev Gas for the return leg is **not** charged again: it uses the `callerFee` budget from the original two-way request.
141
+ /// @param data Payload routed to the original sender via `callbackSelector`.
142
+ function respond(bytes memory data) external;
143
+
144
+ /// @notice Signal an application error for the current incoming two-way message (same routing constraints as {respond}).
145
+ /// @dev Gas for the return leg is **not** charged again: it uses the `callerFee` budget from the original two-way request.
146
+ /// @param data ABI-encoded argument for the remote `errorSelector(bytes)`.
147
+ function raise(bytes memory data) external;
148
+
149
+ // --- External: views ---
150
+
151
+ /// @notice Return error details for a failed outgoing request.
152
+ /// @param requestId Outbound request ID.
153
+ /// @return code Error code.
154
+ /// @return message Error message or revert data.
155
+ function getOutboxError(bytes32 requestId) external view returns (uint256 code, string memory message);
156
+
157
+ /// @notice Return stored response bytes for a completed incoming flow.
158
+ /// @param requestId Incoming request ID.
159
+ /// @return response Response payload.
160
+ function getInboxResponse(bytes32 requestId) external view returns (bytes memory);
161
+
162
+ /// @notice Return a slice of outbound requests sent to `targetChainId`, in per-target nonce order.
163
+ /// @param targetChainId Destination chain whose outbound requests to read.
164
+ /// @param from Start index (0-based) within that target's sequence.
165
+ /// @param len Maximum number of requests to return.
166
+ /// @return requestsList Request structs.
167
+ function getRequests(uint256 targetChainId, uint256 from, uint256 len)
168
+ external
169
+ view
170
+ returns (Request[] memory);
171
+
172
+ /// @notice Total count of outbound requests issued from this inbox to `targetChainId`.
173
+ /// @param targetChainId Destination chain.
174
+ /// @return count Number of requests to that target.
175
+ function getRequestsLen(uint256 targetChainId) external view returns (uint256);
176
+
177
+ /// @notice Look up a stored outbound request by its id (id encodes source+target+nonce).
178
+ /// @param requestId Outbound request id.
179
+ /// @return request The stored request (zeroed if unknown).
180
+ function getRequest(bytes32 requestId) external view returns (Request memory);
181
+
182
+ /// @notice Look up a stored incoming request by its id (id encodes the source chain).
183
+ /// @param requestId Incoming request id.
184
+ /// @return request The stored incoming request (zeroed if unknown).
185
+ function getIncomingRequest(bytes32 requestId) external view returns (Request memory);
186
+
187
+ /// @notice Remote chain ID and contract for the currently executing incoming message.
188
+ /// @dev For system-error return legs, `contractAddress` is {SYSTEM_SENDER}. Success callbacks still
189
+ /// come from the real remote peer; error callbacks should not require peer equality.
190
+ /// @return chainId Remote chain ID.
191
+ /// @return contractAddress Remote caller contract (or {SYSTEM_SENDER} for Inbox system errors).
192
+ function inboxMsgSender() external view returns (uint256 chainId, address contractAddress);
193
+
194
+ /// @notice Request ID for the currently executing incoming message.
195
+ /// @return requestId Active request ID.
196
+ function inboxRequestId() external view returns (bytes32);
197
+
198
+ /// @notice Source request ID linked from the current incoming message (if any).
199
+ /// @dev Non-zero only for reply/error legs created by {respond}, {raise}, or system-error delivery.
200
+ /// Public {sendOneWayMessage}/{sendTwoWayMessage} always use `sourceRequestId = 0`.
201
+ /// @return sourceRequestId Linked request ID.
202
+ function inboxSourceRequestId() external view returns (bytes32);
203
+
204
+ /// @notice Whether the current execution is delivering a system error, an app `raise`, or neither.
205
+ /// @dev Safe to call outside an active message (returns {InboxErrorType.NotErrorContext}). Prefer this over
206
+ /// requiring `inboxMsgSender()` peer equality in error handlers.
207
+ /// @return errorType {InboxErrorType} for the active context.
208
+ function inboxErrorType() external view returns (InboxErrorType errorType);
209
+
210
+ // --- External: pure ---
211
+
212
+ /// @notice Pack source chain id (64 bits), target chain id (64 bits) and nonce (128 bits) into a request id.
213
+ /// @param sourceChainId Originating chain id.
214
+ /// @param targetChainId Destination chain id.
215
+ /// @param nonce Per-target nonce.
216
+ /// @return requestId 256-bit packed id.
217
+ function getRequestId(uint256 sourceChainId, uint256 targetChainId, uint256 nonce)
218
+ external
219
+ pure
220
+ returns (bytes32);
221
+
222
+ /// @notice Split a packed request id into source chain id, target chain id and nonce.
223
+ /// @param requestId Packed id.
224
+ /// @return sourceChainId Source chain id.
225
+ /// @return targetChainId Target chain id.
226
+ /// @return nonce Per-target nonce.
227
+ function unpackRequestId(bytes32 requestId)
228
+ external
229
+ pure
230
+ returns (uint256 sourceChainId, uint256 targetChainId, uint256 nonce);
231
+ }