@coti-io/coti-contracts 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/.github/workflows/npm-publish.yml +19 -15
  2. package/README.md +3 -1
  3. package/contracts/disperse/coinByRatio/FixedRatioCoinDisperser.sol +452 -0
  4. package/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1.sol +490 -0
  5. package/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.sol +432 -0
  6. package/contracts/disperse/disperseToken/MintDisperser.sol +120 -0
  7. package/contracts/disperse/disperseToken/TokenDisperser.sol +139 -0
  8. package/contracts/messaging/PrivateMessaging.sol +456 -0
  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 +19 -0
  13. package/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.sol +18 -0
  14. package/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.sol +18 -0
  15. package/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.sol +44 -0
  16. package/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.sol +23 -0
  17. package/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock.sol +29 -0
  18. package/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.sol +9 -4
  19. package/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol +39 -0
  20. package/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.sol +29 -0
  21. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.sol +18 -0
  22. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.sol +12 -0
  23. package/contracts/mocks/utils/mpc/Arithmetic128TestsContract.sol +123 -0
  24. package/contracts/mocks/utils/mpc/Arithmetic256TestsContract.sol +122 -0
  25. package/contracts/mocks/utils/mpc/Bitwise128TestsContract.sol +65 -0
  26. package/contracts/mocks/utils/mpc/Bitwise256TestsContract.sol +65 -0
  27. package/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.sol +64 -0
  28. package/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.sol +64 -0
  29. package/contracts/mocks/utils/mpc/Comparison128TestsContract.sol +98 -0
  30. package/contracts/mocks/utils/mpc/Comparison256TestsContract.sol +98 -0
  31. package/contracts/mocks/utils/mpc/MinMax128TestsContract.sol +44 -0
  32. package/contracts/mocks/utils/mpc/MinMax256TestsContract.sol +44 -0
  33. package/contracts/mocks/utils/mpc/MinimalImplementation.sol +55 -0
  34. package/contracts/mocks/utils/mpc/MinimalProxy.sol +27 -0
  35. package/contracts/mocks/utils/mpc/MpcOperations128TestContract.sol +267 -0
  36. package/contracts/mocks/utils/mpc/MpcOperationsTestContract.sol +334 -0
  37. package/contracts/mocks/utils/mpc/Mux128TestsContract.sol +24 -0
  38. package/contracts/mocks/utils/mpc/Mux256TestsContract.sol +24 -0
  39. package/contracts/mocks/utils/mpc/OnBoard128TestsContract.sol +93 -0
  40. package/contracts/mocks/utils/mpc/OnBoard256TestsContract.sol +116 -0
  41. package/contracts/mocks/utils/mpc/PrivacyImplementationV1.sol +157 -0
  42. package/contracts/mocks/utils/mpc/PrivacyImplementationV2.sol +133 -0
  43. package/contracts/mocks/utils/mpc/PrivacyProxy.sol +137 -0
  44. package/contracts/mocks/utils/mpc/Random128TestsContract.sol +32 -0
  45. package/contracts/mocks/utils/mpc/Random256TestsContract.sol +32 -0
  46. package/contracts/mocks/utils/mpc/Shift128TestsContract.sol +36 -0
  47. package/contracts/mocks/utils/mpc/Shift256TestsContract.sol +36 -0
  48. package/contracts/mocks/utils/mpc/Transfer128TestsContract.sol +29 -0
  49. package/contracts/mocks/utils/mpc/Transfer256TestsContract.sol +29 -0
  50. package/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.sol +32 -0
  51. package/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.sol +32 -0
  52. package/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.sol +59 -0
  53. package/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.sol +63 -0
  54. package/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.sol +99 -0
  55. package/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.sol +7 -6
  56. package/contracts/node/CotiNodeRewards.sol +199 -0
  57. package/contracts/node/SoulboundNodeNFT.sol +519 -0
  58. package/contracts/oracle/CotiPriceConsumer.sol +103 -0
  59. package/contracts/oracle/ICotiPriceConsumer.sol +15 -0
  60. package/contracts/oracle/IStdReference.sol +26 -0
  61. package/contracts/privacyBridge/PrivacyBridge.sol +600 -0
  62. package/contracts/privacyBridge/PrivacyBridgeCotiNative.sol +316 -0
  63. package/contracts/privacyBridge/PrivacyBridgeERC20.sol +333 -0
  64. package/contracts/privacyBridge/PrivacyBridgeUSDCe.sol +22 -0
  65. package/contracts/privacyBridge/PrivacyBridgeUSDT.sol +23 -0
  66. package/contracts/privacyBridge/PrivacyBridgeWADA.sol +23 -0
  67. package/contracts/privacyBridge/PrivacyBridgeWBTC.sol +23 -0
  68. package/contracts/privacyBridge/PrivacyBridgeWETH.sol +23 -0
  69. package/contracts/privacyBridge/PrivacyBridgegCoti.sol +23 -0
  70. package/contracts/token/PrivateERC20/IPrivateERC20.sol +273 -40
  71. package/contracts/token/PrivateERC20/ITokenReceiver.sol +17 -0
  72. package/contracts/token/PrivateERC20/ITokenReceiverEncrypted.sol +20 -0
  73. package/contracts/token/PrivateERC20/PrivateERC20.sol +861 -152
  74. package/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.sol +17 -0
  75. package/contracts/token/PrivateERC20/tokens/PrivateCOTI.sol +13 -0
  76. package/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.sol +17 -0
  77. package/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.sol +17 -0
  78. package/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.sol +17 -0
  79. package/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.sol +17 -0
  80. package/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.sol +13 -0
  81. package/contracts/utils/mpc/MpcCore.sol +10780 -4962
  82. package/contracts/utils/mpc/MpcInterface.sol +7 -2
  83. package/hardhat/gasPriceBump.ts +60 -0
  84. package/hardhat.config.ts +63 -12
  85. package/package.json +22 -4
  86. package/scripts/add-bridge-operators.cjs +87 -0
  87. package/scripts/deploy-coti-price-consumer-mainnet.cjs +49 -0
  88. package/scripts/deployCotiNodeRewards.ts +51 -0
  89. package/scripts/deploySoulboundNodeNFT.ts +57 -0
  90. package/scripts/redeploy-private-and-bridges.cjs +201 -0
  91. package/scripts/set-bridge-limits-mainnet.cjs +177 -0
  92. package/scripts/verify-mainnet-private-bridges.cjs +289 -0
  93. package/sonar-project.properties +11 -0
  94. package/test/messaging/PrivateMessaging.test.ts +158 -0
  95. package/test/privacyBridge/UnifiedPrivacyBridges.test.cjs +1663 -0
  96. package/test/token/PrivateERC20/PrivacyBridge.fees.test.ts +250 -0
  97. package/test/token/PrivateERC20/PrivateERC20.test.ts +1109 -268
  98. package/test/utils/mpc/Bitwise128.test.ts +92 -0
  99. package/test/utils/mpc/Bitwise256.test.ts +101 -0
  100. package/test/utils/mpc/BuildInputText128.test.ts +398 -0
  101. package/test/utils/mpc/CheckedArithmetic128.test.ts +45 -0
  102. package/test/utils/mpc/CheckedArithmetic256.test.ts +45 -0
  103. package/test/utils/mpc/Comparison128.test.ts +48 -0
  104. package/test/utils/mpc/Comparison256.test.ts +48 -0
  105. package/test/utils/mpc/InvalidCiphertext.test.ts +179 -0
  106. package/test/utils/mpc/InvalidCiphertext128.test.ts +179 -0
  107. package/test/utils/mpc/InvalidCiphertext256.test.ts +201 -0
  108. package/test/utils/mpc/InvalidTransfer128.test.ts +166 -0
  109. package/test/utils/mpc/InvalidTransfer256.test.ts +158 -0
  110. package/test/utils/mpc/MinMax128.test.ts +44 -0
  111. package/test/utils/mpc/MinMax256.test.ts +44 -0
  112. package/test/utils/mpc/MinimalProxyDemo.test.ts +280 -0
  113. package/test/utils/mpc/MpcOperations.test.ts +589 -0
  114. package/test/utils/mpc/MpcOperations128.test.ts +632 -0
  115. package/test/utils/mpc/Mux128.test.ts +41 -0
  116. package/test/utils/mpc/Mux256.test.ts +41 -0
  117. package/test/utils/mpc/NegativeCases.test.ts +478 -0
  118. package/test/utils/mpc/NegativeCases128.test.ts +237 -0
  119. package/test/utils/mpc/NegativeCases256.test.ts +236 -0
  120. package/test/utils/mpc/OnBoard128.test.ts +90 -0
  121. package/test/utils/mpc/OnBoard256.test.ts +114 -0
  122. package/test/utils/mpc/Precompile128.test.ts +51 -0
  123. package/test/utils/mpc/Precompile256.test.ts +115 -0
  124. package/test/utils/mpc/ProxyValidation.test.ts +199 -0
  125. package/test/utils/mpc/Random128.test.ts +47 -0
  126. package/test/utils/mpc/Random256.test.ts +47 -0
  127. package/test/utils/mpc/Shift128.test.ts +41 -0
  128. package/test/utils/mpc/Shift256.test.ts +41 -0
  129. package/test/utils/mpc/Transfer128.test.ts +46 -0
  130. package/test/utils/mpc/Transfer256.test.ts +46 -0
  131. package/test/utils/mpc/TransferWithAllowance128.test.ts +48 -0
  132. package/test/utils/mpc/TransferWithAllowance256.test.ts +48 -0
  133. package/test/utils/mpc/UpgradeablePrivacyProxy.test.ts +307 -0
  134. package/test/utils/mpc/ValidateCiphertext.test.ts +221 -0
  135. package/test/utils/mpc/ValidateCiphertext256.test.ts +161 -0
  136. package/test/utils/mpc/ValidateCiphertext256Decryption.test.ts +383 -0
  137. package/test/utils/mpc/WalletEncryptionFailures.test.ts +494 -0
  138. package/test/utils/privateErc20Helpers.ts +97 -0
  139. package/typechain-types/@openzeppelin/contracts/access/AccessControl.ts +324 -0
  140. package/typechain-types/@openzeppelin/contracts/access/AccessControlEnumerable.ts +361 -0
  141. package/typechain-types/@openzeppelin/contracts/access/IAccessControl.ts +292 -0
  142. package/typechain-types/@openzeppelin/contracts/access/IAccessControlEnumerable.ts +329 -0
  143. package/typechain-types/@openzeppelin/contracts/access/Ownable.ts +153 -0
  144. package/typechain-types/@openzeppelin/contracts/access/index.ts +8 -0
  145. package/typechain-types/@openzeppelin/contracts/index.ts +4 -0
  146. package/typechain-types/@openzeppelin/contracts/security/Pausable.ts +150 -0
  147. package/typechain-types/@openzeppelin/contracts/security/index.ts +4 -0
  148. package/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts +330 -0
  149. package/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts +262 -0
  150. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts +286 -0
  151. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.ts +143 -0
  152. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +5 -0
  153. package/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts +7 -0
  154. package/typechain-types/@openzeppelin/contracts/token/ERC721/ERC721.ts +420 -0
  155. package/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.ts +420 -0
  156. package/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/index.ts +4 -0
  157. package/typechain-types/@openzeppelin/contracts/token/ERC721/index.ts +3 -0
  158. package/typechain-types/@openzeppelin/contracts/token/index.ts +2 -0
  159. package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperser.ts +679 -0
  160. package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1.ts +735 -0
  161. package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.ts +734 -0
  162. package/typechain-types/contracts/disperse/coinByRatio/index.ts +6 -0
  163. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/IMintableERC20.ts +97 -0
  164. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/IOwnable.ts +95 -0
  165. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser.ts +228 -0
  166. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +6 -0
  167. package/typechain-types/contracts/disperse/disperseToken/TokenDisperser.ts +191 -0
  168. package/typechain-types/contracts/disperse/disperseToken/index.ts +6 -0
  169. package/typechain-types/contracts/disperse/index.ts +7 -0
  170. package/typechain-types/contracts/index.ts +10 -0
  171. package/typechain-types/contracts/messaging/PrivateMessaging.ts +871 -0
  172. package/typechain-types/contracts/messaging/index.ts +4 -0
  173. package/typechain-types/contracts/mocks/index.ts +4 -0
  174. package/typechain-types/contracts/mocks/messaging/PrivateMessagingHarness.ts +951 -0
  175. package/typechain-types/contracts/mocks/messaging/index.ts +4 -0
  176. package/typechain-types/contracts/mocks/oracle/CotiPriceConsumerMock.ts +163 -0
  177. package/typechain-types/contracts/mocks/oracle/index.ts +4 -0
  178. package/typechain-types/contracts/mocks/token/ERC20DecimalsMock.ts +349 -0
  179. package/typechain-types/contracts/mocks/token/ERC20Mock.ts +368 -0
  180. package/typechain-types/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.ts +108 -0
  181. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.ts +1892 -0
  182. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.ts +1296 -0
  183. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.ts +1270 -0
  184. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock.ts +166 -0
  185. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.ts +827 -78
  186. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/IPrivateERC20TransferAndCallEncrypted.ts +102 -0
  187. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/PrivateERC20ReentrantReceiverMock.ts +154 -0
  188. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/index.ts +5 -0
  189. package/typechain-types/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.ts +155 -0
  190. package/typechain-types/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.ts +107 -0
  191. package/typechain-types/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.ts +100 -0
  192. package/typechain-types/contracts/mocks/token/PrivateERC20/index.ts +10 -0
  193. package/typechain-types/contracts/mocks/token/index.ts +2 -0
  194. package/typechain-types/contracts/mocks/utils/mpc/{Arithmetic128BitTestsContract.ts → Arithmetic128TestsContract.ts} +96 -126
  195. package/typechain-types/contracts/mocks/utils/mpc/{Arithmetic256BitTestsContract.ts → Arithmetic256TestsContract.ts} +97 -133
  196. package/typechain-types/contracts/mocks/utils/mpc/{Bitwise128BitTestsContract.ts → Bitwise128TestsContract.ts} +52 -59
  197. package/typechain-types/contracts/mocks/utils/mpc/{Bitwise256BitTestsContract.ts → Bitwise256TestsContract.ts} +52 -59
  198. package/typechain-types/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.ts +206 -0
  199. package/typechain-types/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.ts +206 -0
  200. package/typechain-types/contracts/mocks/utils/mpc/{Comparison128BitTestsContract.ts → Comparison128TestsContract.ts} +115 -97
  201. package/typechain-types/contracts/mocks/utils/mpc/{Comparison256BitTestsContract.ts → Comparison256TestsContract.ts} +115 -97
  202. package/typechain-types/contracts/mocks/utils/mpc/MinMax128TestsContract.ts +142 -0
  203. package/typechain-types/contracts/mocks/utils/mpc/MinMax256TestsContract.ts +142 -0
  204. package/typechain-types/contracts/mocks/utils/mpc/MinimalImplementation.ts +259 -0
  205. package/typechain-types/contracts/mocks/utils/mpc/MinimalProxy.ts +90 -0
  206. package/typechain-types/contracts/mocks/utils/mpc/MpcOperations128TestContract.ts +388 -0
  207. package/typechain-types/contracts/mocks/utils/mpc/MpcOperationsTestContract.ts +455 -0
  208. package/typechain-types/contracts/mocks/utils/mpc/Mux128TestsContract.ts +109 -0
  209. package/typechain-types/contracts/mocks/utils/mpc/Mux256TestsContract.ts +109 -0
  210. package/typechain-types/contracts/mocks/utils/mpc/OnBoard128TestsContract.ts +166 -0
  211. package/typechain-types/contracts/mocks/utils/mpc/OnBoard256TestsContract.ts +194 -0
  212. package/typechain-types/contracts/mocks/utils/mpc/PrivacyImplementationV1.ts +385 -0
  213. package/typechain-types/contracts/mocks/utils/mpc/PrivacyImplementationV2.ts +441 -0
  214. package/typechain-types/contracts/mocks/utils/mpc/PrivacyProxy.ts +201 -0
  215. package/typechain-types/contracts/mocks/utils/mpc/Random128TestsContract.ts +131 -0
  216. package/typechain-types/contracts/mocks/utils/mpc/Random256TestsContract.ts +131 -0
  217. package/typechain-types/contracts/mocks/utils/mpc/Shift128TestsContract.ts +142 -0
  218. package/typechain-types/contracts/mocks/utils/mpc/Shift256TestsContract.ts +142 -0
  219. package/typechain-types/contracts/mocks/utils/mpc/Transfer128TestsContract.ts +109 -0
  220. package/typechain-types/contracts/mocks/utils/mpc/Transfer256TestsContract.ts +109 -0
  221. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.ts +128 -0
  222. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.ts +128 -0
  223. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.ts +198 -0
  224. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.ts +182 -0
  225. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.ts +257 -0
  226. package/typechain-types/contracts/mocks/utils/mpc/index.ts +32 -8
  227. package/typechain-types/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.ts +6 -6
  228. package/typechain-types/contracts/node/CotiNodeRewards.ts +566 -0
  229. package/typechain-types/contracts/node/SoulboundNodeNFT.sol/IERC5192.ts +123 -0
  230. package/typechain-types/contracts/node/SoulboundNodeNFT.sol/SoulboundNodeNFT.ts +975 -0
  231. package/typechain-types/contracts/node/SoulboundNodeNFT.sol/index.ts +5 -0
  232. package/typechain-types/contracts/node/index.ts +6 -0
  233. package/typechain-types/contracts/oracle/CotiPriceConsumer.ts +256 -0
  234. package/typechain-types/contracts/oracle/ICotiPriceConsumer.ts +119 -0
  235. package/typechain-types/contracts/oracle/IStdReference.ts +136 -0
  236. package/typechain-types/contracts/oracle/index.ts +6 -0
  237. package/typechain-types/contracts/privacyBridge/PrivacyBridge.ts +1628 -0
  238. package/typechain-types/contracts/privacyBridge/PrivacyBridgeCotiNative.ts +1870 -0
  239. package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/IHasDecimals.ts +84 -0
  240. package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20.ts +1892 -0
  241. package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/index.ts +5 -0
  242. package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDCe.ts +1892 -0
  243. package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDT.ts +1892 -0
  244. package/typechain-types/contracts/privacyBridge/PrivacyBridgeWADA.ts +1892 -0
  245. package/typechain-types/contracts/privacyBridge/PrivacyBridgeWBTC.ts +1892 -0
  246. package/typechain-types/contracts/privacyBridge/PrivacyBridgeWETH.ts +1892 -0
  247. package/typechain-types/contracts/privacyBridge/PrivacyBridgegCoti.ts +1892 -0
  248. package/typechain-types/contracts/privacyBridge/index.ts +13 -0
  249. package/typechain-types/contracts/token/PrivateERC20/IPrivateERC20.ts +507 -70
  250. package/typechain-types/contracts/token/PrivateERC20/ITokenReceiver.ts +100 -0
  251. package/typechain-types/contracts/token/PrivateERC20/ITokenReceiverEncrypted.ts +99 -0
  252. package/typechain-types/contracts/token/PrivateERC20/PrivateERC20.ts +833 -68
  253. package/typechain-types/contracts/token/PrivateERC20/index.ts +4 -0
  254. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.ts +1270 -0
  255. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTI.ts +1270 -0
  256. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.ts +1270 -0
  257. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.ts +1270 -0
  258. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.ts +1270 -0
  259. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.ts +1270 -0
  260. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.ts +1270 -0
  261. package/typechain-types/contracts/token/PrivateERC20/tokens/index.ts +10 -0
  262. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +111 -10
  263. package/typechain-types/factories/@openzeppelin/contracts/access/AccessControlEnumerable__factory.ts +276 -0
  264. package/typechain-types/factories/@openzeppelin/contracts/access/AccessControl__factory.ts +229 -0
  265. package/typechain-types/factories/@openzeppelin/contracts/access/IAccessControlEnumerable__factory.ts +244 -0
  266. package/typechain-types/factories/@openzeppelin/contracts/access/IAccessControl__factory.ts +197 -0
  267. package/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +74 -0
  268. package/typechain-types/factories/@openzeppelin/contracts/access/index.ts +8 -0
  269. package/typechain-types/factories/@openzeppelin/contracts/index.ts +2 -0
  270. package/typechain-types/factories/@openzeppelin/contracts/security/Pausable__factory.ts +61 -0
  271. package/typechain-types/factories/@openzeppelin/contracts/security/index.ts +4 -0
  272. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +356 -0
  273. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +205 -0
  274. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts +247 -0
  275. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit__factory.ts +100 -0
  276. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +5 -0
  277. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts +6 -0
  278. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/ERC721__factory.ts +416 -0
  279. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata__factory.ts +355 -0
  280. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/index.ts +4 -0
  281. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/index.ts +2 -0
  282. package/typechain-types/factories/@openzeppelin/contracts/token/index.ts +1 -0
  283. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1__factory.ts +791 -0
  284. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow__factory.ts +711 -0
  285. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperser__factory.ts +759 -0
  286. package/typechain-types/factories/contracts/disperse/coinByRatio/index.ts +6 -0
  287. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/IMintableERC20__factory.ts +43 -0
  288. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/IOwnable__factory.ts +35 -0
  289. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser__factory.ts +203 -0
  290. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +6 -0
  291. package/typechain-types/factories/contracts/disperse/disperseToken/TokenDisperser__factory.ts +198 -0
  292. package/typechain-types/factories/contracts/disperse/disperseToken/index.ts +5 -0
  293. package/typechain-types/factories/contracts/disperse/index.ts +5 -0
  294. package/typechain-types/factories/contracts/index.ts +5 -0
  295. package/typechain-types/factories/contracts/messaging/PrivateMessaging__factory.ts +1035 -0
  296. package/typechain-types/factories/contracts/messaging/index.ts +4 -0
  297. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
  298. package/typechain-types/factories/contracts/mocks/index.ts +2 -0
  299. package/typechain-types/factories/contracts/mocks/messaging/PrivateMessagingHarness__factory.ts +1161 -0
  300. package/typechain-types/factories/contracts/mocks/messaging/index.ts +4 -0
  301. package/typechain-types/factories/contracts/mocks/oracle/CotiPriceConsumerMock__factory.ts +159 -0
  302. package/typechain-types/factories/contracts/mocks/oracle/index.ts +4 -0
  303. package/typechain-types/factories/contracts/mocks/token/ERC20DecimalsMock__factory.ts +394 -0
  304. package/typechain-types/factories/contracts/mocks/token/ERC20Mock__factory.ts +392 -0
  305. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock__factory.ts +125 -0
  306. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock__factory.ts +1797 -0
  307. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock__factory.ts +1514 -0
  308. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock__factory.ts +1466 -0
  309. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock__factory.ts +165 -0
  310. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +975 -127
  311. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/IPrivateERC20TransferAndCallEncrypted__factory.ts +54 -0
  312. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/PrivateERC20ReentrantReceiverMock__factory.ts +159 -0
  313. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/index.ts +5 -0
  314. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock__factory.ts +164 -0
  315. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock__factory.ts +130 -0
  316. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock__factory.ts +102 -0
  317. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/index.ts +9 -0
  318. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
  319. package/typechain-types/factories/contracts/mocks/token/index.ts +2 -0
  320. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128TestsContract__factory.ts +330 -0
  321. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256TestsContract__factory.ts +330 -0
  322. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +1 -1
  323. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128TestsContract__factory.ts +184 -0
  324. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256TestsContract__factory.ts +184 -0
  325. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +1 -1
  326. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract__factory.ts +203 -0
  327. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract__factory.ts +203 -0
  328. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol/CheckedArithmeticWithOverflowBitTestsContract__factory.ts +1 -1
  329. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128TestsContract__factory.ts +295 -0
  330. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
  331. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256TestsContract__factory.ts +295 -0
  332. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +1 -1
  333. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax128TestsContract__factory.ts +147 -0
  334. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax256TestsContract__factory.ts +147 -0
  335. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
  336. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalImplementation__factory.ts +263 -0
  337. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalProxy__factory.ts +104 -0
  338. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
  339. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
  340. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperations128TestContract__factory.ts +723 -0
  341. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperationsTestContract__factory.ts +1410 -0
  342. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux128TestsContract__factory.ts +115 -0
  343. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux256TestsContract__factory.ts +115 -0
  344. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +1 -1
  345. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard128TestsContract__factory.ts +175 -0
  346. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard256TestsContract__factory.ts +205 -0
  347. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV1__factory.ts +521 -0
  348. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV2__factory.ts +648 -0
  349. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyProxy__factory.ts +179 -0
  350. package/typechain-types/factories/contracts/mocks/utils/mpc/Random128TestsContract__factory.ts +131 -0
  351. package/typechain-types/factories/contracts/mocks/utils/mpc/Random256TestsContract__factory.ts +131 -0
  352. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift128TestsContract__factory.ts +147 -0
  353. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift256TestsContract__factory.ts +147 -0
  354. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  355. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  356. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer128TestsContract__factory.ts +135 -0
  357. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer256TestsContract__factory.ts +135 -0
  358. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
  359. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
  360. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract__factory.ts +154 -0
  361. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract__factory.ts +154 -0
  362. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +1 -1
  363. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +1 -1
  364. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +1 -1
  365. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +1 -1
  366. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +1 -1
  367. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +1 -1
  368. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract__factory.ts +190 -0
  369. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract__factory.ts +210 -0
  370. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract__factory.ts +260 -0
  371. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +32 -8
  372. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +10 -28
  373. package/typechain-types/factories/contracts/node/CotiNodeRewards__factory.ts +549 -0
  374. package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/IERC5192__factory.ts +54 -0
  375. package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/SoulboundNodeNFT__factory.ts +947 -0
  376. package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/index.ts +5 -0
  377. package/typechain-types/factories/contracts/node/index.ts +5 -0
  378. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +1 -1
  379. package/typechain-types/factories/contracts/oracle/CotiPriceConsumer__factory.ts +295 -0
  380. package/typechain-types/factories/contracts/oracle/ICotiPriceConsumer__factory.ts +73 -0
  381. package/typechain-types/factories/contracts/oracle/IStdReference__factory.ts +107 -0
  382. package/typechain-types/factories/contracts/oracle/index.ts +6 -0
  383. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeCotiNative__factory.ts +1676 -0
  384. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/IHasDecimals__factory.ts +38 -0
  385. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20__factory.ts +1678 -0
  386. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/index.ts +5 -0
  387. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDCe__factory.ts +1782 -0
  388. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDT__factory.ts +1782 -0
  389. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWADA__factory.ts +1782 -0
  390. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWBTC__factory.ts +1782 -0
  391. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWETH__factory.ts +1782 -0
  392. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridge__factory.ts +1367 -0
  393. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgegCoti__factory.ts +1782 -0
  394. package/typechain-types/factories/contracts/privacyBridge/index.ts +12 -0
  395. package/typechain-types/factories/contracts/token/PrivateERC20/IPrivateERC20__factory.ts +639 -61
  396. package/typechain-types/factories/contracts/token/PrivateERC20/ITokenReceiverEncrypted__factory.ts +53 -0
  397. package/typechain-types/factories/contracts/token/PrivateERC20/ITokenReceiver__factory.ts +54 -0
  398. package/typechain-types/factories/contracts/token/PrivateERC20/PrivateERC20__factory.ts +986 -120
  399. package/typechain-types/factories/contracts/token/PrivateERC20/index.ts +3 -0
  400. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC__factory.ts +1445 -0
  401. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken__factory.ts +1451 -0
  402. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTI__factory.ts +1442 -0
  403. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateTetherUSD__factory.ts +1445 -0
  404. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedADA__factory.ts +1445 -0
  405. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC__factory.ts +1445 -0
  406. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedEther__factory.ts +1451 -0
  407. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/index.ts +10 -0
  408. package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +1 -1
  409. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +126 -0
  410. package/typechain-types/hardhat.d.ts +1772 -278
  411. package/typechain-types/index.ts +182 -16
  412. package/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract.sol +0 -260
  413. package/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract.sol +0 -264
  414. package/contracts/mocks/utils/mpc/Bitwise128BitTestsContract.sol +0 -91
  415. package/contracts/mocks/utils/mpc/Bitwise256BitTestsContract.sol +0 -91
  416. package/contracts/mocks/utils/mpc/Comparison128BitTestsContract.sol +0 -158
  417. package/contracts/mocks/utils/mpc/Comparison256BitTestsContract.sol +0 -158
  418. package/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.sol +0 -185
  419. package/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.sol +0 -190
  420. package/contracts/mocks/utils/mpc/README.md +0 -486
  421. package/test/utils/mpc/Unsigned128BitIntegers.test.ts +0 -945
  422. package/test/utils/mpc/Unsigned256BitIntegers.test.ts +0 -1124
  423. package/test/utils/mpc/helpers.ts +0 -77
  424. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.ts +0 -302
  425. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.ts +0 -322
  426. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract__factory.ts +0 -349
  427. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract__factory.ts +0 -364
  428. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128BitTestsContract__factory.ts +0 -182
  429. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256BitTestsContract__factory.ts +0 -182
  430. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128BitTestsContract__factory.ts +0 -255
  431. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256BitTestsContract__factory.ts +0 -255
  432. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract__factory.ts +0 -332
  433. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract__factory.ts +0 -380
@@ -0,0 +1,98 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.19;
3
+
4
+ import "../../../utils/mpc/MpcCore.sol";
5
+
6
+ contract Comparison128TestsContract {
7
+ bool eqResult;
8
+ bool neResult;
9
+ bool geResult;
10
+ bool gtResult;
11
+ bool leResult;
12
+ bool ltResult;
13
+
14
+ function getEqResult() public view returns (bool) {
15
+ return eqResult;
16
+ }
17
+
18
+ function getNeResult() public view returns (bool) {
19
+ return neResult;
20
+ }
21
+
22
+ function getGeResult() public view returns (bool) {
23
+ return geResult;
24
+ }
25
+
26
+ function getGtResult() public view returns (bool) {
27
+ return gtResult;
28
+ }
29
+
30
+ function getLeResult() public view returns (bool) {
31
+ return leResult;
32
+ }
33
+
34
+ function getLtResult() public view returns (bool) {
35
+ return ltResult;
36
+ }
37
+
38
+ function eqTest(uint128 a, uint128 b) public returns (bool) {
39
+ gtUint128 a128 = MpcCore.setPublic128(a);
40
+ gtUint128 b128 = MpcCore.setPublic128(b);
41
+
42
+ bool result = MpcCore.decrypt(MpcCore.eq(a128, b128));
43
+ eqResult = result;
44
+
45
+ return result;
46
+ }
47
+
48
+ function neTest(uint128 a, uint128 b) public returns (bool) {
49
+ gtUint128 a128 = MpcCore.setPublic128(a);
50
+ gtUint128 b128 = MpcCore.setPublic128(b);
51
+
52
+ bool result = MpcCore.decrypt(MpcCore.ne(a128, b128));
53
+ neResult = result;
54
+
55
+ return result;
56
+ }
57
+
58
+ function geTest(uint128 a, uint128 b) public returns (bool) {
59
+ gtUint128 a128 = MpcCore.setPublic128(a);
60
+ gtUint128 b128 = MpcCore.setPublic128(b);
61
+
62
+ bool result = MpcCore.decrypt(MpcCore.ge(a128, b128));
63
+ geResult = result;
64
+
65
+ return result;
66
+ }
67
+
68
+ function gtTest(uint128 a, uint128 b) public returns (bool) {
69
+ gtUint128 a128 = MpcCore.setPublic128(a);
70
+ gtUint128 b128 = MpcCore.setPublic128(b);
71
+
72
+ bool result = MpcCore.decrypt(MpcCore.gt(a128, b128));
73
+ gtResult = result;
74
+
75
+ return result;
76
+ }
77
+
78
+ function leTest(uint128 a, uint128 b) public returns (bool) {
79
+ gtUint128 a128 = MpcCore.setPublic128(a);
80
+ gtUint128 b128 = MpcCore.setPublic128(b);
81
+
82
+ bool result = MpcCore.decrypt(MpcCore.le(a128, b128));
83
+ leResult = result;
84
+
85
+ return result;
86
+ }
87
+
88
+ function ltTest(uint128 a, uint128 b) public returns (bool) {
89
+ gtUint128 a128 = MpcCore.setPublic128(a);
90
+ gtUint128 b128 = MpcCore.setPublic128(b);
91
+
92
+ bool result = MpcCore.decrypt(MpcCore.lt(a128, b128));
93
+ ltResult = result;
94
+
95
+ return result;
96
+ }
97
+ }
98
+
@@ -0,0 +1,98 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.19;
3
+
4
+ import "../../../utils/mpc/MpcCore.sol";
5
+
6
+ contract Comparison256TestsContract {
7
+ bool eqResult;
8
+ bool neResult;
9
+ bool geResult;
10
+ bool gtResult;
11
+ bool leResult;
12
+ bool ltResult;
13
+
14
+ function getEqResult() public view returns (bool) {
15
+ return eqResult;
16
+ }
17
+
18
+ function getNeResult() public view returns (bool) {
19
+ return neResult;
20
+ }
21
+
22
+ function getGeResult() public view returns (bool) {
23
+ return geResult;
24
+ }
25
+
26
+ function getGtResult() public view returns (bool) {
27
+ return gtResult;
28
+ }
29
+
30
+ function getLeResult() public view returns (bool) {
31
+ return leResult;
32
+ }
33
+
34
+ function getLtResult() public view returns (bool) {
35
+ return ltResult;
36
+ }
37
+
38
+ function eqTest(uint256 a, uint256 b) public returns (bool) {
39
+ gtUint256 a256 = MpcCore.setPublic256(a);
40
+ gtUint256 b256 = MpcCore.setPublic256(b);
41
+
42
+ bool result = MpcCore.decrypt(MpcCore.eq(a256, b256));
43
+ eqResult = result;
44
+
45
+ return result;
46
+ }
47
+
48
+ function neTest(uint256 a, uint256 b) public returns (bool) {
49
+ gtUint256 a256 = MpcCore.setPublic256(a);
50
+ gtUint256 b256 = MpcCore.setPublic256(b);
51
+
52
+ bool result = MpcCore.decrypt(MpcCore.ne(a256, b256));
53
+ neResult = result;
54
+
55
+ return result;
56
+ }
57
+
58
+ function geTest(uint256 a, uint256 b) public returns (bool) {
59
+ gtUint256 a256 = MpcCore.setPublic256(a);
60
+ gtUint256 b256 = MpcCore.setPublic256(b);
61
+
62
+ bool result = MpcCore.decrypt(MpcCore.ge(a256, b256));
63
+ geResult = result;
64
+
65
+ return result;
66
+ }
67
+
68
+ function gtTest(uint256 a, uint256 b) public returns (bool) {
69
+ gtUint256 a256 = MpcCore.setPublic256(a);
70
+ gtUint256 b256 = MpcCore.setPublic256(b);
71
+
72
+ bool result = MpcCore.decrypt(MpcCore.gt(a256, b256));
73
+ gtResult = result;
74
+
75
+ return result;
76
+ }
77
+
78
+ function leTest(uint256 a, uint256 b) public returns (bool) {
79
+ gtUint256 a256 = MpcCore.setPublic256(a);
80
+ gtUint256 b256 = MpcCore.setPublic256(b);
81
+
82
+ bool result = MpcCore.decrypt(MpcCore.le(a256, b256));
83
+ leResult = result;
84
+
85
+ return result;
86
+ }
87
+
88
+ function ltTest(uint256 a, uint256 b) public returns (bool) {
89
+ gtUint256 a256 = MpcCore.setPublic256(a);
90
+ gtUint256 b256 = MpcCore.setPublic256(b);
91
+
92
+ bool result = MpcCore.decrypt(MpcCore.lt(a256, b256));
93
+ ltResult = result;
94
+
95
+ return result;
96
+ }
97
+ }
98
+
@@ -0,0 +1,44 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.19;
3
+
4
+ import "../../../utils/mpc/MpcCore.sol";
5
+
6
+ contract MinMax128TestsContract {
7
+ uint128 minResult;
8
+ uint128 maxResult;
9
+
10
+ function getMinResult() public view returns (uint128) {
11
+ return minResult;
12
+ }
13
+
14
+ function getMaxResult() public view returns (uint128) {
15
+ return maxResult;
16
+ }
17
+
18
+ function minTest(uint128 a, uint128 b) public returns (uint128) {
19
+ gtUint128 a128 = MpcCore.setPublic128(a);
20
+ gtUint128 b128 = MpcCore.setPublic128(b);
21
+
22
+ uint128 result = uint128(MpcCore.decrypt(MpcCore.min(a128, b128)));
23
+ minResult = result;
24
+
25
+ require(result == uint128(MpcCore.decrypt(MpcCore.min(a, b128))), "minTest: scalar failed");
26
+ require(result == uint128(MpcCore.decrypt(MpcCore.min(a128, b))), "minTest: scalar failed");
27
+
28
+ return result;
29
+ }
30
+
31
+ function maxTest(uint128 a, uint128 b) public returns (uint128) {
32
+ gtUint128 a128 = MpcCore.setPublic128(a);
33
+ gtUint128 b128 = MpcCore.setPublic128(b);
34
+
35
+ uint128 result = uint128(MpcCore.decrypt(MpcCore.max(a128, b128)));
36
+ maxResult = result;
37
+
38
+ require(result == uint128(MpcCore.decrypt(MpcCore.max(a, b128))), "maxTest: scalar failed");
39
+ require(result == uint128(MpcCore.decrypt(MpcCore.max(a128, b))), "maxTest: scalar failed");
40
+
41
+ return result;
42
+ }
43
+ }
44
+
@@ -0,0 +1,44 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.19;
3
+
4
+ import "../../../utils/mpc/MpcCore.sol";
5
+
6
+ contract MinMax256TestsContract {
7
+ uint256 minResult;
8
+ uint256 maxResult;
9
+
10
+ function getMinResult() public view returns (uint256) {
11
+ return minResult;
12
+ }
13
+
14
+ function getMaxResult() public view returns (uint256) {
15
+ return maxResult;
16
+ }
17
+
18
+ function minTest(uint256 a, uint256 b) public returns (uint256) {
19
+ gtUint256 a256 = MpcCore.setPublic256(a);
20
+ gtUint256 b256 = MpcCore.setPublic256(b);
21
+
22
+ uint256 result = MpcCore.decrypt(MpcCore.min(a256, b256));
23
+ minResult = result;
24
+
25
+ require(result == MpcCore.decrypt(MpcCore.min(a, b256)), "minTest: scalar failed");
26
+ require(result == MpcCore.decrypt(MpcCore.min(a256, b)), "minTest: scalar failed");
27
+
28
+ return result;
29
+ }
30
+
31
+ function maxTest(uint256 a, uint256 b) public returns (uint256) {
32
+ gtUint256 a256 = MpcCore.setPublic256(a);
33
+ gtUint256 b256 = MpcCore.setPublic256(b);
34
+
35
+ uint256 result = MpcCore.decrypt(MpcCore.max(a256, b256));
36
+ maxResult = result;
37
+
38
+ require(result == MpcCore.decrypt(MpcCore.max(a, b256)), "maxTest: scalar failed");
39
+ require(result == MpcCore.decrypt(MpcCore.max(a256, b)), "maxTest: scalar failed");
40
+
41
+ return result;
42
+ }
43
+ }
44
+
@@ -0,0 +1,55 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.19;
3
+
4
+ import "../../../utils/mpc/MpcCore.sol";
5
+
6
+ /**
7
+ * @title MinimalImplementation
8
+ * @notice Test IT-type validation and offBoardToUser with large numbers
9
+ */
10
+ contract MinimalImplementation {
11
+
12
+ // Storage for encrypted result (ctUint256 offBoarded to user)
13
+ mapping(address => ctUint256) public storedCtResult;
14
+
15
+ event InputsReceived(address indexed user, string message);
16
+ event CalculationDone(address indexed user, string operation);
17
+ event ResultStored(address indexed user, string message);
18
+
19
+ /**
20
+ * Simple addition test with offBoardToUser storage
21
+ * Flow: IT → validate → GT → add → GT → offBoardToUser → CT → store
22
+ */
23
+ function addAndStore(itUint256 calldata a, itUint256 calldata b) external returns (ctUint256 memory) {
24
+ emit InputsReceived(msg.sender, "Received encrypted inputs");
25
+
26
+ // Step 1: Validate IT-types (offchain encrypted) → GT-types (onchain encrypted)
27
+ gtUint256 gtA = MpcCore.validateCiphertext(a);
28
+ gtUint256 gtB = MpcCore.validateCiphertext(b);
29
+
30
+ emit CalculationDone(msg.sender, "Validated ciphertexts");
31
+
32
+ // Step 2: Add (onchain computation on encrypted values)
33
+ gtUint256 gtResult = MpcCore.add(gtA, gtB);
34
+
35
+ emit CalculationDone(msg.sender, "Addition completed");
36
+
37
+ // Step 3: OffBoard to user (GT → CT for user to decrypt)
38
+ ctUint256 memory ctResult = MpcCore.offBoardToUser(gtResult, msg.sender);
39
+
40
+ // Step 4: Store the CT result
41
+ storedCtResult[msg.sender] = ctResult;
42
+
43
+ emit ResultStored(msg.sender, "Result stored as ctUint256");
44
+
45
+ return ctResult;
46
+ }
47
+
48
+ /**
49
+ * Read stored result from storage
50
+ */
51
+ function getStoredResult() external view returns (ctUint256 memory) {
52
+ return storedCtResult[msg.sender];
53
+ }
54
+ }
55
+
@@ -0,0 +1,27 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.19;
3
+
4
+ /**
5
+ * @title MinimalProxy
6
+ * @notice Minimal proxy to demonstrate IT-type validation issue
7
+ */
8
+ contract MinimalProxy {
9
+ address public implementation;
10
+
11
+ constructor(address _implementation) {
12
+ implementation = _implementation;
13
+ }
14
+
15
+ fallback() external payable {
16
+ address impl = implementation;
17
+ assembly {
18
+ calldatacopy(0, 0, calldatasize())
19
+ let result := delegatecall(gas(), impl, 0, calldatasize(), 0, 0)
20
+ returndatacopy(0, 0, returndatasize())
21
+ switch result
22
+ case 0 { revert(0, returndatasize()) }
23
+ default { return(0, returndatasize()) }
24
+ }
25
+ }
26
+ }
27
+
@@ -0,0 +1,267 @@
1
+ // SPDX-License-Identifier: MIT
2
+ pragma solidity ^0.8.19;
3
+
4
+ import "../../../utils/mpc/MpcCore.sol";
5
+
6
+ /**
7
+ * @title MpcOperations128TestContract
8
+ * @dev Contract to test uint128 MPC operations with offBoardToUser functionality
9
+ * This allows users to decrypt the results of operations performed on encrypted uint128 values
10
+ */
11
+ contract MpcOperations128TestContract {
12
+
13
+ // Events for tracking operations
14
+ event OperationPerformed(string operation, address indexed user);
15
+ event ValueOffBoarded128(address indexed user, ctUint128 result);
16
+
17
+ /**
18
+ * @dev Add two encrypted 128-bit values and return result encrypted for user
19
+ * @param a First encrypted value (itUint128)
20
+ * @param b Second encrypted value (itUint128)
21
+ * @param user Address to encrypt result for
22
+ * @return Result encrypted for the user (ctUint128)
23
+ */
24
+ function add128(itUint128 memory a, itUint128 memory b, address user) public returns (ctUint128) {
25
+ gtUint128 gtA = MpcCore.validateCiphertext(a);
26
+ gtUint128 gtB = MpcCore.validateCiphertext(b);
27
+
28
+ gtUint128 result = MpcCore.add(gtA, gtB);
29
+
30
+ ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
31
+
32
+ emit OperationPerformed("add128", user);
33
+ emit ValueOffBoarded128(user, ctResult);
34
+
35
+ return ctResult;
36
+ }
37
+
38
+ /**
39
+ * @dev Subtract two encrypted 128-bit values and return result encrypted for user
40
+ * @param a First encrypted value (itUint128)
41
+ * @param b Second encrypted value (itUint128)
42
+ * @param user Address to encrypt result for
43
+ * @return Result encrypted for the user (ctUint128)
44
+ */
45
+ function sub128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
46
+ gtUint128 gtA = MpcCore.validateCiphertext(a);
47
+ gtUint128 gtB = MpcCore.validateCiphertext(b);
48
+
49
+ gtUint128 result = MpcCore.sub(gtA, gtB);
50
+
51
+ ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
52
+
53
+ emit OperationPerformed("sub128", user);
54
+ emit ValueOffBoarded128(user, ctResult);
55
+
56
+ return ctResult;
57
+ }
58
+
59
+ /**
60
+ * @dev Multiply two encrypted 128-bit values and return result encrypted for user
61
+ * @param a First encrypted value (itUint128)
62
+ * @param b Second encrypted value (itUint128)
63
+ * @param user Address to encrypt result for
64
+ * @return Result encrypted for the user (ctUint128)
65
+ */
66
+ function mul128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
67
+ gtUint128 gtA = MpcCore.validateCiphertext(a);
68
+ gtUint128 gtB = MpcCore.validateCiphertext(b);
69
+
70
+ gtUint128 result = MpcCore.mul(gtA, gtB);
71
+
72
+ ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
73
+
74
+ emit OperationPerformed("mul128", user);
75
+ emit ValueOffBoarded128(user, ctResult);
76
+
77
+ return ctResult;
78
+ }
79
+
80
+ /**
81
+ * @dev Divide two encrypted 128-bit values and return result encrypted for user
82
+ * @param a First encrypted value (itUint128)
83
+ * @param b Second encrypted value (itUint128)
84
+ * @param user Address to encrypt result for
85
+ * @return Result encrypted for the user (ctUint128)
86
+ */
87
+ function div128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
88
+ gtUint128 gtA = MpcCore.validateCiphertext(a);
89
+ gtUint128 gtB = MpcCore.validateCiphertext(b);
90
+
91
+ gtUint128 result = MpcCore.div(gtA, gtB);
92
+
93
+ ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
94
+
95
+ emit OperationPerformed("div128", user);
96
+ emit ValueOffBoarded128(user, ctResult);
97
+
98
+ return ctResult;
99
+ }
100
+
101
+ /**
102
+ * @dev Get remainder of division and return result encrypted for user
103
+ * @param a First encrypted value (itUint128)
104
+ * @param b Second encrypted value (itUint128)
105
+ * @param user Address to encrypt result for
106
+ * @return Result encrypted for the user (ctUint128)
107
+ */
108
+ function rem128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
109
+ gtUint128 gtA = MpcCore.validateCiphertext(a);
110
+ gtUint128 gtB = MpcCore.validateCiphertext(b);
111
+
112
+ gtUint128 result = MpcCore.rem(gtA, gtB);
113
+
114
+ ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
115
+
116
+ emit OperationPerformed("rem128", user);
117
+ emit ValueOffBoarded128(user, ctResult);
118
+
119
+ return ctResult;
120
+ }
121
+
122
+ /**
123
+ * @dev Perform AND operation on two encrypted 128-bit values
124
+ * @param a First encrypted value (itUint128)
125
+ * @param b Second encrypted value (itUint128)
126
+ * @param user Address to encrypt result for
127
+ * @return Result encrypted for the user (ctUint128)
128
+ */
129
+ function and128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
130
+ gtUint128 gtA = MpcCore.validateCiphertext(a);
131
+ gtUint128 gtB = MpcCore.validateCiphertext(b);
132
+
133
+ gtUint128 result = MpcCore.and(gtA, gtB);
134
+
135
+ ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
136
+
137
+ emit OperationPerformed("and128", user);
138
+ emit ValueOffBoarded128(user, ctResult);
139
+
140
+ return ctResult;
141
+ }
142
+
143
+ /**
144
+ * @dev Perform OR operation on two encrypted 128-bit values
145
+ * @param a First encrypted value (itUint128)
146
+ * @param b Second encrypted value (itUint128)
147
+ * @param user Address to encrypt result for
148
+ * @return Result encrypted for the user (ctUint128)
149
+ */
150
+ function or128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
151
+ gtUint128 gtA = MpcCore.validateCiphertext(a);
152
+ gtUint128 gtB = MpcCore.validateCiphertext(b);
153
+
154
+ gtUint128 result = MpcCore.or(gtA, gtB);
155
+
156
+ ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
157
+
158
+ emit OperationPerformed("or128", user);
159
+ emit ValueOffBoarded128(user, ctResult);
160
+
161
+ return ctResult;
162
+ }
163
+
164
+ /**
165
+ * @dev Perform XOR operation on two encrypted 128-bit values
166
+ * @param a First encrypted value (itUint128)
167
+ * @param b Second encrypted value (itUint128)
168
+ * @param user Address to encrypt result for
169
+ * @return Result encrypted for the user (ctUint128)
170
+ */
171
+ function xor128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
172
+ gtUint128 gtA = MpcCore.validateCiphertext(a);
173
+ gtUint128 gtB = MpcCore.validateCiphertext(b);
174
+
175
+ gtUint128 result = MpcCore.xor(gtA, gtB);
176
+
177
+ ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
178
+
179
+ emit OperationPerformed("xor128", user);
180
+ emit ValueOffBoarded128(user, ctResult);
181
+
182
+ return ctResult;
183
+ }
184
+
185
+ /**
186
+ * @dev Shift left operation on encrypted 128-bit value
187
+ * @param a Encrypted value to shift (itUint128)
188
+ * @param bits Number of bits to shift (plain, must be uint8)
189
+ * @param user Address to encrypt result for
190
+ * @return Result encrypted for the user (ctUint128)
191
+ */
192
+ function shl128(itUint128 calldata a, uint8 bits, address user) public returns (ctUint128) {
193
+ gtUint128 gtA = MpcCore.validateCiphertext(a);
194
+
195
+ gtUint128 result = MpcCore.shl(gtA, bits);
196
+
197
+ ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
198
+
199
+ emit OperationPerformed("shl128", user);
200
+ emit ValueOffBoarded128(user, ctResult);
201
+
202
+ return ctResult;
203
+ }
204
+
205
+ /**
206
+ * @dev Shift right operation on encrypted 128-bit value
207
+ * @param a Encrypted value to shift (itUint128)
208
+ * @param bits Number of bits to shift (plain, must be uint8)
209
+ * @param user Address to encrypt result for
210
+ * @return Result encrypted for the user (ctUint128)
211
+ */
212
+ function shr128(itUint128 calldata a, uint8 bits, address user) public returns (ctUint128) {
213
+ gtUint128 gtA = MpcCore.validateCiphertext(a);
214
+
215
+ gtUint128 result = MpcCore.shr(gtA, bits);
216
+
217
+ ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
218
+
219
+ emit OperationPerformed("shr128", user);
220
+ emit ValueOffBoarded128(user, ctResult);
221
+
222
+ return ctResult;
223
+ }
224
+
225
+ /**
226
+ * @dev Get minimum of two encrypted values
227
+ * @param a First encrypted value (itUint128)
228
+ * @param b Second encrypted value (itUint128)
229
+ * @param user Address to encrypt result for
230
+ * @return Result encrypted for the user (ctUint128)
231
+ */
232
+ function min128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
233
+ gtUint128 gtA = MpcCore.validateCiphertext(a);
234
+ gtUint128 gtB = MpcCore.validateCiphertext(b);
235
+
236
+ gtUint128 result = MpcCore.min(gtA, gtB);
237
+
238
+ ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
239
+
240
+ emit OperationPerformed("min128", user);
241
+ emit ValueOffBoarded128(user, ctResult);
242
+
243
+ return ctResult;
244
+ }
245
+
246
+ /**
247
+ * @dev Get maximum of two encrypted values
248
+ * @param a First encrypted value (itUint128)
249
+ * @param b Second encrypted value (itUint128)
250
+ * @param user Address to encrypt result for
251
+ * @return Result encrypted for the user (ctUint128)
252
+ */
253
+ function max128(itUint128 calldata a, itUint128 calldata b, address user) public returns (ctUint128) {
254
+ gtUint128 gtA = MpcCore.validateCiphertext(a);
255
+ gtUint128 gtB = MpcCore.validateCiphertext(b);
256
+
257
+ gtUint128 result = MpcCore.max(gtA, gtB);
258
+
259
+ ctUint128 ctResult = MpcCore.offBoardToUser(result, user);
260
+
261
+ emit OperationPerformed("max128", user);
262
+ emit ValueOffBoarded128(user, ctResult);
263
+
264
+ return ctResult;
265
+ }
266
+ }
267
+