UNPKG

@agentek/tools

Version:

Blockchain tools for AI agents

54 lines 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getNaniProposals = void 0; const zod_1 = require("zod"); const client_js_1 = require("../client.js"); const chains_1 = require("viem/chains"); const abis_js_1 = require("./abis.js"); const constants_js_1 = require("./constants.js"); const supportedChains = [chains_1.mainnet, chains_1.base]; exports.getNaniProposals = (0, client_js_1.createTool)({ name: "getNaniProposals", description: "Get proposals for NANIDAO", supportedChains, parameters: zod_1.z.object({ account: zod_1.z.string(), chainId: zod_1.z.number(), dao: zod_1.z.string(), }), execute: async (client, args) => { if (!args.dao.toLowerCase().includes("nani")) { return "Only NANIDAO is supported right now. More soon ✈️"; } const publicClient = client.getPublicClient(args.chainId); const votes = await publicClient.readContract({ address: constants_js_1.SIGNALS_ADDRESS, abi: abis_js_1.SignalsAbi, functionName: "getLatestProposals", }); const proposalCount = await publicClient.readContract({ address: constants_js_1.SIGNALS_ADDRESS, abi: abis_js_1.SignalsAbi, functionName: "proposalCount", }); const count = Number(proposalCount); const len = count > 10 ? 10 : count; const proposalIds = Array.from({ length: len }, (_, i) => count - len + i); const isPassingResults = await Promise.all(proposalIds.map((id) => publicClient.readContract({ address: constants_js_1.SIGNALS_ADDRESS, abi: abis_js_1.SignalsAbi, functionName: "isPassing", args: [BigInt(id)], }))); return votes.map((vote, index) => ({ proposer: vote.proposer, yes: vote.yes.toString(), no: vote.no.toString(), created: new Date(Number(vote.created) * 1000).toLocaleString(), content: vote.content, id: proposalIds[index], isPassing: isPassingResults[index], })); }, }); //# sourceMappingURL=tools.js.map