@galacticcouncil/sdk-next 1.1.0-pr324-1b08844 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/aave/index.cjs +1 -1
- package/build/aave/index.d.ts +0 -2
- package/build/aave/index.mjs +1 -1
- package/build/aave/types.d.ts +0 -7
- package/build/evm/adapter.d.ts +1 -3
- package/build/evm/client.d.ts +1 -3
- package/build/evm/index.cjs +1 -1
- package/build/evm/index.mjs +1 -1
- package/build/gho/index.d.ts +2 -4
- package/build/index.cjs +1 -1
- package/build/index.d.ts +0 -1
- package/build/index.mjs +1 -1
- package/build/oracle/MmOracleClient.d.ts +1 -1
- package/build/oracle/abi.d.ts +84 -11
- package/build/oracle/index.d.ts +0 -2
- package/build/oracle/types.d.ts +0 -11
- package/build/pool/aave/AaveAbi.d.ts +126 -0
- package/build/pool/aave/AavePoolClient.d.ts +1 -0
- package/build/pool/aave/types.d.ts +6 -0
- package/build/pool/hsm/HsmPoolClient.d.ts +1 -0
- package/build/{gho → pool/hsm}/types.d.ts +1 -1
- package/build/pool/index.cjs +1 -1
- package/build/pool/index.mjs +1 -1
- package/build/pool/stable/StableSwap.d.ts +1 -1
- package/build/pool/stable/StableSwapClient.d.ts +3 -12
- package/build/pool/stable/types.d.ts +1 -12
- package/build/sor/index.cjs +1 -1
- package/build/sor/index.mjs +1 -1
- package/build/tx/TxBuilder.d.ts +2 -2
- package/build/tx/TxBuilderFactory.d.ts +1 -3
- package/build/tx/index.cjs +1 -1
- package/build/tx/index.mjs +1 -1
- package/package.json +1 -6
- package/build/aave/AaveLog.d.ts +0 -4
- package/build/gho/GhoTokenLog.d.ts +0 -4
- package/build/indexer/BlockFetcher.d.ts +0 -10
- package/build/indexer/Indexer.d.ts +0 -19
- package/build/indexer/IndexerStats.d.ts +0 -33
- package/build/indexer/RpcPool.d.ts +0 -12
- package/build/indexer/Semaphore.d.ts +0 -9
- package/build/indexer/index.cjs +0 -1
- package/build/indexer/index.d.ts +0 -9
- package/build/indexer/index.mjs +0 -1
- package/build/indexer/scale.d.ts +0 -1
- package/build/indexer/types.d.ts +0 -17
- package/build/oracle/MmOracleLog.d.ts +0 -4
- package/build/oracle/mappings.d.ts +0 -25
- package/build/pool/stable/StableSwapPeg.d.ts +0 -7
package/build/aave/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Z=Object.create;var C=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var ne=Object.getPrototypeOf,ae=Object.prototype.hasOwnProperty;var re=(l,e)=>{for(var t in e)C(l,t,{get:e[t],enumerable:!0})},F=(l,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of te(e))!ae.call(l,n)&&n!==t&&C(l,n,{get:()=>e[n],enumerable:!(r=ee(e,n))||r.enumerable});return l};var ie=(l,e,t)=>(t=l!=null?Z(ne(l)):{},F(e||!l||!l.__esModule?C(t,"default",{value:l,enumerable:!0}):t,l)),se=l=>F(C({},"__esModule",{value:!0}),l);var de={};re(de,{AAVE_GAS_LIMIT:()=>oe,AAVE_LENDING_POOL_ADDRESS:()=>P,AAVE_POOL_ABI:()=>I,AAVE_POOL_DATA_PROVIDER:()=>E,AAVE_POOL_DATA_PROVIDER_ABI:()=>B,AAVE_POOL_PROXY:()=>M,AAVE_ROUNDING_THRESHOLD:()=>Ae,AAVE_UINT_256_MAX:()=>le,AaveClient:()=>D,AaveLog:()=>O,AaveUtils:()=>U});module.exports=se(de);var I=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!1,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"onBehalfOf",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!0,internalType:"uint16",name:"referralCode",type:"uint16"}],name:"Supply",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"to",type:"address"}],name:"withdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!1,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"onBehalfOf",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"enum DataTypes.InterestRateMode",name:"interestRateMode",type:"uint8"},{indexed:!1,internalType:"uint256",name:"borrowRate",type:"uint256"},{indexed:!0,internalType:"uint16",name:"referralCode",type:"uint16"}],name:"Borrow",type:"event"},{inputs:[{internalType:"address",name:"asset",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"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"repayer",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bool",name:"useATokens",type:"bool"}],name:"Repay",type:"event"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"getUserAccountData",outputs:[{internalType:"uint256",name:"totalCollateralBase",type:"uint256"},{internalType:"uint256",name:"totalDebtBase",type:"uint256"},{internalType:"uint256",name:"availableBorrowsBase",type:"uint256"},{internalType:"uint256",name:"currentLiquidationThreshold",type:"uint256"},{internalType:"uint256",name:"ltv",type:"uint256"},{internalType:"uint256",name:"healthFactor",type:"uint256"}],stateMutability:"view",type:"function"}];var B=[{inputs:[{internalType:"contract IEACAggregatorProxy",name:"_networkBaseTokenPriceInUsdProxyAggregator",type:"address"},{internalType:"contract IEACAggregatorProxy",name:"_marketReferenceCurrencyPriceInUsdProxyAggregator",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"ETH_CURRENCY_UNIT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MKR_ADDRESS",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"_bytes32",type:"bytes32"}],name:"bytes32ToString",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"contract IPoolAddressesProvider",name:"provider",type:"address"}],name:"getReservesData",outputs:[{components:[{internalType:"address",name:"underlyingAsset",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"uint256",name:"decimals",type:"uint256"},{internalType:"uint256",name:"baseLTVasCollateral",type:"uint256"},{internalType:"uint256",name:"reserveLiquidationThreshold",type:"uint256"},{internalType:"uint256",name:"reserveLiquidationBonus",type:"uint256"},{internalType:"uint256",name:"reserveFactor",type:"uint256"},{internalType:"bool",name:"usageAsCollateralEnabled",type:"bool"},{internalType:"bool",name:"borrowingEnabled",type:"bool"},{internalType:"bool",name:"stableBorrowRateEnabled",type:"bool"},{internalType:"bool",name:"isActive",type:"bool"},{internalType:"bool",name:"isFrozen",type:"bool"},{internalType:"uint128",name:"liquidityIndex",type:"uint128"},{internalType:"uint128",name:"variableBorrowIndex",type:"uint128"},{internalType:"uint128",name:"liquidityRate",type:"uint128"},{internalType:"uint128",name:"variableBorrowRate",type:"uint128"},{internalType:"uint128",name:"stableBorrowRate",type:"uint128"},{internalType:"uint40",name:"lastUpdateTimestamp",type:"uint40"},{internalType:"address",name:"aTokenAddress",type:"address"},{internalType:"address",name:"stableDebtTokenAddress",type:"address"},{internalType:"address",name:"variableDebtTokenAddress",type:"address"},{internalType:"address",name:"interestRateStrategyAddress",type:"address"},{internalType:"uint256",name:"availableLiquidity",type:"uint256"},{internalType:"uint256",name:"totalPrincipalStableDebt",type:"uint256"},{internalType:"uint256",name:"averageStableRate",type:"uint256"},{internalType:"uint256",name:"stableDebtLastUpdateTimestamp",type:"uint256"},{internalType:"uint256",name:"totalScaledVariableDebt",type:"uint256"},{internalType:"uint256",name:"priceInMarketReferenceCurrency",type:"uint256"},{internalType:"address",name:"priceOracle",type:"address"},{internalType:"uint256",name:"variableRateSlope1",type:"uint256"},{internalType:"uint256",name:"variableRateSlope2",type:"uint256"},{internalType:"uint256",name:"stableRateSlope1",type:"uint256"},{internalType:"uint256",name:"stableRateSlope2",type:"uint256"},{internalType:"uint256",name:"baseStableBorrowRate",type:"uint256"},{internalType:"uint256",name:"baseVariableBorrowRate",type:"uint256"},{internalType:"uint256",name:"optimalUsageRatio",type:"uint256"},{internalType:"bool",name:"isPaused",type:"bool"},{internalType:"bool",name:"isSiloedBorrowing",type:"bool"},{internalType:"uint128",name:"accruedToTreasury",type:"uint128"},{internalType:"uint128",name:"unbacked",type:"uint128"},{internalType:"uint128",name:"isolationModeTotalDebt",type:"uint128"},{internalType:"bool",name:"flashLoanEnabled",type:"bool"},{internalType:"uint256",name:"debtCeiling",type:"uint256"},{internalType:"uint256",name:"debtCeilingDecimals",type:"uint256"},{internalType:"uint8",name:"eModeCategoryId",type:"uint8"},{internalType:"uint256",name:"borrowCap",type:"uint256"},{internalType:"uint256",name:"supplyCap",type:"uint256"},{internalType:"uint16",name:"eModeLtv",type:"uint16"},{internalType:"uint16",name:"eModeLiquidationThreshold",type:"uint16"},{internalType:"uint16",name:"eModeLiquidationBonus",type:"uint16"},{internalType:"address",name:"eModePriceSource",type:"address"},{internalType:"string",name:"eModeLabel",type:"string"},{internalType:"bool",name:"borrowableInIsolation",type:"bool"}],internalType:"struct IUiPoolDataProviderV3.AggregatedReserveData[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"marketReferenceCurrencyUnit",type:"uint256"},{internalType:"int256",name:"marketReferenceCurrencyPriceInUsd",type:"int256"},{internalType:"int256",name:"networkBaseTokenPriceInUsd",type:"int256"},{internalType:"uint8",name:"networkBaseTokenPriceDecimals",type:"uint8"}],internalType:"struct IUiPoolDataProviderV3.BaseCurrencyInfo",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IPoolAddressesProvider",name:"provider",type:"address"}],name:"getReservesList",outputs:[{internalType:"address[]",name:"",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IPoolAddressesProvider",name:"provider",type:"address"},{internalType:"address",name:"user",type:"address"}],name:"getUserReservesData",outputs:[{components:[{internalType:"address",name:"underlyingAsset",type:"address"},{internalType:"uint256",name:"scaledATokenBalance",type:"uint256"},{internalType:"bool",name:"usageAsCollateralEnabledOnUser",type:"bool"},{internalType:"uint256",name:"stableBorrowRate",type:"uint256"},{internalType:"uint256",name:"scaledVariableDebt",type:"uint256"},{internalType:"uint256",name:"principalStableDebt",type:"uint256"},{internalType:"uint256",name:"stableBorrowLastUpdateTimestamp",type:"uint256"}],internalType:"struct IUiPoolDataProviderV3.UserReserveData[]",name:"",type:"tuple[]"},{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"marketReferenceCurrencyPriceInUsdProxyAggregator",outputs:[{internalType:"contract IEACAggregatorProxy",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"networkBaseTokenPriceInUsdProxyAggregator",outputs:[{internalType:"contract IEACAggregatorProxy",name:"",type:"address"}],stateMutability:"view",type:"function"}];var M="0x1b02E051683b5cfaC5929C25E84adb26ECf87B38",E="0x112b087b60C1a166130d59266363C45F8aa99db0",P="0xf3Ba4D1b50f78301BDD7EAEa9B67822A15FCA691",oe=1000000n,Ae=5,le=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var D=class{client;constructor(e){this.client=e.getWsProvider()}async getBlockTimestamp(){let e=await this.client.getBlock();return Number(e.timestamp)}async getReservesData(){return await this.client.readContract({abi:B,address:E,args:[P],functionName:"getReservesData"})}async getUserReservesData(e){return await this.client.readContract({abi:B,address:E,args:[P,e],functionName:"getUserReservesData"})}async getUserAccountData(e){return await this.client.readContract({abi:I,address:M,args:[e],functionName:"getUserAccountData"})}};var N=require("polkadot-api"),q=require("viem");var O=class{static parse(e){let{topics:t,data:r}=e.log,n=N.Binary.toHex(r);try{let{eventName:a,args:i}=(0,q.decodeEventLog)({abi:I,topics:t,data:n}),s=i.reserve.toLowerCase();return{eventName:a,reserve:s,key:`${a}:${s}`}}catch{return}}};var o=ie(require("big.js")),f=require("@galacticcouncil/common");var{ERC20:R}=f.erc20,{H160:k}=f.h160,ue=1.01,pe=31536000n,V=4,_=-1,L=10n**27n,U=class{client;constructor(e){this.client=new D(e)}async getSummary(e){let t=k.fromAny(e),[r,n,a,i]=await Promise.all([this.client.getReservesData(),this.client.getUserReservesData(t),this.client.getUserAccountData(t),this.client.getBlockTimestamp()]),[s]=r,[p,d]=n,[y,m,u,A,T,g]=a,b=f.big.toDecimal(g,18),h=[];for(let v of p){let x=v.underlyingAsset.toLowerCase(),c=s.find(({underlyingAsset:Q})=>Q.toLowerCase()===x);if(!c)throw new Error("Missing pool reserve for "+x);let S=v.scaledATokenBalance,w=c.liquidityIndex,H=c.liquidityRate,W=c.availableLiquidity,$=c.priceInMarketReferenceCurrency,G=i+6,Y=this.calculateLinearInterest(H,c.lastUpdateTimestamp,G),X=w*Y/L,j=S*X/L,z=Number(d!==0&&d===c.eModeCategoryId?c.eModeLiquidationThreshold:c.reserveLiquidationThreshold)/1e4,K=c.usageAsCollateralEnabled&&v.usageAsCollateralEnabledOnUser&&v.scaledATokenBalance>0n,J=R.toAssetId(x);h.push({aTokenBalance:j,availableLiquidity:W,decimals:Number(c.decimals),isCollateral:K,priceInRef:$,reserveId:J,reserveAsset:x,reserveLiquidationThreshold:z})}return{healthFactor:Number(b),currentLiquidationThreshold:Number(f.big.toDecimal(A,V)),totalCollateral:y,totalDebt:m,reserves:h}}async hasBorrowPositions(e){let t=k.fromAny(e),r=await this.client.getUserAccountData(t),[n,a]=r;return a>0n}async getHealthFactor(e){let t=k.fromAny(e),r=await this.client.getUserAccountData(t),[n,a,i,s,p,d]=r;return this.calculateHealthFactorFromBalances(a,n,s)}async getHealthFactorAfterWithdraw(e,t,r){let{totalCollateral:n,totalDebt:a,reserves:i,currentLiquidationThreshold:s}=await this.getSummary(e);if(a===0n)return _;let p=R.fromAssetId(t),d=i.find(x=>x.reserveAsset===p);if(!d)throw new Error("Missing reserve ctx for "+p);let{decimals:y,isCollateral:m,priceInRef:u,reserveLiquidationThreshold:A}=d,T=f.big.toBigInt(r,y),g=m?T*u/10n**BigInt(y):0n,b=n-g;if(b<=0n)return 0;let h=(0,o.default)(n.toString()).mul(s).minus((0,o.default)(g.toString()).mul(A)).div(b.toString()),v=(0,o.default)(b.toString()).mul(h).div(a.toString()).toFixed(6,o.default.roundDown);return Number(v)}async getHealthFactorAfterSupply(e,t,r){let{totalCollateral:n,totalDebt:a,reserves:i,currentLiquidationThreshold:s}=await this.getSummary(e);if(a===0n)return _;let p=R.fromAssetId(t),d=i.find(v=>v.reserveAsset===p);if(!d)throw new Error("Missing reserve ctx for "+p);let{decimals:y,priceInRef:m,reserveLiquidationThreshold:u}=d,T=f.big.toBigInt(r,y)*m/10n**BigInt(y),g=n+T;if(g<=0n)return 0;let b=(0,o.default)(n.toString()).mul(s).plus((0,o.default)(T.toString()).mul(u)).div(g.toString()),h=(0,o.default)(g.toString()).mul(b).div(a.toString()).toFixed(6,o.default.roundDown);return Number(h)}async getHealthFactorAfterSwap(e,t,r,n,a){let{totalDebt:i,reserves:s,healthFactor:p}=await this.getSummary(e);if(i===0n)return _;let d=R.fromAssetId(r),y=R.fromAssetId(a),m=s.find(w=>w.reserveAsset===d),u=s.find(w=>w.reserveAsset===y);if(!m)throw new Error(`Missing reserve ctx for ${d}`);if(!u)throw new Error(`Missing reserve ctx for ${u}`);let A=f.big.toBigInt(t,m.decimals),T=f.big.toBigInt(n,u.decimals),g=A*m.priceInRef/10n**BigInt(m.decimals),b=T*u.priceInRef/10n**BigInt(u.decimals),h=m.isCollateral?(0,o.default)(g.toString()).mul(m.reserveLiquidationThreshold):(0,o.default)(0),c=(u.isCollateral?(0,o.default)(b.toString()).mul(u.reserveLiquidationThreshold):(0,o.default)(0)).minus(h).div(i.toString()),S=(0,o.default)(p).plus(c).toFixed(6,o.default.roundDown);return Number(S)}async getMaxWithdraw(e,t){let{totalDebt:r,reserves:n,healthFactor:a}=await this.getSummary(e),i=R.fromAssetId(t),s=n.find(p=>p.reserveAsset===i);if(!s)throw new Error("Missing reserve ctx for "+i);return this.calculateWithdrawMax(s,r,a)}async getMaxWithdrawAll(e){let{totalDebt:t,reserves:r,healthFactor:n}=await this.getSummary(e),a={};for(let i of r){let s=this.calculateWithdrawMax(i,t,n);i.reserveId&&(a[i.reserveId]=s)}return a}calculateWithdrawMax(e,t,r){let{aTokenBalance:n,availableLiquidity:a,decimals:i,priceInRef:s,reserveLiquidationThreshold:p,isCollateral:d}=e,y=n;if(d&&t>0n){let u=r-ue;if(u>0){let A=(0,o.default)(u).mul(t.toString()).div(p).toFixed(0,o.default.roundDown),T=(0,o.default)(A).div(s.toString()).mul(10**i).toFixed(0,o.default.roundDown);y=n<BigInt(T)?n:BigInt(T)}else y=0n}return{amount:y<a?y:a,decimals:i}}calculateLinearInterest(e,t,r){let n=r-t;if(n<=0)return L;let a=e*BigInt(n)/pe;return L+a}calculateHealthFactorFromBalances(e,t,r){if(e===0n)return _;let n=t*r/e,a=f.big.toDecimal(n,V);return Number(a)}};0&&(module.exports={AAVE_GAS_LIMIT,AAVE_LENDING_POOL_ADDRESS,AAVE_POOL_ABI,AAVE_POOL_DATA_PROVIDER,AAVE_POOL_DATA_PROVIDER_ABI,AAVE_POOL_PROXY,AAVE_ROUNDING_THRESHOLD,AAVE_UINT_256_MAX,AaveClient,AaveLog,AaveUtils});
|
|
1
|
+
"use strict";var K=Object.create;var D=Object.defineProperty;var J=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var Z=Object.getPrototypeOf,ee=Object.prototype.hasOwnProperty;var te=(l,e)=>{for(var t in e)D(l,t,{get:e[t],enumerable:!0})},U=(l,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Q(e))!ee.call(l,n)&&n!==t&&D(l,n,{get:()=>e[n],enumerable:!(r=J(e,n))||r.enumerable});return l};var ne=(l,e,t)=>(t=l!=null?K(Z(l)):{},U(e||!l||!l.__esModule?D(t,"default",{value:l,enumerable:!0}):t,l)),ae=l=>U(D({},"__esModule",{value:!0}),l);var le={};te(le,{AAVE_GAS_LIMIT:()=>re,AAVE_LENDING_POOL_ADDRESS:()=>P,AAVE_POOL_ABI:()=>S,AAVE_POOL_DATA_PROVIDER:()=>B,AAVE_POOL_DATA_PROVIDER_ABI:()=>C,AAVE_POOL_PROXY:()=>M,AAVE_ROUNDING_THRESHOLD:()=>ge,AAVE_UINT_256_MAX:()=>ie,AaveClient:()=>I,AaveUtils:()=>k});module.exports=ae(le);var S=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!1,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"onBehalfOf",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!0,internalType:"uint16",name:"referralCode",type:"uint16"}],name:"Supply",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"to",type:"address"}],name:"withdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!1,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"onBehalfOf",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"enum DataTypes.InterestRateMode",name:"interestRateMode",type:"uint8"},{indexed:!1,internalType:"uint256",name:"borrowRate",type:"uint256"},{indexed:!0,internalType:"uint16",name:"referralCode",type:"uint16"}],name:"Borrow",type:"event"},{inputs:[{internalType:"address",name:"asset",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"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"repayer",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bool",name:"useATokens",type:"bool"}],name:"Repay",type:"event"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"getUserAccountData",outputs:[{internalType:"uint256",name:"totalCollateralBase",type:"uint256"},{internalType:"uint256",name:"totalDebtBase",type:"uint256"},{internalType:"uint256",name:"availableBorrowsBase",type:"uint256"},{internalType:"uint256",name:"currentLiquidationThreshold",type:"uint256"},{internalType:"uint256",name:"ltv",type:"uint256"},{internalType:"uint256",name:"healthFactor",type:"uint256"}],stateMutability:"view",type:"function"}];var C=[{inputs:[{internalType:"contract IEACAggregatorProxy",name:"_networkBaseTokenPriceInUsdProxyAggregator",type:"address"},{internalType:"contract IEACAggregatorProxy",name:"_marketReferenceCurrencyPriceInUsdProxyAggregator",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"ETH_CURRENCY_UNIT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MKR_ADDRESS",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"_bytes32",type:"bytes32"}],name:"bytes32ToString",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"contract IPoolAddressesProvider",name:"provider",type:"address"}],name:"getReservesData",outputs:[{components:[{internalType:"address",name:"underlyingAsset",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"uint256",name:"decimals",type:"uint256"},{internalType:"uint256",name:"baseLTVasCollateral",type:"uint256"},{internalType:"uint256",name:"reserveLiquidationThreshold",type:"uint256"},{internalType:"uint256",name:"reserveLiquidationBonus",type:"uint256"},{internalType:"uint256",name:"reserveFactor",type:"uint256"},{internalType:"bool",name:"usageAsCollateralEnabled",type:"bool"},{internalType:"bool",name:"borrowingEnabled",type:"bool"},{internalType:"bool",name:"stableBorrowRateEnabled",type:"bool"},{internalType:"bool",name:"isActive",type:"bool"},{internalType:"bool",name:"isFrozen",type:"bool"},{internalType:"uint128",name:"liquidityIndex",type:"uint128"},{internalType:"uint128",name:"variableBorrowIndex",type:"uint128"},{internalType:"uint128",name:"liquidityRate",type:"uint128"},{internalType:"uint128",name:"variableBorrowRate",type:"uint128"},{internalType:"uint128",name:"stableBorrowRate",type:"uint128"},{internalType:"uint40",name:"lastUpdateTimestamp",type:"uint40"},{internalType:"address",name:"aTokenAddress",type:"address"},{internalType:"address",name:"stableDebtTokenAddress",type:"address"},{internalType:"address",name:"variableDebtTokenAddress",type:"address"},{internalType:"address",name:"interestRateStrategyAddress",type:"address"},{internalType:"uint256",name:"availableLiquidity",type:"uint256"},{internalType:"uint256",name:"totalPrincipalStableDebt",type:"uint256"},{internalType:"uint256",name:"averageStableRate",type:"uint256"},{internalType:"uint256",name:"stableDebtLastUpdateTimestamp",type:"uint256"},{internalType:"uint256",name:"totalScaledVariableDebt",type:"uint256"},{internalType:"uint256",name:"priceInMarketReferenceCurrency",type:"uint256"},{internalType:"address",name:"priceOracle",type:"address"},{internalType:"uint256",name:"variableRateSlope1",type:"uint256"},{internalType:"uint256",name:"variableRateSlope2",type:"uint256"},{internalType:"uint256",name:"stableRateSlope1",type:"uint256"},{internalType:"uint256",name:"stableRateSlope2",type:"uint256"},{internalType:"uint256",name:"baseStableBorrowRate",type:"uint256"},{internalType:"uint256",name:"baseVariableBorrowRate",type:"uint256"},{internalType:"uint256",name:"optimalUsageRatio",type:"uint256"},{internalType:"bool",name:"isPaused",type:"bool"},{internalType:"bool",name:"isSiloedBorrowing",type:"bool"},{internalType:"uint128",name:"accruedToTreasury",type:"uint128"},{internalType:"uint128",name:"unbacked",type:"uint128"},{internalType:"uint128",name:"isolationModeTotalDebt",type:"uint128"},{internalType:"bool",name:"flashLoanEnabled",type:"bool"},{internalType:"uint256",name:"debtCeiling",type:"uint256"},{internalType:"uint256",name:"debtCeilingDecimals",type:"uint256"},{internalType:"uint8",name:"eModeCategoryId",type:"uint8"},{internalType:"uint256",name:"borrowCap",type:"uint256"},{internalType:"uint256",name:"supplyCap",type:"uint256"},{internalType:"uint16",name:"eModeLtv",type:"uint16"},{internalType:"uint16",name:"eModeLiquidationThreshold",type:"uint16"},{internalType:"uint16",name:"eModeLiquidationBonus",type:"uint16"},{internalType:"address",name:"eModePriceSource",type:"address"},{internalType:"string",name:"eModeLabel",type:"string"},{internalType:"bool",name:"borrowableInIsolation",type:"bool"}],internalType:"struct IUiPoolDataProviderV3.AggregatedReserveData[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"marketReferenceCurrencyUnit",type:"uint256"},{internalType:"int256",name:"marketReferenceCurrencyPriceInUsd",type:"int256"},{internalType:"int256",name:"networkBaseTokenPriceInUsd",type:"int256"},{internalType:"uint8",name:"networkBaseTokenPriceDecimals",type:"uint8"}],internalType:"struct IUiPoolDataProviderV3.BaseCurrencyInfo",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IPoolAddressesProvider",name:"provider",type:"address"}],name:"getReservesList",outputs:[{internalType:"address[]",name:"",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IPoolAddressesProvider",name:"provider",type:"address"},{internalType:"address",name:"user",type:"address"}],name:"getUserReservesData",outputs:[{components:[{internalType:"address",name:"underlyingAsset",type:"address"},{internalType:"uint256",name:"scaledATokenBalance",type:"uint256"},{internalType:"bool",name:"usageAsCollateralEnabledOnUser",type:"bool"},{internalType:"uint256",name:"stableBorrowRate",type:"uint256"},{internalType:"uint256",name:"scaledVariableDebt",type:"uint256"},{internalType:"uint256",name:"principalStableDebt",type:"uint256"},{internalType:"uint256",name:"stableBorrowLastUpdateTimestamp",type:"uint256"}],internalType:"struct IUiPoolDataProviderV3.UserReserveData[]",name:"",type:"tuple[]"},{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"marketReferenceCurrencyPriceInUsdProxyAggregator",outputs:[{internalType:"contract IEACAggregatorProxy",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"networkBaseTokenPriceInUsdProxyAggregator",outputs:[{internalType:"contract IEACAggregatorProxy",name:"",type:"address"}],stateMutability:"view",type:"function"}];var M="0x1b02E051683b5cfaC5929C25E84adb26ECf87B38",B="0x112b087b60C1a166130d59266363C45F8aa99db0",P="0xf3Ba4D1b50f78301BDD7EAEa9B67822A15FCA691",re=1000000n,ge=5,ie=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var I=class{client;constructor(e){this.client=e.getWsProvider()}async getBlockTimestamp(){let e=await this.client.getBlock();return Number(e.timestamp)}async getReservesData(){return await this.client.readContract({abi:C,address:B,args:[P],functionName:"getReservesData"})}async getUserReservesData(e){return await this.client.readContract({abi:C,address:B,args:[P,e],functionName:"getUserReservesData"})}async getUserAccountData(e){return await this.client.readContract({abi:S,address:M,args:[e],functionName:"getUserAccountData"})}};var s=ne(require("big.js")),f=require("@galacticcouncil/common");var{ERC20:w}=f.erc20,{H160:O}=f.h160,se=1.01,oe=31536000n,F=4,E=-1,_=10n**27n,k=class{client;constructor(e){this.client=new I(e)}async getSummary(e){let t=O.fromAny(e),[r,n,a,i]=await Promise.all([this.client.getReservesData(),this.client.getUserReservesData(t),this.client.getUserAccountData(t),this.client.getBlockTimestamp()]),[o]=r,[p,d]=n,[y,m,u,A,T,g]=a,b=f.big.toDecimal(g,18),h=[];for(let v of p){let R=v.underlyingAsset.toLowerCase(),c=o.find(({underlyingAsset:z})=>z.toLowerCase()===R);if(!c)throw new Error("Missing pool reserve for "+R);let L=v.scaledATokenBalance,x=c.liquidityIndex,q=c.liquidityRate,N=c.availableLiquidity,V=c.priceInMarketReferenceCurrency,W=i+6,H=this.calculateLinearInterest(q,c.lastUpdateTimestamp,W),$=x*H/_,G=L*$/_,Y=Number(d!==0&&d===c.eModeCategoryId?c.eModeLiquidationThreshold:c.reserveLiquidationThreshold)/1e4,X=c.usageAsCollateralEnabled&&v.usageAsCollateralEnabledOnUser&&v.scaledATokenBalance>0n,j=w.toAssetId(R);h.push({aTokenBalance:G,availableLiquidity:N,decimals:Number(c.decimals),isCollateral:X,priceInRef:V,reserveId:j,reserveAsset:R,reserveLiquidationThreshold:Y})}return{healthFactor:Number(b),currentLiquidationThreshold:Number(f.big.toDecimal(A,F)),totalCollateral:y,totalDebt:m,reserves:h}}async hasBorrowPositions(e){let t=O.fromAny(e),r=await this.client.getUserAccountData(t),[n,a]=r;return a>0n}async getHealthFactor(e){let t=O.fromAny(e),r=await this.client.getUserAccountData(t),[n,a,i,o,p,d]=r;return this.calculateHealthFactorFromBalances(a,n,o)}async getHealthFactorAfterWithdraw(e,t,r){let{totalCollateral:n,totalDebt:a,reserves:i,currentLiquidationThreshold:o}=await this.getSummary(e);if(a===0n)return E;let p=w.fromAssetId(t),d=i.find(R=>R.reserveAsset===p);if(!d)throw new Error("Missing reserve ctx for "+p);let{decimals:y,isCollateral:m,priceInRef:u,reserveLiquidationThreshold:A}=d,T=f.big.toBigInt(r,y),g=m?T*u/10n**BigInt(y):0n,b=n-g;if(b<=0n)return 0;let h=(0,s.default)(n.toString()).mul(o).minus((0,s.default)(g.toString()).mul(A)).div(b.toString()),v=(0,s.default)(b.toString()).mul(h).div(a.toString()).toFixed(6,s.default.roundDown);return Number(v)}async getHealthFactorAfterSupply(e,t,r){let{totalCollateral:n,totalDebt:a,reserves:i,currentLiquidationThreshold:o}=await this.getSummary(e);if(a===0n)return E;let p=w.fromAssetId(t),d=i.find(v=>v.reserveAsset===p);if(!d)throw new Error("Missing reserve ctx for "+p);let{decimals:y,priceInRef:m,reserveLiquidationThreshold:u}=d,T=f.big.toBigInt(r,y)*m/10n**BigInt(y),g=n+T;if(g<=0n)return 0;let b=(0,s.default)(n.toString()).mul(o).plus((0,s.default)(T.toString()).mul(u)).div(g.toString()),h=(0,s.default)(g.toString()).mul(b).div(a.toString()).toFixed(6,s.default.roundDown);return Number(h)}async getHealthFactorAfterSwap(e,t,r,n,a){let{totalDebt:i,reserves:o,healthFactor:p}=await this.getSummary(e);if(i===0n)return E;let d=w.fromAssetId(r),y=w.fromAssetId(a),m=o.find(x=>x.reserveAsset===d),u=o.find(x=>x.reserveAsset===y);if(!m)throw new Error(`Missing reserve ctx for ${d}`);if(!u)throw new Error(`Missing reserve ctx for ${u}`);let A=f.big.toBigInt(t,m.decimals),T=f.big.toBigInt(n,u.decimals),g=A*m.priceInRef/10n**BigInt(m.decimals),b=T*u.priceInRef/10n**BigInt(u.decimals),h=m.isCollateral?(0,s.default)(g.toString()).mul(m.reserveLiquidationThreshold):(0,s.default)(0),c=(u.isCollateral?(0,s.default)(b.toString()).mul(u.reserveLiquidationThreshold):(0,s.default)(0)).minus(h).div(i.toString()),L=(0,s.default)(p).plus(c).toFixed(6,s.default.roundDown);return Number(L)}async getMaxWithdraw(e,t){let{totalDebt:r,reserves:n,healthFactor:a}=await this.getSummary(e),i=w.fromAssetId(t),o=n.find(p=>p.reserveAsset===i);if(!o)throw new Error("Missing reserve ctx for "+i);return this.calculateWithdrawMax(o,r,a)}async getMaxWithdrawAll(e){let{totalDebt:t,reserves:r,healthFactor:n}=await this.getSummary(e),a={};for(let i of r){let o=this.calculateWithdrawMax(i,t,n);i.reserveId&&(a[i.reserveId]=o)}return a}calculateWithdrawMax(e,t,r){let{aTokenBalance:n,availableLiquidity:a,decimals:i,priceInRef:o,reserveLiquidationThreshold:p,isCollateral:d}=e,y=n;if(d&&t>0n){let u=r-se;if(u>0){let A=(0,s.default)(u).mul(t.toString()).div(p).toFixed(0,s.default.roundDown),T=(0,s.default)(A).div(o.toString()).mul(10**i).toFixed(0,s.default.roundDown);y=n<BigInt(T)?n:BigInt(T)}else y=0n}return{amount:y<a?y:a,decimals:i}}calculateLinearInterest(e,t,r){let n=r-t;if(n<=0)return _;let a=e*BigInt(n)/oe;return _+a}calculateHealthFactorFromBalances(e,t,r){if(e===0n)return E;let n=t*r/e,a=f.big.toDecimal(n,F);return Number(a)}};0&&(module.exports={AAVE_GAS_LIMIT,AAVE_LENDING_POOL_ADDRESS,AAVE_POOL_ABI,AAVE_POOL_DATA_PROVIDER,AAVE_POOL_DATA_PROVIDER_ABI,AAVE_POOL_PROXY,AAVE_ROUNDING_THRESHOLD,AAVE_UINT_256_MAX,AaveClient,AaveUtils});
|
package/build/aave/index.d.ts
CHANGED
package/build/aave/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import z from"buffer";typeof window<"u"&&(window.Buffer=z.Buffer);var R=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!1,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"onBehalfOf",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!0,internalType:"uint16",name:"referralCode",type:"uint16"}],name:"Supply",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"to",type:"address"}],name:"withdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!1,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"onBehalfOf",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"enum DataTypes.InterestRateMode",name:"interestRateMode",type:"uint8"},{indexed:!1,internalType:"uint256",name:"borrowRate",type:"uint256"},{indexed:!0,internalType:"uint16",name:"referralCode",type:"uint16"}],name:"Borrow",type:"event"},{inputs:[{internalType:"address",name:"asset",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"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"repayer",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bool",name:"useATokens",type:"bool"}],name:"Repay",type:"event"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"getUserAccountData",outputs:[{internalType:"uint256",name:"totalCollateralBase",type:"uint256"},{internalType:"uint256",name:"totalDebtBase",type:"uint256"},{internalType:"uint256",name:"availableBorrowsBase",type:"uint256"},{internalType:"uint256",name:"currentLiquidationThreshold",type:"uint256"},{internalType:"uint256",name:"ltv",type:"uint256"},{internalType:"uint256",name:"healthFactor",type:"uint256"}],stateMutability:"view",type:"function"}];var E=[{inputs:[{internalType:"contract IEACAggregatorProxy",name:"_networkBaseTokenPriceInUsdProxyAggregator",type:"address"},{internalType:"contract IEACAggregatorProxy",name:"_marketReferenceCurrencyPriceInUsdProxyAggregator",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"ETH_CURRENCY_UNIT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MKR_ADDRESS",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"_bytes32",type:"bytes32"}],name:"bytes32ToString",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"contract IPoolAddressesProvider",name:"provider",type:"address"}],name:"getReservesData",outputs:[{components:[{internalType:"address",name:"underlyingAsset",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"uint256",name:"decimals",type:"uint256"},{internalType:"uint256",name:"baseLTVasCollateral",type:"uint256"},{internalType:"uint256",name:"reserveLiquidationThreshold",type:"uint256"},{internalType:"uint256",name:"reserveLiquidationBonus",type:"uint256"},{internalType:"uint256",name:"reserveFactor",type:"uint256"},{internalType:"bool",name:"usageAsCollateralEnabled",type:"bool"},{internalType:"bool",name:"borrowingEnabled",type:"bool"},{internalType:"bool",name:"stableBorrowRateEnabled",type:"bool"},{internalType:"bool",name:"isActive",type:"bool"},{internalType:"bool",name:"isFrozen",type:"bool"},{internalType:"uint128",name:"liquidityIndex",type:"uint128"},{internalType:"uint128",name:"variableBorrowIndex",type:"uint128"},{internalType:"uint128",name:"liquidityRate",type:"uint128"},{internalType:"uint128",name:"variableBorrowRate",type:"uint128"},{internalType:"uint128",name:"stableBorrowRate",type:"uint128"},{internalType:"uint40",name:"lastUpdateTimestamp",type:"uint40"},{internalType:"address",name:"aTokenAddress",type:"address"},{internalType:"address",name:"stableDebtTokenAddress",type:"address"},{internalType:"address",name:"variableDebtTokenAddress",type:"address"},{internalType:"address",name:"interestRateStrategyAddress",type:"address"},{internalType:"uint256",name:"availableLiquidity",type:"uint256"},{internalType:"uint256",name:"totalPrincipalStableDebt",type:"uint256"},{internalType:"uint256",name:"averageStableRate",type:"uint256"},{internalType:"uint256",name:"stableDebtLastUpdateTimestamp",type:"uint256"},{internalType:"uint256",name:"totalScaledVariableDebt",type:"uint256"},{internalType:"uint256",name:"priceInMarketReferenceCurrency",type:"uint256"},{internalType:"address",name:"priceOracle",type:"address"},{internalType:"uint256",name:"variableRateSlope1",type:"uint256"},{internalType:"uint256",name:"variableRateSlope2",type:"uint256"},{internalType:"uint256",name:"stableRateSlope1",type:"uint256"},{internalType:"uint256",name:"stableRateSlope2",type:"uint256"},{internalType:"uint256",name:"baseStableBorrowRate",type:"uint256"},{internalType:"uint256",name:"baseVariableBorrowRate",type:"uint256"},{internalType:"uint256",name:"optimalUsageRatio",type:"uint256"},{internalType:"bool",name:"isPaused",type:"bool"},{internalType:"bool",name:"isSiloedBorrowing",type:"bool"},{internalType:"uint128",name:"accruedToTreasury",type:"uint128"},{internalType:"uint128",name:"unbacked",type:"uint128"},{internalType:"uint128",name:"isolationModeTotalDebt",type:"uint128"},{internalType:"bool",name:"flashLoanEnabled",type:"bool"},{internalType:"uint256",name:"debtCeiling",type:"uint256"},{internalType:"uint256",name:"debtCeilingDecimals",type:"uint256"},{internalType:"uint8",name:"eModeCategoryId",type:"uint8"},{internalType:"uint256",name:"borrowCap",type:"uint256"},{internalType:"uint256",name:"supplyCap",type:"uint256"},{internalType:"uint16",name:"eModeLtv",type:"uint16"},{internalType:"uint16",name:"eModeLiquidationThreshold",type:"uint16"},{internalType:"uint16",name:"eModeLiquidationBonus",type:"uint16"},{internalType:"address",name:"eModePriceSource",type:"address"},{internalType:"string",name:"eModeLabel",type:"string"},{internalType:"bool",name:"borrowableInIsolation",type:"bool"}],internalType:"struct IUiPoolDataProviderV3.AggregatedReserveData[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"marketReferenceCurrencyUnit",type:"uint256"},{internalType:"int256",name:"marketReferenceCurrencyPriceInUsd",type:"int256"},{internalType:"int256",name:"networkBaseTokenPriceInUsd",type:"int256"},{internalType:"uint8",name:"networkBaseTokenPriceDecimals",type:"uint8"}],internalType:"struct IUiPoolDataProviderV3.BaseCurrencyInfo",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IPoolAddressesProvider",name:"provider",type:"address"}],name:"getReservesList",outputs:[{internalType:"address[]",name:"",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IPoolAddressesProvider",name:"provider",type:"address"},{internalType:"address",name:"user",type:"address"}],name:"getUserReservesData",outputs:[{components:[{internalType:"address",name:"underlyingAsset",type:"address"},{internalType:"uint256",name:"scaledATokenBalance",type:"uint256"},{internalType:"bool",name:"usageAsCollateralEnabledOnUser",type:"bool"},{internalType:"uint256",name:"stableBorrowRate",type:"uint256"},{internalType:"uint256",name:"scaledVariableDebt",type:"uint256"},{internalType:"uint256",name:"principalStableDebt",type:"uint256"},{internalType:"uint256",name:"stableBorrowLastUpdateTimestamp",type:"uint256"}],internalType:"struct IUiPoolDataProviderV3.UserReserveData[]",name:"",type:"tuple[]"},{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"marketReferenceCurrencyPriceInUsdProxyAggregator",outputs:[{internalType:"contract IEACAggregatorProxy",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"networkBaseTokenPriceInUsdProxyAggregator",outputs:[{internalType:"contract IEACAggregatorProxy",name:"",type:"address"}],stateMutability:"view",type:"function"}];var M="0x1b02E051683b5cfaC5929C25E84adb26ECf87B38",P="0x112b087b60C1a166130d59266363C45F8aa99db0",L="0xf3Ba4D1b50f78301BDD7EAEa9B67822A15FCA691",me=1000000n,ce=5,fe=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var I=class{client;constructor(e){this.client=e.getWsProvider()}async getBlockTimestamp(){let e=await this.client.getBlock();return Number(e.timestamp)}async getReservesData(){return await this.client.readContract({abi:E,address:P,args:[L],functionName:"getReservesData"})}async getUserReservesData(e){return await this.client.readContract({abi:E,address:P,args:[L,e],functionName:"getUserReservesData"})}async getUserAccountData(e){return await this.client.readContract({abi:R,address:M,args:[e],functionName:"getUserAccountData"})}};import{Binary as K}from"polkadot-api";import{decodeEventLog as J}from"viem";var O=class{static parse(e){let{topics:n,data:r}=e.log,a=K.toHex(r);try{let{eventName:t,args:i}=J({abi:R,topics:n,data:a}),s=i.reserve.toLowerCase();return{eventName:t,reserve:s,key:`${t}:${s}`}}catch{return}}};import o from"big.js";import{big as h,erc20 as Q,h160 as Z}from"@galacticcouncil/common";var{ERC20:x}=Q,{H160:_}=Z,ee=1.01,te=31536000n,k=4,D=-1,C=10n**27n,q=class{client;constructor(e){this.client=new I(e)}async getSummary(e){let n=_.fromAny(e),[r,a,t,i]=await Promise.all([this.client.getReservesData(),this.client.getUserReservesData(n),this.client.getUserAccountData(n),this.client.getBlockTimestamp()]),[s]=r,[u,p]=a,[d,y,l,b,c,f]=t,T=h.toDecimal(f,18),v=[];for(let g of u){let A=g.underlyingAsset.toLowerCase(),m=s.find(({underlyingAsset:j})=>j.toLowerCase()===A);if(!m)throw new Error("Missing pool reserve for "+A);let B=g.scaledATokenBalance,w=m.liquidityIndex,F=m.liquidityRate,N=m.availableLiquidity,U=m.priceInMarketReferenceCurrency,V=i+6,H=this.calculateLinearInterest(F,m.lastUpdateTimestamp,V),W=w*H/C,$=B*W/C,G=Number(p!==0&&p===m.eModeCategoryId?m.eModeLiquidationThreshold:m.reserveLiquidationThreshold)/1e4,Y=m.usageAsCollateralEnabled&&g.usageAsCollateralEnabledOnUser&&g.scaledATokenBalance>0n,X=x.toAssetId(A);v.push({aTokenBalance:$,availableLiquidity:N,decimals:Number(m.decimals),isCollateral:Y,priceInRef:U,reserveId:X,reserveAsset:A,reserveLiquidationThreshold:G})}return{healthFactor:Number(T),currentLiquidationThreshold:Number(h.toDecimal(b,k)),totalCollateral:d,totalDebt:y,reserves:v}}async hasBorrowPositions(e){let n=_.fromAny(e),r=await this.client.getUserAccountData(n),[a,t]=r;return t>0n}async getHealthFactor(e){let n=_.fromAny(e),r=await this.client.getUserAccountData(n),[a,t,i,s,u,p]=r;return this.calculateHealthFactorFromBalances(t,a,s)}async getHealthFactorAfterWithdraw(e,n,r){let{totalCollateral:a,totalDebt:t,reserves:i,currentLiquidationThreshold:s}=await this.getSummary(e);if(t===0n)return D;let u=x.fromAssetId(n),p=i.find(A=>A.reserveAsset===u);if(!p)throw new Error("Missing reserve ctx for "+u);let{decimals:d,isCollateral:y,priceInRef:l,reserveLiquidationThreshold:b}=p,c=h.toBigInt(r,d),f=y?c*l/10n**BigInt(d):0n,T=a-f;if(T<=0n)return 0;let v=o(a.toString()).mul(s).minus(o(f.toString()).mul(b)).div(T.toString()),g=o(T.toString()).mul(v).div(t.toString()).toFixed(6,o.roundDown);return Number(g)}async getHealthFactorAfterSupply(e,n,r){let{totalCollateral:a,totalDebt:t,reserves:i,currentLiquidationThreshold:s}=await this.getSummary(e);if(t===0n)return D;let u=x.fromAssetId(n),p=i.find(g=>g.reserveAsset===u);if(!p)throw new Error("Missing reserve ctx for "+u);let{decimals:d,priceInRef:y,reserveLiquidationThreshold:l}=p,c=h.toBigInt(r,d)*y/10n**BigInt(d),f=a+c;if(f<=0n)return 0;let T=o(a.toString()).mul(s).plus(o(c.toString()).mul(l)).div(f.toString()),v=o(f.toString()).mul(T).div(t.toString()).toFixed(6,o.roundDown);return Number(v)}async getHealthFactorAfterSwap(e,n,r,a,t){let{totalDebt:i,reserves:s,healthFactor:u}=await this.getSummary(e);if(i===0n)return D;let p=x.fromAssetId(r),d=x.fromAssetId(t),y=s.find(w=>w.reserveAsset===p),l=s.find(w=>w.reserveAsset===d);if(!y)throw new Error(`Missing reserve ctx for ${p}`);if(!l)throw new Error(`Missing reserve ctx for ${l}`);let b=h.toBigInt(n,y.decimals),c=h.toBigInt(a,l.decimals),f=b*y.priceInRef/10n**BigInt(y.decimals),T=c*l.priceInRef/10n**BigInt(l.decimals),v=y.isCollateral?o(f.toString()).mul(y.reserveLiquidationThreshold):o(0),m=(l.isCollateral?o(T.toString()).mul(l.reserveLiquidationThreshold):o(0)).minus(v).div(i.toString()),B=o(u).plus(m).toFixed(6,o.roundDown);return Number(B)}async getMaxWithdraw(e,n){let{totalDebt:r,reserves:a,healthFactor:t}=await this.getSummary(e),i=x.fromAssetId(n),s=a.find(u=>u.reserveAsset===i);if(!s)throw new Error("Missing reserve ctx for "+i);return this.calculateWithdrawMax(s,r,t)}async getMaxWithdrawAll(e){let{totalDebt:n,reserves:r,healthFactor:a}=await this.getSummary(e),t={};for(let i of r){let s=this.calculateWithdrawMax(i,n,a);i.reserveId&&(t[i.reserveId]=s)}return t}calculateWithdrawMax(e,n,r){let{aTokenBalance:a,availableLiquidity:t,decimals:i,priceInRef:s,reserveLiquidationThreshold:u,isCollateral:p}=e,d=a;if(p&&n>0n){let l=r-ee;if(l>0){let b=o(l).mul(n.toString()).div(u).toFixed(0,o.roundDown),c=o(b).div(s.toString()).mul(10**i).toFixed(0,o.roundDown);d=a<BigInt(c)?a:BigInt(c)}else d=0n}return{amount:d<t?d:t,decimals:i}}calculateLinearInterest(e,n,r){let a=r-n;if(a<=0)return C;let t=e*BigInt(a)/te;return C+t}calculateHealthFactorFromBalances(e,n,r){if(e===0n)return D;let a=n*r/e,t=h.toDecimal(a,k);return Number(t)}};export{me as AAVE_GAS_LIMIT,L as AAVE_LENDING_POOL_ADDRESS,R as AAVE_POOL_ABI,P as AAVE_POOL_DATA_PROVIDER,E as AAVE_POOL_DATA_PROVIDER_ABI,M as AAVE_POOL_PROXY,ce as AAVE_ROUNDING_THRESHOLD,fe as AAVE_UINT_256_MAX,I as AaveClient,O as AaveLog,q as AaveUtils};
|
|
1
|
+
import j from"buffer";typeof window<"u"&&(window.Buffer=j.Buffer);var L=[{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!1,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"onBehalfOf",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!0,internalType:"uint16",name:"referralCode",type:"uint16"}],name:"Supply",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{inputs:[{internalType:"address",name:"asset",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address",name:"to",type:"address"}],name:"withdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!1,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"onBehalfOf",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"enum DataTypes.InterestRateMode",name:"interestRateMode",type:"uint8"},{indexed:!1,internalType:"uint256",name:"borrowRate",type:"uint256"},{indexed:!0,internalType:"uint16",name:"referralCode",type:"uint16"}],name:"Borrow",type:"event"},{inputs:[{internalType:"address",name:"asset",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"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"reserve",type:"address"},{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!0,internalType:"address",name:"repayer",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bool",name:"useATokens",type:"bool"}],name:"Repay",type:"event"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"getUserAccountData",outputs:[{internalType:"uint256",name:"totalCollateralBase",type:"uint256"},{internalType:"uint256",name:"totalDebtBase",type:"uint256"},{internalType:"uint256",name:"availableBorrowsBase",type:"uint256"},{internalType:"uint256",name:"currentLiquidationThreshold",type:"uint256"},{internalType:"uint256",name:"ltv",type:"uint256"},{internalType:"uint256",name:"healthFactor",type:"uint256"}],stateMutability:"view",type:"function"}];var B=[{inputs:[{internalType:"contract IEACAggregatorProxy",name:"_networkBaseTokenPriceInUsdProxyAggregator",type:"address"},{internalType:"contract IEACAggregatorProxy",name:"_marketReferenceCurrencyPriceInUsdProxyAggregator",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"ETH_CURRENCY_UNIT",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"MKR_ADDRESS",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"_bytes32",type:"bytes32"}],name:"bytes32ToString",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"contract IPoolAddressesProvider",name:"provider",type:"address"}],name:"getReservesData",outputs:[{components:[{internalType:"address",name:"underlyingAsset",type:"address"},{internalType:"string",name:"name",type:"string"},{internalType:"string",name:"symbol",type:"string"},{internalType:"uint256",name:"decimals",type:"uint256"},{internalType:"uint256",name:"baseLTVasCollateral",type:"uint256"},{internalType:"uint256",name:"reserveLiquidationThreshold",type:"uint256"},{internalType:"uint256",name:"reserveLiquidationBonus",type:"uint256"},{internalType:"uint256",name:"reserveFactor",type:"uint256"},{internalType:"bool",name:"usageAsCollateralEnabled",type:"bool"},{internalType:"bool",name:"borrowingEnabled",type:"bool"},{internalType:"bool",name:"stableBorrowRateEnabled",type:"bool"},{internalType:"bool",name:"isActive",type:"bool"},{internalType:"bool",name:"isFrozen",type:"bool"},{internalType:"uint128",name:"liquidityIndex",type:"uint128"},{internalType:"uint128",name:"variableBorrowIndex",type:"uint128"},{internalType:"uint128",name:"liquidityRate",type:"uint128"},{internalType:"uint128",name:"variableBorrowRate",type:"uint128"},{internalType:"uint128",name:"stableBorrowRate",type:"uint128"},{internalType:"uint40",name:"lastUpdateTimestamp",type:"uint40"},{internalType:"address",name:"aTokenAddress",type:"address"},{internalType:"address",name:"stableDebtTokenAddress",type:"address"},{internalType:"address",name:"variableDebtTokenAddress",type:"address"},{internalType:"address",name:"interestRateStrategyAddress",type:"address"},{internalType:"uint256",name:"availableLiquidity",type:"uint256"},{internalType:"uint256",name:"totalPrincipalStableDebt",type:"uint256"},{internalType:"uint256",name:"averageStableRate",type:"uint256"},{internalType:"uint256",name:"stableDebtLastUpdateTimestamp",type:"uint256"},{internalType:"uint256",name:"totalScaledVariableDebt",type:"uint256"},{internalType:"uint256",name:"priceInMarketReferenceCurrency",type:"uint256"},{internalType:"address",name:"priceOracle",type:"address"},{internalType:"uint256",name:"variableRateSlope1",type:"uint256"},{internalType:"uint256",name:"variableRateSlope2",type:"uint256"},{internalType:"uint256",name:"stableRateSlope1",type:"uint256"},{internalType:"uint256",name:"stableRateSlope2",type:"uint256"},{internalType:"uint256",name:"baseStableBorrowRate",type:"uint256"},{internalType:"uint256",name:"baseVariableBorrowRate",type:"uint256"},{internalType:"uint256",name:"optimalUsageRatio",type:"uint256"},{internalType:"bool",name:"isPaused",type:"bool"},{internalType:"bool",name:"isSiloedBorrowing",type:"bool"},{internalType:"uint128",name:"accruedToTreasury",type:"uint128"},{internalType:"uint128",name:"unbacked",type:"uint128"},{internalType:"uint128",name:"isolationModeTotalDebt",type:"uint128"},{internalType:"bool",name:"flashLoanEnabled",type:"bool"},{internalType:"uint256",name:"debtCeiling",type:"uint256"},{internalType:"uint256",name:"debtCeilingDecimals",type:"uint256"},{internalType:"uint8",name:"eModeCategoryId",type:"uint8"},{internalType:"uint256",name:"borrowCap",type:"uint256"},{internalType:"uint256",name:"supplyCap",type:"uint256"},{internalType:"uint16",name:"eModeLtv",type:"uint16"},{internalType:"uint16",name:"eModeLiquidationThreshold",type:"uint16"},{internalType:"uint16",name:"eModeLiquidationBonus",type:"uint16"},{internalType:"address",name:"eModePriceSource",type:"address"},{internalType:"string",name:"eModeLabel",type:"string"},{internalType:"bool",name:"borrowableInIsolation",type:"bool"}],internalType:"struct IUiPoolDataProviderV3.AggregatedReserveData[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"marketReferenceCurrencyUnit",type:"uint256"},{internalType:"int256",name:"marketReferenceCurrencyPriceInUsd",type:"int256"},{internalType:"int256",name:"networkBaseTokenPriceInUsd",type:"int256"},{internalType:"uint8",name:"networkBaseTokenPriceDecimals",type:"uint8"}],internalType:"struct IUiPoolDataProviderV3.BaseCurrencyInfo",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IPoolAddressesProvider",name:"provider",type:"address"}],name:"getReservesList",outputs:[{internalType:"address[]",name:"",type:"address[]"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract IPoolAddressesProvider",name:"provider",type:"address"},{internalType:"address",name:"user",type:"address"}],name:"getUserReservesData",outputs:[{components:[{internalType:"address",name:"underlyingAsset",type:"address"},{internalType:"uint256",name:"scaledATokenBalance",type:"uint256"},{internalType:"bool",name:"usageAsCollateralEnabledOnUser",type:"bool"},{internalType:"uint256",name:"stableBorrowRate",type:"uint256"},{internalType:"uint256",name:"scaledVariableDebt",type:"uint256"},{internalType:"uint256",name:"principalStableDebt",type:"uint256"},{internalType:"uint256",name:"stableBorrowLastUpdateTimestamp",type:"uint256"}],internalType:"struct IUiPoolDataProviderV3.UserReserveData[]",name:"",type:"tuple[]"},{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"marketReferenceCurrencyPriceInUsdProxyAggregator",outputs:[{internalType:"contract IEACAggregatorProxy",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"networkBaseTokenPriceInUsdProxyAggregator",outputs:[{internalType:"contract IEACAggregatorProxy",name:"",type:"address"}],stateMutability:"view",type:"function"}];var S="0x1b02E051683b5cfaC5929C25E84adb26ECf87B38",P="0x112b087b60C1a166130d59266363C45F8aa99db0",E="0xf3Ba4D1b50f78301BDD7EAEa9B67822A15FCA691",pe=1000000n,de=5,ye=BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var x=class{client;constructor(e){this.client=e.getWsProvider()}async getBlockTimestamp(){let e=await this.client.getBlock();return Number(e.timestamp)}async getReservesData(){return await this.client.readContract({abi:B,address:P,args:[E],functionName:"getReservesData"})}async getUserReservesData(e){return await this.client.readContract({abi:B,address:P,args:[E,e],functionName:"getUserReservesData"})}async getUserAccountData(e){return await this.client.readContract({abi:L,address:S,args:[e],functionName:"getUserAccountData"})}};import s from"big.js";import{big as h,erc20 as z,h160 as K}from"@galacticcouncil/common";var{ERC20:w}=z,{H160:_}=K,J=1.01,Q=31536000n,M=4,I=-1,D=10n**27n,O=class{client;constructor(e){this.client=new x(e)}async getSummary(e){let t=_.fromAny(e),[r,n,a,i]=await Promise.all([this.client.getReservesData(),this.client.getUserReservesData(t),this.client.getUserAccountData(t),this.client.getBlockTimestamp()]),[o]=r,[u,p]=n,[d,y,l,b,c,f]=a,T=h.toDecimal(f,18),v=[];for(let g of u){let A=g.underlyingAsset.toLowerCase(),m=o.find(({underlyingAsset:X})=>X.toLowerCase()===A);if(!m)throw new Error("Missing pool reserve for "+A);let C=g.scaledATokenBalance,R=m.liquidityIndex,U=m.liquidityRate,F=m.availableLiquidity,q=m.priceInMarketReferenceCurrency,N=i+6,V=this.calculateLinearInterest(U,m.lastUpdateTimestamp,N),W=R*V/D,H=C*W/D,$=Number(p!==0&&p===m.eModeCategoryId?m.eModeLiquidationThreshold:m.reserveLiquidationThreshold)/1e4,G=m.usageAsCollateralEnabled&&g.usageAsCollateralEnabledOnUser&&g.scaledATokenBalance>0n,Y=w.toAssetId(A);v.push({aTokenBalance:H,availableLiquidity:F,decimals:Number(m.decimals),isCollateral:G,priceInRef:q,reserveId:Y,reserveAsset:A,reserveLiquidationThreshold:$})}return{healthFactor:Number(T),currentLiquidationThreshold:Number(h.toDecimal(b,M)),totalCollateral:d,totalDebt:y,reserves:v}}async hasBorrowPositions(e){let t=_.fromAny(e),r=await this.client.getUserAccountData(t),[n,a]=r;return a>0n}async getHealthFactor(e){let t=_.fromAny(e),r=await this.client.getUserAccountData(t),[n,a,i,o,u,p]=r;return this.calculateHealthFactorFromBalances(a,n,o)}async getHealthFactorAfterWithdraw(e,t,r){let{totalCollateral:n,totalDebt:a,reserves:i,currentLiquidationThreshold:o}=await this.getSummary(e);if(a===0n)return I;let u=w.fromAssetId(t),p=i.find(A=>A.reserveAsset===u);if(!p)throw new Error("Missing reserve ctx for "+u);let{decimals:d,isCollateral:y,priceInRef:l,reserveLiquidationThreshold:b}=p,c=h.toBigInt(r,d),f=y?c*l/10n**BigInt(d):0n,T=n-f;if(T<=0n)return 0;let v=s(n.toString()).mul(o).minus(s(f.toString()).mul(b)).div(T.toString()),g=s(T.toString()).mul(v).div(a.toString()).toFixed(6,s.roundDown);return Number(g)}async getHealthFactorAfterSupply(e,t,r){let{totalCollateral:n,totalDebt:a,reserves:i,currentLiquidationThreshold:o}=await this.getSummary(e);if(a===0n)return I;let u=w.fromAssetId(t),p=i.find(g=>g.reserveAsset===u);if(!p)throw new Error("Missing reserve ctx for "+u);let{decimals:d,priceInRef:y,reserveLiquidationThreshold:l}=p,c=h.toBigInt(r,d)*y/10n**BigInt(d),f=n+c;if(f<=0n)return 0;let T=s(n.toString()).mul(o).plus(s(c.toString()).mul(l)).div(f.toString()),v=s(f.toString()).mul(T).div(a.toString()).toFixed(6,s.roundDown);return Number(v)}async getHealthFactorAfterSwap(e,t,r,n,a){let{totalDebt:i,reserves:o,healthFactor:u}=await this.getSummary(e);if(i===0n)return I;let p=w.fromAssetId(r),d=w.fromAssetId(a),y=o.find(R=>R.reserveAsset===p),l=o.find(R=>R.reserveAsset===d);if(!y)throw new Error(`Missing reserve ctx for ${p}`);if(!l)throw new Error(`Missing reserve ctx for ${l}`);let b=h.toBigInt(t,y.decimals),c=h.toBigInt(n,l.decimals),f=b*y.priceInRef/10n**BigInt(y.decimals),T=c*l.priceInRef/10n**BigInt(l.decimals),v=y.isCollateral?s(f.toString()).mul(y.reserveLiquidationThreshold):s(0),m=(l.isCollateral?s(T.toString()).mul(l.reserveLiquidationThreshold):s(0)).minus(v).div(i.toString()),C=s(u).plus(m).toFixed(6,s.roundDown);return Number(C)}async getMaxWithdraw(e,t){let{totalDebt:r,reserves:n,healthFactor:a}=await this.getSummary(e),i=w.fromAssetId(t),o=n.find(u=>u.reserveAsset===i);if(!o)throw new Error("Missing reserve ctx for "+i);return this.calculateWithdrawMax(o,r,a)}async getMaxWithdrawAll(e){let{totalDebt:t,reserves:r,healthFactor:n}=await this.getSummary(e),a={};for(let i of r){let o=this.calculateWithdrawMax(i,t,n);i.reserveId&&(a[i.reserveId]=o)}return a}calculateWithdrawMax(e,t,r){let{aTokenBalance:n,availableLiquidity:a,decimals:i,priceInRef:o,reserveLiquidationThreshold:u,isCollateral:p}=e,d=n;if(p&&t>0n){let l=r-J;if(l>0){let b=s(l).mul(t.toString()).div(u).toFixed(0,s.roundDown),c=s(b).div(o.toString()).mul(10**i).toFixed(0,s.roundDown);d=n<BigInt(c)?n:BigInt(c)}else d=0n}return{amount:d<a?d:a,decimals:i}}calculateLinearInterest(e,t,r){let n=r-t;if(n<=0)return D;let a=e*BigInt(n)/Q;return D+a}calculateHealthFactorFromBalances(e,t,r){if(e===0n)return I;let n=t*r/e,a=h.toDecimal(n,M);return Number(a)}};export{pe as AAVE_GAS_LIMIT,E as AAVE_LENDING_POOL_ADDRESS,L as AAVE_POOL_ABI,P as AAVE_POOL_DATA_PROVIDER,B as AAVE_POOL_DATA_PROVIDER_ABI,S as AAVE_POOL_PROXY,de as AAVE_ROUNDING_THRESHOLD,ye as AAVE_UINT_256_MAX,x as AaveClient,O as AaveUtils};
|
package/build/aave/types.d.ts
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
import { HydrationEvents } from '@galacticcouncil/descriptors';
|
|
2
|
-
export type TEvmPayload = HydrationEvents['EVM']['Log'];
|
|
3
|
-
export type AaveEvent = {
|
|
4
|
-
eventName: string;
|
|
5
|
-
reserve: string;
|
|
6
|
-
key: string;
|
|
7
|
-
};
|
|
8
1
|
export type AaveSummary = {
|
|
9
2
|
healthFactor: number;
|
|
10
3
|
currentLiquidationThreshold: number;
|
package/build/evm/adapter.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { PolkadotClient } from 'polkadot-api';
|
|
2
2
|
import type { PublicClient } from 'viem';
|
|
3
|
-
import { BlockAt } from '../api';
|
|
4
3
|
export declare class EvmRpcAdapter {
|
|
5
4
|
private api;
|
|
6
|
-
|
|
7
|
-
constructor(client: PolkadotClient, at?: BlockAt);
|
|
5
|
+
constructor(client: PolkadotClient);
|
|
8
6
|
getBlock(): Promise<{
|
|
9
7
|
timestamp: bigint;
|
|
10
8
|
number: bigint;
|
package/build/evm/client.d.ts
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { PolkadotClient } from 'polkadot-api';
|
|
2
2
|
import { Chain, PublicClient, WalletClient } from 'viem';
|
|
3
3
|
import { EvmRpcAdapter } from './adapter';
|
|
4
|
-
import { BlockAt } from '../api';
|
|
5
4
|
export declare class EvmClient {
|
|
6
5
|
private client;
|
|
7
|
-
private at;
|
|
8
6
|
readonly chain: Chain;
|
|
9
|
-
constructor(client: PolkadotClient
|
|
7
|
+
constructor(client: PolkadotClient);
|
|
10
8
|
get chainId(): number;
|
|
11
9
|
get chainCurrency(): string;
|
|
12
10
|
get chainDecimals(): number;
|
package/build/evm/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var p=Object.defineProperty;var
|
|
1
|
+
"use strict";var p=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var w=(i,t)=>{for(var e in t)p(i,e,{get:t[e],enumerable:!0})},v=(i,t,e,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of P(t))!k.call(i,r)&&r!==e&&p(i,r,{get:()=>t[r],enumerable:!(a=x(t,r))||a.enumerable});return i};var H=i=>v(p({},"__esModule",{value:!0}),i);var R={};w(R,{EvmClient:()=>h,EvmRpcAdapter:()=>o,createChain:()=>u});module.exports=H(R);var d=require("polkadot-api"),m=require("@galacticcouncil/descriptors"),c=require("viem"),E=10000000n,o=class{api;constructor(t){this.api=t.getTypedApi(m.hydration)}async getBlock(){let t=await this.api.query.Ethereum.CurrentBlock.getValue({at:"best"}),{header:e}=t,a=e.timestamp/1000n,[r]=e.number;return{timestamp:a,number:r}}readContract=(async t=>{let{abi:e,address:a,functionName:r,args:C}=t,f=(0,c.encodeFunctionData)({abi:e,functionName:r,args:C}),s=await this.api.apis.EthereumRuntimeRPCApi.call("0x0000000000000000000000000000000000000000",a,d.Binary.fromHex(f),[0n,0n,0n,0n],[E,0n,0n,0n],void 0,void 0,void 0,!1,[],[]);if(!s.success)throw console.error(r,s.value.type),new Error("Contract read failure");let{exit_reason:l,value:b,used_gas:g}=s.value;if(console.log(g),l.type==="Succeed")return(0,c.decodeFunctionResult)({abi:e,functionName:r,data:d.Binary.toHex(b)});throw console.log(r,l.type,l.value.type),new Error("Contract read error")})};var y=require("viem"),A=["https://hydration-rpc.n.dwellir.com","https://hydration.dotters.network","https://rpc.helikon.io/hydradx","https://hydration.ibp.network","https://rpc.cay.hydration.cloud","https://rpc.parm.hydration.cloud","https://rpc.roach.hydration.cloud","https://rpc.zipp.hydration.cloud","https://rpc.sin.hydration.cloud","https://rpc.coke.hydration.cloud"],u=()=>(0,y.defineChain)({id:222222,name:"Hydration",network:"hydration",nativeCurrency:{decimals:18,name:"WETH",symbol:"WETH"},rpcUrls:{default:{http:A}},blockExplorers:{default:{name:"Hydration Explorer",url:"https://hydration.subscan.io"}},testnet:!1});var n=require("viem");var h=class{client;chain;constructor(t){this.client=t,this.chain=u()}get chainId(){return this.chain.id}get chainCurrency(){return this.chain.nativeCurrency.symbol}get chainDecimals(){return this.chain.nativeCurrency.decimals}getProvider(){return(0,n.createPublicClient)({chain:this.chain,transport:(0,n.http)()})}getWsProvider(){return(0,n.createPublicClient)({transport:(0,n.custom)({request:({method:t,params:e})=>this.client._request(t,e||[])})})}getSigner(t){return(0,n.createWalletClient)({account:t,chain:this.chain,transport:(0,n.custom)(window.ethereum)})}getRPCAdapter(){return new o(this.client)}};0&&(module.exports={EvmClient,EvmRpcAdapter,createChain});
|
package/build/evm/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import C from"buffer";typeof window<"u"&&(window.Buffer=C.Buffer);import{Binary as s}from"polkadot-api";import{hydration as g}from"@galacticcouncil/descriptors";import{encodeFunctionData as b,decodeFunctionResult as x}from"viem";var P=10000000n,n=class{api;constructor(t){this.api=t.getTypedApi(g)}async getBlock(){let t=await this.api.query.Ethereum.CurrentBlock.getValue({at:"best"}),{header:e}=t,i=e.timestamp/1000n,[r]=e.number;return{timestamp:i,number:r}}readContract=(async t=>{let{abi:e,address:i,functionName:r,args:h}=t,m=b({abi:e,functionName:r,args:h}),a=await this.api.apis.EthereumRuntimeRPCApi.call("0x0000000000000000000000000000000000000000",i,s.fromHex(m),[0n,0n,0n,0n],[P,0n,0n,0n],void 0,void 0,void 0,!1,[],[]);if(!a.success)throw console.error(r,a.value.type),new Error("Contract read failure");let{exit_reason:o,value:y,used_gas:f}=a.value;if(console.log(f),o.type==="Succeed")return x({abi:e,functionName:r,data:s.toHex(y)});throw console.log(r,o.type,o.value.type),new Error("Contract read error")})};import{defineChain as w}from"viem";var k=["https://hydration-rpc.n.dwellir.com","https://hydration.dotters.network","https://rpc.helikon.io/hydradx","https://hydration.ibp.network","https://rpc.cay.hydration.cloud","https://rpc.parm.hydration.cloud","https://rpc.roach.hydration.cloud","https://rpc.zipp.hydration.cloud","https://rpc.sin.hydration.cloud","https://rpc.coke.hydration.cloud"],c=()=>w({id:222222,name:"Hydration",network:"hydration",nativeCurrency:{decimals:18,name:"WETH",symbol:"WETH"},rpcUrls:{default:{http:k}},blockExplorers:{default:{name:"Hydration Explorer",url:"https://hydration.subscan.io"}},testnet:!1});import{createPublicClient as l,createWalletClient as v,custom as d,http as E}from"viem";var p=class{client;chain;constructor(t){this.client=t,this.chain=c()}get chainId(){return this.chain.id}get chainCurrency(){return this.chain.nativeCurrency.symbol}get chainDecimals(){return this.chain.nativeCurrency.decimals}getProvider(){return l({chain:this.chain,transport:E()})}getWsProvider(){return l({transport:d({request:({method:t,params:e})=>this.client._request(t,e||[])})})}getSigner(t){return v({account:t,chain:this.chain,transport:d(window.ethereum)})}getRPCAdapter(){return new n(this.client)}};export{p as EvmClient,n as EvmRpcAdapter,c as createChain};
|
package/build/gho/index.d.ts
CHANGED