@coti-io/coti-contracts 1.0.9 → 1.2.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 (271) hide show
  1. package/.github/workflows/npm-publish.yml +18 -14
  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/mocks/token/ERC20Mock.sol +19 -0
  9. package/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.sol +18 -0
  10. package/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.sol +13 -0
  11. package/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.sol +44 -0
  12. package/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.sol +23 -0
  13. package/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock.sol +29 -0
  14. package/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.sol +9 -4
  15. package/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol +39 -0
  16. package/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.sol +29 -0
  17. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.sol +18 -0
  18. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.sol +12 -0
  19. package/contracts/mocks/utils/mpc/Arithmetic128TestsContract.sol +123 -0
  20. package/contracts/mocks/utils/mpc/Arithmetic256TestsContract.sol +122 -0
  21. package/contracts/mocks/utils/mpc/Bitwise128TestsContract.sol +65 -0
  22. package/contracts/mocks/utils/mpc/Bitwise256TestsContract.sol +65 -0
  23. package/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.sol +64 -0
  24. package/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.sol +64 -0
  25. package/contracts/mocks/utils/mpc/Comparison128TestsContract.sol +98 -0
  26. package/contracts/mocks/utils/mpc/Comparison256TestsContract.sol +98 -0
  27. package/contracts/mocks/utils/mpc/MinMax128TestsContract.sol +44 -0
  28. package/contracts/mocks/utils/mpc/MinMax256TestsContract.sol +44 -0
  29. package/contracts/mocks/utils/mpc/MinimalImplementation.sol +55 -0
  30. package/contracts/mocks/utils/mpc/MinimalProxy.sol +27 -0
  31. package/contracts/mocks/utils/mpc/MpcOperations128TestContract.sol +267 -0
  32. package/contracts/mocks/utils/mpc/MpcOperationsTestContract.sol +334 -0
  33. package/contracts/mocks/utils/mpc/Mux128TestsContract.sol +24 -0
  34. package/contracts/mocks/utils/mpc/Mux256TestsContract.sol +24 -0
  35. package/contracts/mocks/utils/mpc/OnBoard128TestsContract.sol +93 -0
  36. package/contracts/mocks/utils/mpc/OnBoard256TestsContract.sol +116 -0
  37. package/contracts/mocks/utils/mpc/PrivacyImplementationV1.sol +157 -0
  38. package/contracts/mocks/utils/mpc/PrivacyImplementationV2.sol +133 -0
  39. package/contracts/mocks/utils/mpc/PrivacyProxy.sol +137 -0
  40. package/contracts/mocks/utils/mpc/Random128TestsContract.sol +32 -0
  41. package/contracts/mocks/utils/mpc/Random256TestsContract.sol +32 -0
  42. package/contracts/mocks/utils/mpc/Shift128TestsContract.sol +36 -0
  43. package/contracts/mocks/utils/mpc/Shift256TestsContract.sol +36 -0
  44. package/contracts/mocks/utils/mpc/Transfer128TestsContract.sol +29 -0
  45. package/contracts/mocks/utils/mpc/Transfer256TestsContract.sol +29 -0
  46. package/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.sol +32 -0
  47. package/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.sol +32 -0
  48. package/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.sol +59 -0
  49. package/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.sol +63 -0
  50. package/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.sol +99 -0
  51. package/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.sol +7 -6
  52. package/contracts/node/CotiNodeRewards.sol +199 -0
  53. package/contracts/node/SoulboundNodeNFT.sol +519 -0
  54. package/contracts/privacyBridge/PrivacyBridge.sol +318 -0
  55. package/contracts/privacyBridge/PrivacyBridgeCotiNative.sol +268 -0
  56. package/contracts/privacyBridge/PrivacyBridgeERC20.sol +251 -0
  57. package/contracts/privacyBridge/PrivacyBridgeUSDCe.sol +16 -0
  58. package/contracts/privacyBridge/PrivacyBridgeUSDT.sol +17 -0
  59. package/contracts/privacyBridge/PrivacyBridgeWADA.sol +17 -0
  60. package/contracts/privacyBridge/PrivacyBridgeWBTC.sol +17 -0
  61. package/contracts/privacyBridge/PrivacyBridgeWETH.sol +17 -0
  62. package/contracts/privacyBridge/PrivacyBridgegCoti.sol +17 -0
  63. package/contracts/token/PrivateERC20/IPrivateERC20.sol +273 -40
  64. package/contracts/token/PrivateERC20/ITokenReceiver.sol +17 -0
  65. package/contracts/token/PrivateERC20/ITokenReceiverEncrypted.sol +20 -0
  66. package/contracts/token/PrivateERC20/PrivateERC20.sol +861 -152
  67. package/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.sol +17 -0
  68. package/contracts/token/PrivateERC20/tokens/PrivateCOTI.sol +13 -0
  69. package/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.sol +17 -0
  70. package/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.sol +17 -0
  71. package/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.sol +17 -0
  72. package/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.sol +17 -0
  73. package/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.sol +13 -0
  74. package/contracts/utils/mpc/MpcCore.sol +10891 -2449
  75. package/contracts/utils/mpc/MpcInterface.sol +7 -2
  76. package/hardhat/gasPriceBump.ts +60 -0
  77. package/hardhat.config.ts +60 -12
  78. package/package.json +21 -3
  79. package/scripts/deploySoulboundNodeNFT.ts +57 -0
  80. package/test/token/PrivateERC20/PrivacyBridge.fees.test.ts +327 -0
  81. package/test/token/PrivateERC20/PrivateERC20.test.ts +1109 -268
  82. package/test/utils/mpc/Bitwise128.test.ts +92 -0
  83. package/test/utils/mpc/Bitwise256.test.ts +101 -0
  84. package/test/utils/mpc/BuildInputText128.test.ts +398 -0
  85. package/test/utils/mpc/CheckedArithmetic128.test.ts +45 -0
  86. package/test/utils/mpc/CheckedArithmetic256.test.ts +45 -0
  87. package/test/utils/mpc/Comparison128.test.ts +48 -0
  88. package/test/utils/mpc/Comparison256.test.ts +48 -0
  89. package/test/utils/mpc/InvalidCiphertext.test.ts +179 -0
  90. package/test/utils/mpc/InvalidCiphertext128.test.ts +179 -0
  91. package/test/utils/mpc/InvalidCiphertext256.test.ts +201 -0
  92. package/test/utils/mpc/InvalidTransfer128.test.ts +166 -0
  93. package/test/utils/mpc/InvalidTransfer256.test.ts +158 -0
  94. package/test/utils/mpc/MinMax128.test.ts +44 -0
  95. package/test/utils/mpc/MinMax256.test.ts +44 -0
  96. package/test/utils/mpc/MinimalProxyDemo.test.ts +280 -0
  97. package/test/utils/mpc/MpcOperations.test.ts +589 -0
  98. package/test/utils/mpc/MpcOperations128.test.ts +632 -0
  99. package/test/utils/mpc/Mux128.test.ts +41 -0
  100. package/test/utils/mpc/Mux256.test.ts +41 -0
  101. package/test/utils/mpc/NegativeCases.test.ts +478 -0
  102. package/test/utils/mpc/NegativeCases128.test.ts +237 -0
  103. package/test/utils/mpc/NegativeCases256.test.ts +236 -0
  104. package/test/utils/mpc/OnBoard128.test.ts +90 -0
  105. package/test/utils/mpc/OnBoard256.test.ts +114 -0
  106. package/test/utils/mpc/Precompile128.test.ts +51 -0
  107. package/test/utils/mpc/Precompile256.test.ts +115 -0
  108. package/test/utils/mpc/ProxyValidation.test.ts +199 -0
  109. package/test/utils/mpc/Random128.test.ts +47 -0
  110. package/test/utils/mpc/Random256.test.ts +47 -0
  111. package/test/utils/mpc/Shift128.test.ts +41 -0
  112. package/test/utils/mpc/Shift256.test.ts +41 -0
  113. package/test/utils/mpc/Transfer128.test.ts +46 -0
  114. package/test/utils/mpc/Transfer256.test.ts +46 -0
  115. package/test/utils/mpc/TransferWithAllowance128.test.ts +48 -0
  116. package/test/utils/mpc/TransferWithAllowance256.test.ts +48 -0
  117. package/test/utils/mpc/UpgradeablePrivacyProxy.test.ts +307 -0
  118. package/test/utils/mpc/ValidateCiphertext.test.ts +221 -0
  119. package/test/utils/mpc/ValidateCiphertext256.test.ts +161 -0
  120. package/test/utils/mpc/ValidateCiphertext256Decryption.test.ts +383 -0
  121. package/test/utils/mpc/WalletEncryptionFailures.test.ts +494 -0
  122. package/test/utils/privateErc20Helpers.ts +97 -0
  123. package/typechain-types/@openzeppelin/contracts/access/Ownable.ts +153 -0
  124. package/typechain-types/@openzeppelin/contracts/access/index.ts +4 -0
  125. package/typechain-types/@openzeppelin/contracts/index.ts +2 -0
  126. package/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts +262 -0
  127. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.ts +143 -0
  128. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +4 -0
  129. package/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts +6 -0
  130. package/typechain-types/@openzeppelin/contracts/token/index.ts +2 -0
  131. package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperser.ts +679 -0
  132. package/typechain-types/contracts/disperse/coinByRatio/index.ts +4 -0
  133. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/IMintableERC20.ts +97 -0
  134. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser.ts +206 -0
  135. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +5 -0
  136. package/typechain-types/contracts/disperse/disperseToken/TokenDisperser.ts +191 -0
  137. package/typechain-types/contracts/disperse/disperseToken/index.ts +6 -0
  138. package/typechain-types/contracts/disperse/index.ts +7 -0
  139. package/typechain-types/contracts/index.ts +2 -0
  140. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.ts +77 -60
  141. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract.ts +341 -0
  142. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic128TestsContract.ts +311 -0
  143. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract.ts +347 -0
  144. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic256TestsContract.ts +311 -0
  145. package/typechain-types/contracts/mocks/utils/mpc/Bitwise128BitTestsContract.ts +186 -0
  146. package/typechain-types/contracts/mocks/utils/mpc/Bitwise128TestsContract.ts +179 -0
  147. package/typechain-types/contracts/mocks/utils/mpc/Bitwise256BitTestsContract.ts +186 -0
  148. package/typechain-types/contracts/mocks/utils/mpc/Bitwise256TestsContract.ts +179 -0
  149. package/typechain-types/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.ts +206 -0
  150. package/typechain-types/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.ts +206 -0
  151. package/typechain-types/contracts/mocks/utils/mpc/Comparison128BitTestsContract.ts +260 -0
  152. package/typechain-types/contracts/mocks/utils/mpc/Comparison128TestsContract.ts +278 -0
  153. package/typechain-types/contracts/mocks/utils/mpc/Comparison256BitTestsContract.ts +260 -0
  154. package/typechain-types/contracts/mocks/utils/mpc/Comparison256TestsContract.ts +278 -0
  155. package/typechain-types/contracts/mocks/utils/mpc/MinMax128TestsContract.ts +142 -0
  156. package/typechain-types/contracts/mocks/utils/mpc/MinMax256TestsContract.ts +142 -0
  157. package/typechain-types/contracts/mocks/utils/mpc/MinimalImplementation.ts +259 -0
  158. package/typechain-types/contracts/mocks/utils/mpc/MinimalProxy.ts +90 -0
  159. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.ts +302 -0
  160. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.ts +322 -0
  161. package/typechain-types/contracts/mocks/utils/mpc/MpcOperations128TestContract.ts +388 -0
  162. package/typechain-types/contracts/mocks/utils/mpc/MpcOperationsTestContract.ts +455 -0
  163. package/typechain-types/contracts/mocks/utils/mpc/Mux128TestsContract.ts +109 -0
  164. package/typechain-types/contracts/mocks/utils/mpc/Mux256TestsContract.ts +109 -0
  165. package/typechain-types/contracts/mocks/utils/mpc/OnBoard128TestsContract.ts +166 -0
  166. package/typechain-types/contracts/mocks/utils/mpc/OnBoard256TestsContract.ts +194 -0
  167. package/typechain-types/contracts/mocks/utils/mpc/PrivacyImplementationV1.ts +385 -0
  168. package/typechain-types/contracts/mocks/utils/mpc/PrivacyImplementationV2.ts +441 -0
  169. package/typechain-types/contracts/mocks/utils/mpc/PrivacyProxy.ts +201 -0
  170. package/typechain-types/contracts/mocks/utils/mpc/Random128TestsContract.ts +131 -0
  171. package/typechain-types/contracts/mocks/utils/mpc/Random256TestsContract.ts +131 -0
  172. package/typechain-types/contracts/mocks/utils/mpc/Shift128TestsContract.ts +142 -0
  173. package/typechain-types/contracts/mocks/utils/mpc/Shift256TestsContract.ts +142 -0
  174. package/typechain-types/contracts/mocks/utils/mpc/Transfer128TestsContract.ts +109 -0
  175. package/typechain-types/contracts/mocks/utils/mpc/Transfer256TestsContract.ts +109 -0
  176. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.ts +128 -0
  177. package/typechain-types/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.ts +128 -0
  178. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.ts +198 -0
  179. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.ts +182 -0
  180. package/typechain-types/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.ts +257 -0
  181. package/typechain-types/contracts/mocks/utils/mpc/index.ts +32 -0
  182. package/typechain-types/contracts/token/PrivateERC20/IPrivateERC20.ts +77 -60
  183. package/typechain-types/contracts/token/PrivateERC20/PrivateERC20.ts +77 -60
  184. package/typechain-types/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations.ts +111 -10
  185. package/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +74 -0
  186. package/typechain-types/factories/@openzeppelin/contracts/access/index.ts +4 -0
  187. package/typechain-types/factories/@openzeppelin/contracts/index.ts +1 -0
  188. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +205 -0
  189. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit__factory.ts +100 -0
  190. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +4 -0
  191. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts +5 -0
  192. package/typechain-types/factories/@openzeppelin/contracts/token/index.ts +1 -0
  193. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperser__factory.ts +759 -0
  194. package/typechain-types/factories/contracts/disperse/coinByRatio/index.ts +4 -0
  195. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/IMintableERC20__factory.ts +43 -0
  196. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser__factory.ts +185 -0
  197. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +5 -0
  198. package/typechain-types/factories/contracts/disperse/disperseToken/TokenDisperser__factory.ts +198 -0
  199. package/typechain-types/factories/contracts/disperse/disperseToken/index.ts +5 -0
  200. package/typechain-types/factories/contracts/disperse/index.ts +5 -0
  201. package/typechain-types/factories/contracts/index.ts +1 -0
  202. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
  203. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +179 -47
  204. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract__factory.ts +349 -0
  205. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128TestsContract__factory.ts +330 -0
  206. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract__factory.ts +364 -0
  207. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256TestsContract__factory.ts +330 -0
  208. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +1 -1
  209. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128BitTestsContract__factory.ts +182 -0
  210. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128TestsContract__factory.ts +184 -0
  211. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256BitTestsContract__factory.ts +182 -0
  212. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256TestsContract__factory.ts +184 -0
  213. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +1 -1
  214. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract__factory.ts +203 -0
  215. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract__factory.ts +203 -0
  216. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol/CheckedArithmeticWithOverflowBitTestsContract__factory.ts +1 -1
  217. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128BitTestsContract__factory.ts +255 -0
  218. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128TestsContract__factory.ts +295 -0
  219. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
  220. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256BitTestsContract__factory.ts +255 -0
  221. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256TestsContract__factory.ts +295 -0
  222. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +1 -1
  223. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax128TestsContract__factory.ts +147 -0
  224. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax256TestsContract__factory.ts +147 -0
  225. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
  226. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalImplementation__factory.ts +263 -0
  227. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalProxy__factory.ts +104 -0
  228. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract__factory.ts +332 -0
  229. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
  230. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract__factory.ts +380 -0
  231. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
  232. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperations128TestContract__factory.ts +723 -0
  233. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperationsTestContract__factory.ts +1410 -0
  234. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux128TestsContract__factory.ts +115 -0
  235. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux256TestsContract__factory.ts +115 -0
  236. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +1 -1
  237. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard128TestsContract__factory.ts +175 -0
  238. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard256TestsContract__factory.ts +205 -0
  239. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV1__factory.ts +521 -0
  240. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV2__factory.ts +648 -0
  241. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyProxy__factory.ts +179 -0
  242. package/typechain-types/factories/contracts/mocks/utils/mpc/Random128TestsContract__factory.ts +131 -0
  243. package/typechain-types/factories/contracts/mocks/utils/mpc/Random256TestsContract__factory.ts +131 -0
  244. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift128TestsContract__factory.ts +147 -0
  245. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift256TestsContract__factory.ts +147 -0
  246. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  247. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  248. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer128TestsContract__factory.ts +135 -0
  249. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer256TestsContract__factory.ts +135 -0
  250. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
  251. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
  252. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract__factory.ts +154 -0
  253. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract__factory.ts +154 -0
  254. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +1 -1
  255. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +1 -1
  256. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +1 -1
  257. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +1 -1
  258. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +1 -1
  259. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +1 -1
  260. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract__factory.ts +190 -0
  261. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract__factory.ts +210 -0
  262. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract__factory.ts +260 -0
  263. package/typechain-types/factories/contracts/mocks/utils/mpc/index.ts +32 -0
  264. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +7 -7
  265. package/typechain-types/factories/contracts/token/PrivateERC20/IPrivateERC20__factory.ts +174 -42
  266. package/typechain-types/factories/contracts/token/PrivateERC20/PrivateERC20__factory.ts +174 -42
  267. package/typechain-types/factories/contracts/utils/mpc/MpcInterface.sol/ExtendedOperations__factory.ts +126 -0
  268. package/typechain-types/hardhat.d.ts +702 -0
  269. package/typechain-types/index.ts +78 -0
  270. package/contracts/mocks/utils/mpc/README.md +0 -486
  271. package/contracts/package.json +0 -11
@@ -80,16 +80,40 @@ const _abi = [
80
80
  type: "address",
81
81
  },
82
82
  {
83
+ components: [
84
+ {
85
+ internalType: "ctUint128",
86
+ name: "ciphertextHigh",
87
+ type: "uint256",
88
+ },
89
+ {
90
+ internalType: "ctUint128",
91
+ name: "ciphertextLow",
92
+ type: "uint256",
93
+ },
94
+ ],
83
95
  indexed: false,
84
- internalType: "ctUint64",
96
+ internalType: "struct ctUint256",
85
97
  name: "ownerValue",
86
- type: "uint256",
98
+ type: "tuple",
87
99
  },
88
100
  {
101
+ components: [
102
+ {
103
+ internalType: "ctUint128",
104
+ name: "ciphertextHigh",
105
+ type: "uint256",
106
+ },
107
+ {
108
+ internalType: "ctUint128",
109
+ name: "ciphertextLow",
110
+ type: "uint256",
111
+ },
112
+ ],
89
113
  indexed: false,
90
- internalType: "ctUint64",
114
+ internalType: "struct ctUint256",
91
115
  name: "spenderValue",
92
- type: "uint256",
116
+ type: "tuple",
93
117
  },
94
118
  ],
95
119
  name: "Approval",
@@ -111,16 +135,40 @@ const _abi = [
111
135
  type: "address",
112
136
  },
113
137
  {
138
+ components: [
139
+ {
140
+ internalType: "ctUint128",
141
+ name: "ciphertextHigh",
142
+ type: "uint256",
143
+ },
144
+ {
145
+ internalType: "ctUint128",
146
+ name: "ciphertextLow",
147
+ type: "uint256",
148
+ },
149
+ ],
114
150
  indexed: false,
115
- internalType: "ctUint64",
151
+ internalType: "struct ctUint256",
116
152
  name: "senderValue",
117
- type: "uint256",
153
+ type: "tuple",
118
154
  },
119
155
  {
156
+ components: [
157
+ {
158
+ internalType: "ctUint128",
159
+ name: "ciphertextHigh",
160
+ type: "uint256",
161
+ },
162
+ {
163
+ internalType: "ctUint128",
164
+ name: "ciphertextLow",
165
+ type: "uint256",
166
+ },
167
+ ],
120
168
  indexed: false,
121
- internalType: "ctUint64",
169
+ internalType: "struct ctUint256",
122
170
  name: "receiverValue",
123
- type: "uint256",
171
+ type: "tuple",
124
172
  },
125
173
  ],
126
174
  name: "Transfer",
@@ -161,7 +209,7 @@ const _abi = [
161
209
  name: "allowance",
162
210
  outputs: [
163
211
  {
164
- internalType: "gtUint64",
212
+ internalType: "gtUint256",
165
213
  name: "",
166
214
  type: "uint256",
167
215
  },
@@ -187,19 +235,55 @@ const _abi = [
187
235
  {
188
236
  components: [
189
237
  {
190
- internalType: "ctUint64",
238
+ components: [
239
+ {
240
+ internalType: "ctUint128",
241
+ name: "ciphertextHigh",
242
+ type: "uint256",
243
+ },
244
+ {
245
+ internalType: "ctUint128",
246
+ name: "ciphertextLow",
247
+ type: "uint256",
248
+ },
249
+ ],
250
+ internalType: "struct ctUint256",
191
251
  name: "ciphertext",
192
- type: "uint256",
252
+ type: "tuple",
193
253
  },
194
254
  {
195
- internalType: "ctUint64",
255
+ components: [
256
+ {
257
+ internalType: "ctUint128",
258
+ name: "ciphertextHigh",
259
+ type: "uint256",
260
+ },
261
+ {
262
+ internalType: "ctUint128",
263
+ name: "ciphertextLow",
264
+ type: "uint256",
265
+ },
266
+ ],
267
+ internalType: "struct ctUint256",
196
268
  name: "ownerCiphertext",
197
- type: "uint256",
269
+ type: "tuple",
198
270
  },
199
271
  {
200
- internalType: "ctUint64",
272
+ components: [
273
+ {
274
+ internalType: "ctUint128",
275
+ name: "ciphertextHigh",
276
+ type: "uint256",
277
+ },
278
+ {
279
+ internalType: "ctUint128",
280
+ name: "ciphertextLow",
281
+ type: "uint256",
282
+ },
283
+ ],
284
+ internalType: "struct ctUint256",
201
285
  name: "spenderCiphertext",
202
- type: "uint256",
286
+ type: "tuple",
203
287
  },
204
288
  ],
205
289
  internalType: "struct IPrivateERC20.Allowance",
@@ -218,7 +302,7 @@ const _abi = [
218
302
  type: "address",
219
303
  },
220
304
  {
221
- internalType: "gtUint64",
305
+ internalType: "gtUint256",
222
306
  name: "value",
223
307
  type: "uint256",
224
308
  },
@@ -244,9 +328,21 @@ const _abi = [
244
328
  {
245
329
  components: [
246
330
  {
247
- internalType: "ctUint64",
331
+ components: [
332
+ {
333
+ internalType: "ctUint128",
334
+ name: "ciphertextHigh",
335
+ type: "uint256",
336
+ },
337
+ {
338
+ internalType: "ctUint128",
339
+ name: "ciphertextLow",
340
+ type: "uint256",
341
+ },
342
+ ],
343
+ internalType: "struct ctUint256",
248
344
  name: "ciphertext",
249
- type: "uint256",
345
+ type: "tuple",
250
346
  },
251
347
  {
252
348
  internalType: "bytes",
@@ -254,7 +350,7 @@ const _abi = [
254
350
  type: "bytes",
255
351
  },
256
352
  ],
257
- internalType: "struct itUint64",
353
+ internalType: "struct itUint256",
258
354
  name: "value",
259
355
  type: "tuple",
260
356
  },
@@ -281,9 +377,21 @@ const _abi = [
281
377
  name: "balanceOf",
282
378
  outputs: [
283
379
  {
284
- internalType: "ctUint64",
380
+ components: [
381
+ {
382
+ internalType: "ctUint128",
383
+ name: "ciphertextHigh",
384
+ type: "uint256",
385
+ },
386
+ {
387
+ internalType: "ctUint128",
388
+ name: "ciphertextLow",
389
+ type: "uint256",
390
+ },
391
+ ],
392
+ internalType: "struct ctUint256",
285
393
  name: "",
286
- type: "uint256",
394
+ type: "tuple",
287
395
  },
288
396
  ],
289
397
  stateMutability: "view",
@@ -294,7 +402,7 @@ const _abi = [
294
402
  name: "balanceOf",
295
403
  outputs: [
296
404
  {
297
- internalType: "gtUint64",
405
+ internalType: "gtUint256",
298
406
  name: "",
299
407
  type: "uint256",
300
408
  },
@@ -310,9 +418,9 @@ const _abi = [
310
418
  type: "address",
311
419
  },
312
420
  {
313
- internalType: "uint64",
421
+ internalType: "uint256",
314
422
  name: "amount",
315
- type: "uint64",
423
+ type: "uint256",
316
424
  },
317
425
  ],
318
426
  name: "burn",
@@ -341,9 +449,9 @@ const _abi = [
341
449
  type: "address",
342
450
  },
343
451
  {
344
- internalType: "uint64",
452
+ internalType: "uint256",
345
453
  name: "amount",
346
- type: "uint64",
454
+ type: "uint256",
347
455
  },
348
456
  ],
349
457
  name: "mint",
@@ -443,9 +551,21 @@ const _abi = [
443
551
  {
444
552
  components: [
445
553
  {
446
- internalType: "ctUint64",
554
+ components: [
555
+ {
556
+ internalType: "ctUint128",
557
+ name: "ciphertextHigh",
558
+ type: "uint256",
559
+ },
560
+ {
561
+ internalType: "ctUint128",
562
+ name: "ciphertextLow",
563
+ type: "uint256",
564
+ },
565
+ ],
566
+ internalType: "struct ctUint256",
447
567
  name: "ciphertext",
448
- type: "uint256",
568
+ type: "tuple",
449
569
  },
450
570
  {
451
571
  internalType: "bytes",
@@ -453,7 +573,7 @@ const _abi = [
453
573
  type: "bytes",
454
574
  },
455
575
  ],
456
- internalType: "struct itUint64",
576
+ internalType: "struct itUint256",
457
577
  name: "value",
458
578
  type: "tuple",
459
579
  },
@@ -477,7 +597,7 @@ const _abi = [
477
597
  type: "address",
478
598
  },
479
599
  {
480
- internalType: "gtUint64",
600
+ internalType: "gtUint256",
481
601
  name: "value",
482
602
  type: "uint256",
483
603
  },
@@ -506,21 +626,9 @@ const _abi = [
506
626
  type: "address",
507
627
  },
508
628
  {
509
- components: [
510
- {
511
- internalType: "ctUint64",
512
- name: "ciphertext",
513
- type: "uint256",
514
- },
515
- {
516
- internalType: "bytes",
517
- name: "signature",
518
- type: "bytes",
519
- },
520
- ],
521
- internalType: "struct itUint64",
629
+ internalType: "gtUint256",
522
630
  name: "value",
523
- type: "tuple",
631
+ type: "uint256",
524
632
  },
525
633
  ],
526
634
  name: "transferFrom",
@@ -547,9 +655,33 @@ const _abi = [
547
655
  type: "address",
548
656
  },
549
657
  {
550
- internalType: "gtUint64",
658
+ components: [
659
+ {
660
+ components: [
661
+ {
662
+ internalType: "ctUint128",
663
+ name: "ciphertextHigh",
664
+ type: "uint256",
665
+ },
666
+ {
667
+ internalType: "ctUint128",
668
+ name: "ciphertextLow",
669
+ type: "uint256",
670
+ },
671
+ ],
672
+ internalType: "struct ctUint256",
673
+ name: "ciphertext",
674
+ type: "tuple",
675
+ },
676
+ {
677
+ internalType: "bytes",
678
+ name: "signature",
679
+ type: "bytes",
680
+ },
681
+ ],
682
+ internalType: "struct itUint256",
551
683
  name: "value",
552
- type: "uint256",
684
+ type: "tuple",
553
685
  },
554
686
  ],
555
687
  name: "transferFrom",
@@ -566,7 +698,7 @@ const _abi = [
566
698
  ] as const;
567
699
 
568
700
  const _bytecode =
569
- "0x60806040523480156200001157600080fd5b506040518060400160405280601081526020016f5072697661746545524332304d6f636b60801b81525060405180604001604052806005815260200164504532304d60d81b81525081600490816200006a919062000127565b50600562000079828262000127565b505050620001f3565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000ad57607f821691505b602082108103620000ce57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012257600081815260208120601f850160051c81016020861015620000fd5750805b601f850160051c820191505b818110156200011e5782815560010162000109565b5050505b505050565b81516001600160401b0381111562000143576200014362000082565b6200015b8162000154845462000098565b84620000d4565b602080601f8311600181146200019357600084156200017a5750858301515b600019600386901b1c1916600185901b1785556200011e565b600085815260208120601f198616915b82811015620001c457888601518255948401946001909101908401620001a3565b5085821015620001e35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61194a80620002036000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c8063313ce567116100cd57806396b2db3811610081578063a7d9ad6a11610066578063a7d9ad6a146102f9578063a9059cbb1461030c578063dd62ed3e1461031f57600080fd5b806396b2db38146102d3578063a42c0af9146102e657600080fd5b8063722713f7116100b2578063722713f7146102b05780638269bcc3146102b857806395d89b41146102cb57600080fd5b8063313ce5671461026757806370a082311461027657600080fd5b806313691c761161012457806323b872dd1161010957806323b872dd1461022e57806326a9b3f1146102415780632893c5b01461025457600080fd5b806313691c761461021257806318160ddd1461022757600080fd5b8063043d20851461015657806306fdde03146101b957806308a2032a146101ce578063095ea7b3146101ef575b600080fd5b61018f61016436600461146b565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152602081905260409020541690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101c1610354565b6040516101b091906114ea565b6101e16101dc366004611515565b6103e6565b6040519081526020016101b0565b6102026101fd366004611573565b61041d565b60405190151581526020016101b0565b61022561022036600461159d565b610437565b005b60006101e1565b6101e161023c3660046115e1565b61044e565b61020261024f36600461161d565b610470565b61022561026236600461159d565b610524565b604051600681526020016101b0565b6101e161028436600461146b565b73ffffffffffffffffffffffffffffffffffffffff166000908152600160208190526040909120015490565b6101e1610536565b6102026102c636600461146b565b610546565b6101c16105ca565b6101e16102e136600461161d565b6105d9565b6102026102f436600461164e565b61065c565b6101e161030736600461164e565b610684565b6101e161031a366004611573565b6106a1565b61033261032d36600461169c565b6106b7565b60408051825181526020808401519082015291810151908201526060016101b0565b606060048054610363906116cf565b80601f016020809104026020016040519081016040528092919081815260200182805461038f906116cf565b80156103dc5780601f106103b1576101008083540402835291602001916103dc565b820191906000526020600020905b8154815290600101906020018083116103bf57829003601f168201915b5050505050905090565b600033816103fb6103f6856117c3565b610736565b90506104088683836107e2565b6104138686836108cf565b9695505050505050565b60003361042b818585610981565b60019150505b92915050565b6104498261044483610b93565b610c03565b505050565b60003361045c8582856107e2565b6104678585856108cf565b95945050505050565b60008061047c33610c68565b905082156104d45733600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff88168452909152902080546104c9906104c390610c9e565b83610cbb565b60019091015561042b565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915290208054610513906104c390610c9e565b600290910155600191505092915050565b6104498261053183610b93565b610da0565b600061054133610dfe565b905090565b60008061055233610dfe565b33600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861617905590506105ab8184610cbb565b3360009081526001602081905260409091208101919091559392505050565b606060058054610363906116cf565b600081156106225733600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205461061b90610c9e565b9050610431565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260026020908152604080832033845290915290205461061b90610c9e565b6000338161066c6103f6856117c3565b9050610679828683610981565b506001949350505050565b600033816106946103f6856117c3565b90506104678286836108cf565b6000336106af8185856108cf565b949350505050565b6106db60405180606001604052806000815260200160008152602001600081525090565b5073ffffffffffffffffffffffffffffffffffffffff91821660009081526002602081815260408084209490951683529283529083902083516060810185528154815260018201549381019390935201549181019190915290565b805160208201516040517fe4f36e1000000000000000000000000000000000000000000000000000000000815260009260649263e4f36e109261079f927f04000000000000000000000000000000000000000000000000000000000000009290916004016118b5565b6020604051808303816000875af11580156107be573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043191906118f6565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081205461081190610c9e565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526002602090815260408083209388168352929052908120549192509061085390610c9e565b905060006108718261086c67ffffffffffffffff610b93565b610e2d565b9050600061087f8486610ead565b9050600061088d8487610ead565b905060006108b76108a7856108a28686610ec2565b610ec2565b6108b1878a610ed6565b87610eeb565b90506108c4898983610981565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416610926576040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316610976576040517fec442f050000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b6106af848484610fb0565b73ffffffffffffffffffffffffffffffffffffffff83166109d1576040517fe602df050000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b73ffffffffffffffffffffffffffffffffffffffff8216610a21576040517f94280d620000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b6000610a2c82611142565b90506000610a3985610c68565b90506000610a478483610cbb565b9050610a5285610c68565b91506000610a608584610cbb565b9050604051806060016040528085815260200183815260200182815250600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010155604082015181600201559050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a78484604051610b82929190918252602082015260400190565b60405180910390a350505050505050565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f0400000000000000000000000000000000000000000000000000000000000000600482015267ffffffffffffffff8216602482015260009060649063d9b60b609060440161079f565b600073ffffffffffffffffffffffffffffffffffffffff8316610c55576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b610c6183600084610fb0565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205490911680610431575090919050565b600081600003610cb2576104316000610b93565b6104318261119c565b60408051606083901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660208201528151601481830301815260348201928390527f3c6f0e6800000000000000000000000000000000000000000000000000000000909252600091606491633c6f0e6891610d5d917f04000000000000000000000000000000000000000000000000000000000000009188916038016118b5565b6020604051808303816000875af1158015610d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6191906118f6565b600073ffffffffffffffffffffffffffffffffffffffff8316610df2576040517fec442f050000000000000000000000000000000000000000000000000000000081526000600482015260240161091d565b610c6160008484610fb0565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260016020526040812054610c6181610c9e565b60006064637c12a1eb610e42600480856111ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810186905260448101859052606401610d5d565b6000606463dd148693610e42600480856111ac565b6000606463fb7da35f610e428380806111ac565b6000606463371d1bf2610e42600480856111ac565b600060646320cc408d610f00600480856111ac565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905260448101869052606481018590526084016020604051808303816000875af1158015610f8c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106af91906118f6565b6000808281610fbf6001611209565b905073ffffffffffffffffffffffffffffffffffffffff8716611023576000610fe9600354610c9e565b9050610ff58187611268565b905061100081611142565b600355600061100e88610dfe565b905061101a8188611268565b9450505061106b565b600061102e88610dfe565b9050600061103b88610dfe565b9050600061104a83838a61127d565b9097509450905061105b8a8261133b565b6110658683610ed6565b94505050505b73ffffffffffffffffffffffffffffffffffffffff86166110b3576000611093600354610c9e565b905061109f8184610ed6565b90506110aa81611142565b600355506110bd565b6110bd868461133b565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f9ed053bb818ff08b8353cd46f78db1f0799f31c9e4458fdb425c10eccd2efc44611116858b610cbb565b611120868b610cbb565b6040805192835260208301919091520160405180910390a39695505050505050565b6000606463c50c9c0260045b60f81b846040518363ffffffff1660e01b815260040161079f9291907fff00000000000000000000000000000000000000000000000000000000000000929092168252602082015260400190565b6000606463d2c135e5600461114e565b60008160028111156111c0576111c0611886565b60ff1660088460048111156111d7576111d7611886565b61ffff16901b61ffff1660108660048111156111f5576111f5611886565b62ffffff16901b171760e81b949350505050565b6000808261121857600061121b565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b6090604401610d5d565b60006064638c5d0150610e42600480856111ac565b6000808080808060646356c72d28611298600480808661138e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b81168252919091166004820152602481018c9052604481018b9052606481018a90526084016060604051808303816000875af1158015611305573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611329919061190f565b919b909a509098509650505050505050565b600061134683610c68565b9050611352828261140e565b73ffffffffffffffffffffffffffffffffffffffff90931660009081526001602081815260409092208551815594909101519301929092555050565b60008160028111156113a2576113a2611886565b60ff1660088460048111156113b9576113b9611886565b61ffff16901b61ffff1660108660048111156113d7576113d7611886565b62ffffff16901b62ffffff1660188860048111156113f7576113f7611886565b63ffffffff16901b17171760e01b95945050505050565b604080518082019091526000808252602082015261142b83611142565b81526114378383610cbb565b602082015292915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461146657600080fd5b919050565b60006020828403121561147d57600080fd5b610c6182611442565b6000815180845260005b818110156114ac57602081850181015186830182015201611490565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610c616020830184611486565b60006040828403121561150f57600080fd5b50919050565b60008060006060848603121561152a57600080fd5b61153384611442565b925061154160208501611442565b9150604084013567ffffffffffffffff81111561155d57600080fd5b611569868287016114fd565b9150509250925092565b6000806040838503121561158657600080fd5b61158f83611442565b946020939093013593505050565b600080604083850312156115b057600080fd5b6115b983611442565b9150602083013567ffffffffffffffff811681146115d657600080fd5b809150509250929050565b6000806000606084860312156115f657600080fd5b6115ff84611442565b925061160d60208501611442565b9150604084013590509250925092565b6000806040838503121561163057600080fd5b61163983611442565b9150602083013580151581146115d657600080fd5b6000806040838503121561166157600080fd5b61166a83611442565b9150602083013567ffffffffffffffff81111561168657600080fd5b611692858286016114fd565b9150509250929050565b600080604083850312156116af57600080fd5b6116b883611442565b91506116c660208401611442565b90509250929050565b600181811c908216806116e357607f821691505b60208210810361150f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561176e5761176e61171c565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156117bb576117bb61171c565b604052919050565b6000604082360312156117d557600080fd5b6117dd61174b565b8235815260208084013567ffffffffffffffff808211156117fd57600080fd5b9085019036601f83011261181057600080fd5b8135818111156118225761182261171c565b611852847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611774565b9150808252368482850101111561186857600080fd5b80848401858401376000908201840152918301919091525092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7fff00000000000000000000000000000000000000000000000000000000000000841681528260208201526060604082015260006104676060830184611486565b60006020828403121561190857600080fd5b5051919050565b60008060006060848603121561192457600080fd5b835192506020840151915060408401519050925092509256fea164736f6c6343000813000a";
701
+ "0x60806040523480156200001157600080fd5b506040518060400160405280601081526020016f5072697661746545524332304d6f636b60801b81525060405180604001604052806005815260200164504532304d60d81b81525081600590816200006a919062000127565b50600662000079828262000127565b505050620001f3565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000ad57607f821691505b602082108103620000ce57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200012257600081815260208120601f850160051c81016020861015620000fd5750805b601f850160051c820191505b818110156200011e5782815560010162000109565b5050505b505050565b81516001600160401b0381111562000143576200014362000082565b6200015b8162000154845462000098565b84620000d4565b602080601f8311600181146200019357600084156200017a5750858301515b600019600386901b1c1916600185901b1785556200011e565b600085815260208120601f198616915b82811015620001c457888601518255948401946001909101908401620001a3565b5085821015620001e35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b611d5280620002036000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806370a08231116100cd57806395d89b41116100815780639dc29fac116100665780639dc29fac1461032d578063a9059cbb14610340578063dd62ed3e1461035357600080fd5b806395d89b411461031257806396b2db381461031a57600080fd5b80638269bcc3116100b25780638269bcc3146102d957806383ae57f4146102ec5780638e532c44146102ff57600080fd5b806370a082311461025f578063722713f7146102d157600080fd5b806323b872dd11610124578063313ce56711610109578063313ce5671461022857806340c10f19146102375780635d484ff81461024c57600080fd5b806323b872dd1461020257806326a9b3f11461021557600080fd5b8063043d20851461015657806306fdde03146101b9578063095ea7b3146101ce57806318160ddd146101f1575b600080fd5b61018f6101643660046117e2565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152602081905260409020541690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101c16103a9565b6040516101b09190611861565b6101e16101dc366004611874565b61043b565b60405190151581526020016101b0565b60005b6040519081526020016101b0565b6101f461021036600461189e565b610455565b6101e16102233660046118da565b610479565b604051600681526020016101b0565b61024a610245366004611874565b610572565b005b6101f461025a36600461192e565b610589565b6102c461026d3660046117e2565b60408051808201909152600080825260208201525073ffffffffffffffffffffffffffffffffffffffff16600090815260016020908152604091829020825180840190935260028101548352600301549082015290565b6040516101b0919061198c565b6101f46105c0565b6101e16102e73660046117e2565b6105d0565b6101f46102fa3660046119a3565b610663565b6101e161030d3660046119a3565b610689565b6101c16106b1565b6101f46103283660046118da565b6106c0565b61024a61033b366004611874565b61076b565b6101f461034e366004611874565b61077d565b6103666103613660046119f1565b610793565b60408051825180518252602090810151818301528084015180518385015281015160608301529290910151805160808301529091015160a082015260c0016101b0565b6060600580546103b890611a24565b80601f01602080910402602001604051908101604052809291908181526020018280546103e490611a24565b80156104315780601f1061040657610100808354040283529160200191610431565b820191906000526020600020905b81548152906001019060200180831161041457829003601f168201915b5050505050905090565b60003361044981858561082e565b60019150505b92915050565b600033610463858285610a7b565b61046e858585610ba8565b9150505b9392505050565b60008061048533610c55565b905082156105005733600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff88168452825291829020825180840190935280548352600181015491830191909152906104ea906104e490610c8b565b83610cb7565b8051600283015560200151600390910155610449565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845282529182902082518084019093528054835260018101549183019190915290610557906104e490610c8b565b80516004830155602001516005909101555060019392505050565b6105848261057f83610da1565b610e47565b505050565b6000338161059e61059985611b18565b610ea5565b90506105ab868383610a7b565b6105b6868683610ba8565b9695505050505050565b60006105cb33610f15565b905090565b6000806105dc33610f15565b33600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861617905590506106358184610cb7565b3360009081526001602081815260409092208351600282015592909101516003909201919091559392505050565b6000338161067361059985611b18565b9050610680828683610ba8565b95945050505050565b6000338161069961059985611b18565b90506106a682868361082e565b506001949350505050565b6060600680546103b890611a24565b6000811561071d5733600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452825291829020825180840190935280548352600101549082015261071690610c8b565b905061044f565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260209081526040808320338452825291829020825180840190935280548352600101549082015261071690610c8b565b6105848261077883610da1565b610f5a565b60003361078b818585610ba8565b949350505050565b61079b611730565b5073ffffffffffffffffffffffffffffffffffffffff918216600090815260026020818152604080842094909516835292835290839020835160a08101855281546060820190815260018301546080830152815284518086018652928201548352600382015483850152808401929092528351808501855260048201548152600590910154928101929092529182015290565b73ffffffffffffffffffffffffffffffffffffffff8316610883576040517fe602df05000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166108d3576040517f94280d620000000000000000000000000000000000000000000000000000000081526000600482015260240161087a565b60006108de82610fb8565b905060006108eb85610c55565b905060006108f98483610cb7565b905061090485610c55565b915060006109128584610cb7565b9050604051806060016040528085815260200183815260200182815250600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000016000820151816000015560208201518160010155505060208201518160020160008201518160000155602082015181600101555050604082015181600401600082015181600001556020820151816001015550509050508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f836b0bdb95065391d1c4c568d3e48559e54d5969d06d7ea87f85869e1ef69dc88484604051610a6a929190611bfd565b60405180910390a350505050505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602081815260408084208151808301909252805482529092015490820152610ac090610c8b565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260026020908152604080832093881683529281528282208351808501909452805484526001015490830152919250610b1490610c8b565b90506000610b4a82610b457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610da1565b61108c565b90506000610b58848661114b565b90506000610b66848761114b565b90506000610b90610b8085610b7b8686611160565b611160565b610b8a878a611174565b87611189565b9050610b9d89898361082e565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416610bfa576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526000600482015260240161087a565b73ffffffffffffffffffffffffffffffffffffffff8316610c4a576040517fec442f050000000000000000000000000000000000000000000000000000000081526000600482015260240161087a565b61078b84848461124e565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260408120549091168061044f575090919050565b8051600090158015610c9f57506020820151155b15610cae5761044f6000610da1565b61044f8261141c565b6040805180820190915260008082526020820152600080606463e5c83313600660f81b8787604051602001610d17919060609190911b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016815260140190565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401610d4493929190611c52565b60408051808303816000875af1158015610d62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d869190611c93565b60408051808201909152918252602082015295945050505050565b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081527f060000000000000000000000000000000000000000000000000000000000000060048201526024810182905260009060649063d9b60b60906044015b6020604051808303816000875af1158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044f9190611cb7565b600073ffffffffffffffffffffffffffffffffffffffff8316610e99576040517fec442f050000000000000000000000000000000000000000000000000000000081526000600482015260240161087a565b6104726000848461124e565b80518051602091820151918301516040517f0135e466000000000000000000000000000000000000000000000000000000008152600093606493630135e46693610e04937f0600000000000000000000000000000000000000000000000000000000000000939190600401611cd0565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160208181526040808420815180830190925280548252909201549082015261047281610c8b565b600073ffffffffffffffffffffffffffffffffffffffff8316610fac576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526000600482015260240161087a565b6104728360008461124e565b60408051808201825260008082526020820181905291517f1f4491de0000000000000000000000000000000000000000000000000000000081527f06000000000000000000000000000000000000000000000000000000000000006004820152602481018490529091908190606490631f4491de9060440160408051808303816000875af115801561104e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110729190611c93565b604080518082019091529182526020820152949350505050565b60006064637c12a1eb6110a16006808561148f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff0000000000000000000000000000000000000000000000000000000000909116600482015260248101869052604481018590526064015b6020604051808303816000875af1158015611127573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104729190611cb7565b6000606463dd1486936110a16006808561148f565b6000606463fb7da35f6110a183808061148f565b6000606463371d1bf26110a16006808561148f565b600060646320cc408d61119e6006808561148f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681527fffffff000000000000000000000000000000000000000000000000000000000090911660048201526024810187905260448101869052606481018590526084016020604051808303816000875af115801561122a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078b9190611cb7565b600080828161125d60016114ec565b905073ffffffffffffffffffffffffffffffffffffffff87166112e057604080518082019091526003548152600454602082015260009061129d90610c8b565b90506112a9818761154b565b90506112b481610fb8565b80516003556020015160045560006112cb88610f15565b90506112d7818861154b565b94505050611328565b60006112eb88610f15565b905060006112f888610f15565b9050600061130783838a611560565b909750945090506113188a8261161e565b6113228683611174565b94505050505b73ffffffffffffffffffffffffffffffffffffffff861661138f57604080518082019091526003548152600454602082015260009061136690610c8b565b90506113728184611174565b905061137d81610fb8565b80516003556020015160045550611399565b611399868461161e565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f51d0ad1c942bf69951ef3f74b4b135c487a07fcefe7c0247e1940b708654c5a36113f2858b610cb7565b6113fc868b610cb7565b60405161140a929190611bfd565b60405180910390a39695505050505050565b805160208201516040517f2d5831350000000000000000000000000000000000000000000000000000000081527f0600000000000000000000000000000000000000000000000000000000000000600482015260248101929092526044820152600090606490632d583135908201610e04565b60008160028111156114a3576114a3611c23565b60ff1660088460068111156114ba576114ba611c23565b61ffff16901b61ffff1660108660068111156114d8576114d8611c23565b62ffffff16901b171760e81b949350505050565b600080826114fb5760006114fe565b60015b6040517fd9b60b600000000000000000000000000000000000000000000000000000000081526000600482015260ff9190911660248201819052915060649063d9b60b6090604401611108565b60006064638c5d01506110a16006808561148f565b6000808080808060646356c72d2861157b6006808086611688565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b81168252919091166004820152602481018c9052604481018b9052606481018a90526084016060604051808303816000875af11580156115e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160c9190611d17565b919b909a509098509650505050505050565b600061162983610c55565b90506116358282611708565b73ffffffffffffffffffffffffffffffffffffffff909316600090815260016020818152604090922085518051825583015191810191909155938101518051600286015501516003909301929092555050565b600081600281111561169c5761169c611c23565b60ff1660088460068111156116b3576116b3611c23565b61ffff16901b61ffff1660108660068111156116d1576116d1611c23565b62ffffff16901b62ffffff1660188860068111156116f1576116f1611c23565b63ffffffff16901b17171760e01b95945050505050565b611710611797565b61171983610fb8565b81526117258383610cb7565b602082015292915050565b6040805160a08101909152600060608201818152608083019190915281908152602001611770604051806040016040528060008152602001600081525090565b8152602001611792604051806040016040528060008152602001600081525090565b905290565b6040805160808101825260009181018281526060820192909252908190611770565b803573ffffffffffffffffffffffffffffffffffffffff811681146117dd57600080fd5b919050565b6000602082840312156117f457600080fd5b610472826117b9565b6000815180845260005b8181101561182357602081850181015186830182015201611807565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b60208152600061047260208301846117fd565b6000806040838503121561188757600080fd5b611890836117b9565b946020939093013593505050565b6000806000606084860312156118b357600080fd5b6118bc846117b9565b92506118ca602085016117b9565b9150604084013590509250925092565b600080604083850312156118ed57600080fd5b6118f6836117b9565b91506020830135801515811461190b57600080fd5b809150509250929050565b60006060828403121561192857600080fd5b50919050565b60008060006060848603121561194357600080fd5b61194c846117b9565b925061195a602085016117b9565b9150604084013567ffffffffffffffff81111561197657600080fd5b61198286828701611916565b9150509250925092565b81518152602080830151908201526040810161044f565b600080604083850312156119b657600080fd5b6119bf836117b9565b9150602083013567ffffffffffffffff8111156119db57600080fd5b6119e785828601611916565b9150509250929050565b60008060408385031215611a0457600080fd5b611a0d836117b9565b9150611a1b602084016117b9565b90509250929050565b600181811c90821680611a3857607f821691505b602082108103611928577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611ac357611ac3611a71565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611b1057611b10611a71565b604052919050565b60008136036060811215611b2b57600080fd5b611b33611aa0565b6040821215611b4157600080fd5b611b49611aa0565b84358152602080860135818301529082526040850135925067ffffffffffffffff80841115611b7757600080fd5b9285019236601f850112611b8a57600080fd5b833581811115611b9c57611b9c611a71565b611bcc837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611ac9565b91508082523683828701011115611be257600080fd5b80838601848401376000908201830152908201529392505050565b825181526020808401518183015282516040830152820151606082015260808101610472565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7fff000000000000000000000000000000000000000000000000000000000000008416815282602082015260606040820152600061068060608301846117fd565b60008060408385031215611ca657600080fd5b505080516020909101519092909150565b600060208284031215611cc957600080fd5b5051919050565b7fff00000000000000000000000000000000000000000000000000000000000000851681528360208201528260408201526080606082015260006105b660808301846117fd565b600080600060608486031215611d2c57600080fd5b835192506020840151915060408401519050925092509256fea164736f6c6343000813000a";
570
702
 
571
703
  type PrivateERC20MockConstructorParams =
572
704
  | [signer?: Signer]