From 275ff2fb5efc88b8dbb8a266050df4c817efe053 Mon Sep 17 00:00:00 2001 From: willclarktech Date: Tue, 14 Jul 2020 15:57:32 +0200 Subject: [PATCH] sdk38: Add gov proposals endpoint to lcd --- packages/sdk38/src/lcdapi/gov.spec.ts | 12 ++++++++++++ packages/sdk38/src/lcdapi/gov.ts | 23 ++++++++++++++++++++++- packages/sdk38/types/lcdapi/gov.d.ts | 20 +++++++++++++++++++- 3 files changed, 53 insertions(+), 2 deletions(-) diff --git a/packages/sdk38/src/lcdapi/gov.spec.ts b/packages/sdk38/src/lcdapi/gov.spec.ts index 904199ff..7ec10cf6 100644 --- a/packages/sdk38/src/lcdapi/gov.spec.ts +++ b/packages/sdk38/src/lcdapi/gov.spec.ts @@ -51,4 +51,16 @@ describe("GovExtension", () => { }); }); }); + + describe("proposals", () => { + it("works", async () => { + pendingWithoutWasmd(); + const client = makeGovClient(wasmd.endpoint); + const response = await client.gov.proposals(); + expect(response).toEqual({ + height: jasmine.stringMatching(nonNegativeIntegerMatcher), + result: [], + }); + }); + }); }); diff --git a/packages/sdk38/src/lcdapi/gov.ts b/packages/sdk38/src/lcdapi/gov.ts index d7c89e59..2d9d78d2 100644 --- a/packages/sdk38/src/lcdapi/gov.ts +++ b/packages/sdk38/src/lcdapi/gov.ts @@ -36,9 +36,28 @@ export type GovParametersByTypeResponse = | GovParametersTallyingResponse | GovParametersVotingResponse; +export interface TallyResult { + readonly yes: string; + readonly abstain: string; + readonly no: string; + readonly no_with_veto: string; +} + +export interface TextProposal { + readonly proposal_id: number; + readonly title: string; + readonly description: string; + readonly proposal_type: string; + readonly proposal_status: string; + readonly final_tally_result: TallyResult; + readonly submit_time: string; + readonly total_deposit: readonly Coin[]; + readonly voting_start_time: string; +} + export interface GovProposalsResponse { readonly height: string; - readonly result: {}; + readonly result: readonly TextProposal[]; } export interface GovProposalsByIdResponse { @@ -79,6 +98,7 @@ export interface GovVotesByVoterResponse { export interface GovExtension { readonly gov: { readonly parametersByType: (parametersType: GovParametersType) => Promise; + readonly proposals: () => Promise; }; } @@ -87,6 +107,7 @@ export function setupGovExtension(base: LcdClient): GovExtension { gov: { parametersByType: async (parametersType: GovParametersType) => base.get(`/gov/parameters/${parametersType}`), + proposals: async () => base.get("/gov/proposals"), }, }; } diff --git a/packages/sdk38/types/lcdapi/gov.d.ts b/packages/sdk38/types/lcdapi/gov.d.ts index 9623f647..bdf24211 100644 --- a/packages/sdk38/types/lcdapi/gov.d.ts +++ b/packages/sdk38/types/lcdapi/gov.d.ts @@ -30,9 +30,26 @@ export declare type GovParametersByTypeResponse = | GovParametersDepositResponse | GovParametersTallyingResponse | GovParametersVotingResponse; +export interface TallyResult { + readonly yes: string; + readonly abstain: string; + readonly no: string; + readonly no_with_veto: string; +} +export interface TextProposal { + readonly proposal_id: number; + readonly title: string; + readonly description: string; + readonly proposal_type: string; + readonly proposal_status: string; + readonly final_tally_result: TallyResult; + readonly submit_time: string; + readonly total_deposit: readonly Coin[]; + readonly voting_start_time: string; +} export interface GovProposalsResponse { readonly height: string; - readonly result: {}; + readonly result: readonly TextProposal[]; } export interface GovProposalsByIdResponse { readonly height: string; @@ -65,6 +82,7 @@ export interface GovVotesByVoterResponse { export interface GovExtension { readonly gov: { readonly parametersByType: (parametersType: GovParametersType) => Promise; + readonly proposals: () => Promise; }; } export declare function setupGovExtension(base: LcdClient): GovExtension;