UNPKG

@vechain/vebetterdao-contracts

Version:

Open-source repository that houses the smart contracts powering the decentralized VeBetterDAO on the VeChain Thor blockchain.

51 lines (50 loc) 1.69 kB
import { getOrDeployContractInstances } from "./deploy"; export const filterEventsByName = (events, eventName) => { return events.filter(event => event.fragment && event.fragment.name === eventName); }; export const decodeEvents = (contract, events) => { return events.map(event => { return decodeEvent(event, contract); }); }; export const decodeEvent = (event, contract) => { return contract.interface.parseLog({ topics: event.topics, data: event.data, }); }; export const getEventName = (receipt, contract) => { const event = receipt?.logs[0]; const decodedLogs = contract.interface.parseLog({ topics: [...event?.topics], data: event ? event.data : "", }); return decodedLogs?.name; }; export const parseRoundStartedEvent = (event, xAllocationVoting) => { const decoded = decodeEvent(event, xAllocationVoting); return { roundId: parseInt(decoded?.args[0].toString()), proposer: decoded?.args[1], voteStart: decoded?.args[2], voteEnd: decoded?.args[3], appsIds: decoded?.args[4], }; }; export const parseAllocationVoteCastEvent = (event, xAllocationVoting) => { const decoded = decodeEvent(event, xAllocationVoting); return { voter: decoded?.args[0], roundId: decoded?.args[1], apps: decoded?.args[2], voteWeights: decoded?.args[3], }; }; export const parseAppAddedEvent = async (event) => { const { x2EarnApps } = await getOrDeployContractInstances({ forceDeploy: false }); const decoded = decodeEvent(event, x2EarnApps); return { id: decoded?.args[0], address: decoded?.args[1], }; };