@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
JavaScript
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],
};
};