From baf1813d1cfa65c9de38f72b67d03132f5899122 Mon Sep 17 00:00:00 2001 From: liangping <18786721@qq.com> Date: Mon, 1 Jan 2024 10:22:02 +0800 Subject: [PATCH] update osmosis client --- src/libs/clients/osmosis.ts | 50 +++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/libs/clients/osmosis.ts b/src/libs/clients/osmosis.ts index af3c9201..aa42df0b 100644 --- a/src/libs/clients/osmosis.ts +++ b/src/libs/clients/osmosis.ts @@ -1,11 +1,27 @@ import type{ RequestRegistry } from '@/libs/registry' // import dayjs from 'dayjs' +import { adapter } from '@/libs/registry' +import type { GovProposal, PaginatedProposals } from '@/types' // which registry is store export const store = 'name' // name or version // Blockchain Name export const name = 'osmosis' +function proposalAdapter(p: any): GovProposal { + if(p) { + if(p.messages && p.messages.length >= 1) p.content = p.messages[0].content || p.messages[0] + p.proposal_id = p.id + p.final_tally_result = { + yes: p.final_tally_result?.yes_count, + no: p.final_tally_result?.no_count, + no_with_veto: p.final_tally_result?.no_with_veto_count, + abstain: p.final_tally_result?.abstain_count, + } + } + return p +} + // osmosis custom request export const requests: Partial = { mint_inflation: { @@ -15,4 +31,38 @@ export const requests: Partial = { return {inflation: String(Number(first?.apr|| "0")/100.0)} } }, + gov_params_voting: { url: '/cosmos/gov/v1/params/voting', adapter }, + gov_params_tally: { url: '/cosmos/gov/v1/params/tallying', adapter }, + gov_params_deposit: { url: '/cosmos/gov/v1/params/deposit', adapter }, + gov_proposals: { url: '/cosmos/gov/v1/proposals', adapter: (source: any): PaginatedProposals => { + const proposals = source.proposals.map((p:any) => proposalAdapter(p)) + return { + proposals, + pagination: source.pagination + } + }}, + gov_proposals_proposal_id: { + url: '/cosmos/gov/v1/proposals/{proposal_id}', + adapter: (source: any): {proposal: GovProposal} => { + return { + proposal: proposalAdapter(source.proposal) + } + }, + }, + gov_proposals_deposits: { + url: '/cosmos/gov/v1/proposals/{proposal_id}/deposits', + adapter, + }, + gov_proposals_tally: { + url: '/cosmos/gov/v1/proposals/{proposal_id}/tally', + adapter, + }, + gov_proposals_votes: { + url: '/cosmos/gov/v1/proposals/{proposal_id}/votes', + adapter, + }, + gov_proposals_votes_voter: { + url: '/cosmos/gov/v1/proposals/{proposal_id}/votes/{voter}', + adapter, + }, }