import BigNumberJs from 'bignumber.js'; import { providers } from 'ethers'; import { reservesMock, userReservesMock } from './_mocks'; import { UiPoolDataProvider } from './index'; describe('UiPoolDataProvider', () => { const mockValidEthereumAddress = '0x88757f2f99175387ab4c6a4b3067c77a695b0349'; const mockInvalidEthereumAddress = '0x0'; const createValidInstance = () => { const instance = new UiPoolDataProvider({ uiPoolDataProviderAddress: mockValidEthereumAddress, provider: new providers.JsonRpcProvider(), chainId: 137, }); const mockGetReservesData = jest.fn(); const mockGetUserReservesData = jest.fn(); mockGetReservesData.mockResolvedValue(reservesMock); mockGetUserReservesData.mockResolvedValue(userReservesMock); // @ts-expect-error readonly instance._contract = { getReservesList: jest.fn(), getReservesData: mockGetReservesData, getUserReservesData: mockGetUserReservesData, }; return instance; }; describe('creating', () => { it('should throw an error if the contractAddress is not valid', () => { expect( () => new UiPoolDataProvider({ uiPoolDataProviderAddress: mockInvalidEthereumAddress, provider: new providers.JsonRpcProvider(), chainId: 137, }), ).toThrowError('contract address is not valid'); }); it('should work if all info is correct', () => { const instance = new UiPoolDataProvider({ uiPoolDataProviderAddress: mockValidEthereumAddress, provider: new providers.JsonRpcProvider(), chainId: 137, }); expect(instance instanceof UiPoolDataProvider).toEqual(true); }); }); describe('getReservesList - to get 100% in coverage :( pointless test', () => { it('should not throw', async () => { const instance = createValidInstance(); await expect( instance.getReservesList({ lendingPoolAddressProvider: mockValidEthereumAddress, }), ).resolves.not.toThrow(); }); it('should throw when lendingPoolAddressProvider is not valid address', async () => { const instance = createValidInstance(); await expect( instance.getReservesList({ lendingPoolAddressProvider: mockInvalidEthereumAddress, }), ).rejects.toThrow('Lending pool address is not valid'); }); }); describe('getReservesData', () => { it('should throw when lendingPoolAddressProvider is not valid address', async () => { const instance = createValidInstance(); await expect( instance.getReservesData({ lendingPoolAddressProvider: mockInvalidEthereumAddress, }), ).rejects.toThrow('Lending pool address is not valid'); }); it('should not throw', async () => { const instance = createValidInstance(); await expect( instance.getReservesData({ lendingPoolAddressProvider: mockValidEthereumAddress, }), ).resolves.not.toThrow(); }); }); describe('getUserReservesData', () => { it('should throw when lendingPoolAddressProvider is not valid address', async () => { const instance = createValidInstance(); await expect( instance.getUserReservesData({ lendingPoolAddressProvider: mockInvalidEthereumAddress, user: mockValidEthereumAddress, }), ).rejects.toThrow('Lending pool address is not valid'); }); it('should throw if user is not a valid ethereum address', async () => { const instance = createValidInstance(); await expect( instance.getUserReservesData({ lendingPoolAddressProvider: mockValidEthereumAddress, user: mockInvalidEthereumAddress, }), ).rejects.toThrow('User address is not a valid ethereum address'); }); it('should not throw if user is a valid ethereum address', async () => { const instance = createValidInstance(); await expect( instance.getUserReservesData({ lendingPoolAddressProvider: mockValidEthereumAddress, user: mockValidEthereumAddress, }), ).resolves.not.toThrow(); }); }); describe('getReservesHumanized', () => { it('should throw if lendingPoolAddressProvider is not a valid ethereum address', async () => { const instance = createValidInstance(); await expect( instance.getReservesHumanized({ lendingPoolAddressProvider: mockInvalidEthereumAddress, }), ).rejects.toThrow('Lending pool address is not valid'); }); it('should not throw', async () => { const instance = createValidInstance(); const result = await instance.getReservesHumanized({ lendingPoolAddressProvider: mockValidEthereumAddress, }); expect(result).toEqual({ reservesData: [ { id: '137-0x3e0437898a5667a4769b1ca5a34aab1ae7e81377-0x88757f2f99175387ab4c6a4b3067c77a695b0349', underlyingAsset: '0x3e0437898a5667a4769b1ca5a34aab1ae7e81377', name: '', symbol: 'AMPL', assetType: 0, decimals: 0, baseLTVasCollateral: '0', reserveLiquidationThreshold: '0', reserveLiquidationBonus: '0', reserveFactor: '0', usageAsCollateralEnabled: false, borrowingEnabled: true, isActive: true, isFrozen: false, isPaused: false, liquidityIndex: '0', variableBorrowIndex: '0', liquidityRate: '0', variableBorrowRate: '0', lastUpdateTimestamp: 1631772892, aTokenAddress: '0xb8a16bbab34FA7A5C09Ec7679EAfb8fEC06897bc', variableDebtTokenAddress: '0xb7b7AF565495670713C92B8848fC8A650a968F81', interestRateStrategyAddress: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', availableLiquidity: '0', totalScaledVariableDebt: '0', priceInMarketReferenceCurrency: '0', priceOracle: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', variableRateSlope1: '0', variableRateSlope2: '0', baseVariableBorrowRate: '0', optimalUsageRatio: '0', // new debtCeiling: '0', eModeCategoryId: 0, borrowCap: '0', supplyCap: '0', eModeLtv: 0, eModeLiquidationThreshold: 0, eModeLiquidationBonus: 0, eModePriceSource: '', eModeLabel: '', accruedToTreasury: '0', unbacked: '0', isolationModeTotalDebt: '0', debtCeilingDecimals: 0, borrowableInIsolation: false, auctionEnabled: false, auctionStrategyAddress: '', dynamicConfigsEnabled: false, isAtomic: false, timeLockStrategyData: { minThreshold: new BigNumberJs(0), midThreshold: new BigNumberJs(0), minWaitTime: 1, midWaitTime: 1, maxWaitTime: 1, poolPeriodWaitTime: 1, poolPeriodLimit: new BigNumberJs(0), period: 1, totalAmountInCurrentPeriod: new BigNumberJs(0), lastResetTimestamp: 0, }, }, { id: '137-0xa478c2975ab1ea89e8196811f51a7b7ade33eb11-0x88757f2f99175387ab4c6a4b3067c77a695b0349', underlyingAsset: '0xa478c2975ab1ea89e8196811f51a7b7ade33eb11', name: '', symbol: 'UNIDAIWETH', assetType: 0, decimals: 0, baseLTVasCollateral: '0', reserveLiquidationThreshold: '0', reserveLiquidationBonus: '0', reserveFactor: '0', usageAsCollateralEnabled: false, borrowingEnabled: true, isActive: true, isFrozen: false, isPaused: false, liquidityIndex: '0', variableBorrowIndex: '0', liquidityRate: '0', variableBorrowRate: '0', lastUpdateTimestamp: 1631772892, aTokenAddress: '0xb8a16bbab34FA7A5C09Ec7679EAfb8fEC06897bc', variableDebtTokenAddress: '0xb7b7AF565495670713C92B8848fC8A650a968F81', interestRateStrategyAddress: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', availableLiquidity: '0', totalScaledVariableDebt: '0', priceInMarketReferenceCurrency: '0', priceOracle: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', variableRateSlope1: '0', variableRateSlope2: '0', baseVariableBorrowRate: '0', optimalUsageRatio: '0', // new debtCeiling: '0', eModeCategoryId: 0, borrowCap: '0', supplyCap: '0', eModeLtv: 0, eModeLiquidationThreshold: 0, eModeLiquidationBonus: 0, eModePriceSource: '', eModeLabel: '', accruedToTreasury: '0', unbacked: '0', isolationModeTotalDebt: '0', debtCeilingDecimals: 0, borrowableInIsolation: false, auctionEnabled: false, auctionStrategyAddress: '', dynamicConfigsEnabled: false, isAtomic: false, timeLockStrategyData: { minThreshold: new BigNumberJs(0), midThreshold: new BigNumberJs(0), minWaitTime: 1, midWaitTime: 1, maxWaitTime: 1, poolPeriodWaitTime: 1, poolPeriodLimit: new BigNumberJs(0), period: 1, totalAmountInCurrentPeriod: new BigNumberJs(0), lastResetTimestamp: 0, }, }, ], baseCurrencyData: { marketReferenceCurrencyDecimals: 0, marketReferenceCurrencyPriceInUsd: '0', networkBaseTokenPriceInUsd: '0', networkBaseTokenPriceDecimals: 0, }, }); }); }); describe('getUserReservesHumanized', () => { it('should throw if lendingPoolAddressProvider is not a valid ethereum address', async () => { const instance = createValidInstance(); await expect( instance.getUserReservesHumanized({ lendingPoolAddressProvider: mockInvalidEthereumAddress, user: mockValidEthereumAddress, reservesDataHumanized: { reservesData: [ { id: '137-0x3e0437898a5667a4769b1ca5a34aab1ae7e81377-0x88757f2f99175387ab4c6a4b3067c77a695b0349', underlyingAsset: '0x3e0437898a5667a4769b1ca5a34aab1ae7e81377', name: '', symbol: 'AMPL', assetType: 0, decimals: 0, baseLTVasCollateral: '0', reserveLiquidationThreshold: '0', reserveLiquidationBonus: '0', reserveFactor: '0', usageAsCollateralEnabled: false, borrowingEnabled: true, isActive: true, isFrozen: false, isPaused: false, liquidityIndex: '0', variableBorrowIndex: '0', liquidityRate: '0', variableBorrowRate: '0', lastUpdateTimestamp: 1631772892, aTokenAddress: '0xb8a16bbab34FA7A5C09Ec7679EAfb8fEC06897bc', variableDebtTokenAddress: '0xb7b7AF565495670713C92B8848fC8A650a968F81', interestRateStrategyAddress: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', availableLiquidity: '0', totalScaledVariableDebt: '0', priceInMarketReferenceCurrency: '0', priceOracle: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', variableRateSlope1: '0', variableRateSlope2: '0', baseVariableBorrowRate: '0', optimalUsageRatio: '0', auctionEnabled: true, auctionStrategyAddress: '0xcD45762Bd90a4DC01e55f0bB17374462942a3D16', dynamicConfigsEnabled: false, // new debtCeiling: '0', eModeCategoryId: 0, borrowCap: '0', supplyCap: '0', eModeLtv: 0, eModeLiquidationThreshold: 0, eModeLiquidationBonus: 0, eModePriceSource: '', eModeLabel: '', accruedToTreasury: '0', unbacked: '0', isolationModeTotalDebt: '0', debtCeilingDecimals: 0, borrowableInIsolation: false, isAtomic: false, timeLockStrategyData: { minThreshold: new BigNumberJs(0), midThreshold: new BigNumberJs(0), minWaitTime: 1, midWaitTime: 1, maxWaitTime: 1, poolPeriodWaitTime: 1, poolPeriodLimit: new BigNumberJs(0), period: 1, totalAmountInCurrentPeriod: new BigNumberJs(0), lastResetTimestamp: 0, }, }, { id: '137-0xa478c2975ab1ea89e8196811f51a7b7ade33eb11-0x88757f2f99175387ab4c6a4b3067c77a695b0349', underlyingAsset: '0xa478c2975ab1ea89e8196811f51a7b7ade33eb11', name: '', symbol: 'UNIDAIWETH', assetType: 0, decimals: 0, baseLTVasCollateral: '0', reserveLiquidationThreshold: '0', reserveLiquidationBonus: '0', reserveFactor: '0', usageAsCollateralEnabled: false, borrowingEnabled: true, isActive: true, isFrozen: false, isPaused: false, liquidityIndex: '0', variableBorrowIndex: '0', liquidityRate: '0', variableBorrowRate: '0', lastUpdateTimestamp: 1631772892, aTokenAddress: '0xb8a16bbab34FA7A5C09Ec7679EAfb8fEC06897bc', variableDebtTokenAddress: '0xb7b7AF565495670713C92B8848fC8A650a968F81', interestRateStrategyAddress: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', availableLiquidity: '0', totalScaledVariableDebt: '0', priceInMarketReferenceCurrency: '0', priceOracle: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', variableRateSlope1: '0', variableRateSlope2: '0', baseVariableBorrowRate: '0', optimalUsageRatio: '0', auctionEnabled: true, auctionStrategyAddress: '0xcD45762Bd90a4DC01e55f0bB17374462942a3D16', dynamicConfigsEnabled: false, // new debtCeiling: '0', eModeCategoryId: 0, borrowCap: '0', supplyCap: '0', eModeLtv: 0, eModeLiquidationThreshold: 0, eModeLiquidationBonus: 0, eModePriceSource: '', eModeLabel: '', accruedToTreasury: '0', unbacked: '0', isolationModeTotalDebt: '0', debtCeilingDecimals: 0, borrowableInIsolation: false, isAtomic: false, timeLockStrategyData: { minThreshold: new BigNumberJs(0), midThreshold: new BigNumberJs(0), minWaitTime: 1, midWaitTime: 1, maxWaitTime: 1, poolPeriodWaitTime: 1, poolPeriodLimit: new BigNumberJs(0), period: 1, totalAmountInCurrentPeriod: new BigNumberJs(0), lastResetTimestamp: 0, }, }, ], baseCurrencyData: { marketReferenceCurrencyDecimals: 0, marketReferenceCurrencyPriceInUsd: '0', networkBaseTokenPriceInUsd: '0', networkBaseTokenPriceDecimals: 0, }, }, }), ).rejects.toThrow('Lending pool address is not valid'); }); it('should throw if user is not a valid ethereum address', async () => { const instance = createValidInstance(); await expect( instance.getUserReservesHumanized({ lendingPoolAddressProvider: mockValidEthereumAddress, user: mockInvalidEthereumAddress, reservesDataHumanized: { reservesData: [ { id: '137-0x3e0437898a5667a4769b1ca5a34aab1ae7e81377-0x88757f2f99175387ab4c6a4b3067c77a695b0349', underlyingAsset: '0x3e0437898a5667a4769b1ca5a34aab1ae7e81377', name: '', symbol: 'AMPL', assetType: 0, decimals: 0, baseLTVasCollateral: '0', reserveLiquidationThreshold: '0', reserveLiquidationBonus: '0', reserveFactor: '0', usageAsCollateralEnabled: false, borrowingEnabled: true, isActive: true, isFrozen: false, isPaused: false, liquidityIndex: '0', variableBorrowIndex: '0', liquidityRate: '0', variableBorrowRate: '0', lastUpdateTimestamp: 1631772892, aTokenAddress: '0xb8a16bbab34FA7A5C09Ec7679EAfb8fEC06897bc', variableDebtTokenAddress: '0xb7b7AF565495670713C92B8848fC8A650a968F81', interestRateStrategyAddress: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', availableLiquidity: '0', totalScaledVariableDebt: '0', priceInMarketReferenceCurrency: '0', priceOracle: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', variableRateSlope1: '0', variableRateSlope2: '0', baseVariableBorrowRate: '0', optimalUsageRatio: '0', auctionEnabled: true, auctionStrategyAddress: '0xcD45762Bd90a4DC01e55f0bB17374462942a3D16', dynamicConfigsEnabled: false, // new debtCeiling: '0', eModeCategoryId: 1, borrowCap: '0', supplyCap: '0', eModeLtv: 1, eModeLiquidationThreshold: 1, eModeLiquidationBonus: 1, eModePriceSource: '0x3E0437898a5667a4769B1Ca5A34aAB1ae7E81377', eModeLabel: 'test label', accruedToTreasury: '0', unbacked: '0', isolationModeTotalDebt: '0', debtCeilingDecimals: 0, borrowableInIsolation: false, isAtomic: false, timeLockStrategyData: { minThreshold: new BigNumberJs(0), midThreshold: new BigNumberJs(0), minWaitTime: 1, midWaitTime: 1, maxWaitTime: 1, poolPeriodWaitTime: 1, poolPeriodLimit: new BigNumberJs(0), period: 1, totalAmountInCurrentPeriod: new BigNumberJs(0), lastResetTimestamp: 0, }, }, { id: '137-0xa478c2975ab1ea89e8196811f51a7b7ade33eb11-0x88757f2f99175387ab4c6a4b3067c77a695b0349', underlyingAsset: '0xa478c2975ab1ea89e8196811f51a7b7ade33eb11', name: '', symbol: 'UNIDAIWETH', assetType: 0, decimals: 0, baseLTVasCollateral: '0', reserveLiquidationThreshold: '0', reserveLiquidationBonus: '0', reserveFactor: '0', usageAsCollateralEnabled: false, borrowingEnabled: true, isActive: true, isFrozen: false, isPaused: false, liquidityIndex: '0', variableBorrowIndex: '0', liquidityRate: '0', variableBorrowRate: '0', lastUpdateTimestamp: 1631772892, aTokenAddress: '0xb8a16bbab34FA7A5C09Ec7679EAfb8fEC06897bc', variableDebtTokenAddress: '0xb7b7AF565495670713C92B8848fC8A650a968F81', interestRateStrategyAddress: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', availableLiquidity: '0', totalScaledVariableDebt: '0', priceInMarketReferenceCurrency: '0', priceOracle: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', variableRateSlope1: '0', variableRateSlope2: '0', baseVariableBorrowRate: '0', optimalUsageRatio: '0', auctionEnabled: true, auctionStrategyAddress: '0xcD45762Bd90a4DC01e55f0bB17374462942a3D16', dynamicConfigsEnabled: false, // new debtCeiling: '0', eModeCategoryId: 1, borrowCap: '0', supplyCap: '0', eModeLtv: 1, eModeLiquidationThreshold: 1, eModeLiquidationBonus: 1, eModePriceSource: '0x3E0437898a5667a4769B1Ca5A34aAB1ae7E81377', eModeLabel: 'test label', accruedToTreasury: '0', unbacked: '0', isolationModeTotalDebt: '0', debtCeilingDecimals: 0, borrowableInIsolation: false, isAtomic: false, timeLockStrategyData: { minThreshold: new BigNumberJs(0), midThreshold: new BigNumberJs(0), minWaitTime: 1, midWaitTime: 1, maxWaitTime: 1, poolPeriodWaitTime: 1, poolPeriodLimit: new BigNumberJs(0), period: 1, totalAmountInCurrentPeriod: new BigNumberJs(0), lastResetTimestamp: 0, }, }, ], baseCurrencyData: { marketReferenceCurrencyDecimals: 0, marketReferenceCurrencyPriceInUsd: '0', networkBaseTokenPriceInUsd: '0', networkBaseTokenPriceDecimals: 0, }, }, }), ).rejects.toThrow('User address is not a valid ethereum address'); }); it('should be ok', async () => { const instance = createValidInstance(); const result = await instance.getUserReservesHumanized({ lendingPoolAddressProvider: mockValidEthereumAddress, user: mockValidEthereumAddress, reservesDataHumanized: { reservesData: [ { id: '137-0x3e0437898a5667a4769b1ca5a34aab1ae7e81377-0x88757f2f99175387ab4c6a4b3067c77a695b0349', underlyingAsset: '0x3e0437898a5667a4769b1ca5a34aab1ae7e81377', name: '', symbol: 'AMPL', assetType: 0, decimals: 0, baseLTVasCollateral: '0', reserveLiquidationThreshold: '0', reserveLiquidationBonus: '0', reserveFactor: '0', usageAsCollateralEnabled: false, borrowingEnabled: true, isActive: true, isFrozen: false, isPaused: false, liquidityIndex: '0', variableBorrowIndex: '0', liquidityRate: '0', variableBorrowRate: '0', lastUpdateTimestamp: 1631772892, aTokenAddress: '0xb8a16bbab34FA7A5C09Ec7679EAfb8fEC06897bc', variableDebtTokenAddress: '0xb7b7AF565495670713C92B8848fC8A650a968F81', interestRateStrategyAddress: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', availableLiquidity: '0', totalScaledVariableDebt: '0', priceInMarketReferenceCurrency: '0', priceOracle: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', variableRateSlope1: '0', variableRateSlope2: '0', baseVariableBorrowRate: '0', optimalUsageRatio: '0', auctionEnabled: true, auctionStrategyAddress: '0xcD45762Bd90a4DC01e55f0bB17374462942a3D16', dynamicConfigsEnabled: false, // new debtCeiling: '0', eModeCategoryId: 1, borrowCap: '0', supplyCap: '0', eModeLtv: 1, eModeLiquidationThreshold: 1, eModeLiquidationBonus: 1, eModePriceSource: '0x3E0437898a5667a4769B1Ca5A34aAB1ae7E81377', eModeLabel: 'test label', accruedToTreasury: '0', unbacked: '0', isolationModeTotalDebt: '0', debtCeilingDecimals: 0, borrowableInIsolation: false, isAtomic: false, timeLockStrategyData: { minThreshold: new BigNumberJs(0), midThreshold: new BigNumberJs(0), minWaitTime: 1, midWaitTime: 1, maxWaitTime: 1, poolPeriodWaitTime: 1, poolPeriodLimit: new BigNumberJs(0), period: 1, totalAmountInCurrentPeriod: new BigNumberJs(0), lastResetTimestamp: 0, }, }, { id: '137-0xa478c2975ab1ea89e8196811f51a7b7ade33eb11-0x88757f2f99175387ab4c6a4b3067c77a695b0349', underlyingAsset: '0xa478c2975ab1ea89e8196811f51a7b7ade33eb11', name: '', symbol: 'UNIDAIWETH', assetType: 0, decimals: 0, baseLTVasCollateral: '0', reserveLiquidationThreshold: '0', reserveLiquidationBonus: '0', reserveFactor: '0', usageAsCollateralEnabled: false, borrowingEnabled: true, isActive: true, isFrozen: false, isPaused: false, liquidityIndex: '0', variableBorrowIndex: '0', liquidityRate: '0', variableBorrowRate: '0', lastUpdateTimestamp: 1631772892, aTokenAddress: '0xb8a16bbab34FA7A5C09Ec7679EAfb8fEC06897bc', variableDebtTokenAddress: '0xb7b7AF565495670713C92B8848fC8A650a968F81', interestRateStrategyAddress: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', availableLiquidity: '0', totalScaledVariableDebt: '0', priceInMarketReferenceCurrency: '0', priceOracle: '0x796ec26fc7df8D81BCB5BABF74ccdE0E2B122164', variableRateSlope1: '0', variableRateSlope2: '0', baseVariableBorrowRate: '0', optimalUsageRatio: '0', auctionEnabled: true, auctionStrategyAddress: '0xcD45762Bd90a4DC01e55f0bB17374462942a3D16', dynamicConfigsEnabled: false, // new debtCeiling: '0', eModeCategoryId: 1, borrowCap: '0', supplyCap: '0', eModeLtv: 1, eModeLiquidationThreshold: 1, eModeLiquidationBonus: 1, eModePriceSource: '0x3E0437898a5667a4769B1Ca5A34aAB1ae7E81377', eModeLabel: 'test label', accruedToTreasury: '0', unbacked: '0', isolationModeTotalDebt: '0', debtCeilingDecimals: 0, borrowableInIsolation: false, isAtomic: false, timeLockStrategyData: { minThreshold: new BigNumberJs(0), midThreshold: new BigNumberJs(0), minWaitTime: 1, midWaitTime: 1, maxWaitTime: 1, poolPeriodWaitTime: 1, poolPeriodLimit: new BigNumberJs(0), period: 1, totalAmountInCurrentPeriod: new BigNumberJs(0), lastResetTimestamp: 0, }, }, ], baseCurrencyData: { marketReferenceCurrencyDecimals: 0, marketReferenceCurrencyPriceInUsd: '0', networkBaseTokenPriceInUsd: '0', networkBaseTokenPriceDecimals: 0, }, }, }); expect(result).toEqual({ userReserves: [ { id: '137-0x88757f2f99175387ab4c6a4b3067c77a695b0349-0xb597cd8d3217ea6477232f9217fa70837ff667af-0x88757f2f99175387ab4c6a4b3067c77a695b0349', scaledXTokenBalance: '0', collaterizedBalance: '0', scaledVariableDebt: '0', avgMultiplier: '0', underlyingAsset: '0xb597cd8d3217ea6477232f9217fa70837ff667af', usageAsCollateralEnabledOnUser: false, ownedTokens: [], suppliedTokens: [], collaterizedTokens: [], auctionedTokens: [], isAtomic: false, atomicTokens: new Map(), tokenTraitMultipliers: new Map(), }, ], userEmodeCategoryId: 0, }); }); }); });