UNPKG

@chorus-one/ethereum

Version:

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

66 lines (65 loc) 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getTxHistory = void 0; const transactionHistory_1 = require("../types/transactionHistory"); async function extractTransactionsHistory(connector, vault, userAccount) { const vars_getActions = { where: { vault_: { id: vault.toLowerCase() }, actionType_in: Object.values(transactionHistory_1.VaultActionType), address: userAccount.toLowerCase() }, first: 1000, skip: 0 }; const actionsData = await connector.graphqlRequest({ type: 'graph', op: 'AllocatorActions', query: ` query AllocatorActions( $skip: Int! $first: Int! $where: AllocatorAction_filter ) { allocatorActions( skip: $skip, first: $first, orderBy: createdAt, orderDirection: desc, where: $where, ) { id assets shares createdAt actionType } } `, variables: vars_getActions }); if (!actionsData.data.allocatorActions || actionsData.data.allocatorActions.length === 0) { throw new Error(`Transaction data is missing the allocatorActions field`); } const interactions = []; // eslint-disable-next-line @typescript-eslint/no-explicit-any actionsData.data.allocatorActions.forEach((action) => { const createdAt = action.createdAt; interactions.push({ vault: vault, when: new Date(parseInt(createdAt) * 1000), type: action.actionType, amount: action.assets ? BigInt(action.assets) : 0n, // some txs don't have assets, e.g. ExitQueueEntered hash: action.id }); }); return interactions; } async function getTxHistory(params) { const { connector, vault, userAccount } = params; const interactions = await extractTransactionsHistory(connector, vault, userAccount); return interactions; } exports.getTxHistory = getTxHistory;