sdk38: Add gov parametersByType endpoint to lcd
This commit is contained in:
parent
9c8c61f512
commit
0d6484648a
54
packages/sdk38/src/lcdapi/gov.spec.ts
Normal file
54
packages/sdk38/src/lcdapi/gov.spec.ts
Normal 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",
|
||||
},
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
92
packages/sdk38/src/lcdapi/gov.ts
Normal file
92
packages/sdk38/src/lcdapi/gov.ts
Normal 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
70
packages/sdk38/types/lcdapi/gov.d.ts
vendored
Normal 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;
|
||||
Loading…
Reference in New Issue
Block a user