@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
@@ -0,0 +1,385 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import "../../utils/mpc/MpcCore.sol";
5
+
6
+ import "../IInbox.sol";
7
+ import "../mpccodec/MpcAbiCodec.sol";
8
+ import "./coti-side/IPodExecutorOps.sol";
9
+ import "./PodLibBase.sol";
10
+
11
+ /// @title PodLib64
12
+ /// @notice 64-bit POD MPC helpers (`itUint64` / `ctUint64`) and comparisons to `ctBool`.
13
+ abstract contract PodLib64 is PodLibBase {
14
+ using MpcAbiCodec for MpcAbiCodec.MpcMethodCallContext;
15
+
16
+ function add64(
17
+ itUint64 memory a,
18
+ itUint64 memory b,
19
+ address cOwner,
20
+ bytes4 callbackSelector,
21
+ bytes4 errorSelector,
22
+ uint256 totalValueWei,
23
+ uint256 callbackFeeLocalWei
24
+ ) internal returns (bytes32) {
25
+ return _sendThree(IPodExecutor64.add64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
26
+ }
27
+
28
+ function gt64(
29
+ itUint64 memory a,
30
+ itUint64 memory b,
31
+ address cOwner,
32
+ bytes4 callbackSelector,
33
+ bytes4 errorSelector,
34
+ uint256 totalValueWei,
35
+ uint256 callbackFeeLocalWei
36
+ ) internal returns (bytes32) {
37
+ return _sendThree(IPodExecutor64.gt64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
38
+ }
39
+
40
+ function sub64(
41
+ itUint64 memory a,
42
+ itUint64 memory b,
43
+ address cOwner,
44
+ bytes4 callbackSelector,
45
+ bytes4 errorSelector,
46
+ uint256 totalValueWei,
47
+ uint256 callbackFeeLocalWei
48
+ ) internal returns (bytes32) {
49
+ return _sendThree(IPodExecutor64.sub64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
50
+ }
51
+
52
+ function mul64(
53
+ itUint64 memory a,
54
+ itUint64 memory b,
55
+ address cOwner,
56
+ bytes4 callbackSelector,
57
+ bytes4 errorSelector,
58
+ uint256 totalValueWei,
59
+ uint256 callbackFeeLocalWei
60
+ ) internal returns (bytes32) {
61
+ return _sendThree(IPodExecutor64.mul64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
62
+ }
63
+
64
+ /// @notice Wrapping multiply modulo 2^64. Use only when downstream logic is defined over uint64 modular arithmetic.
65
+ function mulWrapping64(
66
+ itUint64 memory a,
67
+ itUint64 memory b,
68
+ address cOwner,
69
+ bytes4 callbackSelector,
70
+ bytes4 errorSelector,
71
+ uint256 totalValueWei,
72
+ uint256 callbackFeeLocalWei
73
+ ) internal returns (bytes32) {
74
+ return _sendThree(IPodExecutor64.mulWrapping64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
75
+ }
76
+
77
+ function div64(
78
+ itUint64 memory a,
79
+ itUint64 memory b,
80
+ address cOwner,
81
+ bytes4 callbackSelector,
82
+ bytes4 errorSelector,
83
+ uint256 totalValueWei,
84
+ uint256 callbackFeeLocalWei
85
+ ) internal returns (bytes32) {
86
+ return _sendThree(IPodExecutor64.div64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
87
+ }
88
+
89
+ function rem64(
90
+ itUint64 memory a,
91
+ itUint64 memory b,
92
+ address cOwner,
93
+ bytes4 callbackSelector,
94
+ bytes4 errorSelector,
95
+ uint256 totalValueWei,
96
+ uint256 callbackFeeLocalWei
97
+ ) internal returns (bytes32) {
98
+ return _sendThree(IPodExecutor64.rem64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
99
+ }
100
+
101
+ function and64(
102
+ itUint64 memory a,
103
+ itUint64 memory b,
104
+ address cOwner,
105
+ bytes4 callbackSelector,
106
+ bytes4 errorSelector,
107
+ uint256 totalValueWei,
108
+ uint256 callbackFeeLocalWei
109
+ ) internal returns (bytes32) {
110
+ return _sendThree(IPodExecutor64.and64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
111
+ }
112
+
113
+ function or64(
114
+ itUint64 memory a,
115
+ itUint64 memory b,
116
+ address cOwner,
117
+ bytes4 callbackSelector,
118
+ bytes4 errorSelector,
119
+ uint256 totalValueWei,
120
+ uint256 callbackFeeLocalWei
121
+ ) internal returns (bytes32) {
122
+ return _sendThree(IPodExecutor64.or64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
123
+ }
124
+
125
+ function xor64(
126
+ itUint64 memory a,
127
+ itUint64 memory b,
128
+ address cOwner,
129
+ bytes4 callbackSelector,
130
+ bytes4 errorSelector,
131
+ uint256 totalValueWei,
132
+ uint256 callbackFeeLocalWei
133
+ ) internal returns (bytes32) {
134
+ return _sendThree(IPodExecutor64.xor64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
135
+ }
136
+
137
+ function min64(
138
+ itUint64 memory a,
139
+ itUint64 memory b,
140
+ address cOwner,
141
+ bytes4 callbackSelector,
142
+ bytes4 errorSelector,
143
+ uint256 totalValueWei,
144
+ uint256 callbackFeeLocalWei
145
+ ) internal returns (bytes32) {
146
+ return _sendThree(IPodExecutor64.min64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
147
+ }
148
+
149
+ function max64(
150
+ itUint64 memory a,
151
+ itUint64 memory b,
152
+ address cOwner,
153
+ bytes4 callbackSelector,
154
+ bytes4 errorSelector,
155
+ uint256 totalValueWei,
156
+ uint256 callbackFeeLocalWei
157
+ ) internal returns (bytes32) {
158
+ return _sendThree(IPodExecutor64.max64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
159
+ }
160
+
161
+ function eq64(
162
+ itUint64 memory a,
163
+ itUint64 memory b,
164
+ address cOwner,
165
+ bytes4 callbackSelector,
166
+ bytes4 errorSelector,
167
+ uint256 totalValueWei,
168
+ uint256 callbackFeeLocalWei
169
+ ) internal returns (bytes32) {
170
+ return _sendThree(IPodExecutor64.eq64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
171
+ }
172
+
173
+ function ne64(
174
+ itUint64 memory a,
175
+ itUint64 memory b,
176
+ address cOwner,
177
+ bytes4 callbackSelector,
178
+ bytes4 errorSelector,
179
+ uint256 totalValueWei,
180
+ uint256 callbackFeeLocalWei
181
+ ) internal returns (bytes32) {
182
+ return _sendThree(IPodExecutor64.ne64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
183
+ }
184
+
185
+ function ge64(
186
+ itUint64 memory a,
187
+ itUint64 memory b,
188
+ address cOwner,
189
+ bytes4 callbackSelector,
190
+ bytes4 errorSelector,
191
+ uint256 totalValueWei,
192
+ uint256 callbackFeeLocalWei
193
+ ) internal returns (bytes32) {
194
+ return _sendThree(IPodExecutor64.ge64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
195
+ }
196
+
197
+ function le64(
198
+ itUint64 memory a,
199
+ itUint64 memory b,
200
+ address cOwner,
201
+ bytes4 callbackSelector,
202
+ bytes4 errorSelector,
203
+ uint256 totalValueWei,
204
+ uint256 callbackFeeLocalWei
205
+ ) internal returns (bytes32) {
206
+ return _sendThree(IPodExecutor64.le64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
207
+ }
208
+
209
+ function lt64(
210
+ itUint64 memory a,
211
+ itUint64 memory b,
212
+ address cOwner,
213
+ bytes4 callbackSelector,
214
+ bytes4 errorSelector,
215
+ uint256 totalValueWei,
216
+ uint256 callbackFeeLocalWei
217
+ ) internal returns (bytes32) {
218
+ return _sendThree(IPodExecutor64.lt64.selector, a, b, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei);
219
+ }
220
+
221
+ function mux64(
222
+ itBool memory bit,
223
+ itUint64 memory a,
224
+ itUint64 memory b,
225
+ address cOwner,
226
+ bytes4 callbackSelector,
227
+ bytes4 errorSelector,
228
+ uint256 totalValueWei,
229
+ uint256 callbackFeeLocalWei
230
+ ) internal returns (bytes32) {
231
+ return _forwardTwoWay(
232
+ _buildMpcMux64(bit, a, b, cOwner),
233
+ callbackSelector,
234
+ errorSelector,
235
+ totalValueWei,
236
+ callbackFeeLocalWei
237
+ );
238
+ }
239
+
240
+ function _buildMpcMux64(
241
+ itBool memory bit,
242
+ itUint64 memory a,
243
+ itUint64 memory b,
244
+ address cOwner
245
+ ) private pure returns (IInbox.MpcMethodCall memory) {
246
+ return MpcAbiCodec.create(IPodExecutor64.mux64.selector, 4)
247
+ .addArgument(bit)
248
+ .addArgument(a)
249
+ .addArgument(b)
250
+ .addArgument(cOwner)
251
+ .build();
252
+ }
253
+
254
+ function shl64(
255
+ itUint64 memory a,
256
+ uint8 s,
257
+ address cOwner,
258
+ bytes4 callbackSelector,
259
+ bytes4 errorSelector,
260
+ uint256 totalValueWei,
261
+ uint256 callbackFeeLocalWei
262
+ ) internal returns (bytes32) {
263
+ return _sendShift(
264
+ IPodExecutor64.shl64.selector, a, s, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei
265
+ );
266
+ }
267
+
268
+ function shr64(
269
+ itUint64 memory a,
270
+ uint8 s,
271
+ address cOwner,
272
+ bytes4 callbackSelector,
273
+ bytes4 errorSelector,
274
+ uint256 totalValueWei,
275
+ uint256 callbackFeeLocalWei
276
+ ) internal returns (bytes32) {
277
+ return _sendShift(
278
+ IPodExecutor64.shr64.selector, a, s, cOwner, callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei
279
+ );
280
+ }
281
+
282
+ /// @dev Callback `data` is `abi.encode(uint256)` plaintext (executor decrypts MPC rand on COTI).
283
+ function rand64(
284
+ address cOwner,
285
+ bytes4 callbackSelector,
286
+ bytes4 errorSelector,
287
+ uint256 totalValueWei,
288
+ uint256 callbackFeeLocalWei
289
+ ) internal returns (bytes32) {
290
+ return _forwardTwoWay(
291
+ _buildMpcRand64(cOwner), callbackSelector, errorSelector, totalValueWei, callbackFeeLocalWei
292
+ );
293
+ }
294
+
295
+ function _buildMpcRand64(address cOwner) private pure returns (IInbox.MpcMethodCall memory) {
296
+ return MpcAbiCodec.create(IPodExecutor64.rand64.selector, 1).addArgument(cOwner).build();
297
+ }
298
+
299
+ /// @dev Callback `data` is `abi.encode(uint256)` plaintext.
300
+ function randBoundedBits64(
301
+ uint8 numBits,
302
+ address cOwner,
303
+ bytes4 callbackSelector,
304
+ bytes4 errorSelector,
305
+ uint256 totalValueWei,
306
+ uint256 callbackFeeLocalWei
307
+ ) internal returns (bytes32) {
308
+ return _forwardTwoWay(
309
+ _buildMpcRandBoundedBits64(numBits, cOwner),
310
+ callbackSelector,
311
+ errorSelector,
312
+ totalValueWei,
313
+ callbackFeeLocalWei
314
+ );
315
+ }
316
+
317
+ function _buildMpcRandBoundedBits64(uint8 numBits, address cOwner)
318
+ private
319
+ pure
320
+ returns (IInbox.MpcMethodCall memory)
321
+ {
322
+ return MpcAbiCodec.create(IPodExecutor64.randBoundedBits64.selector, 2)
323
+ .addArgument(uint256(uint8(numBits)))
324
+ .addArgument(cOwner)
325
+ .build();
326
+ }
327
+
328
+ function _buildMpcThree64(bytes4 selector, itUint64 memory a, itUint64 memory b, address cOwner)
329
+ private
330
+ pure
331
+ returns (IInbox.MpcMethodCall memory)
332
+ {
333
+ return MpcAbiCodec.create(selector, 3).addArgument(a).addArgument(b).addArgument(cOwner).build();
334
+ }
335
+
336
+ function _buildMpcShift64(bytes4 selector, itUint64 memory a, uint8 s, address cOwner)
337
+ private
338
+ pure
339
+ returns (IInbox.MpcMethodCall memory)
340
+ {
341
+ return MpcAbiCodec.create(selector, 3)
342
+ .addArgument(a)
343
+ .addArgument(uint256(uint8(s)))
344
+ .addArgument(cOwner)
345
+ .build();
346
+ }
347
+
348
+ function _sendThree(
349
+ bytes4 selector,
350
+ itUint64 memory a,
351
+ itUint64 memory b,
352
+ address cOwner,
353
+ bytes4 callbackSelector,
354
+ bytes4 errorSelector,
355
+ uint256 totalValueWei,
356
+ uint256 callbackFeeLocalWei
357
+ ) private returns (bytes32) {
358
+ return _forwardTwoWay(
359
+ _buildMpcThree64(selector, a, b, cOwner),
360
+ callbackSelector,
361
+ errorSelector,
362
+ totalValueWei,
363
+ callbackFeeLocalWei
364
+ );
365
+ }
366
+
367
+ function _sendShift(
368
+ bytes4 selector,
369
+ itUint64 memory a,
370
+ uint8 s,
371
+ address cOwner,
372
+ bytes4 callbackSelector,
373
+ bytes4 errorSelector,
374
+ uint256 totalValueWei,
375
+ uint256 callbackFeeLocalWei
376
+ ) private returns (bytes32) {
377
+ return _forwardTwoWay(
378
+ _buildMpcShift64(selector, a, s, cOwner),
379
+ callbackSelector,
380
+ errorSelector,
381
+ totalValueWei,
382
+ callbackFeeLocalWei
383
+ );
384
+ }
385
+ }
@@ -0,0 +1,72 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import "../../utils/mpc/MpcCore.sol";
5
+
6
+ import "../IInbox.sol";
7
+ import "../mpccodec/MpcAbiCodec.sol";
8
+ import "./PodUser.sol";
9
+
10
+ /// @title PodLibBase
11
+ /// @notice Shared POD helpers: fee-aware two-way sends and default outbox error surfacing.
12
+ /// @dev Callers supply `totalValueWei` and `callbackFeeLocalWei`; the inbox splits into gas units. Not responsible for `tx.gasprice`.
13
+ abstract contract PodLibBase is PodUser {
14
+ using MpcAbiCodec for MpcAbiCodec.MpcMethodCallContext;
15
+
16
+ constructor(address initialOwner) PodUser(initialOwner) {}
17
+
18
+ /// @dev Minimum callback slice in wei; inbox applies stricter policy from {InboxFeeManager}.
19
+ uint256 internal constant MIN_CALLBACK_FEE_WEI = 1;
20
+
21
+ /// @notice Accept native funds that can subsidize future inbox fees paid by inherited Pod helper methods.
22
+ /// @dev `_sendTwoWayWithFee` checks contract balance, so callers may pre-fund a Pod app and later spend that balance.
23
+ receive() external payable {}
24
+
25
+ /// @param totalValueWei Total native payment forwarded to `sendTwoWayMessage` (e.g. `msg.value`).
26
+ /// @param callbackFeeLocalWei Portion of that total reserved for the callback leg; caller-estimated.
27
+ function _sendTwoWayWithFee(
28
+ uint256 totalValueWei,
29
+ uint256 callbackFeeLocalWei,
30
+ uint256 targetChainId_,
31
+ address targetContract_,
32
+ IInbox.MpcMethodCall memory mpcMethodCall,
33
+ bytes4 callbackSelector_,
34
+ bytes4 errorSelector_
35
+ ) internal returns (bytes32) {
36
+ require(callbackFeeLocalWei >= MIN_CALLBACK_FEE_WEI, "PodLib: callback fee min");
37
+ require(callbackFeeLocalWei <= totalValueWei, "PodLib: callback exceeds total");
38
+ require(address(this).balance >= totalValueWei, "PodLib: inbox fee");
39
+ return IInbox(inbox).sendTwoWayMessage{value: totalValueWei}(
40
+ targetChainId_,
41
+ targetContract_,
42
+ mpcMethodCall,
43
+ callbackSelector_,
44
+ errorSelector_,
45
+ callbackFeeLocalWei
46
+ );
47
+ }
48
+
49
+ /// @dev Splits stack between building `mpc` and forwarding; avoids "stack too deep" in codec helpers.
50
+ function _forwardTwoWay(
51
+ IInbox.MpcMethodCall memory mpc,
52
+ bytes4 callbackSelector,
53
+ bytes4 errorSelector,
54
+ uint256 totalValueWei,
55
+ uint256 callbackFeeLocalWei
56
+ ) internal returns (bytes32) {
57
+ return _sendTwoWayWithFee(
58
+ totalValueWei,
59
+ callbackFeeLocalWei,
60
+ cotiChainId,
61
+ mpcExecutorAddress,
62
+ mpc,
63
+ callbackSelector,
64
+ errorSelector
65
+ );
66
+ }
67
+
68
+ function onDefaultMpcError(bytes32 requestId) external onlyMpcExecutor {
69
+ (uint256 code, string memory message) = inbox.getOutboxError(requestId);
70
+ emit ErrorRemoteCall(requestId, code, message);
71
+ }
72
+ }
@@ -0,0 +1,58 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import "@openzeppelin/contracts/access/Ownable.sol";
5
+
6
+ import "../IInbox.sol";
7
+ import "../InboxUser.sol";
8
+
9
+ /// @title PodUser
10
+ /// @notice POD base: COTI chain ID, MPC executor address, and owner-gated {configure}.
11
+ abstract contract PodUser is InboxUser, Ownable {
12
+ /// @notice Default MPC error callback surfaced from the outbox.
13
+ event ErrorRemoteCall(bytes32 requestId, uint256 code, string message);
14
+
15
+ /// @notice Inbox callback remote sender did not match configured COTI MPC executor.
16
+ error OnlyMpcExecutor(uint256 remoteChainId, address remoteContract);
17
+
18
+ /// @notice COTI-side MPC executor target.
19
+ address internal mpcExecutorAddress = 0x0000000000000000000000000000000000000000;
20
+ /// @notice COTI chain id used for MPC requests.
21
+ uint256 internal cotiChainId = 2632500;
22
+
23
+ /// @param initialOwner Initial owner for configuration.
24
+ constructor(address initialOwner) Ownable(initialOwner) {}
25
+
26
+ /// @dev Internal COTI routing; use {configure} from outside this contract.
27
+ /// @param _mpcExecutorAddress COTI-side MPC executor address.
28
+ /// @param _cotiChainId COTI chain id.
29
+ function configureCoti(address _mpcExecutorAddress, uint256 _cotiChainId) internal virtual {
30
+ mpcExecutorAddress = _mpcExecutorAddress;
31
+ cotiChainId = _cotiChainId;
32
+ }
33
+
34
+ /// @notice Restrict a function to inbox callbacks from the configured COTI MPC executor.
35
+ /// @dev Reverts unless `msg.sender` is the inbox and the remote sender matches {cotiChainId} and {mpcExecutorAddress}.
36
+ /// For callbacks that only need inbox verification, use {onlyInbox} from {InboxUser} instead.
37
+ modifier onlyMpcExecutor() {
38
+ if (msg.sender != address(inbox)) {
39
+ revert OnlyInbox(msg.sender);
40
+ }
41
+ (uint256 remoteChainId, address remoteContract) = inbox.inboxMsgSender();
42
+ if (remoteChainId != cotiChainId || remoteContract != mpcExecutorAddress) {
43
+ revert OnlyMpcExecutor(remoteChainId, remoteContract);
44
+ }
45
+ _;
46
+ }
47
+
48
+ /// @notice Owner-only: set inbox when `inbox_ != address(0)`; always updates COTI executor and chain id.
49
+ /// @param inbox_ New inbox address, or zero to leave the existing inbox unchanged.
50
+ /// @param mpcExecutor_ New COTI-side MPC executor address.
51
+ /// @param cotiChainId_ New COTI chain id.
52
+ function configure(address inbox_, address mpcExecutor_, uint256 cotiChainId_) external onlyOwner {
53
+ if (inbox_ != address(0)) {
54
+ setInbox(inbox_);
55
+ }
56
+ configureCoti(mpcExecutor_, cotiChainId_);
57
+ }
58
+ }
@@ -0,0 +1,14 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import "./PodUser.sol";
5
+ import "../PodNetworkConstants.sol";
6
+
7
+ /// @title PodUserFuji
8
+ /// @notice PoD base for Avalanche Fuji source-chain dApps paired with COTI testnet.
9
+ abstract contract PodUserFuji is PodUser {
10
+ constructor() {
11
+ setInbox(PodNetworkConstants.AVALANCHE_FUJI_INBOX);
12
+ configureCoti(PodNetworkConstants.COTI_TESTNET_MPC_EXECUTOR, PodNetworkConstants.COTI_TESTNET_CHAIN_ID);
13
+ }
14
+ }
@@ -0,0 +1,13 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import "./PodUser.sol";
5
+ import "../PodNetworkConstants.sol";
6
+
7
+ /// @title PodUserSepolia
8
+ abstract contract PodUserSepolia is PodUser {
9
+ constructor() {
10
+ setInbox(PodNetworkConstants.SEPOLIA_INBOX);
11
+ configureCoti(PodNetworkConstants.COTI_TESTNET_MPC_EXECUTOR, PodNetworkConstants.COTI_TESTNET_CHAIN_ID);
12
+ }
13
+ }
@@ -0,0 +1,99 @@
1
+ // SPDX-License-Identifier: UNLICENSED
2
+ pragma solidity ^0.8.20;
3
+
4
+ import "../../../utils/mpc/MpcCore.sol";
5
+
6
+ /// @title IPodExecutorOps
7
+ /// @notice COTI-side MPC executor interfaces: 64-, 128-, and 256-bit operations with distinct selectors for {PodLib} dispatch.
8
+
9
+ /// @notice 64-bit executor ops (distinct names for unambiguous `.selector` use in {PodLib64}).
10
+ interface IPodExecutor64 {
11
+ function add64(gtUint64 a, gtUint64 b, address cOwner) external;
12
+ function sub64(gtUint64 a, gtUint64 b, address cOwner) external;
13
+ /// @notice Checked multiplication. Reverts when the true product does not fit in uint64.
14
+ function mul64(gtUint64 a, gtUint64 b, address cOwner) external;
15
+ /// @notice Wrapping multiplication modulo 2^64. Use only when modulo arithmetic is an explicit invariant.
16
+ function mulWrapping64(gtUint64 a, gtUint64 b, address cOwner) external;
17
+ function div64(gtUint64 a, gtUint64 b, address cOwner) external;
18
+ function rem64(gtUint64 a, gtUint64 b, address cOwner) external;
19
+ function and64(gtUint64 a, gtUint64 b, address cOwner) external;
20
+ function or64(gtUint64 a, gtUint64 b, address cOwner) external;
21
+ function xor64(gtUint64 a, gtUint64 b, address cOwner) external;
22
+ function min64(gtUint64 a, gtUint64 b, address cOwner) external;
23
+ function max64(gtUint64 a, gtUint64 b, address cOwner) external;
24
+ function eq64(gtUint64 a, gtUint64 b, address cOwner) external;
25
+ function ne64(gtUint64 a, gtUint64 b, address cOwner) external;
26
+ function ge64(gtUint64 a, gtUint64 b, address cOwner) external;
27
+ function gt64(gtUint64 a, gtUint64 b, address cOwner) external;
28
+ function le64(gtUint64 a, gtUint64 b, address cOwner) external;
29
+ function lt64(gtUint64 a, gtUint64 b, address cOwner) external;
30
+ function mux64(gtBool bit, gtUint64 a, gtUint64 b, address cOwner) external;
31
+ function shl64(gtUint64 a, uint8 s, address cOwner) external;
32
+ function shr64(gtUint64 a, uint8 s, address cOwner) external;
33
+
34
+ /// @notice Plaintext random; inbox payload is `abi.encode(uint256)` (not `ctUint64`).
35
+ function rand64(address cOwner) external;
36
+
37
+ /// @notice Plaintext random; inbox payload is `abi.encode(uint256)` (not `ctUint64`).
38
+ function randBoundedBits64(uint8 numBits, address cOwner) external;
39
+ }
40
+
41
+ /// @notice 128-bit executor ops.
42
+ interface IPodExecutor128 {
43
+ function add128(gtUint128 a, gtUint128 b, address cOwner) external;
44
+ function sub128(gtUint128 a, gtUint128 b, address cOwner) external;
45
+ /// @notice Checked multiplication. Reverts when the true product does not fit in uint128.
46
+ function mul128(gtUint128 a, gtUint128 b, address cOwner) external;
47
+ /// @notice Wrapping multiplication modulo 2^128. Use only when modulo arithmetic is an explicit invariant.
48
+ function mulWrapping128(gtUint128 a, gtUint128 b, address cOwner) external;
49
+ function and128(gtUint128 a, gtUint128 b, address cOwner) external;
50
+ function or128(gtUint128 a, gtUint128 b, address cOwner) external;
51
+ function xor128(gtUint128 a, gtUint128 b, address cOwner) external;
52
+ function min128(gtUint128 a, gtUint128 b, address cOwner) external;
53
+ function max128(gtUint128 a, gtUint128 b, address cOwner) external;
54
+ function eq128(gtUint128 a, gtUint128 b, address cOwner) external;
55
+ function ne128(gtUint128 a, gtUint128 b, address cOwner) external;
56
+ function ge128(gtUint128 a, gtUint128 b, address cOwner) external;
57
+ function gt128(gtUint128 a, gtUint128 b, address cOwner) external;
58
+ function le128(gtUint128 a, gtUint128 b, address cOwner) external;
59
+ function lt128(gtUint128 a, gtUint128 b, address cOwner) external;
60
+ function mux128(gtBool bit, gtUint128 a, gtUint128 b, address cOwner) external;
61
+ function shl128(gtUint128 a, uint8 s, address cOwner) external;
62
+ function shr128(gtUint128 a, uint8 s, address cOwner) external;
63
+
64
+ /// @notice Plaintext random; inbox payload is `abi.encode(uint256)` (not `ctUint128`).
65
+ function rand128(address cOwner) external;
66
+
67
+ /// @notice Plaintext random; inbox payload is `abi.encode(uint256)` (not `ctUint128`).
68
+ function randBoundedBits128(uint8 numBits, address cOwner) external;
69
+ }
70
+
71
+ /// @notice 256-bit executor ops.
72
+ interface IPodExecutor256 {
73
+ function add256(gtUint256 a, gtUint256 b, address cOwner) external;
74
+ function sub256(gtUint256 a, gtUint256 b, address cOwner) external;
75
+ /// @notice Checked multiplication. Reverts when the true product does not fit in uint256.
76
+ function mul256(gtUint256 a, gtUint256 b, address cOwner) external;
77
+ /// @notice Wrapping multiplication modulo 2^256. Use only when modulo arithmetic is an explicit invariant.
78
+ function mulWrapping256(gtUint256 a, gtUint256 b, address cOwner) external;
79
+ function and256(gtUint256 a, gtUint256 b, address cOwner) external;
80
+ function or256(gtUint256 a, gtUint256 b, address cOwner) external;
81
+ function xor256(gtUint256 a, gtUint256 b, address cOwner) external;
82
+ function min256(gtUint256 a, gtUint256 b, address cOwner) external;
83
+ function max256(gtUint256 a, gtUint256 b, address cOwner) external;
84
+ function eq256(gtUint256 a, gtUint256 b, address cOwner) external;
85
+ function ne256(gtUint256 a, gtUint256 b, address cOwner) external;
86
+ function ge256(gtUint256 a, gtUint256 b, address cOwner) external;
87
+ function gt256(gtUint256 a, gtUint256 b, address cOwner) external;
88
+ function le256(gtUint256 a, gtUint256 b, address cOwner) external;
89
+ function lt256(gtUint256 a, gtUint256 b, address cOwner) external;
90
+ function mux256(gtBool bit, gtUint256 a, gtUint256 b, address cOwner) external;
91
+ function shl256(gtUint256 a, uint8 s, address cOwner) external;
92
+ function shr256(gtUint256 a, uint8 s, address cOwner) external;
93
+
94
+ /// @notice Plaintext random; inbox payload is `abi.encode(uint256)` (not `ctUint256`).
95
+ function rand256(address cOwner) external;
96
+
97
+ /// @notice Plaintext random; inbox payload is `abi.encode(uint256)` (not `ctUint256`).
98
+ function randBoundedBits256(uint8 numBits, address cOwner) external;
99
+ }