@chorus-one/ethereum
Version:
All-in-one toolkit for building staking dApps on Ethereum network
66 lines (65 loc) • 2.2 kB
JavaScript
;
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;