@venusprotocol/protocol-reserve 1.3.0 → 1.4.0-dev.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/README.md +6 -0
- package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
- package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
- package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json +56 -0
- package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json +24 -0
- package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json +56 -0
- package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json +19 -0
- package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.json +80 -0
- package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +4 -0
- package/artifacts/{contracts/Interfaces/ComptrollerInterface.sol/ComptrollerInterface.json → @openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json} +5 -5
- package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +113 -0
- package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +10 -0
- package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +10 -0
- package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
- package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
- package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
- package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json +10 -0
- package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json +10 -0
- package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +4 -0
- package/artifacts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +63 -0
- package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
- package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
- package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +1 -1
- package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +1 -1
- package/artifacts/@venusprotocol/oracle/contracts/ResilientOracle.sol/ResilientOracle.dbg.json +4 -0
- package/artifacts/@venusprotocol/oracle/contracts/ResilientOracle.sol/ResilientOracle.json +649 -0
- package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.dbg.json +4 -0
- package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.json +40 -0
- package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.dbg.json +4 -0
- package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.json +30 -0
- package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.dbg.json +4 -0
- package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.json +75 -0
- package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.dbg.json +4 -0
- package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.json +49 -0
- package/artifacts/@venusprotocol/oracle/contracts/interfaces/VBep20Interface.sol/VBep20Interface.dbg.json +4 -0
- package/artifacts/@venusprotocol/oracle/contracts/interfaces/VBep20Interface.sol/VBep20Interface.json +246 -0
- package/artifacts/@venusprotocol/solidity-utilities/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.dbg.json +1 -1
- package/artifacts/build-info/e6962244d9988e3e4bb55e591cf3b5d8.json +1 -0
- package/artifacts/contracts/Interfaces/IComptroller.sol/IComptroller.dbg.json +4 -0
- package/artifacts/contracts/Interfaces/IComptroller.sol/IComptroller.json +56 -0
- package/artifacts/contracts/Interfaces/IConverterNetwork.sol/IConverterNetwork.dbg.json +4 -0
- package/artifacts/contracts/Interfaces/IConverterNetwork.sol/IConverterNetwork.json +127 -0
- package/artifacts/contracts/Interfaces/IIncomeDestination.sol/IIncomeDestination.dbg.json +1 -1
- package/artifacts/contracts/Interfaces/IPoolRegistry.sol/IPoolRegistry.dbg.json +4 -0
- package/artifacts/contracts/Interfaces/IPoolRegistry.sol/IPoolRegistry.json +54 -0
- package/artifacts/contracts/Interfaces/IProtocolShareReserve.sol/IProtocolShareReserve.dbg.json +1 -1
- package/artifacts/contracts/Interfaces/IRiskFund.sol/IRiskFund.dbg.json +4 -0
- package/artifacts/contracts/Interfaces/IRiskFund.sol/IRiskFund.json +77 -0
- package/artifacts/contracts/Interfaces/IRiskFund.sol/IRiskFundGetters.dbg.json +4 -0
- package/artifacts/contracts/Interfaces/IRiskFund.sol/IRiskFundGetters.json +24 -0
- package/artifacts/contracts/Interfaces/IRiskFundConverter.sol/IRiskFundConverter.dbg.json +4 -0
- package/artifacts/contracts/Interfaces/{PoolRegistryInterface.sol/PoolRegistryInterface.json → IRiskFundConverter.sol/IRiskFundConverter.json} +23 -10
- package/artifacts/contracts/Interfaces/IShortfall.sol/IShortfall.dbg.json +4 -0
- package/artifacts/contracts/Interfaces/IShortfall.sol/IShortfall.json +24 -0
- package/artifacts/contracts/Interfaces/IVToken.sol/IVToken.dbg.json +1 -1
- package/artifacts/contracts/Interfaces/IXVSVault.sol/IXVSVault.dbg.json +4 -0
- package/artifacts/contracts/Interfaces/IXVSVault.sol/IXVSVault.json +24 -0
- package/artifacts/contracts/ProtocolReserve/ProtocolShareReserve.sol/ProtocolShareReserve.dbg.json +1 -1
- package/artifacts/contracts/ProtocolReserve/ProtocolShareReserve.sol/ProtocolShareReserve.json +7 -2
- package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/MaxLoopsLimitHelpersStorage.dbg.json +4 -0
- package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/MaxLoopsLimitHelpersStorage.json +24 -0
- package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/ReserveHelpersStorage.dbg.json +4 -0
- package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/ReserveHelpersStorage.json +139 -0
- package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/RiskFundV1Storage.dbg.json +4 -0
- package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/RiskFundV1Storage.json +178 -0
- package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/RiskFundV2Storage.dbg.json +4 -0
- package/artifacts/contracts/ProtocolReserve/RiskFundStorage.sol/RiskFundV2Storage.json +191 -0
- package/artifacts/contracts/ProtocolReserve/RiskFundV2.sol/RiskFundV2.dbg.json +4 -0
- package/artifacts/contracts/ProtocolReserve/RiskFundV2.sol/RiskFundV2.json +630 -0
- package/artifacts/contracts/ProtocolReserve/XVSVaultTreasury.sol/XVSVaultTreasury.dbg.json +4 -0
- package/artifacts/contracts/ProtocolReserve/XVSVaultTreasury.sol/XVSVaultTreasury.json +315 -0
- package/artifacts/contracts/Test/Mocks/MockACM.sol/MockACM.dbg.json +4 -0
- package/artifacts/contracts/Test/Mocks/MockACM.sol/MockACM.json +369 -0
- package/artifacts/contracts/Test/Mocks/MockArraySorter.sol/MockArraySorter.dbg.json +4 -0
- package/artifacts/contracts/Test/Mocks/MockArraySorter.sol/MockArraySorter.json +40 -0
- package/artifacts/contracts/Test/Mocks/MockConverter.sol/MockConverter.dbg.json +4 -0
- package/artifacts/contracts/Test/Mocks/MockConverter.sol/MockConverter.json +1395 -0
- package/artifacts/contracts/Test/Mocks/MockDeflationaryToken.sol/MockDeflatingToken.dbg.json +4 -0
- package/artifacts/contracts/Test/Mocks/MockDeflationaryToken.sol/MockDeflatingToken.json +332 -0
- package/artifacts/contracts/Test/Mocks/MockRiskFundConverter.sol/MockRiskFundConverter.dbg.json +4 -0
- package/artifacts/contracts/Test/Mocks/MockRiskFundConverter.sol/MockRiskFundConverter.json +1761 -0
- package/artifacts/contracts/Test/Mocks/MockToken.sol/MockToken.dbg.json +1 -1
- package/artifacts/contracts/Test/Mocks/MockToken.sol/MockToken.json +20 -2
- package/artifacts/contracts/TokenConverter/AbstractTokenConverter.sol/AbstractTokenConverter.dbg.json +4 -0
- package/artifacts/contracts/TokenConverter/AbstractTokenConverter.sol/AbstractTokenConverter.json +1276 -0
- package/artifacts/contracts/TokenConverter/ConverterNetwork.sol/ConverterNetwork.dbg.json +4 -0
- package/artifacts/contracts/TokenConverter/ConverterNetwork.sol/ConverterNetwork.json +457 -0
- package/artifacts/contracts/TokenConverter/IAbstractTokenConverter.sol/IAbstractTokenConverter.dbg.json +4 -0
- package/artifacts/contracts/TokenConverter/IAbstractTokenConverter.sol/IAbstractTokenConverter.json +446 -0
- package/artifacts/contracts/TokenConverter/RiskFundConverter.sol/RiskFundConverter.dbg.json +4 -0
- package/artifacts/contracts/TokenConverter/RiskFundConverter.sol/RiskFundConverter.json +1631 -0
- package/artifacts/contracts/TokenConverter/SingleTokenConverter.sol/SingleTokenConverter.dbg.json +4 -0
- package/artifacts/contracts/TokenConverter/SingleTokenConverter.sol/SingleTokenConverter.json +1390 -0
- package/contracts/Interfaces/IComptroller.sol +10 -0
- package/contracts/Interfaces/IConverterNetwork.sol +46 -0
- package/contracts/Interfaces/IPoolRegistry.sol +10 -0
- package/contracts/Interfaces/IRiskFund.sol +28 -0
- package/contracts/Interfaces/IRiskFundConverter.sol +8 -0
- package/contracts/Interfaces/IShortfall.sol +11 -0
- package/contracts/Interfaces/IXVSVault.sol +9 -0
- package/contracts/ProtocolReserve/ProtocolShareReserve.sol +15 -12
- package/contracts/ProtocolReserve/RiskFundStorage.sol +67 -0
- package/contracts/ProtocolReserve/RiskFundV2.sol +253 -0
- package/contracts/ProtocolReserve/XVSVaultTreasury.sol +95 -0
- package/contracts/Test/Mocks/MockACM.sol +94 -0
- package/contracts/Test/Mocks/MockArraySorter.sol +14 -0
- package/contracts/Test/Mocks/MockConverter.sol +70 -0
- package/contracts/Test/Mocks/MockDeflationaryToken.sol +113 -0
- package/contracts/Test/Mocks/MockRiskFundConverter.sol +45 -0
- package/contracts/Test/Mocks/MockToken.sol +4 -0
- package/contracts/Test/imports.sol +11 -0
- package/contracts/TokenConverter/AbstractTokenConverter.sol +1167 -0
- package/contracts/TokenConverter/ConverterNetwork.sol +243 -0
- package/contracts/TokenConverter/IAbstractTokenConverter.sol +178 -0
- package/contracts/TokenConverter/RiskFundConverter.sol +449 -0
- package/contracts/TokenConverter/SingleTokenConverter.sol +103 -0
- package/contracts/Utils/ArrayHelpers.sol +41 -0
- package/deployments/bscmainnet/BTCBPrimeConverter.json +218 -0
- package/deployments/bscmainnet/ConverterNetwork.json +723 -0
- package/deployments/bscmainnet/ConverterNetwork_Implementation.json +823 -0
- package/deployments/bscmainnet/ConverterNetwork_Proxy.json +277 -0
- package/deployments/bscmainnet/ETHPrimeConverter.json +218 -0
- package/deployments/bscmainnet/ProtocolShareReserve_Implementation.json +89 -73
- package/deployments/bscmainnet/RiskFundConverter.json +2035 -0
- package/deployments/bscmainnet/RiskFundConverter_Implementation.json +2563 -0
- package/deployments/bscmainnet/RiskFundConverter_Proxy.json +403 -0
- package/deployments/bscmainnet/RiskFundV2.json +1049 -0
- package/deployments/bscmainnet/SingleTokenConverterBeacon.json +206 -0
- package/deployments/bscmainnet/SingleTokenConverterImp.json +2164 -0
- package/deployments/bscmainnet/USDCPrimeConverter.json +218 -0
- package/deployments/bscmainnet/USDTPrimeConverter.json +218 -0
- package/deployments/bscmainnet/XVSVaultConverter.json +218 -0
- package/deployments/bscmainnet/XVSVaultTreasury.json +579 -0
- package/deployments/bscmainnet/XVSVaultTreasury_Implementation.json +603 -0
- package/deployments/bscmainnet/XVSVaultTreasury_Proxy.json +281 -0
- package/deployments/bscmainnet/solcInputs/d02e743d886d63634298edb2c3d7a019.json +123 -0
- package/deployments/bscmainnet/solcInputs/ee8827a99e03cdf6f6a94fb8782ddf44.json +228 -0
- package/deployments/bscmainnet.json +8927 -873
- package/deployments/bscmainnet_addresses.json +19 -2
- package/deployments/bsctestnet/BTCBPrimeConverter.json +218 -0
- package/deployments/bsctestnet/ConverterNetwork.json +723 -0
- package/deployments/bsctestnet/ConverterNetwork_Implementation.json +823 -0
- package/deployments/bsctestnet/ConverterNetwork_Proxy.json +277 -0
- package/deployments/bsctestnet/ETHPrimeConverter.json +218 -0
- package/deployments/bsctestnet/ProtocolShareReserve_Implementation.json +89 -73
- package/deployments/bsctestnet/RiskFundConverter.json +2035 -0
- package/deployments/bsctestnet/RiskFundConverter_Implementation.json +2563 -0
- package/deployments/bsctestnet/RiskFundConverter_Proxy.json +403 -0
- package/deployments/bsctestnet/RiskFundV2.json +1049 -0
- package/deployments/bsctestnet/SingleTokenConverterBeacon.json +206 -0
- package/deployments/bsctestnet/SingleTokenConverterImp.json +2164 -0
- package/deployments/bsctestnet/USDCPrimeConverter.json +218 -0
- package/deployments/bsctestnet/USDTPrimeConverter.json +218 -0
- package/deployments/bsctestnet/XVSVaultConverter.json +218 -0
- package/deployments/bsctestnet/XVSVaultTreasury.json +579 -0
- package/deployments/bsctestnet/XVSVaultTreasury_Implementation.json +603 -0
- package/deployments/bsctestnet/XVSVaultTreasury_Proxy.json +281 -0
- package/deployments/bsctestnet/solcInputs/d02e743d886d63634298edb2c3d7a019.json +123 -0
- package/deployments/bsctestnet/solcInputs/ee8827a99e03cdf6f6a94fb8782ddf44.json +228 -0
- package/deployments/bsctestnet.json +8927 -873
- package/deployments/bsctestnet_addresses.json +19 -2
- package/dist/deploy/{1-deploy.d.ts → 001-psr.d.ts} +1 -1
- package/dist/deploy/001-psr.d.ts.map +1 -0
- package/dist/deploy/{1-deploy.js → 001-psr.js} +2 -2
- package/dist/deploy/001-psr.js.map +1 -0
- package/dist/deploy/002-risk-fund-converter.d.ts +4 -0
- package/dist/deploy/002-risk-fund-converter.d.ts.map +1 -0
- package/dist/deploy/002-risk-fund-converter.js +78 -0
- package/dist/deploy/002-risk-fund-converter.js.map +1 -0
- package/dist/deploy/003-xvs-vault-teasury.d.ts +2 -0
- package/dist/deploy/003-xvs-vault-teasury.d.ts.map +1 -0
- package/dist/deploy/003-xvs-vault-teasury.js +44 -0
- package/dist/deploy/003-xvs-vault-teasury.js.map +1 -0
- package/dist/deploy/004-single-token-converter.d.ts +4 -0
- package/dist/deploy/004-single-token-converter.d.ts.map +1 -0
- package/dist/deploy/004-single-token-converter.js +65 -0
- package/dist/deploy/004-single-token-converter.js.map +1 -0
- package/dist/deploy/005-converter-network.d.ts +2 -0
- package/dist/deploy/005-converter-network.d.ts.map +1 -0
- package/dist/deploy/005-converter-network.js +42 -0
- package/dist/deploy/005-converter-network.js.map +1 -0
- package/dist/hardhat.config.d.ts.map +1 -1
- package/dist/hardhat.config.js +6 -0
- package/dist/hardhat.config.js.map +1 -1
- package/dist/helpers/utils.d.ts +1 -0
- package/dist/helpers/utils.d.ts.map +1 -1
- package/dist/helpers/utils.js +2 -1
- package/dist/helpers/utils.js.map +1 -1
- package/package.json +19 -16
- package/typechain/AbstractTokenConverter.d.ts +1775 -0
- package/typechain/AccessControl.d.ts +388 -0
- package/typechain/BeaconProxy.d.ts +126 -0
- package/typechain/BoundValidatorInterface.d.ts +126 -0
- package/typechain/ConverterNetwork.d.ts +723 -0
- package/typechain/{PoolRegistryInterface.d.ts → ERC165.d.ts} +20 -25
- package/typechain/ERC1967Upgrade.d.ts +126 -0
- package/typechain/IAbstractTokenConverter.d.ts +773 -0
- package/typechain/IBeacon.d.ts +101 -0
- package/typechain/IComptroller.d.ts +136 -0
- package/typechain/IConverterNetwork.d.ts +292 -0
- package/typechain/IERC165.d.ts +116 -0
- package/typechain/{ComptrollerInterface.d.ts → IERC1822Proxiable.d.ts} +11 -11
- package/typechain/IERC1967.d.ts +126 -0
- package/typechain/IPoolRegistry.d.ts +155 -0
- package/typechain/IRiskFund.d.ts +200 -0
- package/typechain/IRiskFundConverter.d.ts +138 -0
- package/typechain/IRiskFundGetters.d.ts +103 -0
- package/typechain/IShortfall.d.ts +110 -0
- package/typechain/IXVSVault.d.ts +95 -0
- package/typechain/MaxLoopsLimitHelpersStorage.d.ts +101 -0
- package/typechain/MockACM.d.ts +615 -0
- package/typechain/MockArraySorter.d.ts +118 -0
- package/typechain/MockConverter.d.ts +1969 -0
- package/typechain/MockDeflatingToken.d.ts +486 -0
- package/typechain/MockRiskFundConverter.d.ts +2479 -0
- package/typechain/MockToken.d.ts +36 -0
- package/typechain/OracleInterface.d.ts +98 -0
- package/typechain/Ownable.d.ts +181 -0
- package/typechain/PausableUpgradeable.d.ts +129 -0
- package/typechain/Proxy.d.ts +78 -0
- package/typechain/ReserveHelpersStorage.d.ts +300 -0
- package/typechain/ResilientOracle.d.ts +1034 -0
- package/typechain/ResilientOracleInterface.d.ts +192 -0
- package/typechain/RiskFundConverter.d.ts +2235 -0
- package/typechain/RiskFundV1Storage.d.ts +353 -0
- package/typechain/RiskFundV2.d.ts +965 -0
- package/typechain/RiskFundV2Storage.d.ts +372 -0
- package/typechain/SingleTokenConverter.d.ts +1944 -0
- package/typechain/TwapInterface.d.ts +124 -0
- package/typechain/UpgradeableBeacon.d.ts +240 -0
- package/typechain/VBep20Interface.d.ts +379 -0
- package/typechain/XVSVaultTreasury.d.ts +515 -0
- package/typechain/factories/AbstractTokenConverter__factory.ts +1297 -0
- package/typechain/factories/AccessControl__factory.ts +227 -0
- package/typechain/factories/BeaconProxy__factory.ts +133 -0
- package/typechain/factories/BoundValidatorInterface__factory.ts +59 -0
- package/typechain/factories/ConverterNetwork__factory.ts +502 -0
- package/typechain/factories/ERC165__factory.ts +39 -0
- package/typechain/factories/ERC1967Upgrade__factory.ts +71 -0
- package/typechain/factories/IAbstractTokenConverter__factory.ts +466 -0
- package/typechain/factories/IBeacon__factory.ts +36 -0
- package/typechain/factories/IComptroller__factory.ts +68 -0
- package/typechain/factories/IConverterNetwork__factory.ts +142 -0
- package/typechain/factories/{ComptrollerInterface__factory.ts → IERC165__factory.ts} +14 -15
- package/typechain/factories/IERC1822Proxiable__factory.ts +39 -0
- package/typechain/factories/IERC1967__factory.ts +68 -0
- package/typechain/factories/IPoolRegistry__factory.ts +66 -0
- package/typechain/factories/{PoolRegistryInterface__factory.ts → IRiskFundConverter__factory.ts} +28 -19
- package/typechain/factories/IRiskFundGetters__factory.ts +39 -0
- package/typechain/factories/IRiskFund__factory.ts +89 -0
- package/typechain/factories/IShortfall__factory.ts +36 -0
- package/typechain/factories/IXVSVault__factory.ts +36 -0
- package/typechain/factories/MaxLoopsLimitHelpersStorage__factory.ts +75 -0
- package/typechain/factories/MockACM__factory.ts +411 -0
- package/typechain/factories/MockArraySorter__factory.ts +85 -0
- package/typechain/factories/MockConverter__factory.ts +1439 -0
- package/typechain/factories/MockDeflatingToken__factory.ts +389 -0
- package/typechain/factories/MockRiskFundConverter__factory.ts +1828 -0
- package/typechain/factories/MockToken__factory.ts +19 -1
- package/typechain/factories/OracleInterface__factory.ts +45 -0
- package/typechain/factories/Ownable__factory.ts +75 -0
- package/typechain/factories/PausableUpgradeable__factory.ts +78 -0
- package/typechain/factories/ProtocolShareReserve__factory.ts +6 -1
- package/typechain/factories/Proxy__factory.ts +28 -0
- package/typechain/factories/ReserveHelpersStorage__factory.ts +188 -0
- package/typechain/factories/ResilientOracleInterface__factory.ts +94 -0
- package/typechain/factories/ResilientOracle__factory.ts +710 -0
- package/typechain/factories/RiskFundConverter__factory.ts +1694 -0
- package/typechain/factories/RiskFundV1Storage__factory.ts +223 -0
- package/typechain/factories/RiskFundV2Storage__factory.ts +236 -0
- package/typechain/factories/RiskFundV2__factory.ts +672 -0
- package/typechain/factories/SingleTokenConverter__factory.ts +1441 -0
- package/typechain/factories/TwapInterface__factory.ts +61 -0
- package/typechain/factories/UpgradeableBeacon__factory.ts +163 -0
- package/typechain/factories/VBep20Interface__factory.ts +261 -0
- package/typechain/factories/XVSVaultTreasury__factory.ts +365 -0
- package/typechain/index.ts +84 -4
- package/artifacts/build-info/ac790619cb42a0f08af77d9ea733874e.json +0 -1
- package/artifacts/contracts/Interfaces/ComptrollerInterface.sol/ComptrollerInterface.dbg.json +0 -4
- package/artifacts/contracts/Interfaces/PoolRegistryInterface.sol/PoolRegistryInterface.dbg.json +0 -4
- package/contracts/Interfaces/ComptrollerInterface.sol +0 -6
- package/contracts/Interfaces/PoolRegistryInterface.sol +0 -7
- package/dist/deploy/1-deploy.d.ts.map +0 -1
- package/dist/deploy/1-deploy.js.map +0 -1
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
pragma solidity 0.8.13;
|
|
3
|
+
|
|
4
|
+
import { AccessControlledV8 } from "@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol";
|
|
5
|
+
import { MaxLoopsLimitHelper } from "@venusprotocol/solidity-utilities/contracts/MaxLoopsLimitHelper.sol";
|
|
6
|
+
import { ensureNonzeroAddress } from "@venusprotocol/solidity-utilities/contracts/validators.sol";
|
|
7
|
+
|
|
8
|
+
import { sort } from "../Utils/ArrayHelpers.sol";
|
|
9
|
+
import { IAbstractTokenConverter } from "./IAbstractTokenConverter.sol";
|
|
10
|
+
import { IConverterNetwork } from "../Interfaces/IConverterNetwork.sol";
|
|
11
|
+
|
|
12
|
+
/// @title ConverterNetwork
|
|
13
|
+
/// @author Venus
|
|
14
|
+
/// @notice ConverterNetwork keeps track of all the converters and is used to fetch valid converters which provide conversions according to token addresses provided
|
|
15
|
+
/// @custom:security-contact https://github.com/VenusProtocol/protocol-reserve#discussion
|
|
16
|
+
contract ConverterNetwork is IConverterNetwork, AccessControlledV8, MaxLoopsLimitHelper {
|
|
17
|
+
/// @notice Array holding all the converters
|
|
18
|
+
IAbstractTokenConverter[] public allConverters;
|
|
19
|
+
|
|
20
|
+
/// @notice Emitted when new converter is added
|
|
21
|
+
event ConverterAdded(address indexed converter);
|
|
22
|
+
|
|
23
|
+
/// @notice Emitted when converter is removed
|
|
24
|
+
event ConverterRemoved(address indexed converter);
|
|
25
|
+
|
|
26
|
+
/// @notice Error thrown when converter already exists
|
|
27
|
+
error ConverterAlreadyExists();
|
|
28
|
+
|
|
29
|
+
/// @notice Error thrown converter does not exist
|
|
30
|
+
error ConverterDoesNotExist();
|
|
31
|
+
|
|
32
|
+
/// @notice Error thrown when converter address is invalid
|
|
33
|
+
error InvalidTokenConverterAddress();
|
|
34
|
+
|
|
35
|
+
/// @notice Error thrown when loops limit is invalid
|
|
36
|
+
error InvalidMaxLoopsLimit(uint256 loopsLimit);
|
|
37
|
+
|
|
38
|
+
/// @custom:oz-upgrades-unsafe-allow constructor
|
|
39
|
+
constructor() {
|
|
40
|
+
// Note that the contract is upgradeable. Use initialize() or reinitializers
|
|
41
|
+
// to set the state variables.
|
|
42
|
+
_disableInitializers();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/// @notice ConverterNetwork initializer
|
|
46
|
+
/// @param _accessControlManager The address of ACM contract
|
|
47
|
+
/// @param _loopsLimit Limit for the loops in the contract to avoid DOS
|
|
48
|
+
/// @custom:event ConverterAdded is emitted for each converter added on success
|
|
49
|
+
/// @custom:error InvalidMaxLoopsLimit is thrown when when loops limit is invalid
|
|
50
|
+
function initialize(address _accessControlManager, uint256 _loopsLimit) external initializer {
|
|
51
|
+
ensureNonzeroAddress(_accessControlManager);
|
|
52
|
+
__AccessControlled_init(_accessControlManager);
|
|
53
|
+
|
|
54
|
+
if (_loopsLimit >= type(uint128).max) revert InvalidMaxLoopsLimit(_loopsLimit);
|
|
55
|
+
_setMaxLoopsLimit(_loopsLimit);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @notice Set the limit for the loops can iterate to avoid the DOS
|
|
60
|
+
* @param limit Limit for the max loops can execute at a time
|
|
61
|
+
* @custom:error InvalidMaxLoopsLimit is thrown when when loops limit is invalid
|
|
62
|
+
* @custom:access Only owner
|
|
63
|
+
*/
|
|
64
|
+
function setMaxLoopsLimit(uint256 limit) external onlyOwner {
|
|
65
|
+
if (limit >= type(uint128).max) revert InvalidMaxLoopsLimit(limit);
|
|
66
|
+
_setMaxLoopsLimit(limit);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/// @notice Adds new converter to the array
|
|
70
|
+
/// @param _tokenConverter Address of the token converter
|
|
71
|
+
/// @custom:event ConverterAdded is emitted on success
|
|
72
|
+
/// @custom:access Only Governance
|
|
73
|
+
function addTokenConverter(IAbstractTokenConverter _tokenConverter) external {
|
|
74
|
+
_checkAccessAllowed("addTokenConverter(address)");
|
|
75
|
+
_addTokenConverter(_tokenConverter);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/// @notice Removes converter from the array
|
|
79
|
+
/// @param _tokenConverter Address of the token converter
|
|
80
|
+
/// @custom:error ConverterDoesNotExist is thrown when converter to remove does not exist
|
|
81
|
+
/// @custom:event ConverterRemoved is emitted on success
|
|
82
|
+
/// @custom:access Only Governance
|
|
83
|
+
function removeTokenConverter(IAbstractTokenConverter _tokenConverter) external {
|
|
84
|
+
_checkAccessAllowed("removeTokenConverter(address)");
|
|
85
|
+
|
|
86
|
+
// Find the index of the converter in the array
|
|
87
|
+
uint128 indexToRemove = _findConverterIndex(_tokenConverter);
|
|
88
|
+
|
|
89
|
+
// Ensure that the converter exists in the array
|
|
90
|
+
if (indexToRemove == type(uint128).max) revert ConverterDoesNotExist();
|
|
91
|
+
|
|
92
|
+
// Swap the element to remove with the last element
|
|
93
|
+
allConverters[indexToRemove] = allConverters[allConverters.length - 1];
|
|
94
|
+
|
|
95
|
+
// Remove the last element (which is now a duplicate)
|
|
96
|
+
allConverters.pop();
|
|
97
|
+
|
|
98
|
+
emit ConverterRemoved(address(_tokenConverter));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/// @notice Used to get the array of converters supporting conversions, arranged in descending order based on token balances
|
|
102
|
+
/// It will return the converters which are open to users for conversion
|
|
103
|
+
/// @param _tokenAddressIn Address of tokenIn
|
|
104
|
+
/// @param _tokenAddressOut Address of tokenOut
|
|
105
|
+
/// @return converters Array of the conveters on the basis of the tokens pair
|
|
106
|
+
/// @return convertersBalance Array of balances with respect to token out
|
|
107
|
+
function findTokenConverters(address _tokenAddressIn, address _tokenAddressOut)
|
|
108
|
+
external
|
|
109
|
+
returns (address[] memory converters, uint256[] memory convertersBalance)
|
|
110
|
+
{
|
|
111
|
+
(converters, convertersBalance) = _findTokenConverters(_tokenAddressIn, _tokenAddressOut, false);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/// @notice Used to get the array of converters supporting conversions, arranged in descending order based on token balances
|
|
115
|
+
/// It will return the converters which are open to converters for conversion.
|
|
116
|
+
/// @param _tokenAddressIn Address of tokenIn
|
|
117
|
+
/// @param _tokenAddressOut Address of tokenOut
|
|
118
|
+
/// @return converters Array of the conveters on the basis of the tokens pair
|
|
119
|
+
/// @return convertersBalance Array of balances with respect to token out
|
|
120
|
+
function findTokenConvertersForConverters(address _tokenAddressIn, address _tokenAddressOut)
|
|
121
|
+
external
|
|
122
|
+
returns (address[] memory converters, uint256[] memory convertersBalance)
|
|
123
|
+
{
|
|
124
|
+
(converters, convertersBalance) = _findTokenConverters(_tokenAddressIn, _tokenAddressOut, true);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/// @notice This function returns the array containing all the converters addresses
|
|
128
|
+
/// @return converters Array containing all the converters addresses
|
|
129
|
+
function getAllConverters() external view returns (IAbstractTokenConverter[] memory converters) {
|
|
130
|
+
converters = allConverters;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/// @notice This function checks if the given address is a converter or not
|
|
134
|
+
/// @param _tokenConverter Address of the token converter
|
|
135
|
+
/// @return isConverter true if given address is converter otherwise false
|
|
136
|
+
function isTokenConverter(address _tokenConverter) external view returns (bool isConverter) {
|
|
137
|
+
uint128 index = _findConverterIndex(IAbstractTokenConverter(_tokenConverter));
|
|
138
|
+
|
|
139
|
+
if (index != type(uint128).max) {
|
|
140
|
+
isConverter = true;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/// @notice Adds new converter contract to the array
|
|
145
|
+
/// @param _tokenConverter Address of the token converter
|
|
146
|
+
/// @custom:error ConverterAlreadyExists is thrown when new tokenconverter to add already exists
|
|
147
|
+
/// @custom:event ConverterAdded is emitted on success
|
|
148
|
+
function _addTokenConverter(IAbstractTokenConverter _tokenConverter) internal {
|
|
149
|
+
if (
|
|
150
|
+
(address(_tokenConverter) == address(0)) || (address(_tokenConverter.converterNetwork()) != address(this))
|
|
151
|
+
) {
|
|
152
|
+
revert InvalidTokenConverterAddress();
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
uint128 index = _findConverterIndex(_tokenConverter);
|
|
156
|
+
if (index != type(uint128).max) revert ConverterAlreadyExists();
|
|
157
|
+
|
|
158
|
+
allConverters.push(_tokenConverter);
|
|
159
|
+
_ensureMaxLoops(allConverters.length);
|
|
160
|
+
|
|
161
|
+
emit ConverterAdded(address(_tokenConverter));
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/// @notice Used to get the array of converters supporting conversions, arranged in descending order based on token balances
|
|
165
|
+
/// @param _tokenAddressIn Address of tokenIn
|
|
166
|
+
/// @param _tokenAddressOut Address of tokenOut
|
|
167
|
+
/// @param forConverters Bool to filter out converters on the basis of the conversionAccess
|
|
168
|
+
/// @return converters Array of converters
|
|
169
|
+
/// @return convertersBalance Array of balances with respect to token out
|
|
170
|
+
function _findTokenConverters(
|
|
171
|
+
address _tokenAddressIn,
|
|
172
|
+
address _tokenAddressOut,
|
|
173
|
+
bool forConverters
|
|
174
|
+
) internal returns (address[] memory converters, uint256[] memory convertersBalance) {
|
|
175
|
+
uint128 convertersLength = uint128(allConverters.length);
|
|
176
|
+
|
|
177
|
+
// Create a dynamic array to store the matching converters
|
|
178
|
+
converters = new address[](convertersLength);
|
|
179
|
+
convertersBalance = new uint256[](convertersLength);
|
|
180
|
+
uint128 count;
|
|
181
|
+
|
|
182
|
+
for (uint128 i; i < convertersLength; ) {
|
|
183
|
+
IAbstractTokenConverter converter = allConverters[i];
|
|
184
|
+
|
|
185
|
+
unchecked {
|
|
186
|
+
++i;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if ((address(converter.converterNetwork()) != address(this)) || msg.sender == address(converter)) {
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
(, IAbstractTokenConverter.ConversionAccessibility conversionAccess) = converter.conversionConfigurations(
|
|
194
|
+
_tokenAddressIn,
|
|
195
|
+
_tokenAddressOut
|
|
196
|
+
);
|
|
197
|
+
|
|
198
|
+
if (conversionAccess == IAbstractTokenConverter.ConversionAccessibility.ALL) {
|
|
199
|
+
converters[count] = address(converter);
|
|
200
|
+
convertersBalance[count] = converter.balanceOf(_tokenAddressOut);
|
|
201
|
+
++count;
|
|
202
|
+
} else if (
|
|
203
|
+
forConverters &&
|
|
204
|
+
(conversionAccess == IAbstractTokenConverter.ConversionAccessibility.ONLY_FOR_CONVERTERS)
|
|
205
|
+
) {
|
|
206
|
+
converters[count] = address(converter);
|
|
207
|
+
convertersBalance[count] = converter.balanceOf(_tokenAddressOut);
|
|
208
|
+
++count;
|
|
209
|
+
} else if (
|
|
210
|
+
!forConverters && (conversionAccess == IAbstractTokenConverter.ConversionAccessibility.ONLY_FOR_USERS)
|
|
211
|
+
) {
|
|
212
|
+
converters[count] = address(converter);
|
|
213
|
+
convertersBalance[count] = converter.balanceOf(_tokenAddressOut);
|
|
214
|
+
++count;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// Resize the array to the actual number of matching converters
|
|
219
|
+
assembly {
|
|
220
|
+
mstore(converters, count)
|
|
221
|
+
mstore(convertersBalance, count)
|
|
222
|
+
}
|
|
223
|
+
sort(convertersBalance, converters);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/// @notice Used to get the index of the converter stored in the array
|
|
227
|
+
/// This will return the index if the converter exists in the array otherwise will return type(uint128).max
|
|
228
|
+
/// @param _tokenConverter Address of the token converter
|
|
229
|
+
/// @return index of the converter address in the allConverters array
|
|
230
|
+
function _findConverterIndex(IAbstractTokenConverter _tokenConverter) internal view returns (uint128 index) {
|
|
231
|
+
index = type(uint128).max; // Not found, return a large value
|
|
232
|
+
|
|
233
|
+
uint128 convertersLength = uint128(allConverters.length);
|
|
234
|
+
for (uint128 i; i < convertersLength; ) {
|
|
235
|
+
if (allConverters[i] == _tokenConverter) {
|
|
236
|
+
index = i;
|
|
237
|
+
}
|
|
238
|
+
unchecked {
|
|
239
|
+
++i;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BSD-3-Clause
|
|
2
|
+
pragma solidity 0.8.13;
|
|
3
|
+
|
|
4
|
+
import { ResilientOracle } from "@venusprotocol/oracle/contracts/ResilientOracle.sol";
|
|
5
|
+
import { IConverterNetwork } from "../Interfaces/IConverterNetwork.sol";
|
|
6
|
+
|
|
7
|
+
/// @notice Interface for AbstractTokenConverter
|
|
8
|
+
/// @custom:security-contact https://github.com/VenusProtocol/protocol-reserve#discussion
|
|
9
|
+
interface IAbstractTokenConverter {
|
|
10
|
+
/// @notice This enum define the all possible ways of conversion can happen
|
|
11
|
+
enum ConversionAccessibility {
|
|
12
|
+
NONE, // Conversion is disable for the pair
|
|
13
|
+
ALL, // Conversion is enable for private conversion and users
|
|
14
|
+
ONLY_FOR_CONVERTERS, // Conversion is enable only for private conversion
|
|
15
|
+
ONLY_FOR_USERS // Conversion is enable only for users
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/// @notice This struct represents the configuration for a token conversion.
|
|
19
|
+
struct ConversionConfig {
|
|
20
|
+
/// incentive on conversion of tokens in mantissa i.e 10% incentive would be 0.1 * 1e18
|
|
21
|
+
uint256 incentive;
|
|
22
|
+
/// enable or disable conversion for users or converters or both or none
|
|
23
|
+
ConversionAccessibility conversionAccess;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/// @notice Pause conversion of tokens
|
|
27
|
+
function pauseConversion() external;
|
|
28
|
+
|
|
29
|
+
/// @notice Resume conversion of tokens.
|
|
30
|
+
function resumeConversion() external;
|
|
31
|
+
|
|
32
|
+
/// @notice Sets a new price oracle
|
|
33
|
+
/// @param priceOracle_ Address of the new price oracle to set
|
|
34
|
+
function setPriceOracle(ResilientOracle priceOracle_) external;
|
|
35
|
+
|
|
36
|
+
/// @notice Set the configuration for new or existing convert pair
|
|
37
|
+
/// @param tokenAddressIn Address of tokenIn
|
|
38
|
+
/// @param tokenAddressOut Address of tokenOut
|
|
39
|
+
/// @param conversionConfig ConversionConfig config details to update
|
|
40
|
+
function setConversionConfig(
|
|
41
|
+
address tokenAddressIn,
|
|
42
|
+
address tokenAddressOut,
|
|
43
|
+
ConversionConfig calldata conversionConfig
|
|
44
|
+
) external;
|
|
45
|
+
|
|
46
|
+
/// @notice Convert exact amount of tokenAddressIn for tokenAddressOut
|
|
47
|
+
/// @dev Method does not support deflationary tokens transfer
|
|
48
|
+
/// @param amountInMantissa Amount of tokenAddressIn
|
|
49
|
+
/// @param amountOutMinMantissa Min amount of tokenAddressOut required as output
|
|
50
|
+
/// @param tokenAddressIn Address of the token to convert
|
|
51
|
+
/// @param tokenAddressOut Address of the token to get after convert
|
|
52
|
+
/// @param to Address of the tokenAddressOut receiver
|
|
53
|
+
function convertExactTokens(
|
|
54
|
+
uint256 amountInMantissa,
|
|
55
|
+
uint256 amountOutMinMantissa,
|
|
56
|
+
address tokenAddressIn,
|
|
57
|
+
address tokenAddressOut,
|
|
58
|
+
address to
|
|
59
|
+
) external returns (uint256 actualAmountIn, uint256 actualAmountOut);
|
|
60
|
+
|
|
61
|
+
/// @notice Convert tokens for tokenAddressIn for exact amount of tokenAddressOut
|
|
62
|
+
/// @dev Method does not support deflationary tokens transfer
|
|
63
|
+
/// @param amountInMaxMantissa Max amount of tokenAddressIn
|
|
64
|
+
/// @param amountOutMantissa Amount of tokenAddressOut required as output
|
|
65
|
+
/// @param tokenAddressIn Address of the token to convert
|
|
66
|
+
/// @param tokenAddressOut Address of the token to get after convert
|
|
67
|
+
/// @param to Address of the tokenAddressOut receiver
|
|
68
|
+
function convertForExactTokens(
|
|
69
|
+
uint256 amountInMaxMantissa,
|
|
70
|
+
uint256 amountOutMantissa,
|
|
71
|
+
address tokenAddressIn,
|
|
72
|
+
address tokenAddressOut,
|
|
73
|
+
address to
|
|
74
|
+
) external returns (uint256 actualAmountIn, uint256 actualAmountOut);
|
|
75
|
+
|
|
76
|
+
/// @notice Convert exact amount of tokenAddressIn for tokenAddressOut
|
|
77
|
+
/// @param amountInMantissa Amount of tokenAddressIn
|
|
78
|
+
/// @param amountOutMinMantissa Min amount of tokenAddressOut required as output
|
|
79
|
+
/// @param tokenAddressIn Address of the token to convert
|
|
80
|
+
/// @param tokenAddressOut Address of the token to get after convert
|
|
81
|
+
/// @param to Address of the tokenAddressOut receiver
|
|
82
|
+
function convertExactTokensSupportingFeeOnTransferTokens(
|
|
83
|
+
uint256 amountInMantissa,
|
|
84
|
+
uint256 amountOutMinMantissa,
|
|
85
|
+
address tokenAddressIn,
|
|
86
|
+
address tokenAddressOut,
|
|
87
|
+
address to
|
|
88
|
+
) external returns (uint256 actualAmountIn, uint256 actualAmountOut);
|
|
89
|
+
|
|
90
|
+
/// @notice Convert tokens for tokenAddressIn for exact amount of tokenAddressOut
|
|
91
|
+
/// @param amountInMaxMantissa Max amount of tokenAddressIn
|
|
92
|
+
/// @param amountOutMantissa Amount of tokenAddressOut required as output
|
|
93
|
+
/// @param tokenAddressIn Address of the token to convert
|
|
94
|
+
/// @param tokenAddressOut Address of the token to get after convert
|
|
95
|
+
/// @param to Address of the tokenAddressOut receiver
|
|
96
|
+
function convertForExactTokensSupportingFeeOnTransferTokens(
|
|
97
|
+
uint256 amountInMaxMantissa,
|
|
98
|
+
uint256 amountOutMantissa,
|
|
99
|
+
address tokenAddressIn,
|
|
100
|
+
address tokenAddressOut,
|
|
101
|
+
address to
|
|
102
|
+
) external returns (uint256 actualAmountIn, uint256 actualAmountOut);
|
|
103
|
+
|
|
104
|
+
/// @notice Get the configuration for the pair of the tokens
|
|
105
|
+
/// @param tokenAddressIn Address of the token to convert
|
|
106
|
+
/// @param tokenAddressOut Address of the token to get after conversion
|
|
107
|
+
/// @return incentives Percentage of incentives to be distributed for the pair of tokens
|
|
108
|
+
/// @return conversionAccess Accessibility for the pair of tokens
|
|
109
|
+
function conversionConfigurations(address tokenAddressIn, address tokenAddressOut)
|
|
110
|
+
external
|
|
111
|
+
returns (uint256 incentives, ConversionAccessibility conversionAccess);
|
|
112
|
+
|
|
113
|
+
/// @notice Get the address of the converterNetwork
|
|
114
|
+
function converterNetwork() external returns (IConverterNetwork converterNetwork);
|
|
115
|
+
|
|
116
|
+
/// @notice To get the amount of tokenAddressOut tokens sender could receive on providing amountInMantissa tokens of tokenAddressIn
|
|
117
|
+
/// @param amountInMantissa Amount of tokenAddressIn
|
|
118
|
+
/// @param tokenAddressIn Address of the token to convert
|
|
119
|
+
/// @param tokenAddressOut Address of the token to get after conversion
|
|
120
|
+
/// @return amountConvertedMantissa Amount of tokenAddressIn should be transferred after conversion
|
|
121
|
+
/// @return amountOutMantissa Amount of the tokenAddressOut sender should receive after conversion
|
|
122
|
+
/// @custom:error InsufficientInputAmount error is thrown when given input amount is zero
|
|
123
|
+
/// @custom:error ConversionConfigNotEnabled is thrown when conversion is disabled or config does not exist for given pair
|
|
124
|
+
function getUpdatedAmountOut(
|
|
125
|
+
uint256 amountInMantissa,
|
|
126
|
+
address tokenAddressIn,
|
|
127
|
+
address tokenAddressOut
|
|
128
|
+
) external returns (uint256 amountConvertedMantissa, uint256 amountOutMantissa);
|
|
129
|
+
|
|
130
|
+
/// @notice To get the amount of tokenAddressIn tokens sender would send on receiving amountOutMantissa tokens of tokenAddressOut
|
|
131
|
+
/// @param amountOutMantissa Amount of tokenAddressOut user wants to receive
|
|
132
|
+
/// @param tokenAddressIn Address of the token to convert
|
|
133
|
+
/// @param tokenAddressOut Address of the token to get after conversion
|
|
134
|
+
/// @return amountConvertedMantissa Amount of tokenAddressOut should be transferred after conversion
|
|
135
|
+
/// @return amountInMantissa Amount of the tokenAddressIn sender would send to contract before conversion
|
|
136
|
+
/// @custom:error InsufficientInputAmount error is thrown when given input amount is zero
|
|
137
|
+
/// @custom:error ConversionConfigNotEnabled is thrown when conversion is disabled or config does not exist for given pair
|
|
138
|
+
function getUpdatedAmountIn(
|
|
139
|
+
uint256 amountOutMantissa,
|
|
140
|
+
address tokenAddressIn,
|
|
141
|
+
address tokenAddressOut
|
|
142
|
+
) external returns (uint256 amountConvertedMantissa, uint256 amountInMantissa);
|
|
143
|
+
|
|
144
|
+
/// @notice To get the amount of tokenAddressIn tokens sender would send on receiving amountOutMantissa tokens of tokenAddressOut
|
|
145
|
+
/// @dev This function retrieves values without altering token prices.
|
|
146
|
+
/// @param amountOutMantissa Amount of tokenAddressOut user wants to receive
|
|
147
|
+
/// @param tokenAddressIn Address of the token to convert
|
|
148
|
+
/// @param tokenAddressOut Address of the token to get after conversion
|
|
149
|
+
/// @return amountConvertedMantissa Amount of tokenAddressOut should be transferred after conversion
|
|
150
|
+
/// @return amountInMantissa Amount of the tokenAddressIn sender would send to contract before conversion
|
|
151
|
+
/// @custom:error InsufficientInputAmount error is thrown when given input amount is zero
|
|
152
|
+
/// @custom:error ConversionConfigNotEnabled is thrown when conversion is disabled or config does not exist for given pair
|
|
153
|
+
function getAmountIn(
|
|
154
|
+
uint256 amountOutMantissa,
|
|
155
|
+
address tokenAddressIn,
|
|
156
|
+
address tokenAddressOut
|
|
157
|
+
) external view returns (uint256 amountConvertedMantissa, uint256 amountInMantissa);
|
|
158
|
+
|
|
159
|
+
/// @notice To get the amount of tokenAddressOut tokens sender could receive on providing amountInMantissa tokens of tokenAddressIn
|
|
160
|
+
/// @dev This function retrieves values without altering token prices.
|
|
161
|
+
/// @param amountInMantissa Amount of tokenAddressIn
|
|
162
|
+
/// @param tokenAddressIn Address of the token to convert
|
|
163
|
+
/// @param tokenAddressOut Address of the token to get after conversion
|
|
164
|
+
/// @return amountConvertedMantissa Amount of tokenAddressIn should be transferred after conversion
|
|
165
|
+
/// @return amountOutMantissa Amount of the tokenAddressOut sender should receive after conversion
|
|
166
|
+
/// @custom:error InsufficientInputAmount error is thrown when given input amount is zero
|
|
167
|
+
/// @custom:error ConversionConfigNotEnabled is thrown when conversion is disabled or config does not exist for given pair
|
|
168
|
+
function getAmountOut(
|
|
169
|
+
uint256 amountInMantissa,
|
|
170
|
+
address tokenAddressIn,
|
|
171
|
+
address tokenAddressOut
|
|
172
|
+
) external view returns (uint256 amountConvertedMantissa, uint256 amountOutMantissa);
|
|
173
|
+
|
|
174
|
+
/// @notice Get the balance for specific token
|
|
175
|
+
/// @param token Address of the token
|
|
176
|
+
/// @return tokenBalance Balance of the token the contract has
|
|
177
|
+
function balanceOf(address token) external view returns (uint256 tokenBalance);
|
|
178
|
+
}
|