diff --git a/package-lock.json b/package-lock.json index 0ae92448..da938d49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@project-serum/anchor": "^0.18.2", "@solana/web3.js": "^1.30.2", "@supercharge/promise-pool": "^2.4.0", - "@taquito/taquito": "^14.1.0", + "@taquito/taquito": "^14.2.0", "aptos": "^1.21.0", "bignumber.js": "^9.1.0", "dotenv": "^16.0.3", diff --git a/package.json b/package.json index 2cf7f924..ec74db9f 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "@project-serum/anchor": "^0.18.2", "@solana/web3.js": "^1.30.2", "@supercharge/promise-pool": "^2.4.0", - "@taquito/taquito": "^14.1.0", + "@taquito/taquito": "^14.2.0", "aptos": "^1.21.0", "bignumber.js": "^9.1.0", "dotenv": "^16.0.3", diff --git a/src/factory/providers/bsc/squadswap/index.ts b/src/factory/providers/bsc/squadswap/index.ts new file mode 100644 index 00000000..a76c6892 --- /dev/null +++ b/src/factory/providers/bsc/squadswap/index.ts @@ -0,0 +1,25 @@ +import { ITvlParams, ITvlReturn } from '../../../../interfaces/ITvl'; +import uniswapV2 from '../../../../util/calculators/uniswapV2'; +import formatter from '../../../../util/formatter'; + +const START_BLOCK = 34130751; +const FACTORY_ADDRESS = '0x1D9F43a6195054313ac1aE423B1f810f593b6ac1'; + +async function tvl(params: ITvlParams): Promise> { + const { block, chain, provider, web3 } = params; + if (block < START_BLOCK) { + return {}; + } + + const { balances, poolBalances } = await uniswapV2.getTvl( + FACTORY_ADDRESS, + block, + chain, + provider, + web3, + ); + formatter.convertBalancesToFixed(balances); + return { balances, poolBalances }; +} + +export { tvl }; diff --git a/src/factory/providers/ethereum/fluid/fluidLiquidityResolverAbi.json b/src/factory/providers/ethereum/fluid/fluidLiquidityResolverAbi.json new file mode 100644 index 00000000..e1031d0d --- /dev/null +++ b/src/factory/providers/ethereum/fluid/fluidLiquidityResolverAbi.json @@ -0,0 +1,2261 @@ +[ + { + "inputs": [ + { + "internalType": "contract IFluidLiquidity", + "name": "liquidity_", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "errorId_", + "type": "uint256" + } + ], + "name": "FluidLiquidityCalcsError", + "type": "error" + }, + { + "inputs": [], + "name": "FluidLiquidityResolver__AddressZero", + "type": "error" + }, + { + "inputs": [], + "name": "LIQUIDITY", + "outputs": [ + { + "internalType": "contract IFluidLiquidity", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token_", + "type": "address" + } + ], + "name": "getExchangePricesAndConfig", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token_", + "type": "address" + } + ], + "name": "getOverallTokenData", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "borrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastStoredUtilization", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "storageUpdateThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalBorrow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "revenue", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV1Params", + "name": "rateDataV1", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV2Params", + "name": "rateDataV2", + "type": "tuple" + } + ], + "internalType": "struct Structs.RateData", + "name": "rateData", + "type": "tuple" + } + ], + "internalType": "struct Structs.OverallTokenData", + "name": "overallTokenData_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "tokens_", + "type": "address[]" + } + ], + "name": "getOverallTokensData", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "borrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastStoredUtilization", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "storageUpdateThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalBorrow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "revenue", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV1Params", + "name": "rateDataV1", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV2Params", + "name": "rateDataV2", + "type": "tuple" + } + ], + "internalType": "struct Structs.RateData", + "name": "rateData", + "type": "tuple" + } + ], + "internalType": "struct Structs.OverallTokenData[]", + "name": "overallTokensData_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token_", + "type": "address" + } + ], + "name": "getRateConfig", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token_", + "type": "address" + } + ], + "name": "getRevenue", + "outputs": [ + { + "internalType": "uint256", + "name": "revenueAmount_", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRevenueCollector", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getStatus", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token_", + "type": "address" + } + ], + "name": "getTokenRateData", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV1Params", + "name": "rateDataV1", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV2Params", + "name": "rateDataV2", + "type": "tuple" + } + ], + "internalType": "struct Structs.RateData", + "name": "rateData_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "tokens_", + "type": "address[]" + } + ], + "name": "getTokensRateData", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV1Params", + "name": "rateDataV1", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV2Params", + "name": "rateDataV2", + "type": "tuple" + } + ], + "internalType": "struct Structs.RateData[]", + "name": "rateDatas_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token_", + "type": "address" + } + ], + "name": "getTotalAmounts", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user_", + "type": "address" + }, + { + "internalType": "address", + "name": "token_", + "type": "address" + } + ], + "name": "getUserBorrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user_", + "type": "address" + }, + { + "internalType": "address", + "name": "token_", + "type": "address" + } + ], + "name": "getUserBorrowData", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "modeWithInterest", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "borrow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expandPercent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expandDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseBorrowLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxBorrowLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowableUntilLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowable", + "type": "uint256" + } + ], + "internalType": "struct Structs.UserBorrowData", + "name": "userBorrowData_", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "borrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastStoredUtilization", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "storageUpdateThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalBorrow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "revenue", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV1Params", + "name": "rateDataV1", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV2Params", + "name": "rateDataV2", + "type": "tuple" + } + ], + "internalType": "struct Structs.RateData", + "name": "rateData", + "type": "tuple" + } + ], + "internalType": "struct Structs.OverallTokenData", + "name": "overallTokenData_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user_", + "type": "address" + } + ], + "name": "getUserClass", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user_", + "type": "address" + }, + { + "internalType": "address[]", + "name": "tokens_", + "type": "address[]" + } + ], + "name": "getUserMultipleBorrowData", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "modeWithInterest", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "borrow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expandPercent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expandDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseBorrowLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxBorrowLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowableUntilLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowable", + "type": "uint256" + } + ], + "internalType": "struct Structs.UserBorrowData[]", + "name": "userBorrowingsData_", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "borrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastStoredUtilization", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "storageUpdateThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalBorrow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "revenue", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV1Params", + "name": "rateDataV1", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV2Params", + "name": "rateDataV2", + "type": "tuple" + } + ], + "internalType": "struct Structs.RateData", + "name": "rateData", + "type": "tuple" + } + ], + "internalType": "struct Structs.OverallTokenData[]", + "name": "overallTokensData_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user_", + "type": "address" + }, + { + "internalType": "address[]", + "name": "supplyTokens_", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "borrowTokens_", + "type": "address[]" + } + ], + "name": "getUserMultipleBorrowSupplyData", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "modeWithInterest", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "supply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expandPercent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expandDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseWithdrawalLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawableUntilLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawable", + "type": "uint256" + } + ], + "internalType": "struct Structs.UserSupplyData[]", + "name": "userSuppliesData_", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "borrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastStoredUtilization", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "storageUpdateThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalBorrow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "revenue", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV1Params", + "name": "rateDataV1", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV2Params", + "name": "rateDataV2", + "type": "tuple" + } + ], + "internalType": "struct Structs.RateData", + "name": "rateData", + "type": "tuple" + } + ], + "internalType": "struct Structs.OverallTokenData[]", + "name": "overallSupplyTokensData_", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "bool", + "name": "modeWithInterest", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "borrow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expandPercent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expandDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseBorrowLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxBorrowLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowableUntilLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowable", + "type": "uint256" + } + ], + "internalType": "struct Structs.UserBorrowData[]", + "name": "userBorrowingsData_", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "borrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastStoredUtilization", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "storageUpdateThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalBorrow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "revenue", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV1Params", + "name": "rateDataV1", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV2Params", + "name": "rateDataV2", + "type": "tuple" + } + ], + "internalType": "struct Structs.RateData", + "name": "rateData", + "type": "tuple" + } + ], + "internalType": "struct Structs.OverallTokenData[]", + "name": "overallBorrowTokensData_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user_", + "type": "address" + }, + { + "internalType": "address[]", + "name": "tokens_", + "type": "address[]" + } + ], + "name": "getUserMultipleSupplyData", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "modeWithInterest", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "supply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expandPercent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expandDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseWithdrawalLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawableUntilLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawable", + "type": "uint256" + } + ], + "internalType": "struct Structs.UserSupplyData[]", + "name": "userSuppliesData_", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "borrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastStoredUtilization", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "storageUpdateThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalBorrow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "revenue", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV1Params", + "name": "rateDataV1", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV2Params", + "name": "rateDataV2", + "type": "tuple" + } + ], + "internalType": "struct Structs.RateData", + "name": "rateData", + "type": "tuple" + } + ], + "internalType": "struct Structs.OverallTokenData[]", + "name": "overallTokensData_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user_", + "type": "address" + }, + { + "internalType": "address", + "name": "token_", + "type": "address" + } + ], + "name": "getUserSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "user_", + "type": "address" + }, + { + "internalType": "address", + "name": "token_", + "type": "address" + } + ], + "name": "getUserSupplyData", + "outputs": [ + { + "components": [ + { + "internalType": "bool", + "name": "modeWithInterest", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "supply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expandPercent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expandDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "baseWithdrawalLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawableUntilLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawable", + "type": "uint256" + } + ], + "internalType": "struct Structs.UserSupplyData", + "name": "userSupplyData_", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "borrowRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRate", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastStoredUtilization", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "storageUpdateThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowExchangePrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "supplyInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowRawInterest", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "borrowInterestFree", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalSupply", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalBorrow", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "revenue", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV1Params", + "name": "rateDataV1", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "kink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationZero", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationKink2", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "rateAtUtilizationMax", + "type": "uint256" + } + ], + "internalType": "struct Structs.RateDataV2Params", + "name": "rateDataV2", + "type": "tuple" + } + ], + "internalType": "struct Structs.RateData", + "name": "rateData", + "type": "tuple" + } + ], + "internalType": "struct Structs.OverallTokenData", + "name": "overallTokenData_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "auth_", + "type": "address" + } + ], + "name": "isAuth", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "guardian_", + "type": "address" + } + ], + "name": "isGuardian", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "listedTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "listedTokens_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + } +] \ No newline at end of file diff --git a/src/factory/providers/ethereum/fluid/index.ts b/src/factory/providers/ethereum/fluid/index.ts new file mode 100644 index 00000000..4337fecc --- /dev/null +++ b/src/factory/providers/ethereum/fluid/index.ts @@ -0,0 +1,49 @@ +import util from '../../../../util/blockchainUtil'; +import FLUID_LIQUIDITY_RESOLVER_ABI from './fluidLiquidityResolverAbi.json'; +import { ITvlParams, ITvlReturn } from '../../../../interfaces/ITvl'; +import formatter from '../../../../util/formatter'; + +const FLUID_LIQUIDITY_RESOLVER_ADDRESS = + '0x741c2Cd25f053a55fd94afF1afAEf146523E1249'; +const FLUID_LIQUIDITY_PROXY_ADDRESS = + '0x52aa899454998be5b000ad077a46bbe360f4e497'; +const START_BLOCK = 19239123; +const ETH_ADDRESS = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'; + +async function tvl(params: ITvlParams): Promise> { + const { block, chain, provider, web3 } = params; + if (block < START_BLOCK) { + return { balances: {} }; + } + + const listedTokens = await util.executeCall( + FLUID_LIQUIDITY_RESOLVER_ADDRESS, + FLUID_LIQUIDITY_RESOLVER_ABI, + 'listedTokens', + [], + block, + chain, + web3, + ); + + const balances = { + [util.ZERO_ADDRESS]: await web3.eth.getBalance( + FLUID_LIQUIDITY_PROXY_ADDRESS, + block, + ), + }; + + const tokenBalances = await util.getTokenBalances( + FLUID_LIQUIDITY_PROXY_ADDRESS, + listedTokens.filter((token: any) => token.token !== ETH_ADDRESS), + block, + chain, + web3, + ); + + formatter.sumMultiBalanceOf(balances, tokenBalances); + formatter.convertBalancesToFixed(balances); + return { balances }; +} + +export { tvl }; diff --git a/src/factory/providers/tezos/crunchy/data.json b/src/factory/providers/tezos/crunchy/data.json index 77b8264e..6fd29c11 100644 --- a/src/factory/providers/tezos/crunchy/data.json +++ b/src/factory/providers/tezos/crunchy/data.json @@ -1,7 +1,7 @@ { - "address": "KT1BHCumksALJQJ8q8to2EPigPW6qpyTr7Ng", - "name": "Crunchy Network Token", - "symbol": "CRUNCH", + "address": "KT1914CUZ7EegAFPbfgQMRkw8Uz5mYkEz2ui", + "name": "Crunchy.Network CRNCHY Token", + "symbol": "CRNCHY", "decimals": 8, "logo": "https://assets.coingecko.com/coins/images/19463/small/crunch.jpeg" } \ No newline at end of file diff --git a/src/factory/providers/tezos/crunchy/index.ts b/src/factory/providers/tezos/crunchy/index.ts index 955f6d24..7ca3678c 100644 --- a/src/factory/providers/tezos/crunchy/index.ts +++ b/src/factory/providers/tezos/crunchy/index.ts @@ -4,7 +4,33 @@ import formatter from '../../../../util/formatter'; import basicUtil from '../../../../util/basicUtil'; import util from '../../../../util/blockchainUtil'; -const FARM_ADDRESS = 'KT1KnuE87q1EKjPozJ5sRAjQA24FPsP57CE3'; +const DEEP_FREEZERS_ADDRESS = 'KT1LjcQ4h5hCy9RcveFz9Pq8LtmF6oun7vNd'; + +const FARM_ADDRESSES = [ + 'KT1KnuE87q1EKjPozJ5sRAjQA24FPsP57CE3', + 'KT1L1WZgdsfjEyP5T4ZCYVvN5vgzrNbu18kX', +]; + +const WTZ_ADDRESSES = [ + 'KT1BB3oNr5vUSw1CuPNb2zpYEVp376XrXWaJ', + 'KT1H25LW5k4HQGm9hmNXzaxf3nqjsAEhQPah', + 'KT1LpGZnT6dj6STSxHXmvSPqx39ZdPXAMpFz', + 'KT1NBgqqJacbdoeNAg9MvrgPT9h6q6AGWvFA', + 'KT1NGTDBKDPMrAYEufb72CLwuQJ7jU7jL6jD', +]; + +async function getTezosBalance(address, block, web3) { + try { + const tezosBalance = await web3.eth.getBalance(address, block); + + return { + token: 'xtz', + balance: BigNumber(tezosBalance), + }; + } catch {} + return null; +} + let pools = {}; async function tvl(params: ITvlParams): Promise> { @@ -17,36 +43,89 @@ async function tvl(params: ITvlParams): Promise> { pools = await basicUtil.readFromCache('cache/pools.json', chain, provider); } catch {} - const contract = new web3.eth.Contract(null, FARM_ADDRESS); - await contract.init(); - const farmLength = await contract.methods.nextFarmId().call(null, block); - const farms = await contract.methods.getBigmap('farms').call(null, block); + const balanceResults = []; + let globalIndex = 0; - console.log(`farm length: ${farmLength}`); + for (let i = 0; i < FARM_ADDRESSES.length; i++) { + const contract = new web3.eth.Contract(null, FARM_ADDRESSES[i]); + await contract.init(); - const balanceResults = []; + const farms = await contract.methods.getBigmap('farms').call(null, block); + const totalFarms = farms.map((farm) => farm.key); + const farmLength = totalFarms.length; - for (let i = 0; i < farmLength; i++) { + console.log(`Farm length for address ${FARM_ADDRESSES[i]}: ${farmLength}`); try { - if (!pools[i]) { + for (let j = 0; j < farmLength; j++) { + const farmIndex = j + i * globalIndex; + + if (!pools[farmIndex]) { + let tokenId; + try { + const tokenType = Object.keys(farms[j].value.poolToken.tokenType); + if (tokenType[0] == 'fa2') { + tokenId = farms[j].value.poolToken.tokenId; + } + } catch {} + pools[farmIndex] = tokenId + ? `${farms[j].value.poolToken.address}_${tokenId}` + : farms[j].value.poolToken.address; + } + + balanceResults.push({ + token: pools[farmIndex], + balance: BigNumber(farms[j].value.poolBalance), + }); + } + globalIndex += farmLength; + } catch {} + } + + // Fetch WTZ Liquid Staking + for (let i = 0; i < WTZ_ADDRESSES.length; i++) { + const wtzIndex = i + globalIndex; + pools[wtzIndex] = WTZ_ADDRESSES[i]; + const wtz = await getTezosBalance(WTZ_ADDRESSES[i], block, web3); + balanceResults.push(wtz); + } + globalIndex += WTZ_ADDRESSES.length; + + // Fetch Deep Freezers TVL + const contract = new web3.eth.Contract(null, DEEP_FREEZERS_ADDRESS); + await contract.init(); + + const locks = await contract.methods.getBigmap('locks').call(null, block); + const totalLocks = locks.map((lock) => lock.key); + const locksLength = totalLocks.length; + + console.log( + `Lock length for address $DEEP_FREEZERS_ADDRESS}: ${locksLength}`, + ); + try { + for (let i = 0; i < locksLength; i++) { + const lockIndex = i + globalIndex; + + if (!pools[lockIndex]) { let tokenId; try { - const tokenType = Object.keys(farms[i].value.poolToken.tokenType); + const tokenType = Object.keys(locks[i].value.token.tokenType); if (tokenType[0] == 'fa2') { - tokenId = farms[i].value.poolToken.tokenId; + tokenId = locks[i].value.token.tokenId; } } catch {} - pools[i] = tokenId - ? `${farms[i].value.poolToken.address}_${tokenId}` - : farms[i].value.poolToken.address; + pools[lockIndex] = tokenId + ? `${locks[i].value.token.address}_${tokenId}` + : locks[i].value.token.address; } balanceResults.push({ - token: pools[i], - balance: BigNumber(farms[i].value.poolBalance), + token: pools[lockIndex], + balance: BigNumber(locks[i].value.amountLocked), }); - } catch {} - } + } + globalIndex += Number(locksLength); + } catch {} + await basicUtil.saveIntoCache(pools, 'cache/pools.json', chain, provider); const tokenBalances = {};