sdk38: Add gov parametersByType endpoint to lcd

This commit is contained in:
willclarktech 2020-07-14 15:37:07 +02:00
parent 9c8c61f512
commit 0d6484648a
No known key found for this signature in database
GPG Key ID: 551A86E2E398ADF7
3 changed files with 216 additions and 0 deletions

View File

@ -0,0 +1,54 @@
/* eslint-disable @typescript-eslint/camelcase */
import { nonNegativeIntegerMatcher, pendingWithoutWasmd, wasmd } from "../testutils.spec";
import { GovExtension, GovParametersType, setupGovExtension } from "./gov";
import { LcdClient } from "./lcdclient";
function makeGovClient(apiUrl: string): LcdClient & GovExtension {
return LcdClient.withExtensions({ apiUrl }, setupGovExtension);
}
describe("GovExtension", () => {
describe("parametersByType", () => {
it("works for deposit", async () => {
pendingWithoutWasmd();
const client = makeGovClient(wasmd.endpoint);
const paramsType = GovParametersType.Deposit;
const response = await client.gov.parametersByType(paramsType);
expect(response).toEqual({
height: jasmine.stringMatching(nonNegativeIntegerMatcher),
result: {
min_deposit: [{ denom: "ustake", amount: "10000000" }],
max_deposit_period: "172800000000000",
},
});
});
it("works for tallying", async () => {
pendingWithoutWasmd();
const client = makeGovClient(wasmd.endpoint);
const paramsType = GovParametersType.Tallying;
const response = await client.gov.parametersByType(paramsType);
expect(response).toEqual({
height: jasmine.stringMatching(nonNegativeIntegerMatcher),
result: {
quorum: "0.334000000000000000",
threshold: "0.500000000000000000",
veto: "0.334000000000000000",
},
});
});
it("works for voting", async () => {
pendingWithoutWasmd();
const client = makeGovClient(wasmd.endpoint);
const paramsType = GovParametersType.Voting;
const response = await client.gov.parametersByType(paramsType);
expect(response).toEqual({
height: jasmine.stringMatching(nonNegativeIntegerMatcher),
result: {
voting_period: "172800000000000",
},
});
});
});
});

View File

@ -0,0 +1,92 @@
import { Coin } from "../coins";
import { LcdClient } from "./lcdclient";
export enum GovParametersType {
Deposit = "deposit",
Tallying = "tallying",
Voting = "voting",
}
export interface GovParametersDepositResponse {
readonly height: string;
readonly result: {
readonly min_deposit: readonly Coin[];
readonly max_deposit_period: string;
};
}
export interface GovParametersTallyingResponse {
readonly height: string;
readonly result: {
readonly quorum: string;
readonly threshold: string;
readonly veto: string;
};
}
export interface GovParametersVotingResponse {
readonly height: string;
readonly result: {
readonly voting_period: string;
};
}
export type GovParametersByTypeResponse =
| GovParametersDepositResponse
| GovParametersTallyingResponse
| GovParametersVotingResponse;
export interface GovProposalsResponse {
readonly height: string;
readonly result: {};
}
export interface GovProposalsByIdResponse {
readonly height: string;
readonly result: {};
}
export interface GovProposerResponse {
readonly height: string;
readonly result: {};
}
export interface GovDepositsResponse {
readonly height: string;
readonly result: {};
}
export interface GovDepositsByDepositorResponse {
readonly height: string;
readonly result: {};
}
export interface GovTallyResponse {
readonly height: string;
readonly result: {};
}
export interface GovVotesResponse {
readonly height: string;
readonly result: {};
}
export interface GovVotesByVoterResponse {
readonly height: string;
readonly result: {};
}
export interface GovExtension {
readonly gov: {
readonly parametersByType: (parametersType: GovParametersType) => Promise<GovParametersByTypeResponse>;
};
}
export function setupGovExtension(base: LcdClient): GovExtension {
return {
gov: {
parametersByType: async (parametersType: GovParametersType) =>
base.get(`/gov/parameters/${parametersType}`),
},
};
}

70
packages/sdk38/types/lcdapi/gov.d.ts vendored Normal file
View File

@ -0,0 +1,70 @@
import { Coin } from "../coins";
import { LcdClient } from "./lcdclient";
export declare enum GovParametersType {
Deposit = "deposit",
Tallying = "tallying",
Voting = "voting",
}
export interface GovParametersDepositResponse {
readonly height: string;
readonly result: {
readonly min_deposit: readonly Coin[];
readonly max_deposit_period: string;
};
}
export interface GovParametersTallyingResponse {
readonly height: string;
readonly result: {
readonly quorum: string;
readonly threshold: string;
readonly veto: string;
};
}
export interface GovParametersVotingResponse {
readonly height: string;
readonly result: {
readonly voting_period: string;
};
}
export declare type GovParametersByTypeResponse =
| GovParametersDepositResponse
| GovParametersTallyingResponse
| GovParametersVotingResponse;
export interface GovProposalsResponse {
readonly height: string;
readonly result: {};
}
export interface GovProposalsByIdResponse {
readonly height: string;
readonly result: {};
}
export interface GovProposerResponse {
readonly height: string;
readonly result: {};
}
export interface GovDepositsResponse {
readonly height: string;
readonly result: {};
}
export interface GovDepositsByDepositorResponse {
readonly height: string;
readonly result: {};
}
export interface GovTallyResponse {
readonly height: string;
readonly result: {};
}
export interface GovVotesResponse {
readonly height: string;
readonly result: {};
}
export interface GovVotesByVoterResponse {
readonly height: string;
readonly result: {};
}
export interface GovExtension {
readonly gov: {
readonly parametersByType: (parametersType: GovParametersType) => Promise<GovParametersByTypeResponse>;
};
}
export declare function setupGovExtension(base: LcdClient): GovExtension;