lending-apy-fetcher-ts
Version:
TypeScript library for fetching APYs from DeFi lending protocols
92 lines (82 loc) • 2.95 kB
text/typescript
// Initialize environment variables (loads .env file)
export function initializeEnvironment(): void {
try {
require('dotenv').config();
} catch (error) {
// dotenv is not installed, continue without it
}
}
// Auto-initialize on import
initializeEnvironment();
// Main exports
export { ApyFetcher } from './fetcher';
// Types
export type {
ApyData,
Protocol,
ApyResult,
GroupedApys,
BestApyResult,
TokenMapping,
NetworkTokenMappings,
} from './types';
// Errors
export {
ApyFetcherError,
NetworkError,
ValidationError,
AuthenticationError,
} from './types';
// Protocols
export { ETHEREUM, POLYGON, ARBITRUM, OPTIMISM } from './protocols';
// Protocols
// export { KaminoProtocol } from './protocols/kamino';
export { AaveEthProtocol } from './protocols/aave-eth';
export { AavePolygonProtocol } from './protocols/aave-polygon';
export { AaveArbitrumProtocol } from './protocols/aave-arbitrum';
export { AaveOptimismProtocol } from './protocols/aave-optimism';
// Convenience function
import { ApyFetcher } from './fetcher';
import { ApyData, ApyResult, Protocol } from './types';
// import { AppConfig } from './config';
/**
* Simple convenience function to fetch APYs from all protocols
* @param config Optional configuration, defaults to environment-based config
* @param gracefulDegradation Continue with other protocols if one fails (default: true)
* @returns Promise<ApyData[]> Array of APY data from all protocols
*/
export async function getApys(
protocols?: Protocol[],
gracefulDegradation: boolean = true
): Promise<ApyData[]> {
const fetcher = new ApyFetcher(protocols);
return await fetcher.fetchApys(gracefulDegradation);
}
/**
* Get APYs with detailed results per protocol
* @param config Optional configuration, defaults to environment-based config
* @param gracefulDegradation Continue with other protocols if one fails (default: true)
* @returns Promise<ApyResult[]> Array of results with success/error status per protocol
*/
export async function getApysWithResults(
protocols?: Protocol[],
gracefulDegradation: boolean = true
): Promise<ApyResult[]> {
const fetcher = new ApyFetcher(protocols);
return await fetcher.fetchApysWithResults(gracefulDegradation);
}
/**
* Get the best APY for a specific token across all protocols
* @param tokenSymbol Token symbol to search for (e.g., 'USDC', 'WETH')
* @param config Optional configuration, defaults to environment-based config
* @param gracefulDegradation Continue with other protocols if one fails (default: true)
* @returns Promise<BestApyResult | null> Best APY result or null if token not found
*/
export async function getBestApyForToken(
protocols: Protocol[],
tokenSymbol: string,
gracefulDegradation: boolean = true
): Promise<import('./types').BestApyResult | null> {
const fetcher = new ApyFetcher(protocols);
return await fetcher.getBestApyForToken(tokenSymbol, gracefulDegradation);
}