mirror of
				https://github.com/Instadapp/aave-protocol-v2.git
				synced 2024-07-29 21:47:30 +00:00 
			
		
		
		
	implementation
This commit is contained in:
		
							parent
							
								
									83952c2975
								
							
						
					
					
						commit
						413b648b41
					
				| 
						 | 
				
			
			@ -31,7 +31,14 @@ library MathUtils {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * @dev function to calculate the interest using a compounded interest rate formula
 | 
			
		||||
   * @dev function to calculate the interest using a compounded interest rate formula.
 | 
			
		||||
   * To avoid expensive exponentiation, the calculation is performed using a binomial approximation:
 | 
			
		||||
   *
 | 
			
		||||
   *  (1+x)^n = 1+n*x+[n/2*(n-1)]*x^2+[n/6*(n-1)*(n-2)*x^3...  
 | 
			
		||||
   *
 | 
			
		||||
   * The approximation slightly underpays liquidity providers, with the advantage of great gas cost reductions.
 | 
			
		||||
   * The whitepaper contains reference to the approximation and a table showing the margin of error per different time periods.
 | 
			
		||||
   *
 | 
			
		||||
   * @param _rate the interest rate, in ray
 | 
			
		||||
   * @param _lastUpdateTimestamp the timestamp of the last update of the interest
 | 
			
		||||
   * @return the interest rate compounded during the timeDelta, in ray
 | 
			
		||||
| 
						 | 
				
			
			@ -41,11 +48,29 @@ library MathUtils {
 | 
			
		|||
    view
 | 
			
		||||
    returns (uint256)
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
    //solium-disable-next-line
 | 
			
		||||
    uint256 timeDifference = block.timestamp.sub(uint256(_lastUpdateTimestamp));
 | 
			
		||||
    uint256 exp = block.timestamp.sub(uint256(_lastUpdateTimestamp));
 | 
			
		||||
 | 
			
		||||
    uint256 ratePerSecond = _rate.div(SECONDS_PER_YEAR);
 | 
			
		||||
    if(exp == 0){
 | 
			
		||||
      return WadRayMath.ray();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
     uint256 expMinusOne = exp.sub(1);
 | 
			
		||||
     uint256 expMinusTwo = exp.sub(2);
 | 
			
		||||
 | 
			
		||||
    uint256 ratePerSecond = _rate.div(31536000);
 | 
			
		||||
     
 | 
			
		||||
     uint basePowerTwo = ratePerSecond.rayMul(ratePerSecond);
 | 
			
		||||
     uint basePowerThree = basePowerTwo.rayMul(ratePerSecond);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    uint256 secondTerm = exp.mul(expMinusOne).mul(basePowerTwo).div(2);
 | 
			
		||||
    uint256 thirdTerm = exp.mul(expMinusOne).mul(expMinusTwo).mul(basePowerThree).div(6);
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    return WadRayMath.ray().add(ratePerSecond.mul(exp)).add(secondTerm).add(thirdTerm);
 | 
			
		||||
 | 
			
		||||
    return ratePerSecond.add(WadRayMath.ray()).rayPow(timeDifference);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -275,7 +275,7 @@ contract AToken is VersionedInitializable, ERC20 {
 | 
			
		|||
   */
 | 
			
		||||
  function mintOnDeposit(address _account, uint256 _amount) external onlyLendingPool {
 | 
			
		||||
    //cumulates the balance of the user
 | 
			
		||||
    (, , uint256 balanceIncrease, uint256 index) = cumulateBalanceInternal(_account);
 | 
			
		||||
    (, , uint256 balanceIncrease, uint256 index) = cumulateBalanceConditionalInternal(_account,false);
 | 
			
		||||
 | 
			
		||||
    //if the user is redirecting his interest towards someone else,
 | 
			
		||||
    //we update the redirected balance of the redirection address by adding the accrued interest
 | 
			
		||||
| 
						 | 
				
			
			@ -283,7 +283,7 @@ contract AToken is VersionedInitializable, ERC20 {
 | 
			
		|||
    updateRedirectedBalanceOfRedirectionAddressInternal(_account, balanceIncrease.add(_amount), 0);
 | 
			
		||||
 | 
			
		||||
    //mint an equivalent amount of tokens to cover the new deposit
 | 
			
		||||
    _mint(_account, _amount);
 | 
			
		||||
    _mint(_account, _amount.add(balanceIncrease));
 | 
			
		||||
 | 
			
		||||
    emit MintOnDeposit(_account, _amount, balanceIncrease, index);
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			@ -443,7 +443,7 @@ contract AToken is VersionedInitializable, ERC20 {
 | 
			
		|||
   * @return the previous principal balance, the new principal balance, the balance increase
 | 
			
		||||
   * and the new user index
 | 
			
		||||
   **/
 | 
			
		||||
  function cumulateBalanceInternal(address _user)
 | 
			
		||||
  function cumulateBalanceConditionalInternal(address _user, bool _mintBalanceIncrease)
 | 
			
		||||
    internal
 | 
			
		||||
    returns (
 | 
			
		||||
      uint256,
 | 
			
		||||
| 
						 | 
				
			
			@ -461,13 +461,28 @@ contract AToken is VersionedInitializable, ERC20 {
 | 
			
		|||
      //calculate the accrued interest since the last accumulation
 | 
			
		||||
      balanceIncrease = currBalance.sub(previousBalance);
 | 
			
		||||
      //mints an amount of tokens equivalent to the amount accumulated
 | 
			
		||||
      if(_mintBalanceIncrease) {        
 | 
			
		||||
      _mint(_user, balanceIncrease);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    //updates the user index
 | 
			
		||||
    uint256 index = userIndexes[_user] = pool.getReserveNormalizedIncome(underlyingAssetAddress);
 | 
			
		||||
    return (previousBalance, currBalance, balanceIncrease, index);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
    function cumulateBalanceInternal(address _user)
 | 
			
		||||
    internal
 | 
			
		||||
    returns (
 | 
			
		||||
      uint256,
 | 
			
		||||
      uint256,
 | 
			
		||||
      uint256,
 | 
			
		||||
      uint256
 | 
			
		||||
    )
 | 
			
		||||
  {
 | 
			
		||||
    return cumulateBalanceConditionalInternal(_user, true);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * @dev updates the redirected balance of the user. If the user is not redirecting his
 | 
			
		||||
   * interest, nothing is executed.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -67,6 +67,9 @@ contract StableDebtToken is IStableDebtToken, DebtTokenBase {
 | 
			
		|||
    uint256 _balanceIncrease
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  constructor(address _pool, address _underlyingAsset) DebtTokenBase(_pool, _underlyingAsset) public {
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
  /**
 | 
			
		||||
   * @dev returns the average stable rate across all the stable rate debt
 | 
			
		||||
   * @return the average stable rate
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -58,6 +58,10 @@ contract VariableDebtToken is DebtTokenBase, IVariableDebtToken {
 | 
			
		|||
    uint256 _index
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
    constructor(address _pool, address _underlyingAsset) DebtTokenBase(_pool, _underlyingAsset) public {
 | 
			
		||||
    
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  /**
 | 
			
		||||
   * @dev calculates the accumulated debt balance of the user
 | 
			
		||||
   * @return the debt balance of the user
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,9 +22,9 @@ abstract contract DebtTokenBase is IERC20 {
 | 
			
		|||
  string public name;
 | 
			
		||||
  string public symbol;
 | 
			
		||||
  uint8 public decimals;
 | 
			
		||||
  address public underlyingAssetAddress;
 | 
			
		||||
  address public immutable underlyingAssetAddress;
 | 
			
		||||
 | 
			
		||||
  LendingPool internal pool;
 | 
			
		||||
  LendingPool internal immutable pool;
 | 
			
		||||
  mapping(address => uint256) internal balances;
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
| 
						 | 
				
			
			@ -35,26 +35,24 @@ abstract contract DebtTokenBase is IERC20 {
 | 
			
		|||
    _;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  constructor(address _pool, address _underlyingAssetAddress) public {
 | 
			
		||||
    pool = LendingPool(payable(_pool));
 | 
			
		||||
    underlyingAssetAddress = _underlyingAssetAddress; 
 | 
			
		||||
  }
 | 
			
		||||
  /**
 | 
			
		||||
   * @dev initializes the debt token.
 | 
			
		||||
   * @param _name the name of the token
 | 
			
		||||
   * @param _symbol the symbol of the token
 | 
			
		||||
   * @param _decimals the decimals of the token
 | 
			
		||||
   * @param _underlying the underlying asset of the debt token
 | 
			
		||||
   * @param _addressesProvider the addresses provider of the protocol
 | 
			
		||||
   */
 | 
			
		||||
  function init(
 | 
			
		||||
    string memory _name,
 | 
			
		||||
    string memory _symbol,
 | 
			
		||||
    uint8 _decimals,
 | 
			
		||||
    address _underlying,
 | 
			
		||||
    ILendingPoolAddressesProvider _addressesProvider
 | 
			
		||||
    uint8 _decimals
 | 
			
		||||
  ) public {
 | 
			
		||||
    name = _name;
 | 
			
		||||
    symbol = _symbol;
 | 
			
		||||
    decimals = _decimals;
 | 
			
		||||
    underlyingAssetAddress = _underlying;
 | 
			
		||||
    pool = LendingPool(payable(_addressesProvider.getLendingPool()));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0xB00cC45B4a7d3e1FEE684cFc4417998A1c183e6d",
 | 
			
		||||
      "address": "0x4da11393102f7c324f7Bfd07B58773264986e211",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -15,7 +15,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x58F132FBB86E21545A4Bace3C19f1C05d86d7A22",
 | 
			
		||||
      "address": "0x479182FBD6270898bf472583876527667dE6aC04",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -25,7 +25,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x22474D350EC2dA53D717E30b96e9a2B7628Ede5b",
 | 
			
		||||
      "address": "0x4cC8D5649e9d91a4bD054667691aebeC69B69FfB",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -34,7 +34,7 @@
 | 
			
		|||
      "address": "0x852e3718A320aD93Ad8692E8D663d247e4c1b400"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x852e3718A320aD93Ad8692E8D663d247e4c1b400"
 | 
			
		||||
      "address": "0x0f2cE53B3410a2007d6C4ad8940Ffa5AdCC2916C"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "LendingPoolParametersProvider": {
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +52,7 @@
 | 
			
		|||
      "address": "0xA10958a24032283FbE2D23cedf264d6eC9411CBA"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0xA10958a24032283FbE2D23cedf264d6eC9411CBA"
 | 
			
		||||
      "address": "0x0ca5E5B6F09C97f30Ed6e5E99be65A38eE7edfaB"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "LendingPoolDataProvider": {
 | 
			
		||||
| 
						 | 
				
			
			@ -65,7 +65,7 @@
 | 
			
		|||
      "address": "0x2C4603396dE2F08642354A3A102760827FfFe113"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x2C4603396dE2F08642354A3A102760827FfFe113"
 | 
			
		||||
      "address": "0x7FE8419fACf45dFa93d471644e87122923EC9D94"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "PriceOracle": {
 | 
			
		||||
| 
						 | 
				
			
			@ -74,7 +74,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0xE4C10Db67595aF2Cb4166c8C274e0140f7E43059",
 | 
			
		||||
      "address": "0xEDf104A35B3293F4BdB987be9D57EFe3b69C19c7",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -84,7 +84,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0xEC1C93A9f6a9e18E97784c76aC52053587FcDB89",
 | 
			
		||||
      "address": "0x4CAf641bceba759b352e07B2aE3A079B5F409dA6",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -94,7 +94,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x7B6C3e5486D9e6959441ab554A889099eed76290",
 | 
			
		||||
      "address": "0xCb9cdF2CfeE567b43FD654f8b831528c2d54D901",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -104,7 +104,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0xD83D2773a7873ae2b5f8Fb92097e20a8C64F691E",
 | 
			
		||||
      "address": "0xeB3E3b080821399daF535D0C52f642b8f14993AC",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -114,7 +114,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x09d728F76D543DB1925f7d1Fd8823e4e82700F99",
 | 
			
		||||
      "address": "0x3888B5ac0089C12cDF21DD8B0234029f80645324",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -149,7 +149,7 @@
 | 
			
		|||
      "address": "0x03A6802eF9060a8E1f0e56Bafc9C9AB1A26a1f06"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x03A6802eF9060a8E1f0e56Bafc9C9AB1A26a1f06"
 | 
			
		||||
      "address": "0x39f713653d31a8e0D7a51061F1159861290e65Fd"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "InitializableAdminUpgradeabilityProxy": {
 | 
			
		||||
| 
						 | 
				
			
			@ -158,7 +158,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x03A6802eF9060a8E1f0e56Bafc9C9AB1A26a1f06",
 | 
			
		||||
      "address": "0x39f713653d31a8e0D7a51061F1159861290e65Fd",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -167,7 +167,7 @@
 | 
			
		|||
      "address": "0x9D37fB22EA7d655f12E68DABBf6B6585A00774C3"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x9D37fB22EA7d655f12E68DABBf6B6585A00774C3"
 | 
			
		||||
      "address": "0xC4e948241c7A63d1f21fD98D652aE4B59180e07F"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "WalletBalanceProvider": {
 | 
			
		||||
| 
						 | 
				
			
			@ -176,7 +176,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x2005823e074313cd644035557bF4FFa0ca0Bddff",
 | 
			
		||||
      "address": "0x5361A119A2b3daFB88585b24997aAB2232C655a3",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -186,7 +186,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x7c2C195CD6D34B8F845992d380aADB2730bB9C6F",
 | 
			
		||||
      "address": "0xeb544bEfD42128e6b08A821aCCc5562c395E8c9d",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -196,7 +196,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x8858eeB3DfffA017D4BCE9801D340D36Cf895CCf",
 | 
			
		||||
      "address": "0xe3353ddEc0cf8aA6761a3C21D896D04ebd59bDe2",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -206,7 +206,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x0078371BDeDE8aAc7DeBfFf451B74c5EDB385Af7",
 | 
			
		||||
      "address": "0xa7B8e0F888D416d7e08bD12029c6ec8b8Ed18373",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -216,7 +216,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0xf4e77E5Da47AC3125140c470c71cBca77B5c638c",
 | 
			
		||||
      "address": "0x7dF045e4721203EBEDD3436b15391f32A375Cbc4",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -226,7 +226,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0xf784709d2317D872237C4bC22f867d1BAe2913AB",
 | 
			
		||||
      "address": "0xbcd58cEF3F429f99CA32Dc06F28Ca7F7ea6aC5bB",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -236,7 +236,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x3619DbE27d7c1e7E91aA738697Ae7Bc5FC3eACA5",
 | 
			
		||||
      "address": "0xb528f2371502B38d87af537292e88721F4728915",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -246,7 +246,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x038B86d9d8FAFdd0a02ebd1A476432877b0107C8",
 | 
			
		||||
      "address": "0xC2CC8DD97D4680FCfE2338117D23fa7E4858E09B",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -256,7 +256,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x1A1FEe7EeD918BD762173e4dc5EfDB8a78C924A8",
 | 
			
		||||
      "address": "0xfC6d9227413D021f7a50EF3AAdF9545aA4ebb439",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -266,7 +266,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x500D1d6A4c7D8Ae28240b47c8FCde034D827fD5e",
 | 
			
		||||
      "address": "0xdc006C4186148C29B57f52A8ad7694542ad4E675",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -276,7 +276,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0xc4905364b78a742ccce7B890A89514061E47068D",
 | 
			
		||||
      "address": "0x77488a02Baf7a80a5E7D1Da37921D0554C112c7F",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -286,7 +286,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0xD6C850aeBFDC46D7F4c207e445cC0d6B0919BDBe",
 | 
			
		||||
      "address": "0x107Aa2cc3FE981E78140424C3d4DD55aF00Ab24C",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -296,7 +296,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x8B5B7a6055E54a36fF574bbE40cf2eA68d5554b3",
 | 
			
		||||
      "address": "0x512555303417D50E8E2a3BE333896f5f8c54205c",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -306,7 +306,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0xEcc0a6dbC0bb4D51E4F84A315a9e5B0438cAD4f0",
 | 
			
		||||
      "address": "0x8cD1B99Ff499438BC9B5A41F558E41e3Df10ff08",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -316,7 +316,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x20Ce94F404343aD2752A2D01b43fa407db9E0D00",
 | 
			
		||||
      "address": "0x66F7097B8204A7a93850D5D29eAcdA6E2AA09A06",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -326,7 +326,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x1d80315fac6aBd3EfeEbE97dEc44461ba7556160",
 | 
			
		||||
      "address": "0xAfD2Ac057dA78019436cbc59E08a4567E1FDCB02",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -336,7 +336,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x2D8553F9ddA85A9B3259F6Bf26911364B85556F5",
 | 
			
		||||
      "address": "0xc989A9cB29D1e65F5fD1f5e54306D81EC2aae2d4",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -346,7 +346,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x52d3b94181f8654db2530b0fEe1B19173f519C52",
 | 
			
		||||
      "address": "0x5D5492e4659e8c26A86a4cB2122b59d3fC8afA23",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -356,7 +356,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0xd15468525c35BDBC1eD8F2e09A00F8a173437f2f",
 | 
			
		||||
      "address": "0x67863e08EBA141fe927605A9A4C614751d550416",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -366,7 +366,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x7e35Eaf7e8FBd7887ad538D4A38Df5BbD073814a",
 | 
			
		||||
      "address": "0x83eDd07E49dFaBc288AF2215C9dC534C52AB549f",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -376,7 +376,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x5bcb88A0d20426e451332eE6C4324b0e663c50E0",
 | 
			
		||||
      "address": "0x02D4086e063Ef6cc8d8e6e811bFc596Ed4aa7F0f",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -386,7 +386,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x3521eF8AaB0323004A6dD8b03CE890F4Ea3A13f5",
 | 
			
		||||
      "address": "0x1865BF8d8F8392a823D9063f55beC6D450c6756A",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -396,7 +396,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x53369fd4680FfE3DfF39Fc6DDa9CfbfD43daeA2E",
 | 
			
		||||
      "address": "0x2f2abb208a543B0A076aF58cc806a899dE9EFfAC",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -406,7 +406,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0xB00cC45B4a7d3e1FEE684cFc4417998A1c183e6d",
 | 
			
		||||
      "address": "0x4da11393102f7c324f7Bfd07B58773264986e211",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -415,7 +415,7 @@
 | 
			
		|||
      "address": "0x850Fae11E1313e6C23Db7c2410Ec0985d9Ea325A"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x850Fae11E1313e6C23Db7c2410Ec0985d9Ea325A"
 | 
			
		||||
      "address": "0x26af54A97F214dB563711B0670c4FbA2Eb935E37"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "StableDebtToken": {
 | 
			
		||||
| 
						 | 
				
			
			@ -424,7 +424,7 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0xb2B548BE73010C188C083c510d255Aed74843b05",
 | 
			
		||||
      "address": "0xB76Ea4df0263F99daf33765541b1933AD5bB4410",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
| 
						 | 
				
			
			@ -434,13 +434,13 @@
 | 
			
		|||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0x5Ea694f66BD0CBd08FC7967af01b67Dcef68cC5c",
 | 
			
		||||
      "address": "0x7376e7b11aCE5dDa9068f770a27796826e66E305",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "AToken": {
 | 
			
		||||
    "localhost": {
 | 
			
		||||
      "address": "0xd4e934C2749CA8C1618659D02E7B28B074bf4df7",
 | 
			
		||||
      "address": "0x2abb2787B4C39a5667E95f11E8a44c034a58aaac",
 | 
			
		||||
      "deployer": "0xc783df8a850f42e7F7e57013759C285caa701eB6"
 | 
			
		||||
    },
 | 
			
		||||
    "buidlerevm": {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -259,11 +259,11 @@ export const deployStableDebtToken = async ([
 | 
			
		|||
  symbol,
 | 
			
		||||
  decimals,
 | 
			
		||||
  underlyingAsset,
 | 
			
		||||
  addressesProvider,
 | 
			
		||||
  poolAddress,
 | 
			
		||||
]: [string, string, string, tEthereumAddress, tEthereumAddress]) => {
 | 
			
		||||
  const token = await deployContract<StableDebtToken>(eContractid.StableDebtToken, []);
 | 
			
		||||
  const token = await deployContract<StableDebtToken>(eContractid.StableDebtToken, [poolAddress, underlyingAsset]);
 | 
			
		||||
 | 
			
		||||
  await token.init(name, symbol, decimals, underlyingAsset, addressesProvider);
 | 
			
		||||
  await token.init(name, symbol, decimals);
 | 
			
		||||
 | 
			
		||||
  return token;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -273,11 +273,11 @@ export const deployVariableDebtToken = async ([
 | 
			
		|||
  symbol,
 | 
			
		||||
  decimals,
 | 
			
		||||
  underlyingAsset,
 | 
			
		||||
  addressesProvider,
 | 
			
		||||
  poolAddress,
 | 
			
		||||
]: [string, string, string, tEthereumAddress, tEthereumAddress]) => {
 | 
			
		||||
  const token = await deployContract<VariableDebtToken>(eContractid.VariableDebtToken, []);
 | 
			
		||||
  const token = await deployContract<VariableDebtToken>(eContractid.VariableDebtToken, [poolAddress, underlyingAsset]);
 | 
			
		||||
 | 
			
		||||
  await token.init(name, symbol, decimals, underlyingAsset, addressesProvider);
 | 
			
		||||
  await token.init(name, symbol, decimals);
 | 
			
		||||
 | 
			
		||||
  return token;
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -229,7 +229,7 @@ const initReserves = async (
 | 
			
		|||
        `stableDebt${assetSymbol}`,
 | 
			
		||||
        reserveDecimals,
 | 
			
		||||
        tokenAddress,
 | 
			
		||||
        lendingPoolAddressesProvider.address,
 | 
			
		||||
        lendingPool.address,
 | 
			
		||||
      ]);
 | 
			
		||||
 | 
			
		||||
      const variableDebtToken = await deployVariableDebtToken([
 | 
			
		||||
| 
						 | 
				
			
			@ -237,7 +237,7 @@ const initReserves = async (
 | 
			
		|||
        `stableDebt${assetSymbol}`,
 | 
			
		||||
        reserveDecimals,
 | 
			
		||||
        tokenAddress,
 | 
			
		||||
        lendingPoolAddressesProvider.address,
 | 
			
		||||
        lendingPool.address,
 | 
			
		||||
      ]);
 | 
			
		||||
 | 
			
		||||
      const aToken = await deployGenericAToken([
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1262,12 +1262,29 @@ const calcCompoundedInterest = (
 | 
			
		|||
  currentTimestamp: BigNumber,
 | 
			
		||||
  lastUpdateTimestamp: BigNumber
 | 
			
		||||
) => {
 | 
			
		||||
 | 
			
		||||
  const timeDifference = currentTimestamp.minus(lastUpdateTimestamp);
 | 
			
		||||
 | 
			
		||||
  const ratePerSecond = rate.div(ONE_YEAR);
 | 
			
		||||
  const compoundedInterest = ratePerSecond.plus(RAY).rayPow(timeDifference);
 | 
			
		||||
  const expMinusOne = timeDifference.minus(1);
 | 
			
		||||
  const expMinusTwo = timeDifference.minus(2);
 | 
			
		||||
 | 
			
		||||
  return compoundedInterest;
 | 
			
		||||
  const ratePerSecond = rate.div(ONE_YEAR);
 | 
			
		||||
 | 
			
		||||
  const basePowerTwo = ratePerSecond.rayMul(ratePerSecond);
 | 
			
		||||
  const basePowerThree = basePowerTwo.rayMul(ratePerSecond);
 | 
			
		||||
 | 
			
		||||
  const secondTerm = timeDifference.times(expMinusOne).times(basePowerTwo).div(2);
 | 
			
		||||
  const thirdTerm = timeDifference
 | 
			
		||||
    .times(expMinusOne)
 | 
			
		||||
    .times(expMinusTwo)
 | 
			
		||||
    .times(basePowerThree)
 | 
			
		||||
    .div(6);
 | 
			
		||||
 | 
			
		||||
  return new BigNumber(RAY)
 | 
			
		||||
    .plus(ratePerSecond.times(timeDifference))
 | 
			
		||||
    .plus(secondTerm)
 | 
			
		||||
    .plus(thirdTerm);
 | 
			
		||||
      
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const calcExpectedInterestRates = (
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										14
									
								
								types/DebtTokenBase.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								types/DebtTokenBase.d.ts
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -33,12 +33,10 @@ interface DebtTokenBaseInterface extends Interface {
 | 
			
		|||
    }>;
 | 
			
		||||
 | 
			
		||||
    init: TypedFunctionDescription<{
 | 
			
		||||
      encode([_name, _symbol, _decimals, _underlying, _addressesProvider]: [
 | 
			
		||||
      encode([_name, _symbol, _decimals]: [
 | 
			
		||||
        string,
 | 
			
		||||
        string,
 | 
			
		||||
        BigNumberish,
 | 
			
		||||
        string,
 | 
			
		||||
        string
 | 
			
		||||
        BigNumberish
 | 
			
		||||
      ]): string;
 | 
			
		||||
    }>;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -133,8 +131,6 @@ export class DebtTokenBase extends Contract {
 | 
			
		|||
      _name: string,
 | 
			
		||||
      _symbol: string,
 | 
			
		||||
      _decimals: BigNumberish,
 | 
			
		||||
      _underlying: string,
 | 
			
		||||
      _addressesProvider: string,
 | 
			
		||||
      overrides?: TransactionOverrides
 | 
			
		||||
    ): Promise<ContractTransaction>;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -190,8 +186,6 @@ export class DebtTokenBase extends Contract {
 | 
			
		|||
    _name: string,
 | 
			
		||||
    _symbol: string,
 | 
			
		||||
    _decimals: BigNumberish,
 | 
			
		||||
    _underlying: string,
 | 
			
		||||
    _addressesProvider: string,
 | 
			
		||||
    overrides?: TransactionOverrides
 | 
			
		||||
  ): Promise<ContractTransaction>;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -250,9 +244,7 @@ export class DebtTokenBase extends Contract {
 | 
			
		|||
    init(
 | 
			
		||||
      _name: string,
 | 
			
		||||
      _symbol: string,
 | 
			
		||||
      _decimals: BigNumberish,
 | 
			
		||||
      _underlying: string,
 | 
			
		||||
      _addressesProvider: string
 | 
			
		||||
      _decimals: BigNumberish
 | 
			
		||||
    ): Promise<BigNumber>;
 | 
			
		||||
 | 
			
		||||
    name(): Promise<BigNumber>;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,22 @@ export class DebtTokenBaseFactory {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
const _abi = [
 | 
			
		||||
  {
 | 
			
		||||
    inputs: [
 | 
			
		||||
      {
 | 
			
		||||
        internalType: "address",
 | 
			
		||||
        name: "_pool",
 | 
			
		||||
        type: "address"
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        internalType: "address",
 | 
			
		||||
        name: "_underlyingAssetAddress",
 | 
			
		||||
        type: "address"
 | 
			
		||||
      }
 | 
			
		||||
    ],
 | 
			
		||||
    stateMutability: "nonpayable",
 | 
			
		||||
    type: "constructor"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    anonymous: false,
 | 
			
		||||
    inputs: [
 | 
			
		||||
| 
						 | 
				
			
			@ -210,16 +226,6 @@ const _abi = [
 | 
			
		|||
        internalType: "uint8",
 | 
			
		||||
        name: "_decimals",
 | 
			
		||||
        type: "uint8"
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        internalType: "address",
 | 
			
		||||
        name: "_underlying",
 | 
			
		||||
        type: "address"
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        internalType: "contract ILendingPoolAddressesProvider",
 | 
			
		||||
        name: "_addressesProvider",
 | 
			
		||||
        type: "address"
 | 
			
		||||
      }
 | 
			
		||||
    ],
 | 
			
		||||
    name: "init",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										14
									
								
								types/StableDebtToken.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								types/StableDebtToken.d.ts
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -49,12 +49,10 @@ interface StableDebtTokenInterface extends Interface {
 | 
			
		|||
    }>;
 | 
			
		||||
 | 
			
		||||
    init: TypedFunctionDescription<{
 | 
			
		||||
      encode([_name, _symbol, _decimals, _underlying, _addressesProvider]: [
 | 
			
		||||
      encode([_name, _symbol, _decimals]: [
 | 
			
		||||
        string,
 | 
			
		||||
        string,
 | 
			
		||||
        BigNumberish,
 | 
			
		||||
        string,
 | 
			
		||||
        string
 | 
			
		||||
        BigNumberish
 | 
			
		||||
      ]): string;
 | 
			
		||||
    }>;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -190,8 +188,6 @@ export class StableDebtToken extends Contract {
 | 
			
		|||
      _name: string,
 | 
			
		||||
      _symbol: string,
 | 
			
		||||
      _decimals: BigNumberish,
 | 
			
		||||
      _underlying: string,
 | 
			
		||||
      _addressesProvider: string,
 | 
			
		||||
      overrides?: TransactionOverrides
 | 
			
		||||
    ): Promise<ContractTransaction>;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -266,8 +262,6 @@ export class StableDebtToken extends Contract {
 | 
			
		|||
    _name: string,
 | 
			
		||||
    _symbol: string,
 | 
			
		||||
    _decimals: BigNumberish,
 | 
			
		||||
    _underlying: string,
 | 
			
		||||
    _addressesProvider: string,
 | 
			
		||||
    overrides?: TransactionOverrides
 | 
			
		||||
  ): Promise<ContractTransaction>;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -358,9 +352,7 @@ export class StableDebtToken extends Contract {
 | 
			
		|||
    init(
 | 
			
		||||
      _name: string,
 | 
			
		||||
      _symbol: string,
 | 
			
		||||
      _decimals: BigNumberish,
 | 
			
		||||
      _underlying: string,
 | 
			
		||||
      _addressesProvider: string
 | 
			
		||||
      _decimals: BigNumberish
 | 
			
		||||
    ): Promise<BigNumber>;
 | 
			
		||||
 | 
			
		||||
    mint(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,11 +13,21 @@ export class StableDebtTokenFactory extends ContractFactory {
 | 
			
		|||
    super(_abi, _bytecode, signer);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  deploy(overrides?: TransactionOverrides): Promise<StableDebtToken> {
 | 
			
		||||
    return super.deploy(overrides) as Promise<StableDebtToken>;
 | 
			
		||||
  deploy(
 | 
			
		||||
    _pool: string,
 | 
			
		||||
    _underlyingAsset: string,
 | 
			
		||||
    overrides?: TransactionOverrides
 | 
			
		||||
  ): Promise<StableDebtToken> {
 | 
			
		||||
    return super.deploy(_pool, _underlyingAsset, overrides) as Promise<
 | 
			
		||||
      StableDebtToken
 | 
			
		||||
    >;
 | 
			
		||||
  }
 | 
			
		||||
  getDeployTransaction(overrides?: TransactionOverrides): UnsignedTransaction {
 | 
			
		||||
    return super.getDeployTransaction(overrides);
 | 
			
		||||
  getDeployTransaction(
 | 
			
		||||
    _pool: string,
 | 
			
		||||
    _underlyingAsset: string,
 | 
			
		||||
    overrides?: TransactionOverrides
 | 
			
		||||
  ): UnsignedTransaction {
 | 
			
		||||
    return super.getDeployTransaction(_pool, _underlyingAsset, overrides);
 | 
			
		||||
  }
 | 
			
		||||
  attach(address: string): StableDebtToken {
 | 
			
		||||
    return super.attach(address) as StableDebtToken;
 | 
			
		||||
| 
						 | 
				
			
			@ -34,6 +44,22 @@ export class StableDebtTokenFactory extends ContractFactory {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
const _abi = [
 | 
			
		||||
  {
 | 
			
		||||
    inputs: [
 | 
			
		||||
      {
 | 
			
		||||
        internalType: "address",
 | 
			
		||||
        name: "_pool",
 | 
			
		||||
        type: "address"
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        internalType: "address",
 | 
			
		||||
        name: "_underlyingAsset",
 | 
			
		||||
        type: "address"
 | 
			
		||||
      }
 | 
			
		||||
    ],
 | 
			
		||||
    stateMutability: "nonpayable",
 | 
			
		||||
    type: "constructor"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    anonymous: false,
 | 
			
		||||
    inputs: [
 | 
			
		||||
| 
						 | 
				
			
			@ -377,16 +403,6 @@ const _abi = [
 | 
			
		|||
        internalType: "uint8",
 | 
			
		||||
        name: "_decimals",
 | 
			
		||||
        type: "uint8"
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        internalType: "address",
 | 
			
		||||
        name: "_underlying",
 | 
			
		||||
        type: "address"
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        internalType: "contract ILendingPoolAddressesProvider",
 | 
			
		||||
        name: "_addressesProvider",
 | 
			
		||||
        type: "address"
 | 
			
		||||
      }
 | 
			
		||||
    ],
 | 
			
		||||
    name: "init",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										14
									
								
								types/VariableDebtToken.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								types/VariableDebtToken.d.ts
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -41,12 +41,10 @@ interface VariableDebtTokenInterface extends Interface {
 | 
			
		|||
    }>;
 | 
			
		||||
 | 
			
		||||
    init: TypedFunctionDescription<{
 | 
			
		||||
      encode([_name, _symbol, _decimals, _underlying, _addressesProvider]: [
 | 
			
		||||
      encode([_name, _symbol, _decimals]: [
 | 
			
		||||
        string,
 | 
			
		||||
        string,
 | 
			
		||||
        BigNumberish,
 | 
			
		||||
        string,
 | 
			
		||||
        string
 | 
			
		||||
        BigNumberish
 | 
			
		||||
      ]): string;
 | 
			
		||||
    }>;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -175,8 +173,6 @@ export class VariableDebtToken extends Contract {
 | 
			
		|||
      _name: string,
 | 
			
		||||
      _symbol: string,
 | 
			
		||||
      _decimals: BigNumberish,
 | 
			
		||||
      _underlying: string,
 | 
			
		||||
      _addressesProvider: string,
 | 
			
		||||
      overrides?: TransactionOverrides
 | 
			
		||||
    ): Promise<ContractTransaction>;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -246,8 +242,6 @@ export class VariableDebtToken extends Contract {
 | 
			
		|||
    _name: string,
 | 
			
		||||
    _symbol: string,
 | 
			
		||||
    _decimals: BigNumberish,
 | 
			
		||||
    _underlying: string,
 | 
			
		||||
    _addressesProvider: string,
 | 
			
		||||
    overrides?: TransactionOverrides
 | 
			
		||||
  ): Promise<ContractTransaction>;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -334,9 +328,7 @@ export class VariableDebtToken extends Contract {
 | 
			
		|||
    init(
 | 
			
		||||
      _name: string,
 | 
			
		||||
      _symbol: string,
 | 
			
		||||
      _decimals: BigNumberish,
 | 
			
		||||
      _underlying: string,
 | 
			
		||||
      _addressesProvider: string
 | 
			
		||||
      _decimals: BigNumberish
 | 
			
		||||
    ): Promise<BigNumber>;
 | 
			
		||||
 | 
			
		||||
    mint(_user: string, _amount: BigNumberish): Promise<BigNumber>;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,11 +13,21 @@ export class VariableDebtTokenFactory extends ContractFactory {
 | 
			
		|||
    super(_abi, _bytecode, signer);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  deploy(overrides?: TransactionOverrides): Promise<VariableDebtToken> {
 | 
			
		||||
    return super.deploy(overrides) as Promise<VariableDebtToken>;
 | 
			
		||||
  deploy(
 | 
			
		||||
    _pool: string,
 | 
			
		||||
    _underlyingAsset: string,
 | 
			
		||||
    overrides?: TransactionOverrides
 | 
			
		||||
  ): Promise<VariableDebtToken> {
 | 
			
		||||
    return super.deploy(_pool, _underlyingAsset, overrides) as Promise<
 | 
			
		||||
      VariableDebtToken
 | 
			
		||||
    >;
 | 
			
		||||
  }
 | 
			
		||||
  getDeployTransaction(overrides?: TransactionOverrides): UnsignedTransaction {
 | 
			
		||||
    return super.getDeployTransaction(overrides);
 | 
			
		||||
  getDeployTransaction(
 | 
			
		||||
    _pool: string,
 | 
			
		||||
    _underlyingAsset: string,
 | 
			
		||||
    overrides?: TransactionOverrides
 | 
			
		||||
  ): UnsignedTransaction {
 | 
			
		||||
    return super.getDeployTransaction(_pool, _underlyingAsset, overrides);
 | 
			
		||||
  }
 | 
			
		||||
  attach(address: string): VariableDebtToken {
 | 
			
		||||
    return super.attach(address) as VariableDebtToken;
 | 
			
		||||
| 
						 | 
				
			
			@ -34,6 +44,22 @@ export class VariableDebtTokenFactory extends ContractFactory {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
const _abi = [
 | 
			
		||||
  {
 | 
			
		||||
    inputs: [
 | 
			
		||||
      {
 | 
			
		||||
        internalType: "address",
 | 
			
		||||
        name: "_pool",
 | 
			
		||||
        type: "address"
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        internalType: "address",
 | 
			
		||||
        name: "_underlyingAsset",
 | 
			
		||||
        type: "address"
 | 
			
		||||
      }
 | 
			
		||||
    ],
 | 
			
		||||
    stateMutability: "nonpayable",
 | 
			
		||||
    type: "constructor"
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    anonymous: false,
 | 
			
		||||
    inputs: [
 | 
			
		||||
| 
						 | 
				
			
			@ -351,16 +377,6 @@ const _abi = [
 | 
			
		|||
        internalType: "uint8",
 | 
			
		||||
        name: "_decimals",
 | 
			
		||||
        type: "uint8"
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        internalType: "address",
 | 
			
		||||
        name: "_underlying",
 | 
			
		||||
        type: "address"
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        internalType: "contract ILendingPoolAddressesProvider",
 | 
			
		||||
        name: "_addressesProvider",
 | 
			
		||||
        type: "address"
 | 
			
		||||
      }
 | 
			
		||||
    ],
 | 
			
		||||
    name: "init",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user