@coti-io/coti-contracts 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (481) hide show
  1. package/.github/workflows/npm-publish.yml +1 -1
  2. package/contracts/access/DataPrivacyFramework/DataPrivacyFramework.sol +1 -1
  3. package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +1 -1
  4. package/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.sol +2 -4
  5. package/contracts/disperse/disperseToken/MintDisperser.sol +1 -3
  6. package/contracts/disperse/disperseToken/TokenDisperser.sol +1 -1
  7. package/contracts/messaging/PrivateMessaging.sol +456 -0
  8. package/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock.sol +1 -1
  9. package/contracts/mocks/messaging/PrivateMessagingHarness.sol +54 -0
  10. package/contracts/mocks/oracle/CotiPriceConsumerMock.sol +31 -0
  11. package/contracts/mocks/token/ERC20DecimalsMock.sol +21 -0
  12. package/contracts/mocks/token/ERC20Mock.sol +1 -1
  13. package/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.sol +1 -1
  14. package/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.sol +9 -4
  15. package/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.sol +1 -1
  16. package/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.sol +1 -1
  17. package/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock.sol +1 -1
  18. package/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.sol +1 -1
  19. package/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol +1 -1
  20. package/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.sol +1 -1
  21. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.sol +1 -1
  22. package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.sol +1 -1
  23. package/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock.sol +1 -1
  24. package/contracts/mocks/utils/mpc/Arithmetic128TestsContract.sol +1 -1
  25. package/contracts/mocks/utils/mpc/Arithmetic256TestsContract.sol +1 -1
  26. package/contracts/mocks/utils/mpc/ArithmeticAddTestsContract.sol +196 -0
  27. package/contracts/mocks/utils/mpc/ArithmeticMulTestsContract.sol +194 -0
  28. package/contracts/mocks/utils/mpc/ArithmeticSigned128TestsContract.sol +63 -0
  29. package/contracts/mocks/utils/mpc/ArithmeticSigned256TestsContract.sol +107 -0
  30. package/contracts/mocks/utils/mpc/ArithmeticSignedNarrowTestsContract.sol +123 -0
  31. package/contracts/mocks/utils/mpc/ArithmeticSubTestsContract.sol +196 -0
  32. package/contracts/mocks/utils/mpc/Bitwise128TestsContract.sol +1 -1
  33. package/contracts/mocks/utils/mpc/Bitwise256TestsContract.sol +1 -1
  34. package/contracts/mocks/utils/mpc/BitwiseTestsContract.sol +1 -1
  35. package/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.sol +1 -1
  36. package/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.sol +1 -1
  37. package/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol +1 -1
  38. package/contracts/mocks/utils/mpc/Comparison128TestsContract.sol +1 -1
  39. package/contracts/mocks/utils/mpc/Comparison1TestsContract.sol +1 -1
  40. package/contracts/mocks/utils/mpc/Comparison256TestsContract.sol +1 -1
  41. package/contracts/mocks/utils/mpc/Comparison2TestsContract.sol +1 -1
  42. package/contracts/mocks/utils/mpc/MinMax128TestsContract.sol +1 -1
  43. package/contracts/mocks/utils/mpc/MinMax256TestsContract.sol +1 -1
  44. package/contracts/mocks/utils/mpc/MinMaxTestsContract.sol +1 -1
  45. package/contracts/mocks/utils/mpc/MinimalImplementation.sol +1 -1
  46. package/contracts/mocks/utils/mpc/MinimalProxy.sol +1 -1
  47. package/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.sol +1 -1
  48. package/contracts/mocks/utils/mpc/MiscellaneousTestsContract.sol +1 -1
  49. package/contracts/mocks/utils/mpc/MpcOperations128TestContract.sol +1 -1
  50. package/contracts/mocks/utils/mpc/MpcOperationsTestContract.sol +4 -4
  51. package/contracts/mocks/utils/mpc/Mux128TestsContract.sol +1 -1
  52. package/contracts/mocks/utils/mpc/Mux256TestsContract.sol +1 -1
  53. package/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.sol +1 -1
  54. package/contracts/mocks/utils/mpc/OnBoard128TestsContract.sol +1 -1
  55. package/contracts/mocks/utils/mpc/OnBoard256TestsContract.sol +1 -1
  56. package/contracts/mocks/utils/mpc/PrivacyImplementationV1.sol +1 -1
  57. package/contracts/mocks/utils/mpc/PrivacyImplementationV2.sol +1 -1
  58. package/contracts/mocks/utils/mpc/PrivacyProxy.sol +1 -1
  59. package/contracts/mocks/utils/mpc/Random128TestsContract.sol +1 -1
  60. package/contracts/mocks/utils/mpc/Random256TestsContract.sol +1 -1
  61. package/contracts/mocks/utils/mpc/Shift128TestsContract.sol +1 -1
  62. package/contracts/mocks/utils/mpc/Shift256TestsContract.sol +1 -1
  63. package/contracts/mocks/utils/mpc/ShiftTestsContract.sol +1 -1
  64. package/contracts/mocks/utils/mpc/StringTestsContract.sol +1 -1
  65. package/contracts/mocks/utils/mpc/Transfer128TestsContract.sol +1 -1
  66. package/contracts/mocks/utils/mpc/Transfer256TestsContract.sol +1 -1
  67. package/contracts/mocks/utils/mpc/TransferScalarTestsContract.sol +1 -1
  68. package/contracts/mocks/utils/mpc/TransferTestsContract.sol +1 -1
  69. package/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.sol +1 -1
  70. package/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.sol +1 -1
  71. package/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract.sol +1 -1
  72. package/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract.sol +1 -1
  73. package/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol +1 -1
  74. package/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract.sol +1 -1
  75. package/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract.sol +1 -1
  76. package/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol +1 -1
  77. package/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.sol +1 -1
  78. package/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.sol +2 -2
  79. package/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.sol +1 -1
  80. package/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.sol +1 -1
  81. package/contracts/node/CotiNodeRewards.sol +3 -3
  82. package/contracts/node/SoulboundNodeNFT.sol +23 -24
  83. package/contracts/onboard/AccountOnboard.sol +1 -1
  84. package/contracts/oracle/CotiPriceConsumer.sol +103 -0
  85. package/contracts/oracle/ICotiPriceConsumer.sol +15 -0
  86. package/contracts/oracle/IStdReference.sol +26 -0
  87. package/contracts/pod/IInbox.sol +231 -0
  88. package/contracts/pod/IInboxMiner.sol +53 -0
  89. package/contracts/pod/InboxUser.sol +29 -0
  90. package/contracts/pod/InboxUserCotiTestnet.sol +13 -0
  91. package/contracts/pod/PodNetworkConstants.sol +30 -0
  92. package/contracts/pod/examples/MpcAdder.sol +57 -0
  93. package/contracts/pod/examples/MpcAdderPausable.sol +25 -0
  94. package/contracts/pod/examples/MpcAdderPausable.sol.bak +25 -0
  95. package/contracts/pod/examples/it128/PodAdder128.sol +48 -0
  96. package/contracts/pod/examples/it256/PodAdder256.sol +48 -0
  97. package/contracts/pod/fee/IInboxFeeManager.sol +40 -0
  98. package/contracts/pod/manifest.json +52 -0
  99. package/contracts/pod/mpc/PodLib.sol +10 -0
  100. package/contracts/pod/mpc/PodLib128.sol +361 -0
  101. package/contracts/pod/mpc/PodLib256.sol +361 -0
  102. package/contracts/pod/mpc/PodLib64.sol +385 -0
  103. package/contracts/pod/mpc/PodLibBase.sol +72 -0
  104. package/contracts/pod/mpc/PodUser.sol +58 -0
  105. package/contracts/pod/mpc/PodUserFuji.sol +14 -0
  106. package/contracts/pod/mpc/PodUserSepolia.sol +13 -0
  107. package/contracts/pod/mpc/coti-side/IPodExecutorOps.sol +99 -0
  108. package/contracts/pod/mpccodec/MpcAbiCodec.sol +482 -0
  109. package/contracts/pod/privacy/IPodPriceOracle.sol +20 -0
  110. package/contracts/pod/privacy/IPrivacyPortal.sol +248 -0
  111. package/contracts/pod/privacy/IPrivacyPortalFactory.sol +88 -0
  112. package/contracts/pod/privacy/PortalFeeOracle.sol +51 -0
  113. package/contracts/pod/privacy/PrivacyPortal.sol +871 -0
  114. package/contracts/pod/privacy/PrivacyPortalFactory.sol +492 -0
  115. package/contracts/pod/privacy/PrivacyPortalFeeLib.sol +98 -0
  116. package/contracts/pod/privacy/mocks/CloneHelper.sol +14 -0
  117. package/contracts/pod/privacy/mocks/MockERC20.sol +26 -0
  118. package/contracts/pod/privacy/mocks/MockPodERC20ForPortal.sol +160 -0
  119. package/contracts/pod/privacy/mocks/MockPrivacyPortalFactory.sol +125 -0
  120. package/contracts/pod/privacy/mocks/MockWrappedNative.sol +24 -0
  121. package/contracts/pod/token/erc7984/Erc7984Constants.sol +9 -0
  122. package/contracts/pod/token/erc7984/Erc7984Pointers.sol +29 -0
  123. package/contracts/pod/token/erc7984/IERC7984.sol +69 -0
  124. package/contracts/pod/token/erc7984/IERC7984PortalWrapper.sol +31 -0
  125. package/contracts/pod/token/erc7984/PodErc7984Mixin.sol +125 -0
  126. package/contracts/pod/token/erc7984/README.md +60 -0
  127. package/contracts/pod/token/perc20/IPodERC20.sol +298 -0
  128. package/contracts/pod/token/perc20/PodERC20.sol +1021 -0
  129. package/contracts/pod/token/perc20/PodErc20Mintable.sol +88 -0
  130. package/contracts/pod/token/perc20/PodErc20MintableInitializable.sol +42 -0
  131. package/contracts/pod/token/perc20/cotiside/IPodErc20CotiSide.sol +88 -0
  132. package/contracts/pod/token/perc20/cotiside/PodErc20CotiMother.sol +529 -0
  133. package/contracts/pod/utils/IWrappedNative.sol +11 -0
  134. package/contracts/privacyBridge/PrivacyBridge.sol +376 -94
  135. package/contracts/privacyBridge/PrivacyBridgeCotiNative.sol +210 -162
  136. package/contracts/privacyBridge/PrivacyBridgeERC20.sol +242 -160
  137. package/contracts/privacyBridge/PrivacyBridgeUSDCe.sol +8 -2
  138. package/contracts/privacyBridge/PrivacyBridgeUSDT.sol +8 -2
  139. package/contracts/privacyBridge/PrivacyBridgeWADA.sol +8 -2
  140. package/contracts/privacyBridge/PrivacyBridgeWBTC.sol +8 -2
  141. package/contracts/privacyBridge/PrivacyBridgeWETH.sol +8 -2
  142. package/contracts/privacyBridge/PrivacyBridgegCoti.sol +8 -2
  143. package/contracts/token/PrivateERC20/IPrivateERC20.sol +1 -1
  144. package/contracts/token/PrivateERC20/ITokenReceiver.sol +1 -1
  145. package/contracts/token/PrivateERC20/ITokenReceiverEncrypted.sol +1 -1
  146. package/contracts/token/PrivateERC20/PrivateERC20.sol +5 -5
  147. package/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.sol +1 -1
  148. package/contracts/token/PrivateERC20/tokens/PrivateCOTI.sol +1 -1
  149. package/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.sol +1 -1
  150. package/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.sol +1 -1
  151. package/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.sol +1 -1
  152. package/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.sol +1 -1
  153. package/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.sol +1 -1
  154. package/contracts/token/PrivateERC721/IERC721Errors.sol +1 -1
  155. package/contracts/token/PrivateERC721/PrivateERC721.sol +1 -1
  156. package/contracts/token/PrivateERC721/extensions/IPrivateERC721URIStorage.sol +1 -1
  157. package/contracts/token/PrivateERC721/extensions/PrivateERC721URIStorage.sol +1 -1
  158. package/contracts/token/points/CotiTokenPoints004.sol +43 -0
  159. package/contracts/utils/mpc/MpcCore.sol +610 -1
  160. package/contracts/utils/mpc/MpcInterface.sol +1 -1
  161. package/hardhat.config.ts +9 -15
  162. package/package.json +4 -4
  163. package/scripts/add-bridge-operators.cjs +87 -0
  164. package/scripts/deploy-coti-price-consumer-mainnet.cjs +49 -0
  165. package/scripts/deployCotiNodeRewards.ts +51 -0
  166. package/scripts/deployCotiTokenPoints004.ts +61 -0
  167. package/scripts/deployFixedRatioCoinDisperserUnlimitedWindow.ts +68 -0
  168. package/scripts/redeploy-private-and-bridges.cjs +201 -0
  169. package/scripts/set-bridge-limits-mainnet.cjs +177 -0
  170. package/scripts/verify-mainnet-private-bridges.cjs +289 -0
  171. package/scripts/verifyCotiTokenPoints004.ts +123 -0
  172. package/scripts/verifyFixedRatioCoinDisperserUnlimitedWindow.ts +112 -0
  173. package/sonar-project.properties +11 -0
  174. package/test/messaging/PrivateMessaging.test.ts +158 -0
  175. package/test/pod/privacy/PrivacyPortal.access.test.ts +756 -0
  176. package/test/pod/privacy/PrivacyPortal.recovery.test.ts +263 -0
  177. package/test/privacyBridge/UnifiedPrivacyBridges.test.cjs +1665 -0
  178. package/test/token/PrivateERC20/PrivacyBridge.fees.test.ts +162 -239
  179. package/test/utils/mpc/CheckedSignedArithmetic256.test.ts +163 -0
  180. package/test/utils/mpc/NegativeCases.test.ts +3 -3
  181. package/test/utils/mpc/Precompile.test.ts +6 -6
  182. package/typechain-types/@openzeppelin/contracts/access/AccessControl.ts +324 -0
  183. package/typechain-types/@openzeppelin/contracts/access/AccessControlEnumerable.ts +361 -0
  184. package/typechain-types/@openzeppelin/contracts/access/IAccessControl.ts +292 -0
  185. package/typechain-types/@openzeppelin/contracts/access/IAccessControlEnumerable.ts +329 -0
  186. package/typechain-types/@openzeppelin/contracts/access/extensions/AccessControlEnumerable.ts +375 -0
  187. package/typechain-types/@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.ts +329 -0
  188. package/typechain-types/@openzeppelin/contracts/access/extensions/index.ts +5 -0
  189. package/typechain-types/@openzeppelin/contracts/access/index.ts +6 -0
  190. package/typechain-types/@openzeppelin/contracts/index.ts +2 -0
  191. package/typechain-types/@openzeppelin/contracts/interfaces/IERC1363.ts +412 -0
  192. package/typechain-types/@openzeppelin/contracts/interfaces/IERC5267.ts +151 -0
  193. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.ts +69 -0
  194. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.ts +69 -0
  195. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.ts +69 -0
  196. package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +6 -0
  197. package/typechain-types/@openzeppelin/contracts/interfaces/index.ts +4 -0
  198. package/typechain-types/@openzeppelin/contracts/security/Pausable.ts +150 -0
  199. package/typechain-types/@openzeppelin/contracts/security/index.ts +4 -0
  200. package/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts +286 -0
  201. package/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts +6 -6
  202. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.ts +313 -0
  203. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.ts +356 -0
  204. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.ts +423 -0
  205. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts +286 -0
  206. package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +4 -0
  207. package/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts +3 -0
  208. package/typechain-types/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.ts +69 -0
  209. package/typechain-types/@openzeppelin/contracts/token/ERC20/utils/index.ts +4 -0
  210. package/typechain-types/@openzeppelin/contracts/token/ERC721/ERC721.ts +420 -0
  211. package/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.ts +420 -0
  212. package/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/index.ts +4 -0
  213. package/typechain-types/@openzeppelin/contracts/token/ERC721/index.ts +3 -0
  214. package/typechain-types/@openzeppelin/contracts/utils/Nonces.ts +85 -0
  215. package/typechain-types/@openzeppelin/contracts/utils/Pausable.ts +150 -0
  216. package/typechain-types/@openzeppelin/contracts/utils/ReentrancyGuard.ts +69 -0
  217. package/typechain-types/@openzeppelin/contracts/utils/ShortStrings.ts +69 -0
  218. package/typechain-types/@openzeppelin/contracts/utils/Strings.ts +69 -0
  219. package/typechain-types/@openzeppelin/contracts/utils/cryptography/ECDSA.ts +69 -0
  220. package/typechain-types/@openzeppelin/contracts/utils/cryptography/EIP712.ts +151 -0
  221. package/typechain-types/@openzeppelin/contracts/utils/cryptography/index.ts +5 -0
  222. package/typechain-types/@openzeppelin/contracts/utils/index.ts +9 -0
  223. package/typechain-types/@openzeppelin/contracts/utils/math/SafeCast.ts +69 -0
  224. package/typechain-types/@openzeppelin/contracts/utils/math/index.ts +4 -0
  225. package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1.ts +735 -0
  226. package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.ts +734 -0
  227. package/typechain-types/contracts/disperse/coinByRatio/index.ts +2 -0
  228. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/IOwnable.ts +95 -0
  229. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser.ts +22 -0
  230. package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +1 -0
  231. package/typechain-types/contracts/index.ts +8 -0
  232. package/typechain-types/contracts/messaging/PrivateMessaging.ts +871 -0
  233. package/typechain-types/contracts/messaging/index.ts +4 -0
  234. package/typechain-types/contracts/mocks/index.ts +4 -0
  235. package/typechain-types/contracts/mocks/messaging/PrivateMessagingHarness.ts +951 -0
  236. package/typechain-types/contracts/mocks/messaging/index.ts +4 -0
  237. package/typechain-types/contracts/mocks/oracle/CotiPriceConsumerMock.ts +163 -0
  238. package/typechain-types/contracts/mocks/oracle/index.ts +4 -0
  239. package/typechain-types/contracts/mocks/token/ERC20DecimalsMock.ts +305 -0
  240. package/typechain-types/contracts/mocks/token/ERC20Mock.ts +324 -0
  241. package/typechain-types/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.ts +108 -0
  242. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.ts +1906 -0
  243. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.ts +1296 -0
  244. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.ts +1270 -0
  245. package/typechain-types/contracts/mocks/{utils/mpc/Bitwise128BitTestsContract.ts → token/PrivateERC20/PrivateERC20GtCallerMock.ts} +47 -67
  246. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.ts +757 -25
  247. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/IPrivateERC20TransferAndCallEncrypted.ts +102 -0
  248. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/PrivateERC20ReentrantReceiverMock.ts +154 -0
  249. package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/index.ts +5 -0
  250. package/typechain-types/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.ts +155 -0
  251. package/typechain-types/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.ts +107 -0
  252. package/typechain-types/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.ts +100 -0
  253. package/typechain-types/contracts/mocks/token/PrivateERC20/index.ts +10 -0
  254. package/typechain-types/contracts/mocks/token/index.ts +2 -0
  255. package/typechain-types/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.ts +6 -6
  256. package/typechain-types/contracts/node/CotiNodeRewards.ts +566 -0
  257. package/typechain-types/contracts/node/SoulboundNodeNFT.sol/IERC5192.ts +123 -0
  258. package/typechain-types/contracts/node/SoulboundNodeNFT.sol/SoulboundNodeNFT.ts +975 -0
  259. package/typechain-types/contracts/node/SoulboundNodeNFT.sol/index.ts +5 -0
  260. package/typechain-types/contracts/node/index.ts +6 -0
  261. package/typechain-types/contracts/oracle/CotiPriceConsumer.ts +256 -0
  262. package/typechain-types/contracts/oracle/ICotiPriceConsumer.ts +119 -0
  263. package/typechain-types/contracts/oracle/IStdReference.ts +136 -0
  264. package/typechain-types/contracts/oracle/index.ts +6 -0
  265. package/typechain-types/contracts/privacyBridge/PrivacyBridge.ts +1642 -0
  266. package/typechain-types/contracts/privacyBridge/PrivacyBridgeCotiNative.ts +1884 -0
  267. package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/IHasDecimals.ts +84 -0
  268. package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20.ts +1906 -0
  269. package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/index.ts +5 -0
  270. package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDCe.ts +1906 -0
  271. package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDT.ts +1906 -0
  272. package/typechain-types/contracts/privacyBridge/PrivacyBridgeWADA.ts +1906 -0
  273. package/typechain-types/contracts/privacyBridge/PrivacyBridgeWBTC.ts +1906 -0
  274. package/typechain-types/contracts/privacyBridge/PrivacyBridgeWETH.ts +1906 -0
  275. package/typechain-types/contracts/privacyBridge/PrivacyBridgegCoti.ts +1906 -0
  276. package/typechain-types/contracts/privacyBridge/index.ts +13 -0
  277. package/typechain-types/contracts/token/PrivateERC20/IPrivateERC20.ts +439 -19
  278. package/typechain-types/contracts/token/PrivateERC20/ITokenReceiver.ts +100 -0
  279. package/typechain-types/contracts/token/PrivateERC20/ITokenReceiverEncrypted.ts +99 -0
  280. package/typechain-types/contracts/token/PrivateERC20/PrivateERC20.ts +763 -15
  281. package/typechain-types/contracts/token/PrivateERC20/index.ts +4 -0
  282. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.ts +1270 -0
  283. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTI.ts +1270 -0
  284. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.ts +1270 -0
  285. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.ts +1270 -0
  286. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.ts +1270 -0
  287. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.ts +1270 -0
  288. package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.ts +1270 -0
  289. package/typechain-types/contracts/token/PrivateERC20/tokens/index.ts +10 -0
  290. package/typechain-types/contracts/token/index.ts +2 -0
  291. package/typechain-types/contracts/token/points/CotiTokenPoints004.sol/COTITokenPoints004.ts +826 -0
  292. package/typechain-types/contracts/token/points/CotiTokenPoints004.ts +826 -0
  293. package/typechain-types/contracts/token/points/index.ts +4 -0
  294. package/typechain-types/factories/@openzeppelin/contracts/access/AccessControlEnumerable__factory.ts +276 -0
  295. package/typechain-types/factories/@openzeppelin/contracts/access/AccessControl__factory.ts +250 -0
  296. package/typechain-types/factories/@openzeppelin/contracts/access/IAccessControlEnumerable__factory.ts +244 -0
  297. package/typechain-types/factories/@openzeppelin/contracts/access/IAccessControl__factory.ts +218 -0
  298. package/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +22 -0
  299. package/typechain-types/factories/@openzeppelin/contracts/access/extensions/AccessControlEnumerable__factory.ts +316 -0
  300. package/typechain-types/factories/@openzeppelin/contracts/access/extensions/IAccessControlEnumerable__factory.ts +265 -0
  301. package/typechain-types/factories/@openzeppelin/contracts/access/extensions/index.ts +5 -0
  302. package/typechain-types/factories/@openzeppelin/contracts/access/index.ts +5 -0
  303. package/typechain-types/factories/@openzeppelin/contracts/index.ts +1 -0
  304. package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1363__factory.ts +393 -0
  305. package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC5267__factory.ts +71 -0
  306. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors__factory.ts +127 -0
  307. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors__factory.ts +111 -0
  308. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors__factory.ts +128 -0
  309. package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +6 -0
  310. package/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts +3 -0
  311. package/typechain-types/factories/@openzeppelin/contracts/security/Pausable__factory.ts +61 -0
  312. package/typechain-types/factories/@openzeppelin/contracts/security/index.ts +4 -0
  313. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +330 -0
  314. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +3 -3
  315. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable__factory.ts +364 -0
  316. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable__factory.ts +382 -0
  317. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit__factory.ts +540 -0
  318. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts +247 -0
  319. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +4 -0
  320. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts +2 -0
  321. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/utils/SafeERC20__factory.ts +96 -0
  322. package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/utils/index.ts +4 -0
  323. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/ERC721__factory.ts +455 -0
  324. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata__factory.ts +355 -0
  325. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/index.ts +4 -0
  326. package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/index.ts +2 -0
  327. package/typechain-types/factories/@openzeppelin/contracts/utils/Nonces__factory.ts +57 -0
  328. package/typechain-types/factories/@openzeppelin/contracts/utils/Pausable__factory.ts +71 -0
  329. package/typechain-types/factories/@openzeppelin/contracts/utils/ReentrancyGuard__factory.ts +30 -0
  330. package/typechain-types/factories/@openzeppelin/contracts/utils/ShortStrings__factory.ts +83 -0
  331. package/typechain-types/factories/@openzeppelin/contracts/utils/Strings__factory.ts +90 -0
  332. package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.ts +91 -0
  333. package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/EIP712__factory.ts +87 -0
  334. package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/index.ts +5 -0
  335. package/typechain-types/factories/@openzeppelin/contracts/utils/index.ts +7 -0
  336. package/typechain-types/factories/@openzeppelin/contracts/utils/math/SafeCast__factory.ts +118 -0
  337. package/typechain-types/factories/@openzeppelin/contracts/utils/math/index.ts +4 -0
  338. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1__factory.ts +802 -0
  339. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow__factory.ts +749 -0
  340. package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperser__factory.ts +12 -1
  341. package/typechain-types/factories/contracts/disperse/coinByRatio/index.ts +2 -0
  342. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/IOwnable__factory.ts +35 -0
  343. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser__factory.ts +41 -1
  344. package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +1 -0
  345. package/typechain-types/factories/contracts/disperse/disperseToken/TokenDisperser__factory.ts +12 -1
  346. package/typechain-types/factories/contracts/index.ts +4 -0
  347. package/typechain-types/factories/contracts/messaging/PrivateMessaging__factory.ts +1035 -0
  348. package/typechain-types/factories/contracts/messaging/index.ts +4 -0
  349. package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
  350. package/typechain-types/factories/contracts/mocks/index.ts +2 -0
  351. package/typechain-types/factories/contracts/mocks/messaging/PrivateMessagingHarness__factory.ts +1161 -0
  352. package/typechain-types/factories/contracts/mocks/messaging/index.ts +4 -0
  353. package/typechain-types/factories/contracts/mocks/oracle/CotiPriceConsumerMock__factory.ts +159 -0
  354. package/typechain-types/factories/contracts/mocks/oracle/index.ts +4 -0
  355. package/typechain-types/factories/contracts/mocks/token/ERC20DecimalsMock__factory.ts +432 -0
  356. package/typechain-types/factories/contracts/mocks/token/ERC20Mock__factory.ts +430 -0
  357. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock__factory.ts +125 -0
  358. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock__factory.ts +1885 -0
  359. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock__factory.ts +1540 -0
  360. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock__factory.ts +1492 -0
  361. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock__factory.ts +165 -0
  362. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +794 -52
  363. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/IPrivateERC20TransferAndCallEncrypted__factory.ts +54 -0
  364. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/PrivateERC20ReentrantReceiverMock__factory.ts +159 -0
  365. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/index.ts +5 -0
  366. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock__factory.ts +164 -0
  367. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock__factory.ts +130 -0
  368. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock__factory.ts +102 -0
  369. package/typechain-types/factories/contracts/mocks/token/PrivateERC20/index.ts +9 -0
  370. package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
  371. package/typechain-types/factories/contracts/mocks/token/index.ts +2 -0
  372. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128TestsContract__factory.ts +1 -1
  373. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256TestsContract__factory.ts +1 -1
  374. package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +1 -1
  375. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128TestsContract__factory.ts +1 -1
  376. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256TestsContract__factory.ts +1 -1
  377. package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +1 -1
  378. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract__factory.ts +1 -1
  379. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract__factory.ts +1 -1
  380. package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol/CheckedArithmeticWithOverflowBitTestsContract__factory.ts +1 -1
  381. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128TestsContract__factory.ts +1 -1
  382. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
  383. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256TestsContract__factory.ts +1 -1
  384. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +1 -1
  385. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax128TestsContract__factory.ts +1 -1
  386. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax256TestsContract__factory.ts +1 -1
  387. package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
  388. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalImplementation__factory.ts +1 -1
  389. package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalProxy__factory.ts +1 -1
  390. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
  391. package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
  392. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperations128TestContract__factory.ts +1 -1
  393. package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperationsTestContract__factory.ts +1 -1
  394. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux128TestsContract__factory.ts +1 -1
  395. package/typechain-types/factories/contracts/mocks/utils/mpc/Mux256TestsContract__factory.ts +1 -1
  396. package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +1 -1
  397. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard128TestsContract__factory.ts +1 -1
  398. package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard256TestsContract__factory.ts +1 -1
  399. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV1__factory.ts +1 -1
  400. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV2__factory.ts +1 -1
  401. package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyProxy__factory.ts +1 -1
  402. package/typechain-types/factories/contracts/mocks/utils/mpc/Random128TestsContract__factory.ts +1 -1
  403. package/typechain-types/factories/contracts/mocks/utils/mpc/Random256TestsContract__factory.ts +1 -1
  404. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift128TestsContract__factory.ts +1 -1
  405. package/typechain-types/factories/contracts/mocks/utils/mpc/Shift256TestsContract__factory.ts +1 -1
  406. package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
  407. package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
  408. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer128TestsContract__factory.ts +1 -1
  409. package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer256TestsContract__factory.ts +1 -1
  410. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
  411. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
  412. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract__factory.ts +1 -1
  413. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract__factory.ts +1 -1
  414. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +1 -1
  415. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +1 -1
  416. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +1 -1
  417. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +1 -1
  418. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +1 -1
  419. package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +1 -1
  420. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract__factory.ts +1 -1
  421. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract__factory.ts +1 -1
  422. package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract__factory.ts +1 -1
  423. package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +4 -22
  424. package/typechain-types/factories/contracts/node/CotiNodeRewards__factory.ts +576 -0
  425. package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/IERC5192__factory.ts +54 -0
  426. package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/SoulboundNodeNFT__factory.ts +1072 -0
  427. package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/index.ts +5 -0
  428. package/typechain-types/factories/contracts/node/index.ts +5 -0
  429. package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +1 -1
  430. package/typechain-types/factories/contracts/oracle/CotiPriceConsumer__factory.ts +295 -0
  431. package/typechain-types/factories/contracts/oracle/ICotiPriceConsumer__factory.ts +73 -0
  432. package/typechain-types/factories/contracts/oracle/IStdReference__factory.ts +107 -0
  433. package/typechain-types/factories/contracts/oracle/index.ts +6 -0
  434. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeCotiNative__factory.ts +1753 -0
  435. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/IHasDecimals__factory.ts +38 -0
  436. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20__factory.ts +1766 -0
  437. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/index.ts +5 -0
  438. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDCe__factory.ts +1870 -0
  439. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDT__factory.ts +1870 -0
  440. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWADA__factory.ts +1870 -0
  441. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWBTC__factory.ts +1870 -0
  442. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWETH__factory.ts +1870 -0
  443. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridge__factory.ts +1444 -0
  444. package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgegCoti__factory.ts +1870 -0
  445. package/typechain-types/factories/contracts/privacyBridge/index.ts +12 -0
  446. package/typechain-types/factories/contracts/token/PrivateERC20/IPrivateERC20__factory.ts +481 -35
  447. package/typechain-types/factories/contracts/token/PrivateERC20/ITokenReceiverEncrypted__factory.ts +53 -0
  448. package/typechain-types/factories/contracts/token/PrivateERC20/ITokenReceiver__factory.ts +54 -0
  449. package/typechain-types/factories/contracts/token/PrivateERC20/PrivateERC20__factory.ts +812 -52
  450. package/typechain-types/factories/contracts/token/PrivateERC20/index.ts +3 -0
  451. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC__factory.ts +1471 -0
  452. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken__factory.ts +1477 -0
  453. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTI__factory.ts +1468 -0
  454. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateTetherUSD__factory.ts +1471 -0
  455. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedADA__factory.ts +1471 -0
  456. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC__factory.ts +1471 -0
  457. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedEther__factory.ts +1477 -0
  458. package/typechain-types/factories/contracts/token/PrivateERC20/tokens/index.ts +10 -0
  459. package/typechain-types/factories/contracts/token/index.ts +1 -0
  460. package/typechain-types/factories/contracts/token/points/CotiTokenPoints004.sol/COTITokenPoints004__factory.ts +992 -0
  461. package/typechain-types/factories/contracts/token/points/CotiTokenPoints004__factory.ts +992 -0
  462. package/typechain-types/factories/contracts/token/points/index.ts +4 -0
  463. package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +1 -1
  464. package/typechain-types/hardhat.d.ts +1414 -118
  465. package/typechain-types/index.ts +138 -2
  466. package/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol +0 -408
  467. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract.ts +0 -341
  468. package/typechain-types/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract.ts +0 -347
  469. package/typechain-types/contracts/mocks/utils/mpc/Bitwise256BitTestsContract.ts +0 -186
  470. package/typechain-types/contracts/mocks/utils/mpc/Comparison128BitTestsContract.ts +0 -260
  471. package/typechain-types/contracts/mocks/utils/mpc/Comparison256BitTestsContract.ts +0 -260
  472. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.ts +0 -302
  473. package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.ts +0 -322
  474. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract__factory.ts +0 -349
  475. package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract__factory.ts +0 -364
  476. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128BitTestsContract__factory.ts +0 -182
  477. package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256BitTestsContract__factory.ts +0 -182
  478. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128BitTestsContract__factory.ts +0 -255
  479. package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256BitTestsContract__factory.ts +0 -255
  480. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract__factory.ts +0 -332
  481. package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract__factory.ts +0 -380
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- pragma solidity 0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  interface ExtendedOperations {
5
5
 
package/hardhat.config.ts CHANGED
@@ -8,15 +8,21 @@ dotenv.config()
8
8
  /** Bump estimated gas price / EIP-1559 fees by 30% on COTI networks (see hardhat/gasPriceBump.ts). */
9
9
  import "./hardhat/gasPriceBump"
10
10
 
11
- const accounts = process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [];
11
+ const accounts = process.env.PRIVATE_KEY
12
+ ? [process.env.PRIVATE_KEY]
13
+ : process.env.SIGNING_KEYS
14
+ ? process.env.SIGNING_KEYS.split(",").map((k) => k.trim()).filter(Boolean)
15
+ : [];
12
16
 
13
17
  const config: HardhatUserConfig = {
14
18
  defaultNetwork: "coti-testnet",
19
+ // Pinned compiler versions for reproducible bytecode; bump only alongside contract pragma / CI review.
15
20
  solidity: {
16
21
  compilers: [
17
22
  {
18
23
  version: "0.8.20",
19
24
  settings: {
25
+ viaIR: true,
20
26
  optimizer: {
21
27
  enabled: true,
22
28
  runs: 10000
@@ -29,18 +35,6 @@ const config: HardhatUserConfig = {
29
35
  },
30
36
  }
31
37
  },
32
- {
33
- version: "0.8.19",
34
- settings: {
35
- optimizer: {
36
- enabled: true,
37
- runs: 10000
38
- },
39
- metadata: {
40
- bytecodeHash: 'none',
41
- },
42
- }
43
- }
44
38
  ]
45
39
  },
46
40
  networks: {
@@ -73,8 +67,8 @@ const config: HardhatUserConfig = {
73
67
  network: "coti-mainnet",
74
68
  chainId: 2632500,
75
69
  urls: {
76
- apiURL: "https://cotiscan.io/api",
77
- browserURL: "https://cotiscan.io/",
70
+ apiURL: "https://mainnet.cotiscan.io/api",
71
+ browserURL: "https://mainnet.cotiscan.io/",
78
72
  },
79
73
  },
80
74
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coti-io/coti-contracts",
3
- "version": "1.2.0",
3
+ "version": "1.3.1",
4
4
  "description": "A library for smart contract development on the COTI network.",
5
5
  "author": "COTI Development",
6
6
  "repository": {
@@ -40,9 +40,9 @@
40
40
  "typescript": "^5.9.3"
41
41
  },
42
42
  "dependencies": {
43
- "@coti-io/coti-ethers": "^1.0.5",
44
- "@coti-io/coti-sdk-typescript": "^1.0.6",
45
- "@openzeppelin/contracts": "^4.9.6",
43
+ "@coti-io/coti-ethers": "^1.0.6",
44
+ "@coti-io/coti-sdk-typescript": "^1.0.9",
45
+ "@openzeppelin/contracts": "5.4.0",
46
46
  "dotenv": "^16.4.5"
47
47
  }
48
48
  }
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Grant OPERATOR_ROLE on each privacy bridge via addOperator(account).
3
+ * Caller must hold DEFAULT_ADMIN_ROLE on every bridge (typically the deployer owner).
4
+ *
5
+ * Run with:
6
+ * npx hardhat run scripts/add-bridge-operators.cjs --network coti-mainnet
7
+ *
8
+ * Optional env:
9
+ * OPERATOR_ACCOUNT=0x... (default: 0x07dd528aC097f2Fb18fdC048e8d94376621b68C9)
10
+ */
11
+ const hre = require("hardhat");
12
+
13
+ const CHAIN_IDS = {
14
+ cotiTestnet: 7082400,
15
+ cotiMainnet: 2632500,
16
+ "coti-testnet": 7082400,
17
+ "coti-mainnet": 2632500,
18
+ };
19
+
20
+ const DEFAULT_OPERATOR = "0x07dd528aC097f2Fb18fdC048e8d94376621b68C9";
21
+
22
+ /** Privacy bridge contract addresses per chain (from redeploy-private-and-bridges.cjs output). */
23
+ const BRIDGE_ADDRESSES = {
24
+ 2632500: [
25
+ { name: "PrivacyBridgeCotiNative", address: "0x44D864973392064304dD88E2BDef39fF1ab11b7b" },
26
+ { name: "PrivacyBridgeWETH", address: "0x7286c83300f0C7131b4006f3cf9F8e44BeB45c13" },
27
+ { name: "PrivacyBridgeWBTC", address: "0xc3B7EdEe4f1c0A0bA1AcD341e4982371eC869862" },
28
+ { name: "PrivacyBridgeUSDT", address: "0x7685B473DAF1c6DeD815Ca64C6fa18Da2227440D" },
29
+ { name: "PrivacyBridgeUSDCe", address: "0x29334fC23ffa2c44AF1b372336C2296591Eadd86" },
30
+ { name: "PrivacyBridgeWADA", address: "0xFa2126C07F517013c8d237cc465342da89B96f92" },
31
+ { name: "PrivacyBridgegCoti", address: "0xD4e0d9AB16b48c68044cB6aeA3A089380d6D8cD4" },
32
+ ],
33
+ 7082400: [],
34
+ };
35
+
36
+ async function main() {
37
+ const networkName = hre.network.name;
38
+ const chainId = CHAIN_IDS[networkName];
39
+ if (!chainId) {
40
+ throw new Error(`Unsupported network: "${networkName}". Use --network coti-testnet or --network coti-mainnet`);
41
+ }
42
+
43
+ const bridges = BRIDGE_ADDRESSES[chainId];
44
+ if (!bridges?.length) {
45
+ throw new Error(
46
+ `No bridge addresses configured for chainId ${chainId}. Add entries to BRIDGE_ADDRESSES in scripts/add-bridge-operators.cjs`
47
+ );
48
+ }
49
+
50
+ const operatorAccount = process.env.OPERATOR_ACCOUNT || DEFAULT_OPERATOR;
51
+ if (!hre.ethers.isAddress(operatorAccount)) {
52
+ throw new Error(`Invalid OPERATOR_ACCOUNT: ${operatorAccount}`);
53
+ }
54
+
55
+ const [signer] = await hre.ethers.getSigners();
56
+ console.log("Network:", networkName, `(chainId: ${chainId})`);
57
+ console.log("Signer:", signer.address);
58
+ console.log("Operator to add:", operatorAccount);
59
+ console.log("Bridges:", bridges.length);
60
+
61
+ const balance = await hre.ethers.provider.getBalance(signer.address);
62
+ if (balance === 0n) {
63
+ throw new Error("Signer has no COTI for gas");
64
+ }
65
+
66
+ for (const bridge of bridges) {
67
+ process.stdout.write(` ${bridge.name} (${bridge.address})... `);
68
+ const contract = await hre.ethers.getContractAt("PrivacyBridge", bridge.address, signer);
69
+
70
+ const alreadyOperator = await contract.isOperator(operatorAccount);
71
+ if (alreadyOperator) {
72
+ console.log("already operator — skip");
73
+ continue;
74
+ }
75
+
76
+ const tx = await contract.addOperator(operatorAccount, { gasLimit: 5_000_000 });
77
+ const receipt = await tx.wait();
78
+ console.log(`✅ tx ${receipt.hash}`);
79
+ }
80
+
81
+ console.log("\nDone.");
82
+ }
83
+
84
+ main().catch((e) => {
85
+ console.error(e);
86
+ process.exitCode = 1;
87
+ });
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Deploy CotiPriceConsumer on COTI Mainnet.
3
+ *
4
+ * Run with:
5
+ * npx hardhat compile
6
+ * npx hardhat run deploy/oracle/deploy-coti-price-consumer-mainnet.cjs --network cotiMainnet
7
+ */
8
+ const hre = require("hardhat");
9
+
10
+ // Band Protocol StdReferenceProxy on COTI Mainnet
11
+ const BAND_REF_PROXY = "0x9503d502435f8e228b874Ba0F792301d4401b523";
12
+
13
+ // Maximum staleness in seconds (1 hour).
14
+ const MAX_STALENESS = 3600;
15
+
16
+ async function main() {
17
+ const [deployer] = await hre.ethers.getSigners();
18
+ console.log("Deploying CotiPriceConsumer with account:", deployer.address);
19
+ console.log("Network:", hre.network.name);
20
+
21
+ const balance = await hre.ethers.provider.getBalance(deployer.address);
22
+ console.log("Balance:", hre.ethers.formatEther(balance), "COTI");
23
+
24
+ if (balance === 0n) {
25
+ throw new Error("Deployer account has no COTI — fund it first");
26
+ }
27
+
28
+ const Factory = await hre.ethers.getContractFactory("CotiPriceConsumer");
29
+ const contract = await Factory.deploy(BAND_REF_PROXY, MAX_STALENESS, { gasLimit: 5000000 });
30
+ await contract.waitForDeployment();
31
+
32
+ const address = await contract.getAddress();
33
+ console.log("✅ CotiPriceConsumer deployed to:", address);
34
+
35
+ // Quick sanity read
36
+ try {
37
+ const price = await contract.getPrice("COTI");
38
+ const readable = Number(price) / 1e18;
39
+ console.log(" COTI/USD price (raw 1e18):", price.toString());
40
+ console.log(" COTI/USD price (USD): ", `$${readable}`);
41
+ } catch (err) {
42
+ console.log(" ⚠️ Could not read price:", err.reason || err.message);
43
+ }
44
+ }
45
+
46
+ main().catch((e) => {
47
+ console.error(e);
48
+ process.exitCode = 1;
49
+ });
@@ -0,0 +1,51 @@
1
+ import { ethers } from "hardhat";
2
+
3
+ async function main() {
4
+ const [deployer] = await ethers.getSigners();
5
+ if (!deployer) {
6
+ throw new Error(
7
+ "No deployer signer found. Set PRIVATE_KEY in your environment."
8
+ );
9
+ }
10
+
11
+ console.log("Deploying CotiNodeRewards...");
12
+ console.log("Deployer:", deployer.address);
13
+ console.log("Owner:", deployer.address);
14
+
15
+ const provider = deployer.provider;
16
+ if (!provider) {
17
+ throw new Error("No provider found for deployer signer.");
18
+ }
19
+
20
+ // COTI RPC may not support "pending" block queries.
21
+ // Use legacy gas price + latest nonce + explicit gas limit to avoid
22
+ // pending-based fee/nonce/gas estimation lookups.
23
+ const gasPrice = BigInt(await provider.send("eth_gasPrice", []));
24
+ const nonce = await provider.getTransactionCount(deployer.address, "latest");
25
+ const gasLimit = BigInt(process.env.REWARDS_DEPLOY_GAS_LIMIT || "6000000");
26
+
27
+ const factory = await ethers.getContractFactory("CotiNodeRewards");
28
+ const deployTxReq = await factory.getDeployTransaction();
29
+ if (!deployTxReq.data) {
30
+ throw new Error("Failed to build deploy transaction data.");
31
+ }
32
+
33
+ const sentTx = await deployer.sendTransaction({
34
+ data: deployTxReq.data,
35
+ gasPrice,
36
+ nonce,
37
+ gasLimit,
38
+ });
39
+ console.log("Deployment tx hash:", sentTx.hash);
40
+ const receipt = await sentTx.wait();
41
+ if (!receipt || !receipt.contractAddress) {
42
+ throw new Error("Deployment transaction mined but no contract address found.");
43
+ }
44
+
45
+ console.log("CotiNodeRewards deployed at:", receipt.contractAddress);
46
+ }
47
+
48
+ main().catch((error) => {
49
+ console.error(error);
50
+ process.exitCode = 1;
51
+ });
@@ -0,0 +1,61 @@
1
+ import { ethers } from "hardhat";
2
+
3
+ async function main() {
4
+ const [deployer] = await ethers.getSigners();
5
+ if (!deployer) {
6
+ throw new Error(
7
+ "No deployer signer found. Set PRIVATE_KEY in your environment."
8
+ );
9
+ }
10
+
11
+ const defaultAdmin =
12
+ process.env.TPS004_ADMIN || deployer.address;
13
+ const pauser = process.env.TPS004_PAUSER || deployer.address;
14
+ const minter = process.env.TPS004_MINTER || deployer.address;
15
+
16
+ console.log("Deploying CotiTokenPoints004...");
17
+ console.log("Deployer:", deployer.address);
18
+ console.log("Default admin:", defaultAdmin);
19
+ console.log("Pauser:", pauser);
20
+ console.log("Minter:", minter);
21
+
22
+ const provider = deployer.provider;
23
+ if (!provider) {
24
+ throw new Error("No provider found for deployer signer.");
25
+ }
26
+
27
+ const gasPrice = BigInt(await provider.send("eth_gasPrice", []));
28
+ const nonce = await provider.getTransactionCount(deployer.address, "latest");
29
+ const gasLimit = BigInt(process.env.TPS004_DEPLOY_GAS_LIMIT || "6000000");
30
+
31
+ const factory = await ethers.getContractFactory("CotiTokenPoints004");
32
+ const deployTxReq = await factory.getDeployTransaction(
33
+ defaultAdmin,
34
+ pauser,
35
+ minter
36
+ );
37
+ if (!deployTxReq.data) {
38
+ throw new Error("Failed to build deploy transaction data.");
39
+ }
40
+
41
+ const sentTx = await deployer.sendTransaction({
42
+ data: deployTxReq.data,
43
+ gasPrice,
44
+ nonce,
45
+ gasLimit,
46
+ });
47
+ console.log("Deployment tx hash:", sentTx.hash);
48
+ const receipt = await sentTx.wait();
49
+ if (!receipt || !receipt.contractAddress) {
50
+ throw new Error(
51
+ "Deployment transaction mined but no contract address found."
52
+ );
53
+ }
54
+
55
+ console.log("CotiTokenPoints004 deployed at:", receipt.contractAddress);
56
+ }
57
+
58
+ main().catch((error) => {
59
+ console.error(error);
60
+ process.exitCode = 1;
61
+ });
@@ -0,0 +1,68 @@
1
+ import { ethers } from "hardhat";
2
+
3
+ async function main() {
4
+ const [deployer] = await ethers.getSigners();
5
+ if (!deployer) {
6
+ throw new Error(
7
+ "No deployer signer found. Set PRIVATE_KEY in your environment."
8
+ );
9
+ }
10
+
11
+ const pointsToken =
12
+ process.env.POINTS_TOKEN ||
13
+ "0x9eC8c1459B92e8f19fE160E63e169e7EFAAA4359";
14
+ const owner =
15
+ process.env.DISPERSER_OWNER ||
16
+ "0x87a11daf013e02d38cabdfdbff25e0b0fa2c5fcd";
17
+
18
+ console.log("Deploying FixedRatioCoinDisperserUnlimitedWindow...");
19
+ console.log("Deployer:", deployer.address);
20
+ console.log("Points token:", pointsToken);
21
+ console.log("Owner:", owner);
22
+
23
+ const provider = deployer.provider;
24
+ if (!provider) {
25
+ throw new Error("No provider found for deployer signer.");
26
+ }
27
+
28
+ const gasPrice = BigInt(await provider.send("eth_gasPrice", []));
29
+ const nonce = await provider.getTransactionCount(deployer.address, "latest");
30
+ const gasLimit = BigInt(
31
+ process.env.DISPERSER_DEPLOY_GAS_LIMIT || "8000000"
32
+ );
33
+
34
+ const factory = await ethers.getContractFactory(
35
+ "FixedRatioCoinDisperserUnlimitedWindow"
36
+ );
37
+ const deployTxReq = await factory.getDeployTransaction(
38
+ pointsToken,
39
+ owner
40
+ );
41
+ if (!deployTxReq.data) {
42
+ throw new Error("Failed to build deploy transaction data.");
43
+ }
44
+
45
+ const sentTx = await deployer.sendTransaction({
46
+ data: deployTxReq.data,
47
+ gasPrice,
48
+ nonce,
49
+ gasLimit,
50
+ });
51
+ console.log("Deployment tx hash:", sentTx.hash);
52
+ const receipt = await sentTx.wait();
53
+ if (!receipt || !receipt.contractAddress) {
54
+ throw new Error(
55
+ "Deployment transaction mined but no contract address found."
56
+ );
57
+ }
58
+
59
+ console.log(
60
+ "FixedRatioCoinDisperserUnlimitedWindow deployed at:",
61
+ receipt.contractAddress
62
+ );
63
+ }
64
+
65
+ main().catch((error) => {
66
+ console.error(error);
67
+ process.exitCode = 1;
68
+ });
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Redeployment script for Private Tokens and Bridges only.
3
+ *
4
+ * Public token addresses are hardcoded per network. After deployment,
5
+ * the script prints the full config block to stdout for manual copy
6
+ * into config.ts.
7
+ *
8
+ * Run with:
9
+ * npx hardhat compile
10
+ * npx hardhat run scripts/redeploy-private-and-bridges.cjs --network cotiTestnet
11
+ * npx hardhat run scripts/redeploy-private-and-bridges.cjs --network cotiMainnet
12
+ */
13
+ const hre = require("hardhat");
14
+
15
+ const CHAIN_IDS = {
16
+ cotiTestnet: 7082400,
17
+ cotiMainnet: 2632500,
18
+ "coti-testnet": 7082400,
19
+ "coti-mainnet": 2632500,
20
+ };
21
+
22
+ const PUBLIC_TOKEN_ADDRESSES = {
23
+ 7082400: { // COTI Testnet
24
+ WETH: "0x8bca4e6bbE402DB4aD189A316137aD08206154FB",
25
+ WBTC: "0x5dBDb2E5D51c3FFab5D6B862Caa11FCe1D83F492",
26
+ USDT: "0x9e961430053cd5AbB3b060544cEcCec848693Cf0",
27
+ USDC_E: "0x63f3D2Cc8F5608F57ce6E5Aa3590A2Beb428D19C",
28
+ WADA: "0xe3E2cd3Abf412c73a404b9b8227B71dE3CfE829D",
29
+ gCOTI: "0x878a42D3cB737DEC9E6c7e7774d973F46fd8ed4C",
30
+ },
31
+ 2632500: { // COTI Mainnet
32
+ WETH: "0x639aCc80569c5FC83c6FBf2319A6Cc38bBfe26d1",
33
+ WBTC: "0x8C39B1fD0e6260fdf20652Fc436d25026832bfEA",
34
+ USDT: "0xfA6f73446b17A97a56e464256DA54AD43c2Cbc3E",
35
+ USDC_E: "0xf1Feebc4376c68B7003450ae66343Ae59AB37D3C",
36
+ WADA: "0xe757Ca19d2c237AA52eBb1d2E8E4368eeA3eb331",
37
+ gCOTI: "0x7637C7838EC4Ec6b85080F28A678F8E234bB83D1",
38
+ },
39
+ };
40
+
41
+ function printConfigBlock(chainId, addresses) {
42
+ const networkName = chainId === 2632500 ? "COTI Mainnet" : "COTI Testnet";
43
+ console.log("\n========================================================");
44
+ console.log(" DEPLOYMENT COMPLETE — Copy this block into config.ts:");
45
+ console.log("========================================================");
46
+ console.log(` // ${networkName}`);
47
+ console.log(` ${chainId}: {`);
48
+ console.log(` // Native`);
49
+ console.log(` PrivateCoti: "${addresses.PrivateCOTI}",`);
50
+ console.log(` PrivacyBridgeCotiNative: "${addresses.PrivacyBridgeCotiNative}",`);
51
+ console.log(``);
52
+ console.log(` // Public Tokens`);
53
+ console.log(` WETH: "${addresses.WETH}",`);
54
+ console.log(` WBTC: "${addresses.WBTC}",`);
55
+ console.log(` USDT: "${addresses.USDT}",`);
56
+ console.log(` USDC_E: "${addresses.USDC_E}",`);
57
+ console.log(` WADA: "${addresses.WADA}",`);
58
+ console.log(` gCOTI: "${addresses.gCOTI}",`);
59
+ console.log(``);
60
+ console.log(` // Private Tokens`);
61
+ console.log(` "p.WETH": "${addresses.PrivateWrappedEther}",`);
62
+ console.log(` "p.WBTC": "${addresses.PrivateWrappedBTC}",`);
63
+ console.log(` "p.USDT": "${addresses.PrivateTetherUSD}",`);
64
+ console.log(` "p.USDC_E": "${addresses.PrivateBridgedUSDC}",`);
65
+ console.log(` "p.WADA": "${addresses.PrivateWrappedADA}",`);
66
+ console.log(` "p.gCOTI": "${addresses.PrivateCOTITreasuryGovernanceToken}",`);
67
+ console.log(``);
68
+ console.log(` // Bridges`);
69
+ console.log(` PrivacyBridgeWETH: "${addresses.PrivacyBridgeWETH}",`);
70
+ console.log(` PrivacyBridgeWBTC: "${addresses.PrivacyBridgeWBTC}",`);
71
+ console.log(` PrivacyBridgeUSDT: "${addresses.PrivacyBridgeUSDT}",`);
72
+ console.log(` PrivacyBridgeUSDCe: "${addresses.PrivacyBridgeUSDCe}",`);
73
+ console.log(` PrivacyBridgeWADA: "${addresses.PrivacyBridgeWADA}",`);
74
+ console.log(` PrivacyBridgegCOTI: "${addresses.PrivacyBridgegCoti}"`);
75
+ console.log(` }`);
76
+ console.log("========================================================\n");
77
+ }
78
+
79
+ async function main() {
80
+ const [deployer] = await hre.ethers.getSigners();
81
+ const networkName = hre.network.name;
82
+ const chainId = CHAIN_IDS[networkName];
83
+
84
+ if (!chainId) {
85
+ throw new Error(`Unsupported network: "${networkName}". Use --network cotiTestnet or --network cotiMainnet`);
86
+ }
87
+
88
+ console.log("Redeploying with account:", deployer.address);
89
+ console.log("Network:", networkName, `(chainId: ${chainId})`);
90
+
91
+ // ── Resolve public token addresses from hardcoded config ───────────────
92
+ console.log("\n--- Public Token Addresses ---");
93
+ const publicTokens = PUBLIC_TOKEN_ADDRESSES[chainId];
94
+ if (!publicTokens) {
95
+ throw new Error(`No public token addresses configured for chainId ${chainId}`);
96
+ }
97
+ for (const [key, addr] of Object.entries(publicTokens)) {
98
+ if (!addr) throw new Error(`Missing public token address for ${key} (chainId: ${chainId})`);
99
+ console.log(` ${key}: ${addr}`);
100
+ }
101
+
102
+ const newAddresses = { ...publicTokens };
103
+
104
+ // ── 1. Redeploy Private Tokens ─────────────────────────────────────────
105
+ console.log("\n--- Redeploying Private Tokens ---");
106
+ const privateTokens = [
107
+ { name: "PrivateCOTI", key: "PrivateCOTI" },
108
+ { name: "PrivateWrappedEther", key: "PrivateWrappedEther" },
109
+ { name: "PrivateWrappedBTC", key: "PrivateWrappedBTC" },
110
+ { name: "PrivateTetherUSD", key: "PrivateTetherUSD" },
111
+ { name: "PrivateBridgedUSDC", key: "PrivateBridgedUSDC" },
112
+ { name: "PrivateWrappedADA", key: "PrivateWrappedADA" },
113
+ { name: "PrivateCOTITreasuryGovernanceToken", key: "PrivateCOTITreasuryGovernanceToken" },
114
+ ];
115
+
116
+ for (const pt of privateTokens) {
117
+ process.stdout.write(` Deploying ${pt.name}... `);
118
+ const Factory = await hre.ethers.getContractFactory(pt.name);
119
+ const contract = await Factory.deploy({ gasLimit: 12000000 });
120
+ await contract.waitForDeployment();
121
+ newAddresses[pt.key] = await contract.getAddress();
122
+ console.log(`✅ ${newAddresses[pt.key]}`);
123
+ }
124
+
125
+ // ── 2. Redeploy Bridges ────────────────────────────────────────────────
126
+ console.log("\n--- Redeploying Bridges ---");
127
+
128
+ const feeRecipient = process.env.FEE_RECIPIENT;
129
+ const rescueRecipient = process.env.RESCUE_RECIPIENT;
130
+ if (!feeRecipient) throw new Error("FEE_RECIPIENT not set in .env");
131
+ if (!rescueRecipient) throw new Error("RESCUE_RECIPIENT not set in .env");
132
+ console.log(` feeRecipient: ${feeRecipient}`);
133
+ console.log(` rescueRecipient: ${rescueRecipient}`);
134
+
135
+ // CotiPriceConsumer deployed addresses per network
136
+ const PRICE_ORACLE = {
137
+ 7082400: "0xAC89a381E84fbd5B3B536a3b895eB2aDdaDC36A1", // testnet
138
+ 2632500: "0x830c5112E677459648C1aa7Bc5Dd65A36d71Aa4D", // mainnet
139
+ };
140
+ const oracleAddr = PRICE_ORACLE[chainId];
141
+ if (!oracleAddr) throw new Error(`No price oracle address configured for chainId ${chainId}`);
142
+ console.log(` priceOracle: ${oracleAddr}`);
143
+
144
+ const bridges = [
145
+ { name: "PrivacyBridgeCotiNative", publicKey: null, privateKey: "PrivateCOTI", bridgeKey: "PrivacyBridgeCotiNative" },
146
+ { name: "PrivacyBridgeWETH", publicKey: "WETH", privateKey: "PrivateWrappedEther", bridgeKey: "PrivacyBridgeWETH" },
147
+ { name: "PrivacyBridgeWBTC", publicKey: "WBTC", privateKey: "PrivateWrappedBTC", bridgeKey: "PrivacyBridgeWBTC" },
148
+ { name: "PrivacyBridgeUSDT", publicKey: "USDT", privateKey: "PrivateTetherUSD", bridgeKey: "PrivacyBridgeUSDT" },
149
+ { name: "PrivacyBridgeUSDCe", publicKey: "USDC_E", privateKey: "PrivateBridgedUSDC", bridgeKey: "PrivacyBridgeUSDCe" },
150
+ { name: "PrivacyBridgeWADA", publicKey: "WADA", privateKey: "PrivateWrappedADA", bridgeKey: "PrivacyBridgeWADA" },
151
+ { name: "PrivacyBridgegCoti", publicKey: "gCOTI", privateKey: "PrivateCOTITreasuryGovernanceToken", bridgeKey: "PrivacyBridgegCoti" },
152
+ ];
153
+
154
+ for (const bridge of bridges) {
155
+ process.stdout.write(` Deploying ${bridge.name}... `);
156
+ const Factory = await hre.ethers.getContractFactory(bridge.name);
157
+ let contract;
158
+ if (bridge.publicKey) {
159
+ // ERC20 bridge: constructor(address _token, address _privateToken, address _feeRecipient, address _rescueRecipient, address _priceOracle)
160
+ contract = await Factory.deploy(
161
+ newAddresses[bridge.publicKey],
162
+ newAddresses[bridge.privateKey],
163
+ feeRecipient,
164
+ rescueRecipient,
165
+ oracleAddr,
166
+ { gasLimit: 12000000 }
167
+ );
168
+ } else {
169
+ // Native bridge: constructor(address _privateCoti, address _feeRecipient, address _rescueRecipient, address _priceOracle)
170
+ contract = await Factory.deploy(newAddresses[bridge.privateKey], feeRecipient, rescueRecipient, oracleAddr, { gasLimit: 12000000 });
171
+ }
172
+ await contract.waitForDeployment();
173
+ newAddresses[bridge.bridgeKey] = await contract.getAddress();
174
+ console.log(`✅ ${newAddresses[bridge.bridgeKey]}`);
175
+ }
176
+
177
+ // ── 3. Grant Roles ─────────────────────────────────────────────────────
178
+ console.log("\n--- Granting Roles ---");
179
+ const MINTER_ROLE = hre.ethers.id("MINTER_ROLE");
180
+ const BURNER_ROLE = hre.ethers.id("BURNER_ROLE");
181
+
182
+ for (const bridge of bridges) {
183
+ const ptAddress = newAddresses[bridge.privateKey];
184
+ const bridgeAddress = newAddresses[bridge.bridgeKey];
185
+ const ptContract = await hre.ethers.getContractAt("PrivateERC20", ptAddress);
186
+
187
+ process.stdout.write(` ${bridge.name}: granting MINTER_ROLE... `);
188
+ const tx1 = await ptContract.grantRole(MINTER_ROLE, bridgeAddress, { gasLimit: 5000000 });
189
+ await tx1.wait();
190
+ process.stdout.write("✅ BURNER_ROLE... ");
191
+ const tx2 = await ptContract.grantRole(BURNER_ROLE, bridgeAddress, { gasLimit: 5000000 });
192
+ await tx2.wait();
193
+ console.log("✅");
194
+ }
195
+
196
+
197
+ // ── 5. Print config block ──────────────────────────────────────────────
198
+ printConfigBlock(chainId, newAddresses);
199
+ }
200
+
201
+ main().catch((e) => { console.error(e); process.exitCode = 1; });