UNPKG

@chorus-one/ethereum

Version:

All-in-one toolkit for building staking dApps on Ethereum network

70 lines (69 loc) 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getVault = void 0; // Extracts vault properties from Stakewise API async function extractVaultProperties(connector, vault) { const vars_getVault = { address: vault.toLowerCase() }; const today = new Date(); const dateBeforeYesterday = new Date(); dateBeforeYesterday.setDate(dateBeforeYesterday.getDate() - 8); today.setDate(today.getDate()); const vaultData = await connector.graphqlRequest({ type: 'graph', op: 'Vault', query: ` query Vault($address: ID!) { vault(id: $address) { address: id performance: score apy admin isErc20 imageUrl capacity mevEscrow isPrivate createdAt mevEscrow tokenName feePercent totalAssets isBlocklist displayName description whitelister tokenSymbol feeRecipient blocklistCount whitelistCount blocklistManager } } `, variables: vars_getVault }); if (!vaultData.data.vault) { throw new Error(`Vault data is missing the vault field`); } return { vaultData: vaultData.data }; } // Get latest balance and cached properties async function extractVaultDetails(connector, vault) { const vaultProperties = await extractVaultProperties(connector, vault); const vaultData = vaultProperties.vaultData; return { address: vault, name: vaultData.vault.displayName, description: vaultData.vault.description, logoUrl: vaultData.vault.imageUrl, tvl: BigInt(vaultData.vault.totalAssets).toString(), apy: vaultData.vault.apy > 0 ? vaultData.vault.apy : '0' }; } async function getVault(params) { const { connector, vault } = params; return extractVaultDetails(connector, vault); } exports.getVault = getVault;