UNPKG

@bandz/protocol-js

Version:

Bandz protocol data aggregation tool

1 lines 132 kB
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("bignumber.js"),n=e(t),r=require("tslib"),a=require("ethers");require("reflect-metadata");var i=require("ethers/lib/utils"),o=e(require("axios"));function s(e,t,n,r,a,i,o){try{var s=e[i](o),u=s.value}catch(e){return void n(e)}s.done?t(u):Promise.resolve(u).then(r,a)}function u(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var i=e.apply(t,n);function o(e){s(i,r,a,o,u,"next",e)}function u(e){s(i,r,a,o,u,"throw",e)}o(void 0)}))}}function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function l(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function d(e,t){if(null==e)return{};var n,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t.indexOf(n=i[r])>=0||(a[n]=e[n]);return a}var c=n.clone({DECIMAL_PLACES:0,ROUNDING_MODE:n.ROUND_DOWN});function y(e){return new n(e)}function m(e){return new c(e)}var f=new n(10),g={};function v(e){return g[e]||(g[e]=f.pow(e)),g[e]}function T(e,t){return h(e,t).toString(10)}function h(e,t){return y(e).dividedBy(v(t))}var _,b=m(10).pow(18),x=b.dividedBy(2),w=m(10).pow(27),C=w.dividedBy(2),A=m(10).pow(9);function B(e,t){return C.plus(m(e).multipliedBy(t)).div(w)}function S(e,t){return m(t).div(2).plus(m(e).multipliedBy(w)).div(t)}function E(e){return m(A).div(2).plus(e).div(A)}function P(e){return m(e).multipliedBy(A).decimalPlaces(0)}function D(e,t){var n=m(e),r=m(t);if(r.eq(0))return w;var a=r.minus(1),i=r.gt(2)?r.minus(2):0,o=B(n,n),s=B(o,n),u=r.multipliedBy(n),p=r.multipliedBy(a).multipliedBy(o).div(2),l=r.multipliedBy(a).multipliedBy(i).multipliedBy(s).div(6);return w.plus(u).plus(p).plus(l)}!function(e){e.None="None",e.Stable="Stable",e.Variable="Variable"}(_||(_={}));var k=y("31536000");function R(e,t,n){var r=m(t-n);return D(m(e).dividedBy(k),r)}function I(e,t,n,r,a){var i=m(e);if(i.eq("0"))return i;var o=B(R(n,a,r),t);return E(B(P(i),o))}var O=function(e,t,n){return B(e,S(P(m(t-n)),P(k))).plus(w)};function N(e,t,n,r){return m(e).eq("0")?m(t):B(O(e,r,n),t)}function L(e,t,n,r,a){return E(B(P(e),N(n,t,r,a)))}function H(e,t,n,r){var a=m(e);if(a.eq("0"))return a;var i=R(t,r,n);return E(B(P(a),i))}function M(e,t,n){return y(t).eq(0)?y("-1"):y(e).multipliedBy(n).dividedBy(v(4)).div(t)}function V(e,t,n){if(m(n).eq(0))return m("0");var r=m(e).multipliedBy(n).dividedBy(v(4)).minus(t);return r.gt("0")?r:m("0")}function U(e,t,n,r){return y(t).dividedBy(e).minus("1").dividedBy(r-n).multipliedBy(k).toString()}function G(e,t,n){var r,a=m(t.principalBorrows);return a.eq("0")?m("0"):(r=t.borrowRateMode===_.Variable?S(B(F(e.variableBorrowRate,n,e.lastUpdateTimestamp),e.variableBorrowIndex),t.variableBorrowIndex):F(t.borrowRate,n,t.lastUpdateTimestamp),E(B(P(a),r)))}var F=function(e,t,n){var r=m(t-n);return D(m(e).dividedBy(k),r)};function q(e,t,n,r){return y(t).eq(0)?y("-1"):y(e).multipliedBy(r).dividedBy(100).div(y(t).plus(n))}function W(e,t,n,r){if(m(r).eq(0))return m("0");var a=m(e).multipliedBy(r).dividedBy(100);if(a.lt(t))return m("0");var i=(a=a.minus(t).minus(n)).multipliedBy("0.0025");return a.minus(i)}function j(e,t,n,r){return E(S(B(P(e),N(n.liquidityRate,n.liquidityIndex,n.lastUpdateTimestamp,r)),t.userBalanceIndex))}function K(e,t,n){return"0"===e.principalATokenBalance&&"0"===e.redirectedBalance?m("0"):"0x0000000000000000000000000000000000000000"!==e.interestRedirectionAddress?m(e.principalATokenBalance).plus(j(e.redirectedBalance,e,t,n).minus(e.redirectedBalance)):j(y(e.redirectedBalance).plus(e.principalATokenBalance).toString(),e,t,n).minus(e.redirectedBalance)}function Y(e,t,r,a,i){var o=m("0"),s=m("0"),u=m("0"),l=m("0"),d=y("0"),c=y("0"),f=t.map((function(t){var n=e.find((function(e){return e.id===t.reserve.id}));if(!n)throw new Error("Reserve is not registered on platform, please contact support");var r=function(e,t,n,r){var a=e.price.priceInBch,i=e.decimals,o=K(t,e,r),s=o.multipliedBy(a).dividedBy(v(i)),u=s.multipliedBy(v(10)).dividedBy(n).toFixed(0),l=m(t.principalBorrows).multipliedBy(a).dividedBy(v(i)),d=l.multipliedBy(v(10)).dividedBy(n).toFixed(0),c=G(e,t,r),y=c.multipliedBy(a).dividedBy(v(i)),f=y.multipliedBy(v(10)).dividedBy(n).toFixed(0),g=m(t.originationFee).multipliedBy(a).dividedBy(v(i));return p({},t,{principalBorrowsUSD:d,currentBorrowsUSD:f,originationFeeUSD:g.multipliedBy(v(10)).dividedBy(n).toFixed(0),currentUnderlyingBalanceUSD:u,originationFeeBCH:g.toString(),currentBorrows:c.toString(),currentBorrowsBCH:y.toString(),principalBorrowsBCH:l.toString(),currentUnderlyingBalance:o.toFixed(),currentunderlyingBalanceBCH:s.toFixed()})}(n,t,a,i);return o=o.plus(r.currentunderlyingBalanceBCH),u=u.plus(r.currentBorrowsBCH),l=l.plus(r.originationFeeBCH),n.usageAsCollateralEnabled&&t.usageAsCollateralEnabledOnUser&&(s=s.plus(r.currentunderlyingBalanceBCH),d=d.plus(y(r.currentunderlyingBalanceBCH).multipliedBy(n.baseLTVasCollateral)),c=c.plus(y(r.currentunderlyingBalanceBCH).multipliedBy(n.reserveLiquidationThreshold))),r})).sort((function(e,t){return e.reserve.symbol>t.reserve.symbol?1:e.reserve.symbol<t.reserve.symbol?-1:0}));d.gt(0)&&(d=d.div(s).decimalPlaces(0,n.ROUND_DOWN)),c.gt(0)&&(c=c.div(s).decimalPlaces(0,n.ROUND_DOWN));var g=q(s,u,l,c),T=s.multipliedBy(v(10)).dividedBy(a).toString(),h=o.multipliedBy(v(10)).dividedBy(a).toString(),_=u.multipliedBy(v(10)).dividedBy(a).toString(),b=l.multipliedBy(v(10)).dividedBy(a),x=l.plus(u),w=b.plus(_),C=W(s,u,l,d),A=u.plus(l),B=o.minus(A.eq(0)?"0":A.multipliedBy(100).dividedBy(c));return{totalLiquidityUSD:h,totalCollateralUSD:T,totalBorrowsUSD:_,id:r,totalLiquidityBCH:o.toString(),totalCollateralBCH:s.toString(),totalFeesBCH:l.toString(),totalBorrowsBCH:u.toString(),availableBorrowsBCH:C.toString(),currentLoanToValue:d.toString(),currentLiquidationThreshold:c.toString(),maxAmountToWithdrawInBch:B.toString(),healthFactor:g.toString(),reservesData:f,totalFeesUSD:b.toString(),totalBorrowsWithFeesBCH:x.toString(),totalBorrowsWithFeesUSD:w.toString()}}var z={__proto__:null,getCompoundedBorrowBalance:G,calculateCompoundedInterest:F,calculateHealthFactorFromBalances:q,calculateHealthFactorFromBalancesBigUnits:function(e,t,r,a){return q(e,t,r,new n(a).multipliedBy(100).decimalPlaces(0,n.ROUND_DOWN))},calculateavailableBorrowsBCH:W,calculateCumulatedBalance:j,calculateCurrentUnderlyingBalance:K,computeRawUserSummaryData:Y,formatUserSummaryData:function(e,t,n,r,a){var i=Y(e,t,n,r,a),o=i.reservesData.map((function(e){var t=e.reserve,n=d(e,["reserve"]),r=t.decimals;return p({},n,{reserve:p({},t,{reserveLiquidationBonus:T(y(t.reserveLiquidationBonus).minus(100),2),liquidityRate:T(t.liquidityRate,27)}),redirectedBalance:T(n.redirectedBalance,r),principalATokenBalance:T(n.principalATokenBalance,r),borrowRate:T(n.borrowRate,27),lastUpdateTimestamp:n.lastUpdateTimestamp,variableBorrowIndex:T(n.variableBorrowIndex,27),userBalanceIndex:T(n.userBalanceIndex,27),currentUnderlyingBalance:T(n.currentUnderlyingBalance,r),currentunderlyingBalanceBCH:T(n.currentunderlyingBalanceBCH,18),currentUnderlyingBalanceUSD:T(n.currentUnderlyingBalanceUSD,10),principalBorrows:T(n.principalBorrows,r),principalBorrowsBCH:T(n.principalBorrowsBCH,18),principalBorrowsUSD:T(n.principalBorrowsUSD,10),currentBorrows:T(n.currentBorrows,r),currentBorrowsBCH:T(n.currentBorrowsBCH,18),currentBorrowsUSD:T(n.currentBorrowsUSD,10),originationFee:T(n.originationFee,r),originationFeeBCH:T(n.originationFeeBCH,18),originationFeeUSD:T(n.originationFeeUSD,10)})}));return{id:i.id,reservesData:o,totalLiquidityBCH:T(i.totalLiquidityBCH,18),totalLiquidityUSD:T(i.totalLiquidityUSD,10),totalCollateralBCH:T(i.totalCollateralBCH,18),totalCollateralUSD:T(i.totalCollateralUSD,10),totalFeesBCH:T(i.totalFeesBCH,18),totalFeesUSD:T(i.totalFeesUSD,10),totalBorrowsBCH:T(i.totalBorrowsBCH,18),totalBorrowsUSD:T(i.totalBorrowsUSD,10),totalBorrowsWithFeesBCH:T(i.totalBorrowsWithFeesBCH,18),totalBorrowsWithFeesUSD:T(i.totalBorrowsWithFeesUSD,10),availableBorrowsBCH:T(i.availableBorrowsBCH,18),currentLoanToValue:T(i.currentLoanToValue,2),currentLiquidationThreshold:T(i.currentLiquidationThreshold,2),maxAmountToWithdrawInBch:T(i.maxAmountToWithdrawInBch,18),healthFactor:i.healthFactor}},formatReserves:function(e,t){return e.map((function(e){var n,r,a=null==t?void 0:null==(n=t.find((function(t){return t.id===e.id})))?void 0:null==(r=n.paramsHistory)?void 0:r[0];return p({},e,{price:p({},e.price,{priceInBch:T(e.price.priceInBch,18)}),baseLTVasCollateral:T(e.baseLTVasCollateral,2),variableBorrowRate:T(e.variableBorrowRate,27),avg30DaysVariableBorrowRate:a?U(a.variableBorrowIndex,e.variableBorrowIndex,a.timestamp,e.lastUpdateTimestamp):void 0,avg30DaysLiquidityRate:a?U(a.liquidityIndex,e.liquidityIndex,a.timestamp,e.lastUpdateTimestamp):void 0,stableBorrowRate:T(e.stableBorrowRate,27),liquidityRate:T(e.liquidityRate,27),totalLiquidity:T(e.totalLiquidity,e.decimals),availableLiquidity:T(e.availableLiquidity,e.decimals),liquidityIndex:T(e.liquidityIndex,27),reserveLiquidationThreshold:T(e.reserveLiquidationThreshold,2),reserveLiquidationBonus:T(y(e.reserveLiquidationBonus).minus(100),2),totalBorrows:T(e.totalBorrows,e.decimals),totalBorrowsVariable:T(e.totalBorrowsVariable,e.decimals),totalBorrowsStable:T(e.totalBorrowsStable,e.decimals),variableBorrowIndex:T(e.variableBorrowIndex,27)})}))},calculateInterestRates:function(e,t,n,r){void 0===r&&(r="variable");var a=e.optimalUtilisationRate,i=y(e.baseVariableBorrowRate),o=y(e.totalBorrowsStable).plus("stable"===r?n:"0"),s=y(e.totalBorrowsVariable).plus("variable"===r?n:"0"),u=o.plus(s),p=y(e.totalLiquidity).plus(t),l=p.eq(0)&&u.eq(0)?y(0):u.dividedBy(p),d=y(e.stableBorrowRate),c=y(0),m=y(0);if(l.gt(a)){var f=l.minus(a).dividedBy(y(1).minus(a));d=d.plus(e.stableRateSlope1).plus(f.multipliedBy(e.stableRateSlope2)),c=i.plus(e.variableRateSlope1).plus(f.multipliedBy(e.variableRateSlope2))}else d=c.plus(l.dividedBy(a).multipliedBy(e.stableRateSlope1)),c=i.plus(l.dividedBy(a).multipliedBy(e.variableRateSlope1));if(!u.eq(0)){var g=c.multipliedBy(s),v=y(e.averageStableBorrowRate).multipliedBy(o);m=g.plus(v).dividedBy(u)}return{variableBorrowRate:c.toString(),stableBorrowRate:d.toString(),liquidityRate:m.toString()}},get BorrowRateMode(){return _}};function Z(e,t,n,r){var a=m(e).multipliedBy(t).dividedBy(v(n)),i=a.multipliedBy(v(10)).dividedBy(r).toFixed(0);return[a.toString(),i]}function X(e,t,r,a,i){var o=e.price.priceInBch,s=e.decimals,u=L(t.scaledATokenBalance,e.liquidityIndex,e.liquidityRate,e.lastUpdateTimestamp,a).toString(),l=Z(u,o,s,r),d=l[0],c=l[1],y=I(t.scaledVariableDebt,e.variableBorrowIndex,e.variableBorrowRate,e.lastUpdateTimestamp,a).toString(),f=Z(y,o,s,r),g=f[0],v=f[1],T=H(t.principalStableDebt,t.stableBorrowRate,t.stableBorrowLastUpdateTimestamp,a).toString(),h=Z(T,o,s,r),_=h[0],b=h[1],x=ne({totalScaledVariableDebt:e.totalScaledVariableDebt,variableBorrowIndex:e.variableBorrowIndex,variableBorrowRate:e.variableBorrowRate,totalPrincipalStableDebt:e.totalPrincipalStableDebt,averageStableRate:e.averageStableRate,availableLiquidity:e.availableLiquidity,stableDebtLastUpdateTimestamp:e.stableDebtLastUpdateTimestamp,lastUpdateTimestamp:e.lastUpdateTimestamp},a),w=x.totalLiquidity,C=x.totalStableDebt,A=x.totalVariableDebt,B=w.gt(0)?ae(t.scaledATokenBalance,e.aTokenIncentivesIndex,t.aTokenincentivesUserIndex,i.incentivePrecision,i.rewardTokenDecimals,e.aIncentivesLastUpdateTimestamp,e.aEmissionPerSecond,S(w,e.liquidityIndex),a,i.emissionEndTimestamp):"0",E=Z(B,i.rewardTokenPriceBch,i.rewardTokenDecimals,r),P=E[0],D=E[1],k=A.gt(0)?ae(t.scaledVariableDebt,e.vTokenIncentivesIndex,t.vTokenincentivesUserIndex,i.incentivePrecision,i.rewardTokenDecimals,e.vIncentivesLastUpdateTimestamp,e.vEmissionPerSecond,new n(e.totalScaledVariableDebt),a,i.emissionEndTimestamp):"0",R=Z(k,i.rewardTokenPriceBch,i.rewardTokenDecimals,r),O=R[0],N=R[1],M=C.gt(0)?ae(t.principalStableDebt,e.sTokenIncentivesIndex,t.sTokenincentivesUserIndex,i.incentivePrecision,i.rewardTokenDecimals,e.sIncentivesLastUpdateTimestamp,e.sEmissionPerSecond,new n(e.totalPrincipalStableDebt),a,i.emissionEndTimestamp):"0",V=Z(M,i.rewardTokenPriceBch,i.rewardTokenDecimals,r),U=V[0],G=V[1];return p({},t,{underlyingBalance:u,underlyingBalanceBCH:d,underlyingBalanceUSD:c,variableBorrows:y,variableBorrowsBCH:g,variableBorrowsUSD:v,stableBorrows:T,stableBorrowsBCH:_,stableBorrowsUSD:b,totalBorrows:m(y).plus(T).toString(),totalBorrowsBCH:m(g).plus(_).toString(),totalBorrowsUSD:m(v).plus(b).toString(),aTokenRewards:B,aTokenRewardsBCH:P,aTokenRewardsUSD:D,vTokenRewards:k,vTokenRewardsBCH:O,vTokenRewardsUSD:N,sTokenRewards:M,sTokenRewardsBCH:U,sTokenRewardsUSD:G,totalRewards:m(B).plus(k).plus(M).toString(),totalRewardsBCH:m(P).plus(O).plus(U).toString(),totalRewardsUSD:m(D).plus(N).plus(G).toString()})}function Q(e,t,r,a,i,o){var s=m("0"),u=m("0"),p=m("0"),l=y("0"),d=y("0"),c=y("0"),f=y("0"),g=y("0"),T=t.map((function(t){var n=e.find((function(e){return e.id===t.reserve.id}));if(!n)throw new Error("Reserve is not registered on platform, please contact support");var r=X(n,t,a,i,o);return c=c.plus(r.totalRewards),f=f.plus(r.totalRewardsBCH),g=g.plus(r.totalRewardsUSD),s=s.plus(r.underlyingBalanceBCH),p=p.plus(r.variableBorrowsBCH).plus(r.stableBorrowsBCH),n.usageAsCollateralEnabled&&t.usageAsCollateralEnabledOnUser&&(u=u.plus(r.underlyingBalanceBCH),l=l.plus(y(r.underlyingBalanceBCH).multipliedBy(n.baseLTVasCollateral)),d=d.plus(y(r.underlyingBalanceBCH).multipliedBy(n.reserveLiquidationThreshold))),r})).sort((function(e,t){return e.reserve.symbol>t.reserve.symbol?1:e.reserve.symbol<t.reserve.symbol?-1:0}));l.gt(0)&&(l=l.div(u).decimalPlaces(0,n.ROUND_DOWN)),d.gt(0)&&(d=d.div(u).decimalPlaces(0,n.ROUND_DOWN));var h=M(u,p,d),_=u.multipliedBy(v(10)).dividedBy(a).toString(),b=s.multipliedBy(v(10)).dividedBy(a).toString(),x=p.multipliedBy(v(10)).dividedBy(a).toString(),w=V(u,p,l);return{totalLiquidityUSD:b,totalCollateralUSD:_,totalBorrowsUSD:x,totalRewards:c.toString(),totalRewardsBCH:f.toString(),totalRewardsUSD:g.toString(),id:r,totalLiquidityBCH:s.toString(),totalCollateralBCH:u.toString(),totalBorrowsBCH:p.toString(),availableBorrowsBCH:w.toString(),currentLoanToValue:l.toString(),currentLiquidationThreshold:d.toString(),healthFactor:h.toString(),reservesData:T}}function J(e,t,n,r,a,i){var o=Q(e,t,n,r,a,i),s=o.reservesData.map((function(e){var t=e.reserve,n=d(e,["reserve"]),r=t.decimals;return p({},n,{reserve:p({},t,{reserveLiquidationBonus:T(y(t.reserveLiquidationBonus).minus(v(4)),4),liquidityRate:T(t.liquidityRate,27)}),scaledATokenBalance:T(n.scaledATokenBalance,r),stableBorrowRate:T(n.stableBorrowRate,27),variableBorrowIndex:T(n.variableBorrowIndex,27),underlyingBalance:T(n.underlyingBalance,r),underlyingBalanceBCH:T(n.underlyingBalanceBCH,18),underlyingBalanceUSD:T(n.underlyingBalanceUSD,10),stableBorrows:T(n.stableBorrows,r),stableBorrowsBCH:T(n.stableBorrowsBCH,18),stableBorrowsUSD:T(n.stableBorrowsUSD,10),variableBorrows:T(n.variableBorrows,r),variableBorrowsBCH:T(n.variableBorrowsBCH,18),variableBorrowsUSD:T(n.variableBorrowsUSD,10),totalBorrows:T(n.totalBorrows,r),totalBorrowsBCH:T(n.totalBorrowsBCH,18),totalBorrowsUSD:T(n.totalBorrowsUSD,10)})}));return{id:o.id,reservesData:s,totalLiquidityBCH:T(o.totalLiquidityBCH,18),totalLiquidityUSD:T(o.totalLiquidityUSD,10),totalCollateralBCH:T(o.totalCollateralBCH,18),totalCollateralUSD:T(o.totalCollateralUSD,10),totalBorrowsBCH:T(o.totalBorrowsBCH,18),totalBorrowsUSD:T(o.totalBorrowsUSD,10),availableBorrowsBCH:T(o.availableBorrowsBCH,18),currentLoanToValue:T(o.currentLoanToValue,4),currentLiquidationThreshold:T(o.currentLiquidationThreshold,4),healthFactor:o.healthFactor,totalRewards:o.totalRewards,totalRewardsBCH:o.totalRewardsBCH,totalRewardsUSD:o.totalRewardsUSD}}function $(e,t){return{totalVariableDebt:T(B(B(e.totalScaledVariableDebt,e.variableBorrowIndex),R(e.variableBorrowRate,t,e.lastUpdateTimestamp)),e.decimals),totalStableDebt:T(B(e.totalPrincipalStableDebt,R(e.averageStableRate,t,e.stableDebtLastUpdateTimestamp)),e.decimals)}}function ee(e,t,n,r,a){return void 0===r&&(r="0"),e.map((function(e){var i,o,s=null==n?void 0:null==(i=n.find((function(t){return t.id===e.id})))?void 0:null==(o=i.paramsHistory)?void 0:o[0],u=T(e.availableLiquidity,e.decimals),l=$(e,t||e.lastUpdateTimestamp),d=l.totalVariableDebt,c=l.totalStableDebt,m=y(c).plus(d),f=m.plus(u).toString(),g="0"!==f?m.dividedBy(f).toString():"0",v=a&&a>(t||Math.floor(Date.now()/1e3)),h=v&&"0"!==f?re(e.aEmissionPerSecond,r,f,e.price.priceInBch):"0",_=v&&"0"!==d?re(e.vEmissionPerSecond,r,d,e.price.priceInBch):"0",b=v&&"0"!==c?re(e.sEmissionPerSecond,r,c,e.price.priceInBch):"0";return p({},e,{totalVariableDebt:d,totalStableDebt:c,totalLiquidity:f,availableLiquidity:u,utilizationRate:g,aIncentivesAPY:h,vIncentivesAPY:_,sIncentivesAPY:b,totalDebt:m.toString(),price:p({},e.price,{priceInBch:T(e.price.priceInBch,18)}),baseLTVasCollateral:T(e.baseLTVasCollateral,4),reserveFactor:T(e.reserveFactor,4),variableBorrowRate:T(e.variableBorrowRate,27),avg30DaysVariableBorrowRate:s?U(s.variableBorrowIndex,e.variableBorrowIndex,s.timestamp,e.lastUpdateTimestamp):void 0,avg30DaysLiquidityRate:s?U(s.liquidityIndex,e.liquidityIndex,s.timestamp,e.lastUpdateTimestamp):void 0,stableBorrowRate:T(e.stableBorrowRate,27),liquidityRate:T(e.liquidityRate,27),liquidityIndex:T(e.liquidityIndex,27),reserveLiquidationThreshold:T(e.reserveLiquidationThreshold,4),reserveLiquidationBonus:T(y(e.reserveLiquidationBonus).minus(Math.pow(10,4)),4),totalScaledVariableDebt:T(e.totalScaledVariableDebt,e.decimals),totalPrincipalStableDebt:T(e.totalPrincipalStableDebt,e.decimals),variableBorrowIndex:T(e.variableBorrowIndex,27)})}))}function te(e,t){return{totalVariableDebt:B(B(e.totalScaledVariableDebt,e.variableBorrowIndex),R(e.variableBorrowRate,t,e.lastUpdateTimestamp)),totalStableDebt:B(e.totalPrincipalStableDebt,R(e.averageStableRate,t,e.stableDebtLastUpdateTimestamp))}}function ne(e,t){var n=te(e,t),r=n.totalVariableDebt,a=n.totalStableDebt,i=r.plus(a);return{totalVariableDebt:r,totalStableDebt:a,totalLiquidity:i.plus(e.availableLiquidity)}}function re(e,t,n,r){var a=h(e,18).multipliedBy(t).multipliedBy(k),i=y(n).multipliedBy(r);return a.dividedBy(i).toString(10)}function ae(e,t,n,r,a,i,o,s,u,p){var l,d=(u>p?p:u)-i;return l=i==+u||i>=p?m(t):m(o).multipliedBy(d).multipliedBy(v(r)).dividedBy(s).plus(t),T(m(e).multipliedBy(l.minus(n)).dividedBy(v(r)),a)}var ie,oe,se,ue,pe,le,de,ce,ye={__proto__:null,getBchAndUsdBalance:Z,computeUserReserveData:X,computeRawUserSummaryData:Q,formatUserSummaryData:J,calculateReserveDebt:$,formatReserves:ee,calculateReserveDebtSuppliesRaw:te,calculateSupplies:ne,calculateIncentivesAPY:re,calculateRewards:ae};(ie=exports.InterestRate||(exports.InterestRate={})).None="None",ie.Stable="Stable",ie.Variable="Variable",(oe=exports.Market||(exports.Market={})).Proto="proto",oe.AMM="amm",(se=exports.Network||(exports.Network={})).mainnet="mainnet",se.amber="amber",(ue=exports.ChainId||(exports.ChainId={}))[ue.mainnet=1e4]="mainnet",ue[ue.amber=10001]="amber",(pe=exports.eSmartBCHTxType||(exports.eSmartBCHTxType={})).ERC20_APPROVAL="ERC20_APPROVAL",pe.DLP_ACTION="DLP_ACTION",pe.GOVERNANCE_ACTION="GOVERNANCE_ACTION",pe.GOV_DELEGATION_ACTION="GOV_DELEGATION_ACTION",pe.STAKE_ACTION="STAKE_ACTION",pe.MIGRATION_LEND_AAVE="MIGRATION_LEND_AAVE",pe.FAUCET_MINT="FAUCET_MINT",pe.REWARD_ACTION="REWARD_ACTION",(le=exports.ProtocolAction||(exports.ProtocolAction={})).default="default",le.withdraw="withdraw",le.deposit="deposit",le.liquidationCall="liquidationCall",le.liquidationFlash="liquidationFlash",le.repay="repay",le.swapCollateral="swapCollateral",le.repayCollateral="repayCollateral",le.withdrawBCH="withdrawBCH",le.borrowBCH="borrowBCH",(de=exports.GovernanceVote||(exports.GovernanceVote={}))[de.Abstain=0]="Abstain",de[de.Yes=1]="Yes",de[de.No=2]="No",(ce=exports.Stake||(exports.Stake={})).bandz="bandz",ce.bpt="bpt";var me,fe,ge,ve=(function(e){var t=function(e){var t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",i=r.asyncIterator||"@@asyncIterator",o=r.toStringTag||"@@toStringTag";function s(e,t,n,r){var a=Object.create((t&&t.prototype instanceof l?t:l).prototype),i=new x(r||[]);return a._invoke=function(e,t,n){var r="suspendedStart";return function(a,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw i;return{value:void 0,done:!0}}for(n.method=a,n.arg=i;;){var o=n.delegate;if(o){var s=h(o,n);if(s){if(s===p)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var l=u(e,t,n);if("normal"===l.type){if(r=n.done?"completed":"suspendedYield",l.arg===p)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(r="completed",n.method="throw",n.arg=l.arg)}}}(e,n,i),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var p={};function l(){}function d(){}function c(){}var y={};y[a]=function(){return this};var m=Object.getPrototypeOf,f=m&&m(m(w([])));f&&f!==t&&n.call(f,a)&&(y=f);var g=c.prototype=l.prototype=Object.create(y);function v(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function T(e){var t;this._invoke=function(r,a){function i(){return new Promise((function(t,i){!function t(r,a,i,o){var s=u(e[r],e,a);if("throw"!==s.type){var p=s.arg,l=p.value;return l&&"object"==typeof l&&n.call(l,"__await")?Promise.resolve(l.__await).then((function(e){t("next",e,i,o)}),(function(e){t("throw",e,i,o)})):Promise.resolve(l).then((function(e){p.value=e,i(p)}),(function(e){return t("throw",e,i,o)}))}o(s.arg)}(r,a,t,i)}))}return t=t?t.then(i,i):i()}}function h(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,h(e,t),"throw"===t.method))return p;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var r=u(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,p;var a=r.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,p):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,p)}function _(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function b(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function x(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(_,this),this.reset(!0)}function w(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,i=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:C}}function C(){return{value:void 0,done:!0}}return d.prototype=g.constructor=c,c.constructor=d,c[o]=d.displayName="GeneratorFunction",e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===d||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,o in e||(e[o]="GeneratorFunction")),e.prototype=Object.create(g),e},e.awrap=function(e){return{__await:e}},v(T.prototype),T.prototype[i]=function(){return this},e.AsyncIterator=T,e.async=function(t,n,r,a){var i=new T(s(t,n,r,a));return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},v(g),g[o]="Generator",g[a]=function(){return this},g.toString=function(){return"[object Generator]"},e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=w,x.prototype={constructor:x,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(b),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return o.type="throw",o.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],o=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(s&&u){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(s){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var i=a;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=e,o.arg=t,i?(this.method="next",this.next=i.finallyLoc,p):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),p},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),b(n),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;b(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:w(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),p}},e}(e.exports);try{regeneratorRuntime=t}catch(e){Function("r","regeneratorRuntime = r")(t)}}(ge={exports:{}}),ge.exports),Te=a.BigNumber.from(0).toHexString(),he=a.constants.MaxUint256.toString(),_e="115792089237316195423570985008687907853269984665640564039457584007913129639935",be="0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",xe=((me={})[exports.ProtocolAction.default]={limit:"210000",recommended:"210000"},me[exports.ProtocolAction.deposit]={limit:"300000",recommended:"300000"},me[exports.ProtocolAction.withdraw]={limit:"230000",recommended:"300000"},me[exports.ProtocolAction.liquidationCall]={limit:"700000",recommended:"700000"},me[exports.ProtocolAction.liquidationFlash]={limit:"995000",recommended:"995000"},me[exports.ProtocolAction.repay]={limit:"300000",recommended:"300000"},me[exports.ProtocolAction.borrowBCH]={limit:"450000",recommended:"450000"},me[exports.ProtocolAction.withdrawBCH]={limit:"640000",recommended:"640000"},me[exports.ProtocolAction.swapCollateral]={limit:"1000000",recommended:"1000000"},me[exports.ProtocolAction.repayCollateral]={limit:"700000",recommended:"700000"},me),we=((fe={})[exports.Network.mainnet]={SYNTHETIX_PROXY_ADDRESS:"0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f"},fe),Ce=function(){function e(){}return e.connect=function(e,t){return new a.Contract(e,Ae,t)},e}(),Ae=[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"executor",type:"address"}],name:"ExecutorAuthorized",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"executor",type:"address"}],name:"ExecutorUnauthorized",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"newStrategy",type:"address"},{indexed:!0,internalType:"address",name:"initiatorChange",type:"address"}],name:"GovernanceStrategyChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"id",type:"uint256"}],name:"ProposalCanceled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"address",name:"creator",type:"address"},{indexed:!0,internalType:"contract IExecutorWithTimelock",name:"executor",type:"address"},{indexed:!1,internalType:"address[]",name:"targets",type:"address[]"},{indexed:!1,internalType:"uint256[]",name:"values",type:"uint256[]"},{indexed:!1,internalType:"string[]",name:"signatures",type:"string[]"},{indexed:!1,internalType:"bytes[]",name:"calldatas",type:"bytes[]"},{indexed:!1,internalType:"bool[]",name:"withDelegatecalls",type:"bool[]"},{indexed:!1,internalType:"uint256",name:"startBlock",type:"uint256"},{indexed:!1,internalType:"uint256",name:"endBlock",type:"uint256"},{indexed:!1,internalType:"address",name:"strategy",type:"address"},{indexed:!1,internalType:"bytes32",name:"ipfsHash",type:"bytes32"}],name:"ProposalCreated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"address",name:"initiatorExecution",type:"address"}],name:"ProposalExecuted",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"id",type:"uint256"},{indexed:!1,internalType:"uint256",name:"executionTime",type:"uint256"},{indexed:!0,internalType:"address",name:"initiatorQueueing",type:"address"}],name:"ProposalQueued",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"id",type:"uint256"},{indexed:!0,internalType:"address",name:"voter",type:"address"},{indexed:!1,internalType:"bool",name:"support",type:"bool"},{indexed:!1,internalType:"uint256",name:"votingPower",type:"uint256"}],name:"VoteEmitted",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newVotingDelay",type:"uint256"},{indexed:!0,internalType:"address",name:"initiatorChange",type:"address"}],name:"VotingDelayChanged",type:"event"},{inputs:[],name:"__abdicate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"executors",type:"address[]"}],name:"authorizeExecutors",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"proposalId",type:"uint256"}],name:"cancel",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IExecutorWithTimelock",name:"executor",type:"address"},{internalType:"address[]",name:"targets",type:"address[]"},{internalType:"uint256[]",name:"values",type:"uint256[]"},{internalType:"string[]",name:"signatures",type:"string[]"},{internalType:"bytes[]",name:"calldatas",type:"bytes[]"},{internalType:"bool[]",name:"withDelegatecalls",type:"bool[]"},{internalType:"bytes32",name:"ipfsHash",type:"bytes32"}],name:"create",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"proposalId",type:"uint256"}],name:"execute",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"getGovernanceStrategy",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getGuardian",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"proposalId",type:"uint256"}],name:"getProposalById",outputs:[{components:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"address",name:"creator",type:"address"},{internalType:"contract IExecutorWithTimelock",name:"executor",type:"address"},{internalType:"address[]",name:"targets",type:"address[]"},{internalType:"uint256[]",name:"values",type:"uint256[]"},{internalType:"string[]",name:"signatures",type:"string[]"},{internalType:"bytes[]",name:"calldatas",type:"bytes[]"},{internalType:"bool[]",name:"withDelegatecalls",type:"bool[]"},{internalType:"uint256",name:"startBlock",type:"uint256"},{internalType:"uint256",name:"endBlock",type:"uint256"},{internalType:"uint256",name:"executionTime",type:"uint256"},{internalType:"uint256",name:"forVotes",type:"uint256"},{internalType:"uint256",name:"againstVotes",type:"uint256"},{internalType:"bool",name:"executed",type:"bool"},{internalType:"bool",name:"canceled",type:"bool"},{internalType:"address",name:"strategy",type:"address"},{internalType:"bytes32",name:"ipfsHash",type:"bytes32"}],internalType:"struct IAaveGovernanceV2.ProposalWithoutVotes",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"proposalId",type:"uint256"}],name:"getProposalState",outputs:[{internalType:"enum IAaveGovernanceV2.ProposalState",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"getProposalsCount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"proposalId",type:"uint256"},{internalType:"address",name:"voter",type:"address"}],name:"getVoteOnProposal",outputs:[{components:[{internalType:"bool",name:"support",type:"bool"},{internalType:"uint248",name:"votingPower",type:"uint248"}],internalType:"struct IAaveGovernanceV2.Vote",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getVotingDelay",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"executor",type:"address"}],name:"isExecutorAuthorized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"proposalId",type:"uint256"}],name:"queue",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"governanceStrategy",type:"address"}],name:"setGovernanceStrategy",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"votingDelay",type:"uint256"}],name:"setVotingDelay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"proposalId",type:"uint256"},{internalType:"bool",name:"support",type:"bool"}],name:"submitVote",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"proposalId",type:"uint256"},{internalType:"bool",name:"support",type:"bool"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"submitVoteBySignature",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address[]",name:"executors",type:"address[]"}],name:"unauthorizeExecutors",outputs:[],stateMutability:"nonpayable",type:"function"}],Be=function(){function e(){}return e.connect=function(e,t){return new a.Contract(e,Se,t)},e}(),Se=[{inputs:[{internalType:"address[]",name:"assets",type:"address[]"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"to",type:"address"}],name:"claimRewards",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"}],Ee=function(){function e(){}return e.connect=function(e,t){return new a.Contract(e,Pe,t)},e}(),Pe=[{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"stake",outputs:[],stateMutability:"nonpayable",type:"function"}],De=function(){function e(){}return e.connect=function(e,t){return new a.Contract(e,ke,t)},e}(),ke=[{inputs:[{internalType:"address",name:"delegatee",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approveDelegation",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"fromUser",type:"address"},{internalType:"address",name:"toUser",type:"address"}],name:"borrowAllowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],Re=function(){function e(){}return e.connect=function(e,t){return new a.Contract(e,Ie,t)},e}(),Ie=[{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"}],Oe=function(){function e(){}return e.connect=function(e,t){return new a.Contract(e,Ne,t)},e}(),Ne=[{inputs:[{internalType:"address",name:"_token",type:"address"}],name:"getMinter",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_token",type:"address"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"mint",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"payable",type:"function"}],Le=function(){function e(){}return e.connect=function(e,t){return new a.Contract(e,He,t)},e}(),He=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"delegator",type:"address"},{indexed:!0,internalType:"address",name:"delegatee",type:"address"},{indexed:!1,internalType:"enum IGovernancePowerDelegationToken.DelegationType",name:"delegationType",type:"uint8"}],name:"DelegateChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"enum IGovernancePowerDelegationToken.DelegationType",name:"delegationType",type:"uint8"}],name:"DelegatedPowerChanged",type:"event"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"_nonces",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"delegatee",type:"address"}],name:"delegate",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"delegatee",type:"address"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"uint256",name:"expiry",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"delegateBySig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"delegatee",type:"address"},{internalType:"enum IGovernancePowerDelegationToken.DelegationType",name:"delegationType",type:"uint8"}],name:"delegateByType",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"delegatee",type:"address"},{internalType:"enum IGovernancePowerDelegationToken.DelegationType",name:"delegationType",type:"uint8"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"uint256",name:"expiry",type:"uint256"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"}],name:"delegateByTypeBySig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"delegator",type:"address"},{internalType:"enum IGovernancePowerDelegationToken.DelegationType",name:"delegationType",type:"uint8"}],name:"getDelegateeByType",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"enum IGovernancePowerDelegationToken.DelegationType",name:"delegationType",type:"uint8"}],name:"getPowerAtBlock",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"enum IGovernancePowerDelegationToken.DelegationType",name:"delegationType",type:"uint8"}],name:"getPowerCurrent",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"totalSupplyAt",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],Me=function(){function e(){}return e.connect=function(e,t){return new a.Contract(e,Ve,t)},e}(),Ve=[{inputs:[],name:"AAVE",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"STK_AAVE",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"getPropositionPowerAt",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"getTotalPropositionSupplyAt",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"getTotalVotingSupplyAt",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"getVotingPowerAt",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"}],Ue=function(){function e(){}return e.connect=function(e,t){return new a.Contract(e,Ge,t)},e}(),Ge=[{inputs:[{internalType:"uint256",name:"id",type:"uint256"},{internalType:"contract IAaveGovernanceV2",name:"governance",type:"address"}],name:"getProposal",outputs:[{components:[{internalType:"uint256",name:"totalVotingSupply",type:"uint256"},{internalType:"uint256",name:"minimumQuorum",type:"uint256"},{internalType:"uint256",name:"minimumDiff",type:"uint256"},{internalType:"uint256",name:"executionTimeWithGracePeriod",type:"uint256"},{internalType:"uint256",name:"proposalCreated",type:"uint256"},{internalType:"uint256",name:"id",type:"uint256"},{internalType:"address",name:"creator",type:"address"},{internalType:"contract IExecutorWithTimelock",name:"executor",type:"address"},{internalType:"address[]",name:"targets",type:"address[]"},{internalType:"uint256[]",name:"values",type:"uint256[]"},{internalType:"string[]",name:"signatures",type:"string[]"},{internalType:"bytes[]",name:"calldatas",type:"bytes[]"},{internalType:"bool[]",name:"withDelegatecalls",type:"bool[]"},{internalType:"uint256",name:"startBlock",type:"uint256"},{internalType:"uint256",name:"endBlock",type:"uint256"},{internalType:"uint256",name:"executionTime",type:"uint256"},{internalType:"uint256",name:"forVotes",type:"uint256"},{internalType:"uint256",name:"againstVotes",type:"uint256"},{internalType:"bool",name:"executed",type:"bool"},{internalType:"bool",name:"canceled",type:"bool"},{internalType:"address",name:"strategy",type:"address"},{internalType:"bytes32",name:"ipfsHash",type:"bytes32"},{internalType:"enum IAaveGovernanceV2.ProposalState",name:"proposalState",type:"uint8"}],internalType:"struct IGovernanceV2Helper.ProposalStats",name:"proposalStats",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"skip",type:"uint256"},{internalType:"uint256",name:"limit",type:"uint256"},{internalType:"contract IAaveGovernanceV2",name:"governance",type:"address"}],name:"getProposals",outputs:[{components:[{internalType:"uint256",name:"totalVotingSupply",type:"uint256"},{internalType:"uint256",name:"minimumQuorum",type:"uint256"},{internalType:"uint256",name:"minimumDiff",type:"uint256"},{internalType:"uint256",name:"executionTimeWithGracePeriod",type:"uint256"},{internalType:"uint256",name:"proposalCreated",type:"uint256"},{internalType:"uint256",name:"id",type:"uint256"},{internalType:"address",name:"creator",type:"address"},{internalType:"contract IExecutorWithTimelock",name:"executor",type:"address"},{internalType:"address[]",name:"targets",type:"address[]"},{internalType:"uint256[]",name:"values",type:"uint256[]"},{internalType:"string[]",name:"signatures",type:"string[]"},{internalType:"bytes[]",name:"calldatas",type:"bytes[]"},{internalType:"bool[]",name:"withDelegatecalls",type:"bool[]"},{internalType:"uint256",name:"startBlock",type:"uint256"},{internalType:"uint256",name:"endBlock",type:"uint256"},{internalType:"uint256",name:"executionTime",type:"uint256"},{internalType:"uint256",name:"forVotes",type:"uint256"},{internalType:"uint256",name:"againstVotes",type:"uint256"},{internalType:"bool",name:"executed",type:"bool"},{internalType:"bool",name:"canceled",type:"bool"},{internalType:"address",name:"strategy",type:"address"},{internalType:"bytes32",name:"ipfsHash",type:"bytes32"},{internalType:"enum IAaveGovernanceV2.ProposalState",name:"proposalState",type:"uint8"}],internalType:"struct IGovernanceV2Helper.ProposalStats[]",name:"proposalsStats",type:"tuple[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"address[]",name:"tokens",type:"address[]"}],name:"getTokensPower",outputs:[{components:[{internalType:"uint256",name:"votingPower",type:"uint256"},{internalType:"address",name:"delegatedAddressVotingPower",type:"address"},{internalType:"uint256",name:"propositionPower",type:"uint256"},{internalType:"address",name:"delegatedAddressPropositionPower",type:"address"}],internalType:"struct IGovernanceV2Helper.Power[]",name:"power",type:"tuple[]"}],stateMutability:"view",type:"function"}],Fe=function(){function e(){}return e.connect=function(e,t){return new a.Contract(e,qe,t)},e}(),qe=[{inputs:[],name:"FLASHLOAN_PREMIUM_TOTAL",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"reserve",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"interestRateMode",type:"uint256"},{internalType:"uint16",name:"referralCode",type:"uint16"},{internalType:"address",name:"onBehalfOf",type:"address"}],name:"borrow",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"reserve",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"onBehalfOf",type:"address"},{internalType:"uint16",name:"referralCode",type:"uint16"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"receiver",type:"address"},{internalType:"address[]",name:"assets",type:"address[]"},{internalType:"uint256[]",name:"amounts",type:"uint256[]"},{internalType:"uint256[]",name:"modes",type:"uint256[]"},{internalType:"address",name:"onBehalfOf",type:"address"},{internalType:"bytes",name:"params",type:"bytes"},{internalType:"uint16",name:"referralCode",type:"uint16"}],name:"flashLoan",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"collateral",type:"address"},{internalType:"address",name:"reserve",type:"address"},{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"purchaseAmount",type:"uint256"},{internalType:"bool",name:"receiveAToken",type:"bool"}],name:"liquidationCall",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"reserve",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"rateMode",type:"uint256"},{internalType:"address",name:"onBehalfOf",type:"address"}],name:"repay",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"reserve",type:"address"},{internalType:"bool",name:"useAsCollateral",type:"bool"}],name:"setUserUseReserveAsCollateral",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"reserve",type:"address"},{internalType:"uint256",name:"rateMode",type:"uint256"}],name:"swapBorrowRateMode",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"reserve",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"to",type:"address"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"}],We=function(){function e(){}return e.connect=function(e,t){return new a.Contract(e,je,t)},e}(),je=[{inputs:[],name:"LEND",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"migrateFromLEND",outputs:[],stateMutability:"nonpayable",type:"function"}],Ke=function(){function e(){}return e.connect=function(e,t){return new a.Contract(e,Ye,t)},e}(),Ye=[{inputs:[],name:"isBchRequired",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"_token",type:"address"},{internalType:"uint256",name:"_amount",type:"uint256"}],name:"mint",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"payable",type:"function"}],ze=function