UNPKG

@dydxfoundation/governance

Version:
49 lines (48 loc) 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeGetSortedProposalVotesQuery = exports.getSortedProposalVotesQuery = void 0; const utils_1 = require("ethers/lib/utils"); const getSortedProposalVotesQuery = (proposalId, support, limit) => { if (limit <= 0 || limit > 1000) { throw new Error('The limit parameter must be between 0 and 1000 (exclusive).'); } return `query { proposalVotes(first: ${limit}, where: { support: ${support}, proposal: "${proposalId}", }, orderBy:votingPower, orderDirection:desc) { proposal { id } user { id } votingPower } }`; }; exports.getSortedProposalVotesQuery = getSortedProposalVotesQuery; const executeGetSortedProposalVotesQuery = async (client, proposalId, support, limit) => { const query = (0, exports.getSortedProposalVotesQuery)(proposalId, support, limit); const queryResult = await client.query(query).toPromise(); if (!queryResult.data) { throw new Error(`Invalid GraphQL query ${query}`); } // assume query executed successfully if `data` is defined and is formatted correctly. // If not, error will be thrown below. const topVotes = []; queryResult.data.proposalVotes.forEach((vote) => { var _a; if (!((_a = vote === null || vote === void 0 ? void 0 : vote.user) === null || _a === void 0 ? void 0 : _a.id) || !(vote === null || vote === void 0 ? void 0 : vote.votingPower)) { throw new Error(` Vote object returned from subgraph malformed. ProposalId: ${proposalId}, support: ${support}, limit: ${limit}.`); } topVotes.push({ userAddress: vote.user.id, votingPower: (0, utils_1.formatEther)(vote.votingPower), support, }); }); return topVotes; }; exports.executeGetSortedProposalVotesQuery = executeGetSortedProposalVotesQuery;