@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
@@ -20,7 +20,7 @@ jobs:
20
20
  - uses: actions/checkout@v5
21
21
  - uses: actions/setup-node@v5
22
22
  with:
23
- node-version: 16
23
+ node-version: 24
24
24
  - run: npm ci
25
25
 
26
26
  update-version-and-publish:
@@ -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
  abstract contract DataPrivacyFramework {
6
6
 
@@ -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 "../DataPrivacyFramework.sol";
6
6
  import "../../../utils/mpc/MpcCore.sol";
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
5
5
  import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
6
6
  import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
7
- import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol";
7
+ import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
8
8
  import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
9
9
 
10
10
  /**
@@ -76,12 +76,10 @@ contract FixedRatioCoinDisperserUnlimitedWindow is ReentrancyGuard, Ownable {
76
76
  * @param _pointsToken Address of the ERC20 points token that can be redeemed
77
77
  * @param _owner Address that will have admin privileges (can pause, finalize, etc.)
78
78
  */
79
- constructor(address _pointsToken, address _owner) {
79
+ constructor(address _pointsToken, address _owner) Ownable(_owner) {
80
80
  if (_pointsToken == address(0)) revert TokenZeroAddress();
81
- if (_owner == address(0)) revert OwnerZeroAddress();
82
81
 
83
82
  POINTS_TOKEN = IERC20(_pointsToken);
84
- _transferOwnership(_owner);
85
83
  }
86
84
 
87
85
  // --- Admin ---
@@ -26,9 +26,7 @@ contract MintDisperser is Ownable {
26
26
  * @param initialOwner Address that will have owner privileges to execute minting operations
27
27
  * @dev Sets the initial owner of the contract using OpenZeppelin's Ownable pattern
28
28
  */
29
- constructor(address initialOwner) {
30
- _transferOwnership(initialOwner);
31
- }
29
+ constructor(address initialOwner) Ownable(initialOwner) {}
32
30
 
33
31
  /**
34
32
  * @notice Mint the same amount of tokens to multiple recipients
@@ -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 {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
6
6
  import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
@@ -0,0 +1,456 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.20;
3
+
4
+ import "../utils/mpc/MpcCore.sol";
5
+
6
+ contract PrivateMessaging {
7
+ error InvalidEpochDuration();
8
+ error InvalidRecipient();
9
+ error MessageNotFound();
10
+ error UnauthorizedViewer();
11
+ error ZeroValue();
12
+ error InvalidChunkCount();
13
+ error ChunkTooLarge();
14
+ error ChunkOutOfBounds();
15
+ error EpochStillActive();
16
+ error NothingToClaim();
17
+ error AlreadyClaimed();
18
+ error NativeTransferFailed();
19
+ error PastEpochFundingNotAllowed();
20
+
21
+ event MessageSent(
22
+ uint256 indexed messageId,
23
+ address indexed from,
24
+ address indexed to,
25
+ uint256 epoch
26
+ );
27
+ event RewardFunded(uint256 indexed epoch, address indexed funder, uint256 amount);
28
+ event RewardClaimed(uint256 indexed epoch, address indexed agent, uint256 amount);
29
+
30
+ struct MessageRecord {
31
+ bool exists;
32
+ address from;
33
+ address to;
34
+ uint64 timestamp;
35
+ uint64 epoch;
36
+ uint32 chunkCount;
37
+ }
38
+
39
+ struct MessageView {
40
+ uint256 id;
41
+ address from;
42
+ address to;
43
+ uint64 timestamp;
44
+ uint64 epoch;
45
+ uint32 chunkCount;
46
+ ctString ciphertext;
47
+ }
48
+
49
+ uint8 public constant MAX_CHUNK_CELLS = 3;
50
+ uint32 public constant MAX_CHUNKS_PER_MESSAGE = 64;
51
+
52
+ uint64 public immutable epochDuration;
53
+ uint64 public immutable genesisTimestamp;
54
+
55
+ uint256 private _nextMessageId;
56
+
57
+ mapping(uint256 => MessageRecord) private _messages;
58
+ mapping(uint256 => mapping(uint256 => ctString)) private _networkCiphertexts;
59
+ mapping(uint256 => mapping(uint256 => ctString)) private _senderCiphertexts;
60
+ mapping(uint256 => mapping(uint256 => ctString)) private _recipientCiphertexts;
61
+ mapping(address => uint256[]) private _inboxMessageIds;
62
+ mapping(address => uint256[]) private _sentMessageIds;
63
+
64
+ mapping(uint256 => mapping(address => uint256)) public epochUsageUnits;
65
+ mapping(uint256 => uint256) public epochTotalUsageUnits;
66
+ mapping(uint256 => uint256) public epochRewardPool;
67
+ mapping(uint256 => uint256) public epochClaimedAmount;
68
+ mapping(uint256 => uint256) public epochClaimedUsageUnits;
69
+ mapping(uint256 => mapping(address => bool)) public epochHasClaimed;
70
+
71
+ constructor(uint64 epochDurationSeconds) payable {
72
+ if (epochDurationSeconds == 0) {
73
+ revert InvalidEpochDuration();
74
+ }
75
+
76
+ epochDuration = epochDurationSeconds;
77
+ genesisTimestamp = uint64(block.timestamp);
78
+
79
+ if (msg.value > 0) {
80
+ _fundEpoch(currentEpoch(), msg.sender, msg.value);
81
+ }
82
+ }
83
+
84
+ receive() external payable {
85
+ _fundEpoch(currentEpoch(), msg.sender, msg.value);
86
+ }
87
+
88
+ function currentEpoch() public view returns (uint256) {
89
+ return (block.timestamp - genesisTimestamp) / epochDuration;
90
+ }
91
+
92
+ function epochForTimestamp(uint256 timestamp) public view returns (uint256) {
93
+ if (timestamp < genesisTimestamp) {
94
+ return 0;
95
+ }
96
+
97
+ return (timestamp - genesisTimestamp) / epochDuration;
98
+ }
99
+
100
+ function fundEpoch(uint256 epoch) external payable {
101
+ if (msg.value == 0) {
102
+ revert ZeroValue();
103
+ }
104
+
105
+ if (epoch < currentEpoch()) {
106
+ revert PastEpochFundingNotAllowed();
107
+ }
108
+
109
+ _fundEpoch(epoch, msg.sender, msg.value);
110
+ }
111
+
112
+ function sendMessage(address to, itString calldata encryptedMessage) external returns (uint256 messageId) {
113
+ if (to == address(0) || to == msg.sender) {
114
+ revert InvalidRecipient();
115
+ }
116
+
117
+ uint256 usageUnits = _validateEncryptedChunk(encryptedMessage);
118
+
119
+ messageId = _createMessageRecord(msg.sender, to, 1);
120
+
121
+ gtString memory validatedMessage = MpcCore.validateCiphertext(encryptedMessage);
122
+ _storeChunkCiphertexts(
123
+ messageId,
124
+ 0,
125
+ MpcCore.offBoard(validatedMessage),
126
+ MpcCore.offBoardToUser(validatedMessage, msg.sender),
127
+ MpcCore.offBoardToUser(validatedMessage, to)
128
+ );
129
+
130
+ _addEpochUsage(_messages[messageId].epoch, msg.sender, usageUnits);
131
+ }
132
+
133
+ function sendMultipartMessage(address to, itString[] calldata encryptedChunks)
134
+ external
135
+ returns (uint256 messageId)
136
+ {
137
+ if (to == address(0) || to == msg.sender) {
138
+ revert InvalidRecipient();
139
+ }
140
+
141
+ uint256 chunkCount = encryptedChunks.length;
142
+ if (chunkCount == 0 || chunkCount > MAX_CHUNKS_PER_MESSAGE) {
143
+ revert InvalidChunkCount();
144
+ }
145
+
146
+ uint256 usageUnits;
147
+ for (uint256 i = 0; i < chunkCount; i++) {
148
+ usageUnits += _validateEncryptedChunk(encryptedChunks[i]);
149
+ }
150
+
151
+ messageId = _createMessageRecord(msg.sender, to, chunkCount);
152
+
153
+ for (uint256 i = 0; i < chunkCount; i++) {
154
+ gtString memory validatedMessage = MpcCore.validateCiphertext(encryptedChunks[i]);
155
+ _storeChunkCiphertexts(
156
+ messageId,
157
+ i,
158
+ MpcCore.offBoard(validatedMessage),
159
+ MpcCore.offBoardToUser(validatedMessage, msg.sender),
160
+ MpcCore.offBoardToUser(validatedMessage, to)
161
+ );
162
+ }
163
+
164
+ _addEpochUsage(_messages[messageId].epoch, msg.sender, usageUnits);
165
+ }
166
+
167
+ function getMessageMetadata(uint256 messageId)
168
+ external
169
+ view
170
+ returns (address from, address to, uint64 timestamp, uint64 epoch)
171
+ {
172
+ MessageRecord storage record = _requireMessage(messageId);
173
+ return (record.from, record.to, record.timestamp, record.epoch);
174
+ }
175
+
176
+ function getMessage(uint256 messageId) external view returns (MessageView memory messageView) {
177
+ MessageRecord storage record = _requireMessage(messageId);
178
+ ctString memory ciphertext = _messageCiphertextForViewer(messageId, record, msg.sender, 0);
179
+
180
+ return MessageView({
181
+ id: messageId,
182
+ from: record.from,
183
+ to: record.to,
184
+ timestamp: record.timestamp,
185
+ epoch: record.epoch,
186
+ chunkCount: record.chunkCount,
187
+ ciphertext: ciphertext
188
+ });
189
+ }
190
+
191
+ function getMessageChunkCount(uint256 messageId) external view returns (uint256 chunkCount) {
192
+ MessageRecord storage record = _requireMessage(messageId);
193
+ return record.chunkCount;
194
+ }
195
+
196
+ function getMessageChunk(uint256 messageId, uint256 chunkIndex)
197
+ external
198
+ view
199
+ returns (ctString memory ciphertext)
200
+ {
201
+ MessageRecord storage record = _requireMessage(messageId);
202
+ return _messageCiphertextForViewer(messageId, record, msg.sender, chunkIndex);
203
+ }
204
+
205
+ function getSenderCiphertext(uint256 messageId) external view returns (ctString memory ciphertext) {
206
+ _requireMessage(messageId);
207
+ return _senderCiphertexts[messageId][0];
208
+ }
209
+
210
+ function getSenderChunkCiphertext(uint256 messageId, uint256 chunkIndex)
211
+ external
212
+ view
213
+ returns (ctString memory ciphertext)
214
+ {
215
+ MessageRecord storage record = _requireMessage(messageId);
216
+ _requireChunkIndex(record, chunkIndex);
217
+ return _senderCiphertexts[messageId][chunkIndex];
218
+ }
219
+
220
+ function getRecipientCiphertext(uint256 messageId) external view returns (ctString memory ciphertext) {
221
+ _requireMessage(messageId);
222
+ return _recipientCiphertexts[messageId][0];
223
+ }
224
+
225
+ function getRecipientChunkCiphertext(uint256 messageId, uint256 chunkIndex)
226
+ external
227
+ view
228
+ returns (ctString memory ciphertext)
229
+ {
230
+ MessageRecord storage record = _requireMessage(messageId);
231
+ _requireChunkIndex(record, chunkIndex);
232
+ return _recipientCiphertexts[messageId][chunkIndex];
233
+ }
234
+
235
+ function getNetworkCiphertext(uint256 messageId) external view returns (ctString memory ciphertext) {
236
+ _requireMessage(messageId);
237
+ return _networkCiphertexts[messageId][0];
238
+ }
239
+
240
+ function getNetworkChunkCiphertext(uint256 messageId, uint256 chunkIndex)
241
+ external
242
+ view
243
+ returns (ctString memory ciphertext)
244
+ {
245
+ MessageRecord storage record = _requireMessage(messageId);
246
+ _requireChunkIndex(record, chunkIndex);
247
+ return _networkCiphertexts[messageId][chunkIndex];
248
+ }
249
+
250
+ function inboxCount(address account) external view returns (uint256) {
251
+ return _inboxMessageIds[account].length;
252
+ }
253
+
254
+ function sentCount(address account) external view returns (uint256) {
255
+ return _sentMessageIds[account].length;
256
+ }
257
+
258
+ function getInboxPage(
259
+ address account,
260
+ uint256 offset,
261
+ uint256 limit
262
+ ) external view returns (uint256[] memory messageIds) {
263
+ return _slice(_inboxMessageIds[account], offset, limit);
264
+ }
265
+
266
+ function getSentPage(
267
+ address account,
268
+ uint256 offset,
269
+ uint256 limit
270
+ ) external view returns (uint256[] memory messageIds) {
271
+ return _slice(_sentMessageIds[account], offset, limit);
272
+ }
273
+
274
+ function pendingRewards(uint256 epoch, address agent) public view returns (uint256) {
275
+ if (epoch >= currentEpoch() || epochHasClaimed[epoch][agent]) {
276
+ return 0;
277
+ }
278
+
279
+ uint256 usage = epochUsageUnits[epoch][agent];
280
+ uint256 totalUsage = epochTotalUsageUnits[epoch];
281
+ uint256 rewardPool = epochRewardPool[epoch];
282
+
283
+ if (usage == 0 || totalUsage == 0 || rewardPool == 0) {
284
+ return 0;
285
+ }
286
+
287
+ uint256 claimedUsage = epochClaimedUsageUnits[epoch];
288
+ uint256 claimedAmount = epochClaimedAmount[epoch];
289
+
290
+ uint256 remainingUsage = totalUsage - claimedUsage;
291
+ uint256 remainingPool = rewardPool - claimedAmount;
292
+
293
+ if (usage == remainingUsage) {
294
+ return remainingPool;
295
+ }
296
+
297
+ return (remainingPool * usage) / remainingUsage;
298
+ }
299
+
300
+ function claimRewards(uint256 epoch) external returns (uint256 amount) {
301
+ if (epoch >= currentEpoch()) {
302
+ revert EpochStillActive();
303
+ }
304
+
305
+ if (epochHasClaimed[epoch][msg.sender]) {
306
+ revert AlreadyClaimed();
307
+ }
308
+
309
+ amount = pendingRewards(epoch, msg.sender);
310
+ if (amount == 0) {
311
+ revert NothingToClaim();
312
+ }
313
+
314
+ uint256 usage = epochUsageUnits[epoch][msg.sender];
315
+
316
+ epochHasClaimed[epoch][msg.sender] = true;
317
+ epochClaimedUsageUnits[epoch] += usage;
318
+ epochClaimedAmount[epoch] += amount;
319
+
320
+ (bool success, ) = payable(msg.sender).call{value: amount}("");
321
+ if (!success) {
322
+ revert NativeTransferFailed();
323
+ }
324
+
325
+ emit RewardClaimed(epoch, msg.sender, amount);
326
+ }
327
+
328
+ function getEpochSummary(uint256 epoch)
329
+ external
330
+ view
331
+ returns (
332
+ uint256 totalUsageUnits,
333
+ uint256 rewardPool,
334
+ uint256 claimedAmount,
335
+ uint256 claimedUsageUnits
336
+ )
337
+ {
338
+ return (
339
+ epochTotalUsageUnits[epoch],
340
+ epochRewardPool[epoch],
341
+ epochClaimedAmount[epoch],
342
+ epochClaimedUsageUnits[epoch]
343
+ );
344
+ }
345
+
346
+ function _fundEpoch(uint256 epoch, address funder, uint256 amount) internal {
347
+ if (amount == 0) {
348
+ revert ZeroValue();
349
+ }
350
+
351
+ epochRewardPool[epoch] += amount;
352
+ emit RewardFunded(epoch, funder, amount);
353
+ }
354
+
355
+ function _createMessageRecord(
356
+ address from,
357
+ address to,
358
+ uint256 chunkCount
359
+ ) internal returns (uint256 messageId) {
360
+ uint256 epoch = currentEpoch();
361
+ messageId = _nextMessageId++;
362
+
363
+ MessageRecord storage record = _messages[messageId];
364
+ record.exists = true;
365
+ record.from = from;
366
+ record.to = to;
367
+ record.timestamp = uint64(block.timestamp);
368
+ record.epoch = uint64(epoch);
369
+ record.chunkCount = uint32(chunkCount);
370
+
371
+ _sentMessageIds[from].push(messageId);
372
+ _inboxMessageIds[to].push(messageId);
373
+
374
+ emit MessageSent(messageId, from, to, epoch);
375
+ }
376
+
377
+ function _addEpochUsage(uint256 epoch, address from, uint256 usageUnits) internal {
378
+ epochUsageUnits[epoch][from] += usageUnits;
379
+ epochTotalUsageUnits[epoch] += usageUnits;
380
+ }
381
+
382
+ function _storeChunkCiphertexts(
383
+ uint256 messageId,
384
+ uint256 chunkIndex,
385
+ ctString memory networkCiphertext,
386
+ ctString memory senderCiphertext,
387
+ ctString memory recipientCiphertext
388
+ ) internal {
389
+ _networkCiphertexts[messageId][chunkIndex] = networkCiphertext;
390
+ _senderCiphertexts[messageId][chunkIndex] = senderCiphertext;
391
+ _recipientCiphertexts[messageId][chunkIndex] = recipientCiphertext;
392
+ }
393
+
394
+ function _messageCiphertextForViewer(
395
+ uint256 messageId,
396
+ MessageRecord storage record,
397
+ address viewer,
398
+ uint256 chunkIndex
399
+ ) internal view returns (ctString memory ciphertext) {
400
+ _requireChunkIndex(record, chunkIndex);
401
+
402
+ if (viewer == record.from) {
403
+ return _senderCiphertexts[messageId][chunkIndex];
404
+ }
405
+
406
+ if (viewer == record.to) {
407
+ return _recipientCiphertexts[messageId][chunkIndex];
408
+ }
409
+
410
+ revert UnauthorizedViewer();
411
+ }
412
+
413
+ function _validateEncryptedChunk(itString calldata encryptedChunk) internal pure returns (uint256 cells) {
414
+ cells = encryptedChunk.ciphertext.value.length;
415
+ if (
416
+ cells == 0 ||
417
+ cells != encryptedChunk.signature.length ||
418
+ cells > MAX_CHUNK_CELLS
419
+ ) {
420
+ revert ChunkTooLarge();
421
+ }
422
+ }
423
+
424
+ function _slice(
425
+ uint256[] storage source,
426
+ uint256 offset,
427
+ uint256 limit
428
+ ) internal view returns (uint256[] memory page) {
429
+ if (offset >= source.length || limit == 0) {
430
+ return new uint256[](0);
431
+ }
432
+
433
+ uint256 end = offset + limit;
434
+ if (end > source.length) {
435
+ end = source.length;
436
+ }
437
+
438
+ page = new uint256[](end - offset);
439
+ for (uint256 i = offset; i < end; i++) {
440
+ page[i - offset] = source[i];
441
+ }
442
+ }
443
+
444
+ function _requireMessage(uint256 messageId) internal view returns (MessageRecord storage record) {
445
+ record = _messages[messageId];
446
+ if (!record.exists) {
447
+ revert MessageNotFound();
448
+ }
449
+ }
450
+
451
+ function _requireChunkIndex(MessageRecord storage record, uint256 chunkIndex) internal view {
452
+ if (chunkIndex >= record.chunkCount) {
453
+ revert ChunkOutOfBounds();
454
+ }
455
+ }
456
+ }
@@ -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 "../../../access/DataPrivacyFramework/DataPrivacyFramework.sol";
6
6
 
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.20;
3
+
4
+ import "../../messaging/PrivateMessaging.sol";
5
+
6
+ contract PrivateMessagingHarness is PrivateMessaging {
7
+ constructor(uint64 epochDurationSeconds) PrivateMessaging(epochDurationSeconds) {}
8
+
9
+ function recordSyntheticMessage(
10
+ address from,
11
+ address to,
12
+ ctString calldata networkCiphertext,
13
+ ctString calldata senderCiphertext,
14
+ ctString calldata recipientCiphertext
15
+ ) external returns (uint256 messageId) {
16
+ messageId = _createMessageRecord(from, to, 1);
17
+ _addEpochUsage(currentEpoch(), from, networkCiphertext.value.length);
18
+ _storeChunkCiphertexts(
19
+ messageId,
20
+ 0,
21
+ networkCiphertext,
22
+ senderCiphertext,
23
+ recipientCiphertext
24
+ );
25
+ }
26
+
27
+ function recordSyntheticMultipartMessage(
28
+ address from,
29
+ address to,
30
+ ctString[] calldata networkCiphertexts,
31
+ ctString[] calldata senderCiphertexts,
32
+ ctString[] calldata recipientCiphertexts
33
+ ) external returns (uint256 messageId) {
34
+ require(networkCiphertexts.length > 0, "chunk count");
35
+ require(networkCiphertexts.length == senderCiphertexts.length, "sender length");
36
+ require(networkCiphertexts.length == recipientCiphertexts.length, "recipient length");
37
+
38
+ messageId = _createMessageRecord(from, to, networkCiphertexts.length);
39
+ uint256 usageUnits;
40
+
41
+ for (uint256 i = 0; i < networkCiphertexts.length; i++) {
42
+ usageUnits += networkCiphertexts[i].value.length;
43
+ _storeChunkCiphertexts(
44
+ messageId,
45
+ i,
46
+ networkCiphertexts[i],
47
+ senderCiphertexts[i],
48
+ recipientCiphertexts[i]
49
+ );
50
+ }
51
+
52
+ _addEpochUsage(currentEpoch(), from, usageUnits);
53
+ }
54
+ }
@@ -0,0 +1,31 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.20;
3
+
4
+ import "../../oracle/ICotiPriceConsumer.sol";
5
+
6
+ /// @dev Test double for {ICotiPriceConsumer}: fixed rates and a shared `lastUpdated` for all symbols.
7
+ contract CotiPriceConsumerMock is ICotiPriceConsumer {
8
+ mapping(string => uint256) internal rates;
9
+ uint256 public metaLastUpdated;
10
+
11
+ function setRate(string calldata base, uint256 rate_) external {
12
+ rates[base] = rate_;
13
+ metaLastUpdated = block.timestamp;
14
+ }
15
+
16
+ function sync() external {
17
+ metaLastUpdated = block.timestamp;
18
+ }
19
+
20
+ function getPrice(string calldata base) external view returns (uint256) {
21
+ return rates[base];
22
+ }
23
+
24
+ function getPriceWithMeta(string calldata base)
25
+ external
26
+ view
27
+ returns (uint256 rate, uint256 lastUpdated, uint256 blockTimestamp)
28
+ {
29
+ return (rates[base], metaLastUpdated, block.timestamp);
30
+ }
31
+ }
@@ -0,0 +1,21 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.20;
3
+
4
+ import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
5
+
6
+ /// @dev ERC20 mock with configurable decimals (for matching private token decimals in bridge tests).
7
+ contract ERC20DecimalsMock is ERC20 {
8
+ uint8 private immutable _decimals;
9
+
10
+ constructor(string memory name_, string memory symbol_, uint8 decimals_) ERC20(name_, symbol_) {
11
+ _decimals = decimals_;
12
+ }
13
+
14
+ function decimals() public view override returns (uint8) {
15
+ return _decimals;
16
+ }
17
+
18
+ function mint(address to, uint256 amount) external {
19
+ _mint(to, amount);
20
+ }
21
+ }
@@ -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 "@openzeppelin/contracts/token/ERC20/ERC20.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/ITokenReceiverEncrypted.sol";
6
6
 
@@ -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 "../../../privacyBridge/PrivacyBridgeERC20.sol";
5
5
 
@@ -7,7 +7,12 @@ import "../../../privacyBridge/PrivacyBridgeERC20.sol";
7
7
  * @dev Mock contract for testing PrivacyBridgeERC20
8
8
  */
9
9
  contract PrivacyBridgeERC20Mock is PrivacyBridgeERC20 {
10
- constructor(address _token, address _privateToken)
11
- PrivacyBridgeERC20(_token, _privateToken)
12
- {}
10
+ constructor(
11
+ address _token,
12
+ address _privateToken,
13
+ string memory _tokenSymbol,
14
+ address _feeRecipient,
15
+ address _rescueRecipient,
16
+ address _priceOracle
17
+ ) PrivacyBridgeERC20(_token, _privateToken, _tokenSymbol, _feeRecipient, _rescueRecipient, _priceOracle) {}
13
18
  }
@@ -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/PrivateERC20.sol";
6
6
  import "../../../utils/mpc/MpcCore.sol";