@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
@@ -1,945 +0,0 @@
1
- import hre from "hardhat"
2
- import { expect } from "chai"
3
- import { setupAccounts } from "../accounts"
4
- import { decryptUint128, encryptUint128, generateRandomNumber } from "./helpers"
5
- import { ItUint128Struct } from "../../../typechain-types/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract"
6
-
7
-
8
- const MAX_UINT128 = BigInt('0xffffffffffffffffffffffffffffffff')
9
-
10
- async function deploy() {
11
- const [owner, otherAccount] = await setupAccounts()
12
-
13
- const extendedMiscellaneousTestsContract = await hre.ethers.getContractFactory("Miscellaneous128BitTestsContract")
14
- const extendedMiscellaneousTests = await extendedMiscellaneousTestsContract.connect(owner).deploy()
15
- await extendedMiscellaneousTests.waitForDeployment()
16
-
17
- const extendedArithmeticTestsContract = await hre.ethers.getContractFactory("Arithmetic128BitTestsContract")
18
- const extendedArithmeticTests = await extendedArithmeticTestsContract.connect(owner).deploy()
19
- await extendedArithmeticTests.waitForDeployment()
20
-
21
- const extendedBitwiseTestsContract = await hre.ethers.getContractFactory("Bitwise128BitTestsContract")
22
- const extendedBitwiseTests = await extendedBitwiseTestsContract.connect(owner).deploy()
23
- await extendedBitwiseTests.waitForDeployment()
24
-
25
- const extendedComparisonTestsContract = await hre.ethers.getContractFactory("Comparison128BitTestsContract")
26
- const extendedComparisonTests = await extendedComparisonTestsContract.connect(owner).deploy()
27
- await extendedComparisonTests.waitForDeployment()
28
-
29
- return { extendedMiscellaneousTests, extendedArithmeticTests, extendedBitwiseTests, extendedComparisonTests, owner }
30
- }
31
-
32
- describe("MPC Core", function () {
33
- let deployment: Awaited<ReturnType<typeof deploy>>
34
-
35
- before(async function () {
36
- deployment = await deploy()
37
- })
38
-
39
- describe("128-bit unsigned integers", function () {
40
- it("validateCiphertext", async function () {
41
- const { extendedMiscellaneousTests, owner } = deployment
42
-
43
- // Generate two arrays of 10 random 128-bit integers
44
- const numbers: bigint[] = []
45
- const encryptedNumbers: ItUint128Struct[] = []
46
-
47
- for (let i = 0; i < 100; i++) {
48
- // Generate random 128-bit integers
49
- const number = generateRandomNumber(16)
50
-
51
- numbers.push(number)
52
- encryptedNumbers.push(
53
- await encryptUint128(
54
- number,
55
- owner,
56
- await extendedMiscellaneousTests.getAddress(),
57
- extendedMiscellaneousTests.validateCiphertextTest.fragment.selector
58
- )
59
- )
60
- }
61
-
62
- // Call validateCiphertextTest with the array
63
- await (await extendedMiscellaneousTests.validateCiphertextTest(encryptedNumbers)).wait()
64
-
65
- // Verify results
66
- for (let i = 0; i < 100; i++) {
67
- const result = await extendedMiscellaneousTests.numbers(i)
68
- expect(result).to.equal(numbers[i])
69
- }
70
- })
71
-
72
- it("offBoardToUser", async function () {
73
- const { extendedMiscellaneousTests, owner } = deployment
74
-
75
- // Generate two arrays of 10 random 128-bit integers
76
- const numbers: bigint[] = []
77
-
78
- for (let i = 0; i < 100; i++) {
79
- // Generate random 128-bit integers
80
- numbers.push(generateRandomNumber(16))
81
- }
82
-
83
- // Call validateCiphertextTest with the array
84
- await (await extendedMiscellaneousTests.offBoardToUserTest(numbers)).wait()
85
-
86
- // Verify results
87
- for (let i = 0; i < 100; i++) {
88
- const ctNumber = await extendedMiscellaneousTests.ctNumbers(i)
89
-
90
- const result = await decryptUint128(ctNumber, owner)
91
-
92
- expect(result).to.equal(numbers[i])
93
- }
94
- })
95
-
96
- it("setPublic", async function () {
97
- const { extendedMiscellaneousTests } = deployment
98
-
99
- // Generate two arrays of 10 random 128-bit integers
100
- const numbers: bigint[] = []
101
-
102
- for (let i = 0; i < 100; i++) {
103
- // Generate random 128-bit integers
104
- numbers.push(generateRandomNumber(16))
105
- }
106
-
107
- // Call setPublicTest with the arrays
108
- await (await extendedMiscellaneousTests.setPublicTest(numbers)).wait()
109
-
110
- // Verify results
111
- for (let i = 0; i < 100; i++) {
112
- const result = await extendedMiscellaneousTests.numbers(i)
113
- expect(result).to.equal(numbers[i])
114
- }
115
- })
116
-
117
- it("rand", async function () {
118
- const { extendedMiscellaneousTests } = deployment
119
-
120
- const length: bigint = generateRandomNumber(1)
121
-
122
- // Call setPublicTest with the arrays
123
- await (await extendedMiscellaneousTests.randTest(length)).wait()
124
-
125
- // Verify results
126
- for (let i = 0; i < length; i++) {
127
- const result = await extendedMiscellaneousTests.numbers(i)
128
- expect(result).to.not.equal(0n)
129
- }
130
- })
131
-
132
- it("randBoundedBits", async function () {
133
- const { extendedMiscellaneousTests } = deployment
134
-
135
- // Generate an array of 10 random 8-bit integers
136
- const numbers: bigint[] = []
137
-
138
- while (numbers.length < 10) {
139
- // Generate random 8-bit integers
140
- const number = generateRandomNumber(1)
141
-
142
- if (number <= 128n) {
143
- numbers.push(number)
144
- }
145
- }
146
-
147
- // Call setPublicTest with the arrays
148
- await (await extendedMiscellaneousTests.randBoundedBitsTest(numbers)).wait()
149
-
150
- // Verify results
151
- for (let i = 0; i < 10; i++) {
152
- const result = await extendedMiscellaneousTests.numbers(i)
153
- expect(result).to.not.equal(0n)
154
- }
155
- })
156
-
157
- it("transfer", async function () {
158
- const { extendedMiscellaneousTests } = deployment
159
-
160
- // Generate two arrays of 10 random 128-bit integers
161
- const aArr: bigint[] = []
162
- const bArr: bigint[] = []
163
- const amountArr: bigint[] = []
164
- const newA: bigint[] = []
165
- const newB: bigint[] = []
166
- const successArr: boolean[] = []
167
-
168
- while (aArr.length < 100) {
169
- // Generate random 128-bit integers
170
-
171
- const a = generateRandomNumber(15)
172
- const b = generateRandomNumber(15)
173
- const amount = generateRandomNumber(15)
174
-
175
- if (b + amount > MAX_UINT128) continue
176
-
177
- aArr.push(a)
178
- bArr.push(b)
179
- amountArr.push(amount)
180
-
181
- const success = a >= amount
182
-
183
- newA.push(success ? a - amount : a)
184
- newB.push(success ? b + amount : b)
185
- successArr.push(success)
186
- }
187
-
188
- // Call transferTest with the arrays
189
- await (await extendedMiscellaneousTests.transferTest(aArr, bArr, amountArr)).wait()
190
-
191
- // Verify results
192
- for (let i = 0; i < 100; i++) {
193
- const a = await extendedMiscellaneousTests.a(i)
194
- const b = await extendedMiscellaneousTests.b(i)
195
- const success = await extendedMiscellaneousTests.success(i)
196
-
197
- expect(a).to.equal(newA[i])
198
- expect(b).to.equal(newB[i])
199
- expect(success).to.equal(successArr[i])
200
- }
201
- })
202
-
203
- it("transferWithAllowance", async function () {
204
- const { extendedMiscellaneousTests } = deployment
205
-
206
- // Generate two arrays of 10 random 128-bit integers
207
- const aArr: bigint[] = []
208
- const bArr: bigint[] = []
209
- const amountArr: bigint[] = []
210
- const allowanceArr: bigint[] = []
211
- const newA: bigint[] = []
212
- const newB: bigint[] = []
213
- const successArr: boolean[] = []
214
- const newAllowanceArr: bigint[] = []
215
-
216
- while (aArr.length < 50) {
217
- // Generate random 128-bit integers
218
-
219
- const a = generateRandomNumber(15)
220
- const b = generateRandomNumber(15)
221
- const amount = generateRandomNumber(15)
222
- const allowance = generateRandomNumber(15)
223
-
224
- if (b + amount > MAX_UINT128) continue
225
-
226
- aArr.push(a)
227
- bArr.push(b)
228
- amountArr.push(amount)
229
- allowanceArr.push(allowance)
230
-
231
- const success = a >= amount && amount <= allowance
232
-
233
- newA.push(success ? a - amount : a)
234
- newB.push(success ? b + amount : b)
235
- successArr.push(success)
236
- newAllowanceArr.push(success ? allowance - amount : allowance)
237
- }
238
-
239
- // Call transferWithAllowanceTest with the arrays
240
- await (await extendedMiscellaneousTests.transferWithAllowanceTest(aArr, bArr, amountArr, allowanceArr)).wait()
241
-
242
- // Verify results
243
- for (let i = 0; i < 50; i++) {
244
- const a = await extendedMiscellaneousTests.a(i)
245
- const b = await extendedMiscellaneousTests.b(i)
246
- const success = await extendedMiscellaneousTests.success(i)
247
- const allowance = await extendedMiscellaneousTests.allowance(i)
248
-
249
- expect(a).to.equal(newA[i])
250
- expect(b).to.equal(newB[i])
251
- expect(success).to.equal(successArr[i])
252
- expect(allowance).to.equal(newAllowanceArr[i])
253
- }
254
- })
255
-
256
- it("add", async function () {
257
- const { extendedArithmeticTests } = deployment
258
-
259
- // Generate two arrays of 10 random 128-bit integers
260
- const numbers1: bigint[] = []
261
- const numbers2: bigint[] = []
262
- const expectedResults: bigint[] = []
263
-
264
- for (let i = 0; i < 100; i++) {
265
- // Generate random 128-bit integers
266
- const num1 = generateRandomNumber(15)
267
- const num2 = generateRandomNumber(15)
268
-
269
- numbers1.push(num1)
270
- numbers2.push(num2)
271
- expectedResults.push(num1 + num2)
272
- }
273
-
274
- // Call addTest with the arrays
275
- await (await extendedArithmeticTests.addTest(numbers1, numbers2)).wait()
276
-
277
- // Verify results
278
- for (let i = 0; i < 100; i++) {
279
- const result = await extendedArithmeticTests.numbers(i)
280
- expect(result).to.equal(expectedResults[i])
281
- }
282
- })
283
-
284
- it("checkedAdd", async function () {
285
- const { extendedArithmeticTests, owner } = deployment
286
-
287
- for (let i = 0; i < 10; i++) {
288
- // Generate random 128-bit integers
289
- const num1 = generateRandomNumber(16)
290
- const num2 = generateRandomNumber(16)
291
-
292
- if (num1 + num2 <= MAX_UINT128) { // max uint128
293
- // Call checkedAddTest
294
- await (await extendedArithmeticTests.checkedAddTest(num1, num2)).wait()
295
-
296
- const result = await extendedArithmeticTests.numbers(0)
297
- expect(result).to.equal(num1 + num2)
298
- } else {
299
- // Expect revert
300
- const tx = await extendedArithmeticTests.checkedAddTest(num1, num2)
301
-
302
- try {
303
- await tx.wait()
304
- } catch (e) {
305
- const receipt = await owner.provider?.getTransactionReceipt(tx.hash)
306
- expect(receipt?.status).to.be.equal(0)
307
- }
308
- }
309
- }
310
- })
311
-
312
- it("checkedAddWithOverflowBit", async function () {
313
- const { extendedArithmeticTests } = deployment
314
-
315
- // Generate two arrays of 10 random 128-bit integers
316
- const numbers1: bigint[] = []
317
- const numbers2: bigint[] = []
318
- const expectedOverflows: boolean[] = []
319
- const expectedResults: bigint[] = []
320
-
321
- for (let i = 0; i < 50; i++) {
322
- // Generate random 128-bit integers
323
- const num1 = generateRandomNumber(16)
324
- const num2 = generateRandomNumber(16)
325
-
326
- numbers1.push(num1)
327
- numbers2.push(num2)
328
- expectedOverflows.push(num1 + num2 > MAX_UINT128)
329
- expectedResults.push(num1 + num2)
330
- }
331
-
332
- // Call checkedAddWithOverflowBitTest with the arrays
333
- await (await extendedArithmeticTests.checkedAddWithOverflowBitTest(numbers1, numbers2)).wait()
334
-
335
- // Verify results
336
- for (let i = 0; i < 50; i++) {
337
- const bit = await extendedArithmeticTests.overflows(i)
338
- const bitLHS = await extendedArithmeticTests.overflowsLHS(i)
339
- const bitRHS = await extendedArithmeticTests.overflowsRHS(i)
340
- const result = await extendedArithmeticTests.numbers(i)
341
- const resultLHS = await extendedArithmeticTests.numbersLHS(i)
342
- const resultRHS = await extendedArithmeticTests.numbersRHS(i)
343
-
344
- expect(bit).to.equal(expectedOverflows[i])
345
- expect(bitLHS).to.equal(expectedOverflows[i])
346
- expect(bitRHS).to.equal(expectedOverflows[i])
347
-
348
- if (bit) {
349
- expect(result).to.not.equal(expectedResults[i])
350
- expect(resultLHS).to.not.equal(expectedResults[i])
351
- expect(resultRHS).to.not.equal(expectedResults[i])
352
- } else {
353
- expect(result).to.equal(expectedResults[i])
354
- expect(resultLHS).to.equal(expectedResults[i])
355
- expect(resultRHS).to.equal(expectedResults[i])
356
- }
357
- }
358
- })
359
-
360
- it("sub", async function () {
361
- const { extendedArithmeticTests } = deployment
362
-
363
- // Generate two arrays of 10 random 128-bit integers
364
- const numbers1: bigint[] = []
365
- const numbers2: bigint[] = []
366
- const expectedResults: bigint[] = []
367
-
368
- for (let i = 0; i < 100; i++) {
369
- // Generate random 128-bit integers
370
- const num1 = generateRandomNumber(16)
371
- const num2 = generateRandomNumber(16)
372
-
373
- if (num1 >= num2) {
374
- numbers1.push(num1)
375
- numbers2.push(num2)
376
- expectedResults.push(num1 - num2)
377
- } else {
378
- numbers1.push(num2)
379
- numbers2.push(num1)
380
- expectedResults.push(num2 - num1)
381
- }
382
- }
383
-
384
- // Call subTest with the arrays
385
- await (await extendedArithmeticTests.subTest(numbers1, numbers2)).wait()
386
-
387
- // Verify results
388
- for (let i = 0; i < 100; i++) {
389
- const result = await extendedArithmeticTests.numbers(i)
390
- expect(result).to.equal(expectedResults[i])
391
- }
392
- })
393
-
394
- it("checkedSub", async function () {
395
- const { extendedArithmeticTests, owner } = deployment
396
-
397
- for (let i = 0; i < 10; i++) {
398
- // Generate random 128-bit integers
399
- const num1 = generateRandomNumber(16)
400
- const num2 = generateRandomNumber(16)
401
-
402
- if (num1 - num2 >= 0n) {
403
- // Call checkedSubTest
404
- await (await extendedArithmeticTests.checkedSubTest(num1, num2)).wait()
405
-
406
- const result = await extendedArithmeticTests.numbers(0)
407
- expect(result).to.equal(num1 - num2)
408
- } else {
409
- // Expect revert
410
- const tx = await extendedArithmeticTests.checkedSubTest(num1, num2)
411
-
412
- try {
413
- await tx.wait()
414
- } catch (e) {
415
- const receipt = await owner.provider?.getTransactionReceipt(tx.hash)
416
- expect(receipt?.status).to.be.equal(0)
417
- }
418
- }
419
- }
420
- })
421
-
422
- it("checkedSubWithOverflowBit", async function () {
423
- const { extendedArithmeticTests } = deployment
424
-
425
- // Generate two arrays of 10 random 128-bit integers
426
- const numbers1: bigint[] = []
427
- const numbers2: bigint[] = []
428
- const expectedOverflows: boolean[] = []
429
- const expectedResults: bigint[] = []
430
-
431
- for (let i = 0; i < 50; i++) {
432
- // Generate random 128-bit integers
433
- const num1 = generateRandomNumber(16)
434
- const num2 = generateRandomNumber(16)
435
-
436
- numbers1.push(num1)
437
- numbers2.push(num2)
438
- expectedOverflows.push(num1 - num2 < 0n)
439
- expectedResults.push(num1 - num2)
440
- }
441
-
442
- // Call checkedSubWithOverflowBitTest with the arrays
443
- await (await extendedArithmeticTests.checkedSubWithOverflowBitTest(numbers1, numbers2)).wait()
444
-
445
- // Verify results
446
- for (let i = 0; i < 50; i++) {
447
- const bit = await extendedArithmeticTests.overflows(i)
448
- const bitLHS = await extendedArithmeticTests.overflowsLHS(i)
449
- const bitRHS = await extendedArithmeticTests.overflowsRHS(i)
450
- const result = await extendedArithmeticTests.numbers(i)
451
- const resultLHS = await extendedArithmeticTests.numbersLHS(i)
452
- const resultRHS = await extendedArithmeticTests.numbersRHS(i)
453
-
454
- expect(bit).to.equal(expectedOverflows[i])
455
- expect(bitLHS).to.equal(expectedOverflows[i])
456
- expect(bitRHS).to.equal(expectedOverflows[i])
457
-
458
- if (bit) {
459
- expect(result).to.not.equal(expectedResults[i])
460
- expect(resultLHS).to.not.equal(expectedResults[i])
461
- expect(resultRHS).to.not.equal(expectedResults[i])
462
- } else {
463
- expect(result).to.equal(expectedResults[i])
464
- expect(resultLHS).to.equal(expectedResults[i])
465
- expect(resultRHS).to.equal(expectedResults[i])
466
- }
467
- }
468
- })
469
-
470
- it("mul", async function () {
471
- const { extendedArithmeticTests } = deployment
472
-
473
- // Generate two arrays of 10 random 128-bit integers
474
- const numbers1: bigint[] = []
475
- const numbers2: bigint[] = []
476
- const expectedResults: bigint[] = []
477
-
478
- while (numbers1.length < 3) {
479
- // Generate random 128-bit integers
480
- const num1 = generateRandomNumber(10)
481
- const num2 = generateRandomNumber(8)
482
-
483
- if (num1 * num2 > MAX_UINT128) continue
484
-
485
- numbers1.push(num1)
486
- numbers2.push(num2)
487
- expectedResults.push(num1 * num2)
488
- }
489
-
490
- // Call addTest with the arrays
491
- await (await extendedArithmeticTests.mulTest(numbers1, numbers2)).wait()
492
-
493
- // Verify results
494
- for (let i = 0; i < 3; i++) {
495
- const result = await extendedArithmeticTests.numbers(i)
496
-
497
- expect(result).to.equal(expectedResults[i])
498
- }
499
- })
500
-
501
- it("checkedMul", async function () {
502
- const { extendedArithmeticTests, owner } = deployment
503
-
504
- for (let i = 0; i < 10; i++) {
505
- // Generate random 128-bit integers
506
- const num1 = generateRandomNumber(10)
507
- const num2 = generateRandomNumber(8)
508
-
509
- if (num1 * num2 <= MAX_UINT128) {
510
- // Call checkedSubTest
511
- await (await extendedArithmeticTests.checkedMulTest(num1, num2)).wait()
512
-
513
- const result = await extendedArithmeticTests.numbers(0)
514
- expect(result).to.equal(num1 * num2)
515
- } else {
516
- // Expect revert
517
- const tx = await extendedArithmeticTests.checkedMulTest(num1, num2)
518
-
519
- try {
520
- await tx.wait()
521
- } catch (e) {
522
- const receipt = await owner.provider?.getTransactionReceipt(tx.hash)
523
- expect(receipt?.status).to.be.equal(0)
524
- }
525
- }
526
- }
527
- })
528
-
529
- it("checkedMulWithOverflowBit", async function () {
530
- const { extendedArithmeticTests } = deployment
531
-
532
- // Generate two arrays of 10 random 128-bit integers
533
- const numbers1: bigint[] = []
534
- const numbers2: bigint[] = []
535
- const expectedOverflows: boolean[] = []
536
- const expectedResults: bigint[] = []
537
-
538
- for (let i = 0; i < 3; i++) {
539
- // Generate random 128-bit integers
540
- const num1 = generateRandomNumber(10)
541
- const num2 = generateRandomNumber(8)
542
-
543
- numbers1.push(num1)
544
- numbers2.push(num2)
545
- expectedOverflows.push(num1 * num2 > MAX_UINT128)
546
- expectedResults.push(num1 * num2)
547
- }
548
-
549
- // Call checkedSubWithOverflowBitTest with the arrays
550
- await (await extendedArithmeticTests.checkedMulWithOverflowBitTest(numbers1, numbers2)).wait()
551
-
552
- // Verify results
553
- for (let i = 0; i < 3; i++) {
554
- const bit = await extendedArithmeticTests.overflows(i)
555
- const bitLHS = await extendedArithmeticTests.overflowsLHS(i)
556
- const bitRHS = await extendedArithmeticTests.overflowsRHS(i)
557
- const result = await extendedArithmeticTests.numbers(i)
558
- const resultLHS = await extendedArithmeticTests.numbersLHS(i)
559
- const resultRHS = await extendedArithmeticTests.numbersRHS(i)
560
-
561
- expect(bit).to.equal(expectedOverflows[i])
562
- expect(bitLHS).to.equal(expectedOverflows[i])
563
- expect(bitRHS).to.equal(expectedOverflows[i])
564
-
565
- if (bit) {
566
- expect(result).to.not.equal(expectedResults[i])
567
- expect(resultLHS).to.not.equal(expectedResults[i])
568
- expect(resultRHS).to.not.equal(expectedResults[i])
569
- } else {
570
- expect(result).to.equal(expectedResults[i])
571
- expect(resultLHS).to.equal(expectedResults[i])
572
- expect(resultRHS).to.equal(expectedResults[i])
573
- }
574
- }
575
- })
576
-
577
- it("and", async function () {
578
- const { extendedBitwiseTests } = deployment
579
-
580
- // Generate two arrays of 10 random 128-bit integers
581
- const numbers1: bigint[] = []
582
- const numbers2: bigint[] = []
583
- const expectedResults: bigint[] = []
584
-
585
- for (let i = 0; i < 100; i++) {
586
- // Generate random 128-bit integers
587
- const num1 = generateRandomNumber(16)
588
- const num2 = generateRandomNumber(16)
589
-
590
- numbers1.push(num1)
591
- numbers2.push(num2)
592
- expectedResults.push(num1 & num2)
593
- }
594
-
595
- // Call addTest with the arrays
596
- await (await extendedBitwiseTests.andTest(numbers1, numbers2)).wait()
597
-
598
- // Verify results
599
- for (let i = 0; i < 100; i++) {
600
- const result = await extendedBitwiseTests.numbers(i)
601
- expect(result).to.equal(expectedResults[i])
602
- }
603
- })
604
-
605
- it("or", async function () {
606
- const { extendedBitwiseTests } = deployment
607
-
608
- // Generate two arrays of 10 random 128-bit integers
609
- const numbers1: bigint[] = []
610
- const numbers2: bigint[] = []
611
- const expectedResults: bigint[] = []
612
-
613
- for (let i = 0; i < 100; i++) {
614
- // Generate random 128-bit integers
615
- const num1 = generateRandomNumber(16)
616
- const num2 = generateRandomNumber(16)
617
-
618
- numbers1.push(num1)
619
- numbers2.push(num2)
620
- expectedResults.push(num1 | num2)
621
- }
622
-
623
- // Call orTest with the arrays
624
- await (await extendedBitwiseTests.orTest(numbers1, numbers2)).wait()
625
-
626
- // Verify results
627
- for (let i = 0; i < 100; i++) {
628
- const result = await extendedBitwiseTests.numbers(i)
629
- expect(result).to.equal(expectedResults[i])
630
- }
631
- })
632
-
633
- it("xor", async function () {
634
- const { extendedBitwiseTests } = deployment
635
-
636
- // Generate two arrays of 10 random 128-bit integers
637
- const numbers1: bigint[] = []
638
- const numbers2: bigint[] = []
639
- const expectedResults: bigint[] = []
640
-
641
- for (let i = 0; i < 100; i++) {
642
- // Generate random 128-bit integers
643
- const num1 = generateRandomNumber(16)
644
- const num2 = generateRandomNumber(16)
645
-
646
- numbers1.push(num1)
647
- numbers2.push(num2)
648
- expectedResults.push(num1 ^ num2)
649
- }
650
-
651
- // Call xorTest with the arrays
652
- await (await extendedBitwiseTests.xorTest(numbers1, numbers2)).wait()
653
-
654
- // Verify results
655
- for (let i = 0; i < 100; i++) {
656
- const result = await extendedBitwiseTests.numbers(i)
657
- expect(result).to.equal(expectedResults[i])
658
- }
659
- })
660
-
661
- it("shl", async function () {
662
- const { extendedBitwiseTests } = deployment
663
-
664
- // Generate an arrays of 10 random 128-bit integers and 10 random 8-bit integers
665
- const numbers1: bigint[] = []
666
- const numbers2: bigint[] = []
667
- const expectedResults: bigint[] = []
668
-
669
- while (numbers2.length < 10) {
670
- // Generate random 128-bit integers
671
- const num1 = generateRandomNumber(8)
672
- const num2 = generateRandomNumber(1)
673
-
674
- if (num1 << num2 > MAX_UINT128) continue
675
-
676
- numbers1.push(num1)
677
- numbers2.push(num2)
678
- expectedResults.push(num1 << num2)
679
- }
680
-
681
- // Call xorTest with the arrays
682
- await (await extendedBitwiseTests.shlTest(numbers1, numbers2)).wait()
683
-
684
- // Verify results
685
- for (let i = 0; i < 10; i++) {
686
- const result = await extendedBitwiseTests.numbers(i)
687
- expect(result).to.equal(expectedResults[i])
688
- }
689
- })
690
-
691
- it("shr", async function () {
692
- const { extendedBitwiseTests } = deployment
693
-
694
- // Generate an arrays of 10 random 128-bit integers and 10 random 8-bit integers
695
- const numbers1: bigint[] = []
696
- const numbers2: bigint[] = []
697
- const expectedResults: bigint[] = []
698
-
699
- while (numbers2.length < 10) {
700
- // Generate random 128-bit integers
701
- const num1 = generateRandomNumber(8)
702
- const num2 = generateRandomNumber(1)
703
-
704
- if ((num1 & ((1n << num2) - 1n)) !== 0n) continue
705
-
706
- numbers1.push(num1)
707
- numbers2.push(num2)
708
- expectedResults.push(num1 >> num2)
709
- }
710
-
711
- // Call xorTest with the arrays
712
- await (await extendedBitwiseTests.shrTest(numbers1, numbers2)).wait()
713
-
714
- // Verify results
715
- for (let i = 0; i < 10; i++) {
716
- const result = await extendedBitwiseTests.numbers(i)
717
- expect(result).to.equal(expectedResults[i])
718
- }
719
- })
720
-
721
- it("eq", async function () {
722
- const { extendedComparisonTests } = deployment
723
-
724
- // Generate two arrays of 10 random 128-bit integers
725
- const numbers1: bigint[] = []
726
- const numbers2: bigint[] = []
727
- const expectedResults: boolean[] = []
728
-
729
- for (let i = 0; i < 100; i++) {
730
- // Generate random 128-bit integers
731
- const num1 = generateRandomNumber(16)
732
- const num2 = i % 2 === 0 ? generateRandomNumber(16) : num1
733
-
734
- numbers1.push(num1)
735
- numbers2.push(num2)
736
- expectedResults.push(num1 === num2)
737
- }
738
-
739
- // Call eqTest with the arrays
740
- await (await extendedComparisonTests.eqTest(numbers1, numbers2)).wait()
741
-
742
- // Verify results
743
- for (let i = 0; i < 100; i++) {
744
- const result = await extendedComparisonTests.boolResults(i)
745
- expect(result).to.equal(expectedResults[i])
746
- }
747
- })
748
-
749
- it("ne", async function () {
750
- const { extendedComparisonTests } = deployment
751
-
752
- // Generate two arrays of 10 random 128-bit integers
753
- const numbers1: bigint[] = []
754
- const numbers2: bigint[] = []
755
- const expectedResults: boolean[] = []
756
-
757
- for (let i = 0; i < 100; i++) {
758
- // Generate random 128-bit integers
759
- const num1 = generateRandomNumber(16)
760
- const num2 = i % 2 === 0 ? generateRandomNumber(16) : num1
761
-
762
- numbers1.push(num1)
763
- numbers2.push(num2)
764
- expectedResults.push(num1 !== num2)
765
- }
766
-
767
- // Call neTest with the arrays
768
- await (await extendedComparisonTests.neTest(numbers1, numbers2)).wait()
769
-
770
- // Verify results
771
- for (let i = 0; i < 100; i++) {
772
- const result = await extendedComparisonTests.boolResults(i)
773
- expect(result).to.equal(expectedResults[i])
774
- }
775
- })
776
-
777
- it("ge", async function () {
778
- const { extendedComparisonTests } = deployment
779
-
780
- // Generate two arrays of 10 random 128-bit integers
781
- const numbers1: bigint[] = []
782
- const numbers2: bigint[] = []
783
- const expectedResults: boolean[] = []
784
-
785
- for (let i = 0; i < 100; i++) {
786
- // Generate random 128-bit integers
787
- const num1 = generateRandomNumber(16)
788
- const num2 = i % 2 === 0 ? generateRandomNumber(16) : num1
789
-
790
- numbers1.push(num1)
791
- numbers2.push(num2)
792
- expectedResults.push(num1 >= num2)
793
- }
794
-
795
- // Call geTest with the arrays
796
- await (await extendedComparisonTests.geTest(numbers1, numbers2)).wait()
797
-
798
- // Verify results
799
- for (let i = 0; i < 100; i++) {
800
- const result = await extendedComparisonTests.boolResults(i)
801
- expect(result).to.equal(expectedResults[i])
802
- }
803
- })
804
-
805
- it("gt", async function () {
806
- const { extendedComparisonTests } = deployment
807
-
808
- // Generate two arrays of 10 random 128-bit integers
809
- const numbers1: bigint[] = []
810
- const numbers2: bigint[] = []
811
- const expectedResults: boolean[] = []
812
-
813
- for (let i = 0; i < 100; i++) {
814
- // Generate random 128-bit integers
815
- const num1 = generateRandomNumber(16)
816
- const num2 = i % 2 === 0 ? generateRandomNumber(16) : num1
817
-
818
- numbers1.push(num1)
819
- numbers2.push(num2)
820
- expectedResults.push(num1 > num2)
821
- }
822
-
823
- // Call gtTest with the arrays
824
- await (await extendedComparisonTests.gtTest(numbers1, numbers2)).wait()
825
-
826
- // Verify results
827
- for (let i = 0; i < 100; i++) {
828
- const result = await extendedComparisonTests.boolResults(i)
829
- expect(result).to.equal(expectedResults[i])
830
- }
831
- })
832
-
833
- it("le", async function () {
834
- const { extendedComparisonTests } = deployment
835
-
836
- // Generate two arrays of 10 random 128-bit integers
837
- const numbers1: bigint[] = []
838
- const numbers2: bigint[] = []
839
- const expectedResults: boolean[] = []
840
-
841
- for (let i = 0; i < 100; i++) {
842
- // Generate random 128-bit integers
843
- const num1 = generateRandomNumber(16)
844
- const num2 = i % 2 === 0 ? generateRandomNumber(16) : num1
845
-
846
- numbers1.push(num1)
847
- numbers2.push(num2)
848
- expectedResults.push(num1 <= num2)
849
- }
850
-
851
- // Call leTest with the arrays
852
- await (await extendedComparisonTests.leTest(numbers1, numbers2)).wait()
853
-
854
- // Verify results
855
- for (let i = 0; i < 100; i++) {
856
- const result = await extendedComparisonTests.boolResults(i)
857
- expect(result).to.equal(expectedResults[i])
858
- }
859
- })
860
-
861
- it("lt", async function () {
862
- const { extendedComparisonTests } = deployment
863
-
864
- // Generate two arrays of 10 random 128-bit integers
865
- const numbers1: bigint[] = []
866
- const numbers2: bigint[] = []
867
- const expectedResults: boolean[] = []
868
-
869
- for (let i = 0; i < 100; i++) {
870
- // Generate random 128-bit integers
871
- const num1 = generateRandomNumber(16)
872
- const num2 = i % 2 === 0 ? generateRandomNumber(16) : num1
873
-
874
- numbers1.push(num1)
875
- numbers2.push(num2)
876
- expectedResults.push(num1 < num2)
877
- }
878
-
879
- // Call ltTest with the arrays
880
- await (await extendedComparisonTests.ltTest(numbers1, numbers2)).wait()
881
-
882
- // Verify results
883
- for (let i = 0; i < 100; i++) {
884
- const result = await extendedComparisonTests.boolResults(i)
885
- expect(result).to.equal(expectedResults[i])
886
- }
887
- })
888
-
889
- it("min", async function () {
890
- const { extendedComparisonTests } = deployment
891
-
892
- // Generate two arrays of 10 random 128-bit integers
893
- const numbers1: bigint[] = []
894
- const numbers2: bigint[] = []
895
- const expectedResults: bigint[] = []
896
-
897
- for (let i = 0; i < 100; i++) {
898
- // Generate random 128-bit integers
899
- const num1 = generateRandomNumber(16)
900
- const num2 = i % 2 === 0 ? generateRandomNumber(16) : num1
901
-
902
- numbers1.push(num1)
903
- numbers2.push(num2)
904
- expectedResults.push(num1 <= num2 ? num1 : num2)
905
- }
906
-
907
- // Call minTest with the arrays
908
- await (await extendedComparisonTests.minTest(numbers1, numbers2)).wait()
909
-
910
- // Verify results
911
- for (let i = 0; i < 100; i++) {
912
- const result = await extendedComparisonTests.uintResults(i)
913
- expect(result).to.equal(expectedResults[i])
914
- }
915
- })
916
-
917
- it("max", async function () {
918
- const { extendedComparisonTests } = deployment
919
-
920
- // Generate two arrays of 10 random 128-bit integers
921
- const numbers1: bigint[] = []
922
- const numbers2: bigint[] = []
923
- const expectedResults: bigint[] = []
924
-
925
- for (let i = 0; i < 100; i++) {
926
- // Generate random 128-bit integers
927
- const num1 = generateRandomNumber(16)
928
- const num2 = i % 2 === 0 ? generateRandomNumber(16) : num1
929
-
930
- numbers1.push(num1)
931
- numbers2.push(num2)
932
- expectedResults.push(num1 >= num2 ? num1 : num2)
933
- }
934
-
935
- // Call maxTest with the arrays
936
- await (await extendedComparisonTests.maxTest(numbers1, numbers2)).wait()
937
-
938
- // Verify results
939
- for (let i = 0; i < 100; i++) {
940
- const result = await extendedComparisonTests.uintResults(i)
941
- expect(result).to.equal(expectedResults[i])
942
- }
943
- })
944
- })
945
- })