@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.
- package/.github/workflows/npm-publish.yml +1 -1
- package/contracts/access/DataPrivacyFramework/DataPrivacyFramework.sol +1 -1
- package/contracts/access/DataPrivacyFramework/extensions/DataPrivacyFrameworkMpc.sol +1 -1
- package/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.sol +2 -4
- package/contracts/disperse/disperseToken/MintDisperser.sol +1 -3
- package/contracts/disperse/disperseToken/TokenDisperser.sol +1 -1
- package/contracts/messaging/PrivateMessaging.sol +456 -0
- package/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock.sol +1 -1
- package/contracts/mocks/messaging/PrivateMessagingHarness.sol +54 -0
- package/contracts/mocks/oracle/CotiPriceConsumerMock.sol +31 -0
- package/contracts/mocks/token/ERC20DecimalsMock.sol +21 -0
- package/contracts/mocks/token/ERC20Mock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.sol +9 -4
- package/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.sol +1 -1
- package/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock.sol +1 -1
- package/contracts/mocks/utils/mpc/Arithmetic128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Arithmetic256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/ArithmeticAddTestsContract.sol +196 -0
- package/contracts/mocks/utils/mpc/ArithmeticMulTestsContract.sol +194 -0
- package/contracts/mocks/utils/mpc/ArithmeticSigned128TestsContract.sol +63 -0
- package/contracts/mocks/utils/mpc/ArithmeticSigned256TestsContract.sol +107 -0
- package/contracts/mocks/utils/mpc/ArithmeticSignedNarrowTestsContract.sol +123 -0
- package/contracts/mocks/utils/mpc/ArithmeticSubTestsContract.sol +196 -0
- package/contracts/mocks/utils/mpc/Bitwise128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Bitwise256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/BitwiseTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Comparison128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Comparison1TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Comparison256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Comparison2TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/MinMax128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/MinMax256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/MinMaxTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/MinimalImplementation.sol +1 -1
- package/contracts/mocks/utils/mpc/MinimalProxy.sol +1 -1
- package/contracts/mocks/utils/mpc/Miscellaneous1TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/MiscellaneousTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/MpcOperations128TestContract.sol +1 -1
- package/contracts/mocks/utils/mpc/MpcOperationsTestContract.sol +4 -4
- package/contracts/mocks/utils/mpc/Mux128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Mux256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract.sol +1 -1
- package/contracts/mocks/utils/mpc/OnBoard128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/OnBoard256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/PrivacyImplementationV1.sol +1 -1
- package/contracts/mocks/utils/mpc/PrivacyImplementationV2.sol +1 -1
- package/contracts/mocks/utils/mpc/PrivacyProxy.sol +1 -1
- package/contracts/mocks/utils/mpc/Random128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Random256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Shift128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Shift256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/ShiftTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/StringTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Transfer128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/Transfer256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferScalarTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract.sol +1 -1
- package/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract.sol +2 -2
- package/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract.sol +1 -1
- package/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.sol +1 -1
- package/contracts/node/CotiNodeRewards.sol +3 -3
- package/contracts/node/SoulboundNodeNFT.sol +23 -24
- package/contracts/onboard/AccountOnboard.sol +1 -1
- package/contracts/oracle/CotiPriceConsumer.sol +103 -0
- package/contracts/oracle/ICotiPriceConsumer.sol +15 -0
- package/contracts/oracle/IStdReference.sol +26 -0
- package/contracts/pod/IInbox.sol +231 -0
- package/contracts/pod/IInboxMiner.sol +53 -0
- package/contracts/pod/InboxUser.sol +29 -0
- package/contracts/pod/InboxUserCotiTestnet.sol +13 -0
- package/contracts/pod/PodNetworkConstants.sol +30 -0
- package/contracts/pod/examples/MpcAdder.sol +57 -0
- package/contracts/pod/examples/MpcAdderPausable.sol +25 -0
- package/contracts/pod/examples/MpcAdderPausable.sol.bak +25 -0
- package/contracts/pod/examples/it128/PodAdder128.sol +48 -0
- package/contracts/pod/examples/it256/PodAdder256.sol +48 -0
- package/contracts/pod/fee/IInboxFeeManager.sol +40 -0
- package/contracts/pod/manifest.json +52 -0
- package/contracts/pod/mpc/PodLib.sol +10 -0
- package/contracts/pod/mpc/PodLib128.sol +361 -0
- package/contracts/pod/mpc/PodLib256.sol +361 -0
- package/contracts/pod/mpc/PodLib64.sol +385 -0
- package/contracts/pod/mpc/PodLibBase.sol +72 -0
- package/contracts/pod/mpc/PodUser.sol +58 -0
- package/contracts/pod/mpc/PodUserFuji.sol +14 -0
- package/contracts/pod/mpc/PodUserSepolia.sol +13 -0
- package/contracts/pod/mpc/coti-side/IPodExecutorOps.sol +99 -0
- package/contracts/pod/mpccodec/MpcAbiCodec.sol +482 -0
- package/contracts/pod/privacy/IPodPriceOracle.sol +20 -0
- package/contracts/pod/privacy/IPrivacyPortal.sol +248 -0
- package/contracts/pod/privacy/IPrivacyPortalFactory.sol +88 -0
- package/contracts/pod/privacy/PortalFeeOracle.sol +51 -0
- package/contracts/pod/privacy/PrivacyPortal.sol +871 -0
- package/contracts/pod/privacy/PrivacyPortalFactory.sol +492 -0
- package/contracts/pod/privacy/PrivacyPortalFeeLib.sol +98 -0
- package/contracts/pod/privacy/mocks/CloneHelper.sol +14 -0
- package/contracts/pod/privacy/mocks/MockERC20.sol +26 -0
- package/contracts/pod/privacy/mocks/MockPodERC20ForPortal.sol +160 -0
- package/contracts/pod/privacy/mocks/MockPrivacyPortalFactory.sol +125 -0
- package/contracts/pod/privacy/mocks/MockWrappedNative.sol +24 -0
- package/contracts/pod/token/erc7984/Erc7984Constants.sol +9 -0
- package/contracts/pod/token/erc7984/Erc7984Pointers.sol +29 -0
- package/contracts/pod/token/erc7984/IERC7984.sol +69 -0
- package/contracts/pod/token/erc7984/IERC7984PortalWrapper.sol +31 -0
- package/contracts/pod/token/erc7984/PodErc7984Mixin.sol +125 -0
- package/contracts/pod/token/erc7984/README.md +60 -0
- package/contracts/pod/token/perc20/IPodERC20.sol +298 -0
- package/contracts/pod/token/perc20/PodERC20.sol +1021 -0
- package/contracts/pod/token/perc20/PodErc20Mintable.sol +88 -0
- package/contracts/pod/token/perc20/PodErc20MintableInitializable.sol +42 -0
- package/contracts/pod/token/perc20/cotiside/IPodErc20CotiSide.sol +88 -0
- package/contracts/pod/token/perc20/cotiside/PodErc20CotiMother.sol +529 -0
- package/contracts/pod/utils/IWrappedNative.sol +11 -0
- package/contracts/privacyBridge/PrivacyBridge.sol +376 -94
- package/contracts/privacyBridge/PrivacyBridgeCotiNative.sol +210 -162
- package/contracts/privacyBridge/PrivacyBridgeERC20.sol +242 -160
- package/contracts/privacyBridge/PrivacyBridgeUSDCe.sol +8 -2
- package/contracts/privacyBridge/PrivacyBridgeUSDT.sol +8 -2
- package/contracts/privacyBridge/PrivacyBridgeWADA.sol +8 -2
- package/contracts/privacyBridge/PrivacyBridgeWBTC.sol +8 -2
- package/contracts/privacyBridge/PrivacyBridgeWETH.sol +8 -2
- package/contracts/privacyBridge/PrivacyBridgegCoti.sol +8 -2
- package/contracts/token/PrivateERC20/IPrivateERC20.sol +1 -1
- package/contracts/token/PrivateERC20/ITokenReceiver.sol +1 -1
- package/contracts/token/PrivateERC20/ITokenReceiverEncrypted.sol +1 -1
- package/contracts/token/PrivateERC20/PrivateERC20.sol +5 -5
- package/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.sol +1 -1
- package/contracts/token/PrivateERC20/tokens/PrivateCOTI.sol +1 -1
- package/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.sol +1 -1
- package/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.sol +1 -1
- package/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.sol +1 -1
- package/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.sol +1 -1
- package/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.sol +1 -1
- package/contracts/token/PrivateERC721/IERC721Errors.sol +1 -1
- package/contracts/token/PrivateERC721/PrivateERC721.sol +1 -1
- package/contracts/token/PrivateERC721/extensions/IPrivateERC721URIStorage.sol +1 -1
- package/contracts/token/PrivateERC721/extensions/PrivateERC721URIStorage.sol +1 -1
- package/contracts/token/points/CotiTokenPoints004.sol +43 -0
- package/contracts/utils/mpc/MpcCore.sol +610 -1
- package/contracts/utils/mpc/MpcInterface.sol +1 -1
- package/hardhat.config.ts +9 -15
- package/package.json +4 -4
- package/scripts/add-bridge-operators.cjs +87 -0
- package/scripts/deploy-coti-price-consumer-mainnet.cjs +49 -0
- package/scripts/deployCotiNodeRewards.ts +51 -0
- package/scripts/deployCotiTokenPoints004.ts +61 -0
- package/scripts/deployFixedRatioCoinDisperserUnlimitedWindow.ts +68 -0
- package/scripts/redeploy-private-and-bridges.cjs +201 -0
- package/scripts/set-bridge-limits-mainnet.cjs +177 -0
- package/scripts/verify-mainnet-private-bridges.cjs +289 -0
- package/scripts/verifyCotiTokenPoints004.ts +123 -0
- package/scripts/verifyFixedRatioCoinDisperserUnlimitedWindow.ts +112 -0
- package/sonar-project.properties +11 -0
- package/test/messaging/PrivateMessaging.test.ts +158 -0
- package/test/pod/privacy/PrivacyPortal.access.test.ts +756 -0
- package/test/pod/privacy/PrivacyPortal.recovery.test.ts +263 -0
- package/test/privacyBridge/UnifiedPrivacyBridges.test.cjs +1665 -0
- package/test/token/PrivateERC20/PrivacyBridge.fees.test.ts +162 -239
- package/test/utils/mpc/CheckedSignedArithmetic256.test.ts +163 -0
- package/test/utils/mpc/NegativeCases.test.ts +3 -3
- package/test/utils/mpc/Precompile.test.ts +6 -6
- package/typechain-types/@openzeppelin/contracts/access/AccessControl.ts +324 -0
- package/typechain-types/@openzeppelin/contracts/access/AccessControlEnumerable.ts +361 -0
- package/typechain-types/@openzeppelin/contracts/access/IAccessControl.ts +292 -0
- package/typechain-types/@openzeppelin/contracts/access/IAccessControlEnumerable.ts +329 -0
- package/typechain-types/@openzeppelin/contracts/access/extensions/AccessControlEnumerable.ts +375 -0
- package/typechain-types/@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.ts +329 -0
- package/typechain-types/@openzeppelin/contracts/access/extensions/index.ts +5 -0
- package/typechain-types/@openzeppelin/contracts/access/index.ts +6 -0
- package/typechain-types/@openzeppelin/contracts/index.ts +2 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/IERC1363.ts +412 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/IERC5267.ts +151 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +6 -0
- package/typechain-types/@openzeppelin/contracts/interfaces/index.ts +4 -0
- package/typechain-types/@openzeppelin/contracts/security/Pausable.ts +150 -0
- package/typechain-types/@openzeppelin/contracts/security/index.ts +4 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/ERC20.ts +286 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/IERC20.ts +6 -6
- package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.ts +313 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.ts +356 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.ts +423 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.ts +286 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/extensions/index.ts +4 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/index.ts +3 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC20/utils/index.ts +4 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC721/ERC721.ts +420 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.ts +420 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC721/extensions/index.ts +4 -0
- package/typechain-types/@openzeppelin/contracts/token/ERC721/index.ts +3 -0
- package/typechain-types/@openzeppelin/contracts/utils/Nonces.ts +85 -0
- package/typechain-types/@openzeppelin/contracts/utils/Pausable.ts +150 -0
- package/typechain-types/@openzeppelin/contracts/utils/ReentrancyGuard.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/utils/ShortStrings.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/utils/Strings.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/utils/cryptography/ECDSA.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/utils/cryptography/EIP712.ts +151 -0
- package/typechain-types/@openzeppelin/contracts/utils/cryptography/index.ts +5 -0
- package/typechain-types/@openzeppelin/contracts/utils/index.ts +9 -0
- package/typechain-types/@openzeppelin/contracts/utils/math/SafeCast.ts +69 -0
- package/typechain-types/@openzeppelin/contracts/utils/math/index.ts +4 -0
- package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1.ts +735 -0
- package/typechain-types/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow.ts +734 -0
- package/typechain-types/contracts/disperse/coinByRatio/index.ts +2 -0
- package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/IOwnable.ts +95 -0
- package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser.ts +22 -0
- package/typechain-types/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +1 -0
- package/typechain-types/contracts/index.ts +8 -0
- package/typechain-types/contracts/messaging/PrivateMessaging.ts +871 -0
- package/typechain-types/contracts/messaging/index.ts +4 -0
- package/typechain-types/contracts/mocks/index.ts +4 -0
- package/typechain-types/contracts/mocks/messaging/PrivateMessagingHarness.ts +951 -0
- package/typechain-types/contracts/mocks/messaging/index.ts +4 -0
- package/typechain-types/contracts/mocks/oracle/CotiPriceConsumerMock.ts +163 -0
- package/typechain-types/contracts/mocks/oracle/index.ts +4 -0
- package/typechain-types/contracts/mocks/token/ERC20DecimalsMock.ts +305 -0
- package/typechain-types/contracts/mocks/token/ERC20Mock.ts +324 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock.ts +108 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock.ts +1906 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock.ts +1296 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock.ts +1270 -0
- package/typechain-types/contracts/mocks/{utils/mpc/Bitwise128BitTestsContract.ts → token/PrivateERC20/PrivateERC20GtCallerMock.ts} +47 -67
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20Mock.ts +757 -25
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/IPrivateERC20TransferAndCallEncrypted.ts +102 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/PrivateERC20ReentrantReceiverMock.ts +154 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/index.ts +5 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock.ts +155 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock.ts +107 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock.ts +100 -0
- package/typechain-types/contracts/mocks/token/PrivateERC20/index.ts +10 -0
- package/typechain-types/contracts/mocks/token/index.ts +2 -0
- package/typechain-types/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock.ts +6 -6
- package/typechain-types/contracts/node/CotiNodeRewards.ts +566 -0
- package/typechain-types/contracts/node/SoulboundNodeNFT.sol/IERC5192.ts +123 -0
- package/typechain-types/contracts/node/SoulboundNodeNFT.sol/SoulboundNodeNFT.ts +975 -0
- package/typechain-types/contracts/node/SoulboundNodeNFT.sol/index.ts +5 -0
- package/typechain-types/contracts/node/index.ts +6 -0
- package/typechain-types/contracts/oracle/CotiPriceConsumer.ts +256 -0
- package/typechain-types/contracts/oracle/ICotiPriceConsumer.ts +119 -0
- package/typechain-types/contracts/oracle/IStdReference.ts +136 -0
- package/typechain-types/contracts/oracle/index.ts +6 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridge.ts +1642 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeCotiNative.ts +1884 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/IHasDecimals.ts +84 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20.ts +1906 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeERC20.sol/index.ts +5 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDCe.ts +1906 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeUSDT.ts +1906 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeWADA.ts +1906 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeWBTC.ts +1906 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgeWETH.ts +1906 -0
- package/typechain-types/contracts/privacyBridge/PrivacyBridgegCoti.ts +1906 -0
- package/typechain-types/contracts/privacyBridge/index.ts +13 -0
- package/typechain-types/contracts/token/PrivateERC20/IPrivateERC20.ts +439 -19
- package/typechain-types/contracts/token/PrivateERC20/ITokenReceiver.ts +100 -0
- package/typechain-types/contracts/token/PrivateERC20/ITokenReceiverEncrypted.ts +99 -0
- package/typechain-types/contracts/token/PrivateERC20/PrivateERC20.ts +763 -15
- package/typechain-types/contracts/token/PrivateERC20/index.ts +4 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC.ts +1270 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTI.ts +1270 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken.ts +1270 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateTetherUSD.ts +1270 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedADA.ts +1270 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC.ts +1270 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/PrivateWrappedEther.ts +1270 -0
- package/typechain-types/contracts/token/PrivateERC20/tokens/index.ts +10 -0
- package/typechain-types/contracts/token/index.ts +2 -0
- package/typechain-types/contracts/token/points/CotiTokenPoints004.sol/COTITokenPoints004.ts +826 -0
- package/typechain-types/contracts/token/points/CotiTokenPoints004.ts +826 -0
- package/typechain-types/contracts/token/points/index.ts +4 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/AccessControlEnumerable__factory.ts +276 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/AccessControl__factory.ts +250 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/IAccessControlEnumerable__factory.ts +244 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/IAccessControl__factory.ts +218 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/Ownable__factory.ts +22 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/extensions/AccessControlEnumerable__factory.ts +316 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/extensions/IAccessControlEnumerable__factory.ts +265 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/extensions/index.ts +5 -0
- package/typechain-types/factories/@openzeppelin/contracts/access/index.ts +5 -0
- package/typechain-types/factories/@openzeppelin/contracts/index.ts +1 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC1363__factory.ts +393 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/IERC5267__factory.ts +71 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC1155Errors__factory.ts +127 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC20Errors__factory.ts +111 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/IERC721Errors__factory.ts +128 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/draft-IERC6093.sol/index.ts +6 -0
- package/typechain-types/factories/@openzeppelin/contracts/interfaces/index.ts +3 -0
- package/typechain-types/factories/@openzeppelin/contracts/security/Pausable__factory.ts +61 -0
- package/typechain-types/factories/@openzeppelin/contracts/security/index.ts +4 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/ERC20__factory.ts +330 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.ts +3 -3
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable__factory.ts +364 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable__factory.ts +382 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit__factory.ts +540 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata__factory.ts +247 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/extensions/index.ts +4 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/index.ts +2 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/utils/SafeERC20__factory.ts +96 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC20/utils/index.ts +4 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/ERC721__factory.ts +455 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata__factory.ts +355 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/extensions/index.ts +4 -0
- package/typechain-types/factories/@openzeppelin/contracts/token/ERC721/index.ts +2 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/Nonces__factory.ts +57 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/Pausable__factory.ts +71 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/ReentrancyGuard__factory.ts +30 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/ShortStrings__factory.ts +83 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/Strings__factory.ts +90 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory.ts +91 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/EIP712__factory.ts +87 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/cryptography/index.ts +5 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/index.ts +7 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/math/SafeCast__factory.ts +118 -0
- package/typechain-types/factories/@openzeppelin/contracts/utils/math/index.ts +4 -0
- package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserLeftoverS1__factory.ts +802 -0
- package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperserUnlimitedWindow__factory.ts +749 -0
- package/typechain-types/factories/contracts/disperse/coinByRatio/FixedRatioCoinDisperser__factory.ts +12 -1
- package/typechain-types/factories/contracts/disperse/coinByRatio/index.ts +2 -0
- package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/IOwnable__factory.ts +35 -0
- package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/MintDisperser__factory.ts +41 -1
- package/typechain-types/factories/contracts/disperse/disperseToken/MintDisperser.sol/index.ts +1 -0
- package/typechain-types/factories/contracts/disperse/disperseToken/TokenDisperser__factory.ts +12 -1
- package/typechain-types/factories/contracts/index.ts +4 -0
- package/typechain-types/factories/contracts/messaging/PrivateMessaging__factory.ts +1035 -0
- package/typechain-types/factories/contracts/messaging/index.ts +4 -0
- package/typechain-types/factories/contracts/mocks/access/DataPrivacyFramework/DataPrivacyFrameworkMock__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/index.ts +2 -0
- package/typechain-types/factories/contracts/mocks/messaging/PrivateMessagingHarness__factory.ts +1161 -0
- package/typechain-types/factories/contracts/mocks/messaging/index.ts +4 -0
- package/typechain-types/factories/contracts/mocks/oracle/CotiPriceConsumerMock__factory.ts +159 -0
- package/typechain-types/factories/contracts/mocks/oracle/index.ts +4 -0
- package/typechain-types/factories/contracts/mocks/token/ERC20DecimalsMock__factory.ts +432 -0
- package/typechain-types/factories/contracts/mocks/token/ERC20Mock__factory.ts +430 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/EncryptedTokenReceiverMock__factory.ts +125 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivacyBridgeERC20Mock__factory.ts +1885 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20AuditorSupplyMock__factory.ts +1540 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20CappedMock__factory.ts +1492 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20GtCallerMock__factory.ts +165 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20Mock__factory.ts +794 -52
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/IPrivateERC20TransferAndCallEncrypted__factory.ts +54 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/PrivateERC20ReentrantReceiverMock__factory.ts +159 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PrivateERC20ReentrantReceiverMock.sol/index.ts +5 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicReentrantTokenReceiverMock__factory.ts +164 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicTokenReceiverBoolMock__factory.ts +130 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/PublicTokenReceiverMock__factory.ts +102 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC20/index.ts +9 -0
- package/typechain-types/factories/contracts/mocks/token/PrivateERC721/PrivateERC721URIStorageMock__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/token/index.ts +2 -0
- package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/ArithmeticTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/BitwiseTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic128WithOverflowBitTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmetic256WithOverflowBitTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/CheckedArithmeticWIthOverflowBitTestsContract.sol/CheckedArithmeticWithOverflowBitTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison1TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison2TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MinMax256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MinMaxTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalImplementation__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MinimalProxy__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous1TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MiscellaneousTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperations128TestContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/MpcOperationsTestContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Mux128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Mux256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/OffboardToUserKeyTestContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/OnBoard256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV1__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyImplementationV2__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/PrivacyProxy__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Random128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Random256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Shift128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Shift256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/ShiftTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/StringTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/Transfer256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferScalarTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_16TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_32TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_64TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowance64_8TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceScalarTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/TransferWithAllowanceTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext128TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertext256TestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/utils/mpc/ValidateCiphertextTestsContract__factory.ts +1 -1
- package/typechain-types/factories/contracts/mocks/wallet/PrivateERC20Wallet/PrivateERC20WalletMock__factory.ts +4 -22
- package/typechain-types/factories/contracts/node/CotiNodeRewards__factory.ts +576 -0
- package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/IERC5192__factory.ts +54 -0
- package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/SoulboundNodeNFT__factory.ts +1072 -0
- package/typechain-types/factories/contracts/node/SoulboundNodeNFT.sol/index.ts +5 -0
- package/typechain-types/factories/contracts/node/index.ts +5 -0
- package/typechain-types/factories/contracts/onboard/AccountOnboard__factory.ts +1 -1
- package/typechain-types/factories/contracts/oracle/CotiPriceConsumer__factory.ts +295 -0
- package/typechain-types/factories/contracts/oracle/ICotiPriceConsumer__factory.ts +73 -0
- package/typechain-types/factories/contracts/oracle/IStdReference__factory.ts +107 -0
- package/typechain-types/factories/contracts/oracle/index.ts +6 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeCotiNative__factory.ts +1753 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/IHasDecimals__factory.ts +38 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/PrivacyBridgeERC20__factory.ts +1766 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeERC20.sol/index.ts +5 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDCe__factory.ts +1870 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeUSDT__factory.ts +1870 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWADA__factory.ts +1870 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWBTC__factory.ts +1870 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgeWETH__factory.ts +1870 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridge__factory.ts +1444 -0
- package/typechain-types/factories/contracts/privacyBridge/PrivacyBridgegCoti__factory.ts +1870 -0
- package/typechain-types/factories/contracts/privacyBridge/index.ts +12 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/IPrivateERC20__factory.ts +481 -35
- package/typechain-types/factories/contracts/token/PrivateERC20/ITokenReceiverEncrypted__factory.ts +53 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/ITokenReceiver__factory.ts +54 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/PrivateERC20__factory.ts +812 -52
- package/typechain-types/factories/contracts/token/PrivateERC20/index.ts +3 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateBridgedUSDC__factory.ts +1471 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTITreasuryGovernanceToken__factory.ts +1477 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateCOTI__factory.ts +1468 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateTetherUSD__factory.ts +1471 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedADA__factory.ts +1471 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedBTC__factory.ts +1471 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/PrivateWrappedEther__factory.ts +1477 -0
- package/typechain-types/factories/contracts/token/PrivateERC20/tokens/index.ts +10 -0
- package/typechain-types/factories/contracts/token/index.ts +1 -0
- package/typechain-types/factories/contracts/token/points/CotiTokenPoints004.sol/COTITokenPoints004__factory.ts +992 -0
- package/typechain-types/factories/contracts/token/points/CotiTokenPoints004__factory.ts +992 -0
- package/typechain-types/factories/contracts/token/points/index.ts +4 -0
- package/typechain-types/factories/contracts/utils/mpc/MpcCore__factory.ts +1 -1
- package/typechain-types/hardhat.d.ts +1414 -118
- package/typechain-types/index.ts +138 -2
- package/contracts/mocks/utils/mpc/ArithmeticTestsContract.sol +0 -408
- package/typechain-types/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract.ts +0 -341
- package/typechain-types/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract.ts +0 -347
- package/typechain-types/contracts/mocks/utils/mpc/Bitwise256BitTestsContract.ts +0 -186
- package/typechain-types/contracts/mocks/utils/mpc/Comparison128BitTestsContract.ts +0 -260
- package/typechain-types/contracts/mocks/utils/mpc/Comparison256BitTestsContract.ts +0 -260
- package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract.ts +0 -302
- package/typechain-types/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract.ts +0 -322
- package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic128BitTestsContract__factory.ts +0 -349
- package/typechain-types/factories/contracts/mocks/utils/mpc/Arithmetic256BitTestsContract__factory.ts +0 -364
- package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise128BitTestsContract__factory.ts +0 -182
- package/typechain-types/factories/contracts/mocks/utils/mpc/Bitwise256BitTestsContract__factory.ts +0 -182
- package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison128BitTestsContract__factory.ts +0 -255
- package/typechain-types/factories/contracts/mocks/utils/mpc/Comparison256BitTestsContract__factory.ts +0 -255
- package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous128BitTestsContract__factory.ts +0 -332
- package/typechain-types/factories/contracts/mocks/utils/mpc/Miscellaneous256BitTestsContract__factory.ts +0 -380
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
// SPDX-License-Identifier: UNLICENSED
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
import "../../utils/mpc/MpcCore.sol";
|
|
5
|
+
|
|
6
|
+
import "../IInbox.sol";
|
|
7
|
+
|
|
8
|
+
/// @title MpcAbiCodec
|
|
9
|
+
/// @notice Library to build and re-encode {IInbox.MpcMethodCall} payloads for MPC and ABI dispatch.
|
|
10
|
+
/// @dev Maps it-* wire types to gt-* calldata expected by COTI-side executors.
|
|
11
|
+
library MpcAbiCodec {
|
|
12
|
+
enum MpcDataType {
|
|
13
|
+
UINT256,
|
|
14
|
+
ADDRESS, // include other system types for coded
|
|
15
|
+
BYTES32,
|
|
16
|
+
STRING,
|
|
17
|
+
BYTES,
|
|
18
|
+
UINT256_ARRAY,
|
|
19
|
+
ADDRESS_ARRAY,
|
|
20
|
+
BYTES32_ARRAY,
|
|
21
|
+
STRING_ARRAY,
|
|
22
|
+
BYTES_ARRAY,
|
|
23
|
+
IT_BOOL,
|
|
24
|
+
IT_UINT8,
|
|
25
|
+
IT_UINT16,
|
|
26
|
+
IT_UINT32,
|
|
27
|
+
IT_UINT64,
|
|
28
|
+
IT_UINT128,
|
|
29
|
+
IT_UINT256,
|
|
30
|
+
IT_STRING
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
event ValidateCiphertextStart(uint8 dataType, uint256 argLen, bytes32 argHash);
|
|
34
|
+
event ValidateCiphertextSuccess(uint8 dataType);
|
|
35
|
+
|
|
36
|
+
struct MpcMethodCallContext {
|
|
37
|
+
IInbox.MpcMethodCall mpcMethodCall;
|
|
38
|
+
bytes[] data;
|
|
39
|
+
uint256 dataSize;
|
|
40
|
+
uint256 argIndex;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/// @notice Create a method call context with selector and argument count.
|
|
44
|
+
/// @param selector The method selector to call on the target contract.
|
|
45
|
+
/// @param argCount The number of arguments expected in the call.
|
|
46
|
+
/// @return context The initialized method call context.
|
|
47
|
+
function create(bytes4 selector, uint256 argCount) internal pure returns (MpcMethodCallContext memory) {
|
|
48
|
+
return MpcMethodCallContext({
|
|
49
|
+
mpcMethodCall: IInbox.MpcMethodCall({
|
|
50
|
+
selector: selector,
|
|
51
|
+
data: new bytes(0),
|
|
52
|
+
datatypes: new bytes8[](argCount),
|
|
53
|
+
datalens: new bytes32[](argCount)
|
|
54
|
+
}),
|
|
55
|
+
data: new bytes[](argCount),
|
|
56
|
+
dataSize: 0,
|
|
57
|
+
argIndex: 0
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* @notice Add an argument to the method call context
|
|
63
|
+
* @param methodCall The method call
|
|
64
|
+
* @param arg the argument to add
|
|
65
|
+
* @return The updated method call
|
|
66
|
+
*/
|
|
67
|
+
function addArgument(MpcMethodCallContext memory methodCall, uint256 arg)
|
|
68
|
+
internal pure returns (MpcMethodCallContext memory)
|
|
69
|
+
{
|
|
70
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.UINT256);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/// @notice Add an address argument to the method call context.
|
|
74
|
+
/// @param methodCall The method call context.
|
|
75
|
+
/// @param arg The address argument to add.
|
|
76
|
+
/// @return The updated method call context.
|
|
77
|
+
function addArgument(MpcMethodCallContext memory methodCall, address arg)
|
|
78
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
79
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.ADDRESS);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/// @notice Add an itUint64 argument to the method call context.
|
|
83
|
+
/// @param methodCall The method call context.
|
|
84
|
+
/// @param arg The itUint64 argument to add.
|
|
85
|
+
/// @return The updated method call context.
|
|
86
|
+
function addArgument(MpcMethodCallContext memory methodCall, itUint64 memory arg)
|
|
87
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
88
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.IT_UINT64);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/// @notice Add an itBool argument to the method call context.
|
|
92
|
+
/// @param methodCall The method call context.
|
|
93
|
+
/// @param arg The itBool argument to add.
|
|
94
|
+
/// @return The updated method call context.
|
|
95
|
+
function addArgument(MpcMethodCallContext memory methodCall, itBool memory arg)
|
|
96
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
97
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.IT_BOOL);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/// @notice Add an itUint8 argument to the method call context.
|
|
101
|
+
/// @param methodCall The method call context.
|
|
102
|
+
/// @param arg The itUint8 argument to add.
|
|
103
|
+
/// @return The updated method call context.
|
|
104
|
+
function addArgument(MpcMethodCallContext memory methodCall, itUint8 memory arg)
|
|
105
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
106
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.IT_UINT8);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/// @notice Add an itUint16 argument to the method call context.
|
|
110
|
+
/// @param methodCall The method call context.
|
|
111
|
+
/// @param arg The itUint16 argument to add.
|
|
112
|
+
/// @return The updated method call context.
|
|
113
|
+
function addArgument(MpcMethodCallContext memory methodCall, itUint16 memory arg)
|
|
114
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
115
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.IT_UINT16);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/// @notice Add an itUint32 argument to the method call context.
|
|
119
|
+
/// @param methodCall The method call context.
|
|
120
|
+
/// @param arg The itUint32 argument to add.
|
|
121
|
+
/// @return The updated method call context.
|
|
122
|
+
function addArgument(MpcMethodCallContext memory methodCall, itUint32 memory arg)
|
|
123
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
124
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.IT_UINT32);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/// @notice Add an itUint128 argument to the method call context.
|
|
128
|
+
/// @param methodCall The method call context.
|
|
129
|
+
/// @param arg The itUint128 argument to add.
|
|
130
|
+
/// @return The updated method call context.
|
|
131
|
+
function addArgument(MpcMethodCallContext memory methodCall, itUint128 memory arg)
|
|
132
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
133
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.IT_UINT128);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/// @notice Add an itUint256 argument to the method call context.
|
|
137
|
+
/// @param methodCall The method call context.
|
|
138
|
+
/// @param arg The itUint256 argument to add.
|
|
139
|
+
/// @return The updated method call context.
|
|
140
|
+
function addArgument(MpcMethodCallContext memory methodCall, itUint256 memory arg)
|
|
141
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
142
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.IT_UINT256);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/// @notice Add an itString argument to the method call context.
|
|
146
|
+
/// @param methodCall The method call context.
|
|
147
|
+
/// @param arg The itString argument to add.
|
|
148
|
+
/// @return The updated method call context.
|
|
149
|
+
function addArgument(MpcMethodCallContext memory methodCall, itString memory arg)
|
|
150
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
151
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.IT_STRING);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/// @notice Add a bytes32 argument to the method call context.
|
|
155
|
+
/// @param methodCall The method call context.
|
|
156
|
+
/// @param arg The bytes32 argument to add.
|
|
157
|
+
/// @return The updated method call context.
|
|
158
|
+
function addArgument(MpcMethodCallContext memory methodCall, bytes32 arg)
|
|
159
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
160
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.BYTES32);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/// @notice Add a string argument to the method call context.
|
|
164
|
+
/// @param methodCall The method call context.
|
|
165
|
+
/// @param arg The string argument to add.
|
|
166
|
+
/// @return The updated method call context.
|
|
167
|
+
function addArgument(MpcMethodCallContext memory methodCall, string memory arg)
|
|
168
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
169
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.STRING);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/// @notice Add a bytes argument to the method call context.
|
|
173
|
+
/// @param methodCall The method call context.
|
|
174
|
+
/// @param arg The bytes argument to add.
|
|
175
|
+
/// @return The updated method call context.
|
|
176
|
+
function addArgument(MpcMethodCallContext memory methodCall, bytes memory arg)
|
|
177
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
178
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.BYTES);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/// @notice Add a uint256 array argument to the method call context.
|
|
182
|
+
/// @param methodCall The method call context.
|
|
183
|
+
/// @param arg The uint256[] argument to add.
|
|
184
|
+
/// @return The updated method call context.
|
|
185
|
+
function addArgument(MpcMethodCallContext memory methodCall, uint256[] memory arg)
|
|
186
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
187
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.UINT256_ARRAY);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/// @notice Add an address array argument to the method call context.
|
|
191
|
+
/// @param methodCall The method call context.
|
|
192
|
+
/// @param arg The address[] argument to add.
|
|
193
|
+
/// @return The updated method call context.
|
|
194
|
+
function addArgument(MpcMethodCallContext memory methodCall, address[] memory arg)
|
|
195
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
196
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.ADDRESS_ARRAY);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/// @notice Add a bytes32 array argument to the method call context.
|
|
200
|
+
/// @param methodCall The method call context.
|
|
201
|
+
/// @param arg The bytes32[] argument to add.
|
|
202
|
+
/// @return The updated method call context.
|
|
203
|
+
function addArgument(MpcMethodCallContext memory methodCall, bytes32[] memory arg)
|
|
204
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
205
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.BYTES32_ARRAY);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/// @notice Add a string array argument to the method call context.
|
|
209
|
+
/// @param methodCall The method call context.
|
|
210
|
+
/// @param arg The string[] argument to add.
|
|
211
|
+
/// @return The updated method call context.
|
|
212
|
+
function addArgument(MpcMethodCallContext memory methodCall, string[] memory arg)
|
|
213
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
214
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.STRING_ARRAY);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/// @notice Add a bytes array argument to the method call context.
|
|
218
|
+
/// @param methodCall The method call context.
|
|
219
|
+
/// @param arg The bytes[] argument to add.
|
|
220
|
+
/// @return The updated method call context.
|
|
221
|
+
function addArgument(MpcMethodCallContext memory methodCall, bytes[] memory arg)
|
|
222
|
+
internal pure returns (MpcMethodCallContext memory) {
|
|
223
|
+
return _appendArgument(methodCall, abi.encode(arg), MpcDataType.BYTES_ARRAY);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* @notice Build the method call from the context by resizing the data
|
|
228
|
+
* @param methodCall The method call context
|
|
229
|
+
* @return The method call
|
|
230
|
+
*/
|
|
231
|
+
function build(MpcMethodCallContext memory methodCall) internal pure returns (IInbox.MpcMethodCall memory) {
|
|
232
|
+
bytes memory resized = new bytes(methodCall.dataSize);
|
|
233
|
+
uint cursor = 0;
|
|
234
|
+
for (uint i = 0; i < methodCall.argIndex; i++) {
|
|
235
|
+
bytes memory chunk = methodCall.data[i];
|
|
236
|
+
methodCall.mpcMethodCall.datalens[i] = bytes32(chunk.length);
|
|
237
|
+
for (uint j = 0; j < chunk.length; j++) {
|
|
238
|
+
resized[cursor + j] = chunk[j];
|
|
239
|
+
}
|
|
240
|
+
cursor += chunk.length;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
methodCall.mpcMethodCall.data = resized;
|
|
244
|
+
return methodCall.mpcMethodCall;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/// @notice Re-encode a method call, validating it-* types to gt-* and rebuilding calldata.
|
|
248
|
+
/// @param data The method call to re-encode.
|
|
249
|
+
/// @return calldataBytes The ABI-encoded calldata with selector prepended.
|
|
250
|
+
function reEncodeWithGt(IInbox.MpcMethodCall memory data) internal returns (bytes memory) {
|
|
251
|
+
uint argCount = data.datatypes.length;
|
|
252
|
+
require(data.datalens.length == argCount, "MpcAbiCodec: invalid datalens");
|
|
253
|
+
bytes memory encodedArgs = data.data;
|
|
254
|
+
|
|
255
|
+
bytes[] memory processed = new bytes[](argCount);
|
|
256
|
+
bool[] memory isDynamic = new bool[](argCount);
|
|
257
|
+
uint[] memory staticWords = new uint[](argCount);
|
|
258
|
+
uint totalTailSize = 0;
|
|
259
|
+
|
|
260
|
+
uint cursor = 0;
|
|
261
|
+
for (uint i = 0; i < argCount; i++) {
|
|
262
|
+
uint argLen = uint(uint256(data.datalens[i]));
|
|
263
|
+
require(cursor + argLen <= encodedArgs.length, "MpcAbiCodec: arg out of bounds");
|
|
264
|
+
|
|
265
|
+
bytes memory argData = _slice(encodedArgs, cursor, argLen);
|
|
266
|
+
cursor += argLen;
|
|
267
|
+
|
|
268
|
+
MpcDataType dataType = _decodeType(data.datatypes[i]);
|
|
269
|
+
(bytes memory encodedArg, bool dynamicType, uint words) = _normalizeArg(argData, dataType);
|
|
270
|
+
processed[i] = encodedArg;
|
|
271
|
+
isDynamic[i] = dynamicType;
|
|
272
|
+
staticWords[i] = words;
|
|
273
|
+
if (dynamicType) {
|
|
274
|
+
require(encodedArg.length >= 32, "MpcAbiCodec: invalid dynamic arg");
|
|
275
|
+
totalTailSize += (encodedArg.length - 32);
|
|
276
|
+
} else {
|
|
277
|
+
require(encodedArg.length == words * 32, "MpcAbiCodec: invalid static arg");
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
require(cursor == encodedArgs.length, "MpcAbiCodec: trailing data");
|
|
281
|
+
|
|
282
|
+
uint headSize = 0;
|
|
283
|
+
for (uint i = 0; i < argCount; i++) {
|
|
284
|
+
headSize += isDynamic[i] ? 32 : (staticWords[i] * 32);
|
|
285
|
+
}
|
|
286
|
+
bytes memory recoded = new bytes(4 + headSize + totalTailSize);
|
|
287
|
+
bytes4 selector = data.selector;
|
|
288
|
+
assembly {
|
|
289
|
+
mstore(add(recoded, 32), selector)
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
uint tailCursor = 0;
|
|
293
|
+
uint headCursor = 0;
|
|
294
|
+
for (uint i = 0; i < argCount; i++) {
|
|
295
|
+
if (isDynamic[i]) {
|
|
296
|
+
uint offset = headSize + tailCursor;
|
|
297
|
+
_writeWord(recoded, 4 + headCursor, offset);
|
|
298
|
+
bytes memory tailData = processed[i];
|
|
299
|
+
uint tailLen = tailData.length - 32;
|
|
300
|
+
_copyBytes(recoded, 4 + headSize + tailCursor, tailData, 32, tailLen);
|
|
301
|
+
tailCursor += tailLen;
|
|
302
|
+
headCursor += 32;
|
|
303
|
+
} else {
|
|
304
|
+
bytes memory staticData = processed[i];
|
|
305
|
+
_copyBytes(recoded, 4 + headCursor, staticData, 0, staticData.length);
|
|
306
|
+
headCursor += staticData.length;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
return recoded;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/// @dev Append an encoded argument and update type metadata and data size.
|
|
314
|
+
function _appendArgument(
|
|
315
|
+
MpcMethodCallContext memory methodCallContext,
|
|
316
|
+
bytes memory encodedArg,
|
|
317
|
+
MpcDataType dataType
|
|
318
|
+
) internal pure returns (MpcMethodCallContext memory) {
|
|
319
|
+
require(methodCallContext.argIndex < methodCallContext.mpcMethodCall.datatypes.length, "MpcAbiCodec: too many args");
|
|
320
|
+
|
|
321
|
+
methodCallContext.mpcMethodCall.datatypes[methodCallContext.argIndex] = bytes8(uint64(uint8(dataType)));
|
|
322
|
+
methodCallContext.data[methodCallContext.argIndex] = encodedArg;
|
|
323
|
+
methodCallContext.dataSize += encodedArg.length;
|
|
324
|
+
methodCallContext.argIndex += 1;
|
|
325
|
+
return methodCallContext;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/// @dev Read a 32-byte word from a bytes array at the given offset.
|
|
329
|
+
function _readUint256(bytes memory data, uint offset) internal pure returns (uint256 value) {
|
|
330
|
+
assembly {
|
|
331
|
+
value := mload(add(add(data, 32), offset))
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
/// @dev Write a 32-byte word into a bytes array at the given offset.
|
|
336
|
+
function _writeWord(bytes memory data, uint offset, uint256 value) internal pure {
|
|
337
|
+
assembly {
|
|
338
|
+
mstore(add(add(data, 32), offset), value)
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/// @dev Copy a slice of bytes into a new array.
|
|
343
|
+
function _slice(bytes memory data, uint offset, uint length) internal pure returns (bytes memory result) {
|
|
344
|
+
result = new bytes(length);
|
|
345
|
+
for (uint i = 0; i < length; i++) {
|
|
346
|
+
result[i] = data[offset + i];
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/// @dev Decode an on-chain data type identifier into the enum.
|
|
351
|
+
function _decodeType(bytes8 dataType) internal pure returns (MpcDataType) {
|
|
352
|
+
return MpcDataType(uint8(uint64(dataType)));
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/// @dev Normalize an argument to ABI encoding and validate MPC ciphertexts.
|
|
356
|
+
function _normalizeArg(bytes memory argData, MpcDataType dataType)
|
|
357
|
+
internal returns (bytes memory encodedArg, bool dynamicType, uint staticWordCount) {
|
|
358
|
+
if (dataType == MpcDataType.UINT256) {
|
|
359
|
+
return (argData, false, 1);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
if (dataType == MpcDataType.ADDRESS) {
|
|
363
|
+
return (argData, false, 1);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
if (dataType == MpcDataType.BYTES32) {
|
|
367
|
+
return (argData, false, 1);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
if (dataType == MpcDataType.IT_UINT64) {
|
|
371
|
+
itUint64 memory itValue = abi.decode(argData, (itUint64));
|
|
372
|
+
emit ValidateCiphertextStart(uint8(dataType), argData.length, keccak256(argData));
|
|
373
|
+
gtUint64 gtValue = MpcCore.validateCiphertext(itValue);
|
|
374
|
+
emit ValidateCiphertextSuccess(uint8(dataType));
|
|
375
|
+
return (abi.encode(gtUint64.unwrap(gtValue)), false, 1);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
if (dataType == MpcDataType.IT_BOOL) {
|
|
379
|
+
itBool memory itValue = abi.decode(argData, (itBool));
|
|
380
|
+
emit ValidateCiphertextStart(uint8(dataType), argData.length, keccak256(argData));
|
|
381
|
+
gtBool gtValue = MpcCore.validateCiphertext(itValue);
|
|
382
|
+
emit ValidateCiphertextSuccess(uint8(dataType));
|
|
383
|
+
return (abi.encode(gtBool.unwrap(gtValue)), false, 1);
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
if (dataType == MpcDataType.IT_UINT8) {
|
|
387
|
+
itUint8 memory itValue = abi.decode(argData, (itUint8));
|
|
388
|
+
emit ValidateCiphertextStart(uint8(dataType), argData.length, keccak256(argData));
|
|
389
|
+
gtUint8 gtValue = MpcCore.validateCiphertext(itValue);
|
|
390
|
+
emit ValidateCiphertextSuccess(uint8(dataType));
|
|
391
|
+
return (abi.encode(gtUint8.unwrap(gtValue)), false, 1);
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
if (dataType == MpcDataType.IT_UINT16) {
|
|
395
|
+
itUint16 memory itValue = abi.decode(argData, (itUint16));
|
|
396
|
+
emit ValidateCiphertextStart(uint8(dataType), argData.length, keccak256(argData));
|
|
397
|
+
gtUint16 gtValue = MpcCore.validateCiphertext(itValue);
|
|
398
|
+
emit ValidateCiphertextSuccess(uint8(dataType));
|
|
399
|
+
return (abi.encode(gtUint16.unwrap(gtValue)), false, 1);
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
if (dataType == MpcDataType.IT_UINT32) {
|
|
403
|
+
itUint32 memory itValue = abi.decode(argData, (itUint32));
|
|
404
|
+
emit ValidateCiphertextStart(uint8(dataType), argData.length, keccak256(argData));
|
|
405
|
+
gtUint32 gtValue = MpcCore.validateCiphertext(itValue);
|
|
406
|
+
emit ValidateCiphertextSuccess(uint8(dataType));
|
|
407
|
+
return (abi.encode(gtUint32.unwrap(gtValue)), false, 1);
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
if (dataType == MpcDataType.IT_UINT128) {
|
|
411
|
+
itUint128 memory itValue = abi.decode(argData, (itUint128));
|
|
412
|
+
emit ValidateCiphertextStart(uint8(dataType), argData.length, keccak256(argData));
|
|
413
|
+
gtUint128 gtValue = MpcCore.validateCiphertext(itValue);
|
|
414
|
+
emit ValidateCiphertextSuccess(uint8(dataType));
|
|
415
|
+
bytes memory encoded = abi.encode(gtValue);
|
|
416
|
+
return (encoded, false, encoded.length / 32);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
if (dataType == MpcDataType.IT_UINT256) {
|
|
420
|
+
itUint256 memory itValue = abi.decode(argData, (itUint256));
|
|
421
|
+
emit ValidateCiphertextStart(uint8(dataType), argData.length, keccak256(argData));
|
|
422
|
+
gtUint256 gtValue = MpcCore.validateCiphertext(itValue);
|
|
423
|
+
emit ValidateCiphertextSuccess(uint8(dataType));
|
|
424
|
+
bytes memory encoded = abi.encode(gtValue);
|
|
425
|
+
return (encoded, false, encoded.length / 32);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
if (dataType == MpcDataType.IT_STRING) {
|
|
429
|
+
itString memory itValue = abi.decode(argData, (itString));
|
|
430
|
+
emit ValidateCiphertextStart(uint8(dataType), argData.length, keccak256(argData));
|
|
431
|
+
gtString memory gtValue = MpcCore.validateCiphertext(itValue);
|
|
432
|
+
emit ValidateCiphertextSuccess(uint8(dataType));
|
|
433
|
+
return (abi.encode(gtValue), true, 0);
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
if (
|
|
437
|
+
dataType == MpcDataType.STRING ||
|
|
438
|
+
dataType == MpcDataType.BYTES ||
|
|
439
|
+
dataType == MpcDataType.UINT256_ARRAY ||
|
|
440
|
+
dataType == MpcDataType.ADDRESS_ARRAY ||
|
|
441
|
+
dataType == MpcDataType.BYTES32_ARRAY ||
|
|
442
|
+
dataType == MpcDataType.STRING_ARRAY ||
|
|
443
|
+
dataType == MpcDataType.BYTES_ARRAY
|
|
444
|
+
) {
|
|
445
|
+
return (argData, true, 0);
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
revert("MpcAbiCodec: unknown type");
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/// @dev Copy bytes from source to destination with word-aligned optimization.
|
|
452
|
+
function _copyBytes(
|
|
453
|
+
bytes memory dest,
|
|
454
|
+
uint destOffset,
|
|
455
|
+
bytes memory src,
|
|
456
|
+
uint srcOffset,
|
|
457
|
+
uint length
|
|
458
|
+
) internal pure {
|
|
459
|
+
if (length == 0) {
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
assembly {
|
|
463
|
+
let destPtr := add(add(dest, 32), destOffset)
|
|
464
|
+
let srcPtr := add(add(src, 32), srcOffset)
|
|
465
|
+
|
|
466
|
+
let remaining := length
|
|
467
|
+
for { } gt(remaining, 31) { } {
|
|
468
|
+
mstore(destPtr, mload(srcPtr))
|
|
469
|
+
destPtr := add(destPtr, 32)
|
|
470
|
+
srcPtr := add(srcPtr, 32)
|
|
471
|
+
remaining := sub(remaining, 32)
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
if gt(remaining, 0) {
|
|
475
|
+
let mask := sub(shl(mul(remaining, 8), 1), 1)
|
|
476
|
+
let srcWord := and(mload(srcPtr), mask)
|
|
477
|
+
let destWord := and(mload(destPtr), not(mask))
|
|
478
|
+
mstore(destPtr, or(destWord, srcWord))
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.20;
|
|
3
|
+
|
|
4
|
+
/// @title IPodPriceOracle
|
|
5
|
+
/// @notice Live USD price reads keyed by ERC-20 token address (18-decimal USD per whole token).
|
|
6
|
+
/// @dev Must stay in sync with coti-pod-inbox-contracts/contracts/fee/IPodPriceOracle.sol
|
|
7
|
+
///
|
|
8
|
+
/// Implemented by {PoDPriceOracle} (portal + inbox), {BandLiveOracle}, and {ChainlinkLiveOracle}.
|
|
9
|
+
/// Feed adapters never revert; return `0` when a feed is unset, stale, or failed.
|
|
10
|
+
/// Zero rates make {PrivacyPortalFeeLib.resolvePortalFee} skip dynamic pricing (fixed fee only).
|
|
11
|
+
interface IPodPriceOracle {
|
|
12
|
+
/// @notice Live USD price for `token`.
|
|
13
|
+
function getLivePrice(address token) external view returns (uint256 priceUsd);
|
|
14
|
+
|
|
15
|
+
/// @notice Live USD prices for two tokens in one call (Band may bulk internally).
|
|
16
|
+
function getLivePrices(address tokenA, address tokenB)
|
|
17
|
+
external
|
|
18
|
+
view
|
|
19
|
+
returns (uint256 priceA, uint256 priceB);
|
|
20
|
+
}
|