lending-apy-fetcher-ts
Version:
TypeScript library for fetching APYs from DeFi lending protocols
31 lines (28 loc) • 1.18 kB
text/typescript
import { Protocol, ApyData, NetworkError } from '../types';
import { getAaveSupplyRates } from '../utils/aave-helpers';
import { ChainId, UiPoolDataProvider } from '@aave/contract-helpers';
import * as markets from '@bgd-labs/aave-address-book';
import { ethers } from 'ethers';
import { ARBITRUM } from './index';
export class AaveArbitrumProtocol implements Protocol {
public readonly name = 'Aave';
public readonly network = ARBITRUM;
public readonly provider: ethers.providers.JsonRpcProvider;
constructor(
rpc_url: string = 'https://arb1.arbitrum.io/rpc',
) {
this.provider = new ethers.providers.JsonRpcProvider(rpc_url);
}
async fetchApys(): Promise<ApyData[]> {
try {
let contract =new UiPoolDataProvider({
uiPoolDataProviderAddress: markets.AaveV3Arbitrum.UI_POOL_DATA_PROVIDER,
provider: this.provider,
chainId: ChainId.arbitrum_one,
});
return await getAaveSupplyRates(this.network, contract, markets.AaveV3Arbitrum.POOL_ADDRESSES_PROVIDER);
} catch (error) {
throw new NetworkError(`Failed to fetch Aave Arbitrum APYs: ${error}`, this.name, error as Error);
}
}
}