diff --git a/markets/realT/commons.ts b/markets/realT/commons.ts new file mode 100644 index 00000000..0205a647 --- /dev/null +++ b/markets/realT/commons.ts @@ -0,0 +1,287 @@ +import { + oneRay, + ZERO_ADDRESS, + MOCK_CHAINLINK_AGGREGATORS_PRICES, + oneEther, +} from '../../helpers/constants'; +import { ICommonConfiguration, eEthereumNetwork } from '../../helpers/types'; + +// ---------------- +// PROTOCOL GLOBAL PARAMS +// ---------------- + +export const CommonsConfig: ICommonConfiguration = { + MarketId: 'RealT', + ATokenNamePrefix: 'RealT yield generating', + StableDebtTokenNamePrefix: 'RealT stable debt bearing', + VariableDebtTokenNamePrefix: 'RealT variable debt bearing', + SymbolPrefix: 'rt', + ProviderId: 5, // Overriden in index.ts + OracleQuoteCurrency: 'ETH', + OracleQuoteUnit: oneEther.toString(), + ProtocolGlobalParams: { + TokenDistributorPercentageBase: '10000', + MockUsdPriceInWei: '238095238095238', + UsdAddress: '0x10F7Fc1F91Ba351f9C629c5947AD69bD03C05b96', + NilAddress: '0x0000000000000000000000000000000000000000', + OneAddress: '0x0000000000000000000000000000000000000001', + AaveReferral: '0', + }, + + // ---------------- + // COMMON PROTOCOL PARAMS ACROSS POOLS AND NETWORKS + // ---------------- + + Mocks: { + AllAssetsInitialPrices: { + ...MOCK_CHAINLINK_AGGREGATORS_PRICES, + }, + }, + // TODO: reorg alphabetically, checking the reason of tests failing + LendingRateOracleRatesCommon: { + 'REALTOKEN-S-13895-SARATOGA-ST-DETROIT-MI': { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + 'REALTOKEN-S-15796-HARTWELL-ST-DETROIT-MI': { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + 'REALTOKEN-S-17813-BRADFORD-ST-DETROIT-M': { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + 'REALTOKEN-S-19163-MITCHELL-ST-DETROIT-MI': { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + 'REALTOKEN-S-19201-WESTPHALIA-ST-DETROIT-MI': { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + 'REALTOKEN-S-19311-KEYSTONE-ST-DETROIT-MI': { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + 'REALTOKEN-S-4061-GRAND-ST-DETROIT-M': { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + 'REALTOKEN-S-4380-BEACONSFIELD-ST-DETROIT-MI': { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + 'REALTOKEN-S-4680-BUCKINGHAM-AVE-DETROIT-MI': { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + 'REALTOKEN-S-9717-EVERTS-ST-DETROIT-MI': { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + DAI: { + borrowRate: oneRay.multipliedBy(0.039).toFixed(), + }, + WETH: { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + USDC: { + borrowRate: oneRay.multipliedBy(0.039).toFixed(), + }, + USDT: { + borrowRate: oneRay.multipliedBy(0.035).toFixed(), + }, + WBTC: { + borrowRate: oneRay.multipliedBy(0.03).toFixed(), + }, + }, + // ---------------- + // COMMON PROTOCOL ADDRESSES ACROSS POOLS + // ---------------- + + // If PoolAdmin/emergencyAdmin is set, will take priority over PoolAdminIndex/emergencyAdminIndex + PoolAdmin: { + [eEthereumNetwork.coverage]: undefined, + [eEthereumNetwork.buidlerevm]: undefined, + [eEthereumNetwork.coverage]: undefined, + [eEthereumNetwork.hardhat]: undefined, + [eEthereumNetwork.kovan]: undefined, + [eEthereumNetwork.ropsten]: undefined, + [eEthereumNetwork.main]: undefined, + [eEthereumNetwork.tenderly]: undefined, + }, + PoolAdminIndex: 0, + EmergencyAdmin: { + [eEthereumNetwork.hardhat]: undefined, + [eEthereumNetwork.coverage]: undefined, + [eEthereumNetwork.buidlerevm]: undefined, + [eEthereumNetwork.kovan]: undefined, + [eEthereumNetwork.ropsten]: undefined, + [eEthereumNetwork.main]: undefined, + [eEthereumNetwork.tenderly]: undefined, + }, + EmergencyAdminIndex: 0, + ProviderRegistry: { + [eEthereumNetwork.kovan]: '', + [eEthereumNetwork.ropsten]: '', + [eEthereumNetwork.main]: '', + [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', + [eEthereumNetwork.buidlerevm]: '', + [eEthereumNetwork.tenderly]: '', + }, + ProviderRegistryOwner: { + [eEthereumNetwork.kovan]: '0x5Fc96c182Bb7E0413c08e8e03e9d7EFc6cf0B099', + [eEthereumNetwork.ropsten]: '', + [eEthereumNetwork.main]: '', + [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', + [eEthereumNetwork.buidlerevm]: '', + [eEthereumNetwork.tenderly]: '', + }, + LendingRateOracle: { + [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', + [eEthereumNetwork.buidlerevm]: '', + [eEthereumNetwork.kovan]: '', + [eEthereumNetwork.ropsten]: '', + [eEthereumNetwork.main]: '', + [eEthereumNetwork.tenderly]: '', + }, + LendingPoolCollateralManager: { + [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', + [eEthereumNetwork.buidlerevm]: '', + [eEthereumNetwork.kovan]: '', + [eEthereumNetwork.ropsten]: '', + [eEthereumNetwork.main]: '', + [eEthereumNetwork.tenderly]: '', + }, + LendingPoolConfigurator: { + [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', + [eEthereumNetwork.buidlerevm]: '', + [eEthereumNetwork.kovan]: '', + [eEthereumNetwork.ropsten]: '', + [eEthereumNetwork.main]: '', + [eEthereumNetwork.tenderly]: '', + }, + LendingPool: { + [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', + [eEthereumNetwork.buidlerevm]: '', + [eEthereumNetwork.kovan]: '', + [eEthereumNetwork.ropsten]: '', + [eEthereumNetwork.main]: '', + [eEthereumNetwork.tenderly]: '', + }, + WethGateway: { + [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', + [eEthereumNetwork.buidlerevm]: '', + [eEthereumNetwork.kovan]: '', + [eEthereumNetwork.ropsten]: '', + [eEthereumNetwork.main]: '', + [eEthereumNetwork.tenderly]: '', + }, + TokenDistributor: { + [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.buidlerevm]: '', + [eEthereumNetwork.hardhat]: '', + [eEthereumNetwork.kovan]: '', + [eEthereumNetwork.ropsten]: '', + [eEthereumNetwork.main]: '', + [eEthereumNetwork.tenderly]: '', + }, + AaveOracle: { + [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', + [eEthereumNetwork.buidlerevm]: '', + [eEthereumNetwork.kovan]: '', + [eEthereumNetwork.ropsten]: ZERO_ADDRESS, + [eEthereumNetwork.main]: '', + [eEthereumNetwork.tenderly]: '', + }, + FallbackOracle: { + [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '', + [eEthereumNetwork.buidlerevm]: '', + [eEthereumNetwork.kovan]: ZERO_ADDRESS, + [eEthereumNetwork.ropsten]: '', + [eEthereumNetwork.main]: ZERO_ADDRESS, + [eEthereumNetwork.tenderly]: ZERO_ADDRESS, + }, + ChainlinkAggregator: { + [eEthereumNetwork.coverage]: {}, + [eEthereumNetwork.hardhat]: {}, + [eEthereumNetwork.buidlerevm]: {}, + [eEthereumNetwork.kovan]: { + 'REALTOKEN-S-13895-SARATOGA-ST-DETROIT-MI': '0xCd47A6DaC96a449332976e50f4942FF81cDfd26C', + 'REALTOKEN-S-15796-HARTWELL-ST-DETROIT-MI': '0x215D2f4C9512E2d62C33362e53067b9Bdd68428d', + 'REALTOKEN-S-17813-BRADFORD-ST-DETROIT-M': '0xd02E3b9E37fC9A1CD3141bEa58ACa013517d72BF', + 'REALTOKEN-S-19163-MITCHELL-ST-DETROIT-MI': '0x1bd4077e20Fe045b3A5266C7813cbbAc9ffccBDD', + 'REALTOKEN-S-19201-WESTPHALIA-ST-DETROIT-MI': '0xF119107D3eCfF3641e83509a13D7d8Cd028F5a93', + 'REALTOKEN-S-19311-KEYSTONE-ST-DETROIT-MI': '0xd9cB01869e215DcB3906a0dD43a4198a5A79f07a', + 'REALTOKEN-S-4061-GRAND-ST-DETROIT-M': '0x75471312599D7444F5782978e3D05d78565ce77A', + 'REALTOKEN-S-4380-BEACONSFIELD-ST-DETROIT-MI': '0x84D51b1fC4f9c1230307071463Dc80408Ae15f24', + 'REALTOKEN-S-4680-BUCKINGHAM-AVE-DETROIT-MI': '0xBec14F5E869F50e6971bebb3332417644a47485B', + 'REALTOKEN-S-9717-EVERTS-ST-DETROIT-MI': '0xc08460763599BDAb216812Bef5d89562Dc2eF07d', + DAI: '0x22B58f1EbEDfCA50feF632bD73368b2FdA96D541', + USD: '0x9326BFA02ADD2366b30bacB125260Af641031331', + USDC: '0x64EaC61A2DFda2c3Fa04eED49AA33D021AeC8838', + USDT: '0x0bF499444525a23E7Bb61997539725cA2e928138', + WBTC: '0xF7904a295A029a3aBDFFB6F12755974a958C7C25', + }, + [eEthereumNetwork.ropsten]: {}, + [eEthereumNetwork.main]: {}, + [eEthereumNetwork.tenderly]: {}, + }, + ReserveAssets: { + [eEthereumNetwork.coverage]: {}, + [eEthereumNetwork.hardhat]: {}, + [eEthereumNetwork.buidlerevm]: {}, + [eEthereumNetwork.main]: {}, + [eEthereumNetwork.kovan]: {}, + [eEthereumNetwork.ropsten]: {}, + [eEthereumNetwork.tenderly]: {}, + }, + ReservesConfig: {}, + ATokenDomainSeparator: { + [eEthereumNetwork.coverage]: + '0x95b73a72c6ecf4ccbbba5178800023260bad8e75cdccdb8e4827a2977a37c820', + [eEthereumNetwork.hardhat]: + '0xbae024d959c6a022dc5ed37294cd39c141034b2ae5f02a955cce75c930a81bf5', + [eEthereumNetwork.buidlerevm]: + '0xbae024d959c6a022dc5ed37294cd39c141034b2ae5f02a955cce75c930a81bf5', + [eEthereumNetwork.kovan]: '', + [eEthereumNetwork.ropsten]: '', + [eEthereumNetwork.main]: '', + [eEthereumNetwork.tenderly]: '', + }, + WETH: { + [eEthereumNetwork.coverage]: '', // deployed in local evm + [eEthereumNetwork.hardhat]: '', // deployed in local evm + [eEthereumNetwork.buidlerevm]: '', // deployed in local evm + [eEthereumNetwork.kovan]: '0xd0a1e359811322d97991e03f863a0c30c2cf029c', + [eEthereumNetwork.ropsten]: '0xc778417e063141139fce010982780140aa0cd5ab', + [eEthereumNetwork.main]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + [eEthereumNetwork.tenderly]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + }, + WrappedNativeToken: { + [eEthereumNetwork.coverage]: '', // deployed in local evm + [eEthereumNetwork.hardhat]: '', // deployed in local evm + [eEthereumNetwork.buidlerevm]: '', // deployed in local evm + [eEthereumNetwork.kovan]: '0xd0a1e359811322d97991e03f863a0c30c2cf029c', + [eEthereumNetwork.ropsten]: '0xc778417e063141139fce010982780140aa0cd5ab', + [eEthereumNetwork.main]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + [eEthereumNetwork.tenderly]: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + }, + ReserveFactorTreasuryAddress: { + [eEthereumNetwork.coverage]: '', + [eEthereumNetwork.hardhat]: '0x963309A278145D6c42725E454fE91c9471D9907a', + [eEthereumNetwork.buidlerevm]: '0x963309A278145D6c42725E454fE91c9471D9907a', + [eEthereumNetwork.kovan]: '0x963309A278145D6c42725E454fE91c9471D9907a', + [eEthereumNetwork.ropsten]: '', + [eEthereumNetwork.main]: '', + [eEthereumNetwork.tenderly]: '', + }, + IncentivesController: { + [eEthereumNetwork.coverage]: ZERO_ADDRESS, + [eEthereumNetwork.hardhat]: ZERO_ADDRESS, + [eEthereumNetwork.buidlerevm]: ZERO_ADDRESS, + [eEthereumNetwork.kovan]: ZERO_ADDRESS, + [eEthereumNetwork.ropsten]: ZERO_ADDRESS, + [eEthereumNetwork.main]: ZERO_ADDRESS, + [eEthereumNetwork.tenderly]: ZERO_ADDRESS, + }, +}; diff --git a/markets/realT/index.ts b/markets/realT/index.ts new file mode 100644 index 00000000..62eac6d8 --- /dev/null +++ b/markets/realT/index.ts @@ -0,0 +1,78 @@ +import { oneRay, ZERO_ADDRESS } from '../../helpers/constants'; +import { IAaveRealTConfiguration, eEthereumNetwork } from '../../helpers/types'; + +import { CommonsConfig } from './commons'; +import { + strategy13895Saratoga, + strategy15796Hartwell, + strategy17813Bradford, + strategy19163Mitchell, + strategy19201Westphalia, + strategy19311Keystone, + strategy4061Grnd, + strategy4380Beaconsfield, + strategy4680Buckingham, + strategy9717Everts, + strategyDAI, + strategyUSDC, + strategyUSDT, + strategyWBTC, + strategyWETH, +} from './reservesConfigs'; + +// ---------------- +// POOL--SPECIFIC PARAMS +// ---------------- + +export const RealTConfig: IAaveRealTConfiguration = { + ...CommonsConfig, + MarketId: 'RealT market', + ProviderId: 5, + ReservesConfig: { + 'REALTOKEN-S-13895-SARATOGA-ST-DETROIT-MI': strategy13895Saratoga, + 'REALTOKEN-S-15796-HARTWELL-ST-DETROIT-MI': strategy15796Hartwell, + 'REALTOKEN-S-17813-BRADFORD-ST-DETROIT-M': strategy17813Bradford, + 'REALTOKEN-S-19163-MITCHELL-ST-DETROIT-MI': strategy19163Mitchell, + 'REALTOKEN-S-19201-WESTPHALIA-ST-DETROIT-MI': strategy19201Westphalia, + 'REALTOKEN-S-19311-KEYSTONE-ST-DETROIT-MI': strategy19311Keystone, + 'REALTOKEN-S-4061-GRAND-ST-DETROIT-M': strategy4061Grnd, + 'REALTOKEN-S-4380-BEACONSFIELD-ST-DETROIT-MI': strategy4380Beaconsfield, + 'REALTOKEN-S-4680-BUCKINGHAM-AVE-DETROIT-MI': strategy4680Buckingham, + 'REALTOKEN-S-9717-EVERTS-ST-DETROIT-MI': strategy9717Everts, + DAI: strategyDAI, + USDC: strategyUSDC, + USDT: strategyUSDT, + WBTC: strategyWBTC, + WETH: strategyWETH, + }, + ReserveAssets: { + [eEthereumNetwork.buidlerevm]: {}, + [eEthereumNetwork.hardhat]: {}, + [eEthereumNetwork.coverage]: {}, + [eEthereumNetwork.kovan]: { + 'REALTOKEN-S-13895-SARATOGA-ST-DETROIT-MI': '0x6F442Da588232DC57Bf0096E8dE48D6961D5CC83', + 'REALTOKEN-S-15796-HARTWELL-ST-DETROIT-MI': '0xB3D3C1bBcEf737204AADb4fA6D90e974bc262197', + 'REALTOKEN-S-17813-BRADFORD-ST-DETROIT-M': '0x499A6c19F5537dd6005E2B5c6E1263103f558Ba4', + 'REALTOKEN-S-19163-MITCHELL-ST-DETROIT-MI': '0x4Cc53Ee5ef306a95d407321d4B4acc30814C04ee', + 'REALTOKEN-S-19201-WESTPHALIA-ST-DETROIT-MI': '0x830B0e9a5ecf36D0A886D21e1C20043cD2d16515', + 'REALTOKEN-S-19311-KEYSTONE-ST-DETROIT-MI': '0x8a9F904B4EaD6a97F3aB304d0D2196f5c602c807', + 'REALTOKEN-S-4061-GRAND-ST-DETROIT-M': '0xd9e89bFebAe447B42C1Fa85C590716eC8820f737', + 'REALTOKEN-S-4380-BEACONSFIELD-ST-DETROIT-MI': '0x96700Ffae33c651bC329c3f3fbFE56e1f291f117', + 'REALTOKEN-S-4680-BUCKINGHAM-AVE-DETROIT-MI': '0xeFe82D6baF0dB71f92889eB9d00721bD49121316', + 'REALTOKEN-S-9717-EVERTS-ST-DETROIT-MI': '0x73BdE888664DF8DDfD156B52e6999EEaBAB57C94', + DAI: '0xFf795577d9AC8bD7D90Ee22b6C1703490b6512FD', + USDC: '0xe22da380ee6B445bb8273C81944ADEB6E8450422', + USDT: '0x13512979ADE267AB5100878E2e0f485B568328a4', + WBTC: '0xD1B98B6607330172f1D991521145A22BCe793277', + WETH: '0xd0a1e359811322d97991e03f863a0c30c2cf029c', + }, + [eEthereumNetwork.ropsten]: { + }, + [eEthereumNetwork.main]: { + }, + [eEthereumNetwork.tenderly]: { + }, + }, +}; + +export default RealTConfig; diff --git a/markets/realT/rateStrategies.ts b/markets/realT/rateStrategies.ts new file mode 100644 index 00000000..c261bc2d --- /dev/null +++ b/markets/realT/rateStrategies.ts @@ -0,0 +1,58 @@ +import BigNumber from 'bignumber.js'; +import { oneRay } from '../../helpers/constants'; +import { IInterestRateStrategyParams } from '../../helpers/types'; + +// RealT Property strategy +export const rateStrategyProperty: IInterestRateStrategyParams = { + name: "rateStrategyStable", + optimalUtilizationRate: new BigNumber(0.8).multipliedBy(oneRay).toFixed(), + baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(), + variableRateSlope1: new BigNumber(0.04).multipliedBy(oneRay).toFixed(), + variableRateSlope2: new BigNumber(1).multipliedBy(oneRay).toFixed(), + stableRateSlope1: '0', + stableRateSlope2: '0', +} + +// DAI +export const rateStrategyStableOne: IInterestRateStrategyParams = { + name: "rateStrategyStableOne", + optimalUtilizationRate: new BigNumber(0.8).multipliedBy(oneRay).toFixed(), + baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(), + variableRateSlope1: new BigNumber(0.04).multipliedBy(oneRay).toFixed(), + variableRateSlope2: new BigNumber(0.75).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.02).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.75).multipliedBy(oneRay).toFixed(), +} + +// USDC USDT +export const rateStrategyStableTwo: IInterestRateStrategyParams = { + name: "rateStrategyStableTwo", + optimalUtilizationRate: new BigNumber(0.9).multipliedBy(oneRay).toFixed(), + baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(), + variableRateSlope1: new BigNumber(0.04).multipliedBy(oneRay).toFixed(), + variableRateSlope2: new BigNumber(0.60).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.02).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(0.60).multipliedBy(oneRay).toFixed(), +} + +// WETH +export const rateStrategyWETH: IInterestRateStrategyParams = { + name: "rateStrategyWETH", + optimalUtilizationRate: new BigNumber(0.65).multipliedBy(oneRay).toFixed(), + baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(), + variableRateSlope1: new BigNumber(0.08).multipliedBy(oneRay).toFixed(), + variableRateSlope2: new BigNumber(1).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(1).multipliedBy(oneRay).toFixed(), +} + +// WBTC +export const rateStrategyWBTC: IInterestRateStrategyParams = { + name: "rateStrategyWBTC", + optimalUtilizationRate: new BigNumber(0.65).multipliedBy(oneRay).toFixed(), + baseVariableBorrowRate: new BigNumber(0).multipliedBy(oneRay).toFixed(), + variableRateSlope1: new BigNumber(0.08).multipliedBy(oneRay).toFixed(), + variableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(), + stableRateSlope1: new BigNumber(0.1).multipliedBy(oneRay).toFixed(), + stableRateSlope2: new BigNumber(3).multipliedBy(oneRay).toFixed(), +} \ No newline at end of file diff --git a/markets/realT/reservesConfigs.ts b/markets/realT/reservesConfigs.ts new file mode 100644 index 00000000..46a807ca --- /dev/null +++ b/markets/realT/reservesConfigs.ts @@ -0,0 +1,189 @@ +import { eContractid, IReserveParams } from '../../helpers/types'; + +import { + rateStrategyProperty, + rateStrategyStableOne, + rateStrategyStableTwo, + rateStrategyWBTC, + rateStrategyWETH, +} from './rateStrategies'; + +export const strategy13895Saratoga: IReserveParams = { + strategy: rateStrategyProperty, + baseLTVAsCollateral: '5000', + liquidationThreshold: '7000', + liquidationBonus: '11000', + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: '18', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000', +}; + +export const strategy4380Beaconsfield: IReserveParams = { + strategy: rateStrategyProperty, + baseLTVAsCollateral: '5000', + liquidationThreshold: '7000', + liquidationBonus: '11000', + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: '18', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000', +}; + +export const strategy17813Bradford: IReserveParams = { + strategy: rateStrategyProperty, + baseLTVAsCollateral: '5000', + liquidationThreshold: '7000', + liquidationBonus: '11000', + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: '18', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000', +}; + +export const strategy15796Hartwell: IReserveParams = { + strategy: rateStrategyProperty, + baseLTVAsCollateral: '5000', + liquidationThreshold: '7000', + liquidationBonus: '11000', + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: '18', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000', +}; + +export const strategy9717Everts: IReserveParams = { + strategy: rateStrategyProperty, + baseLTVAsCollateral: '5000', + liquidationThreshold: '7000', + liquidationBonus: '11000', + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: '18', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000', +}; + +export const strategy19201Westphalia: IReserveParams = { + strategy: rateStrategyProperty, + baseLTVAsCollateral: '5000', + liquidationThreshold: '7000', + liquidationBonus: '11000', + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: '18', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000', +}; + +export const strategy19163Mitchell: IReserveParams = { + strategy: rateStrategyProperty, + baseLTVAsCollateral: '5000', + liquidationThreshold: '7000', + liquidationBonus: '11000', + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: '18', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000', +}; + +export const strategy4061Grnd: IReserveParams = { + strategy: rateStrategyProperty, + baseLTVAsCollateral: '5000', + liquidationThreshold: '7000', + liquidationBonus: '11000', + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: '18', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000', +}; + +export const strategy4680Buckingham: IReserveParams = { + strategy: rateStrategyProperty, + baseLTVAsCollateral: '5000', + liquidationThreshold: '7000', + liquidationBonus: '11000', + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: '18', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000', +}; + +export const strategy19311Keystone: IReserveParams = { + strategy: rateStrategyProperty, + baseLTVAsCollateral: '5000', + liquidationThreshold: '7000', + liquidationBonus: '11000', + borrowingEnabled: false, + stableBorrowRateEnabled: false, + reserveDecimals: '18', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000', +}; + +export const strategyUSDC: IReserveParams = { + strategy: rateStrategyStableTwo, + baseLTVAsCollateral: '8000', + liquidationThreshold: '8500', + liquidationBonus: '10500', + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: '6', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000', +}; + +export const strategyDAI: IReserveParams = { + strategy: rateStrategyStableOne, + baseLTVAsCollateral: '7500', + liquidationThreshold: '8000', + liquidationBonus: '10500', + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: '18', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000', +}; + +export const strategyUSDT: IReserveParams = { + strategy: rateStrategyStableTwo, + baseLTVAsCollateral: '0', + liquidationThreshold: '0', + liquidationBonus: '0', + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: '6', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000', +}; + +export const strategyWETH: IReserveParams = { + strategy: rateStrategyWETH, + baseLTVAsCollateral: '8000', + liquidationThreshold: '8250', + liquidationBonus: '10500', + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: '18', + aTokenImpl: eContractid.AToken, + reserveFactor: '1000', +}; + +export const strategyWBTC: IReserveParams = { + strategy: rateStrategyWBTC, + baseLTVAsCollateral: '7000', + liquidationThreshold: '7500', + liquidationBonus: '11000', + borrowingEnabled: true, + stableBorrowRateEnabled: true, + reserveDecimals: '8', + aTokenImpl: eContractid.AToken, + reserveFactor: '2000', +}; \ No newline at end of file