diff --git a/packages/cosmwasm/src/cw3cosmwasmclient.spec.ts b/packages/cosmwasm/src/cw3cosmwasmclient.spec.ts index f9e7035f..3b2888f5 100644 --- a/packages/cosmwasm/src/cw3cosmwasmclient.spec.ts +++ b/packages/cosmwasm/src/cw3cosmwasmclient.spec.ts @@ -105,7 +105,7 @@ describe("Cw3CosmWasmClient", () => { const wallet = await Secp256k1HdWallet.fromMnemonic(alice.mnemonic); const client = new Cw3CosmWasmClient(launchpad.endpoint, alice.address0, wallet, contractAddress); - const result = await client.listProposals(proposalId - 1, 1); + const result = await client.listProposals({ startAfter: proposalId - 1, limit: 1 }); expect(result).toEqual({ proposals: [ @@ -127,7 +127,7 @@ describe("Cw3CosmWasmClient", () => { const wallet = await Secp256k1HdWallet.fromMnemonic(alice.mnemonic); const client = new Cw3CosmWasmClient(launchpad.endpoint, alice.address0, wallet, contractAddress); - const result = await client.reverseProposals(undefined, 1); + const result = await client.reverseProposals({ limit: 1 }); expect(result).toEqual({ proposals: [ @@ -218,7 +218,7 @@ describe("Cw3CosmWasmClient", () => { }, }; await client.createMultisigProposal("My proposal", "A proposal to propose proposing proposals", [msg]); - const { proposals } = await client.reverseProposals(undefined, 1); + const { proposals } = await client.reverseProposals({ limit: 1 }); const proposalId = proposals[0].id; const executeResult = await client.executeMultisigProposal(proposalId); expect(executeResult).toBeTruthy(); @@ -255,7 +255,7 @@ describe("Cw3CosmWasmClient", () => { await proposer.createMultisigProposal("My proposal", "A proposal to propose proposing proposals", [ msg, ]); - const { proposals } = await voter.reverseProposals(undefined, 1); + const { proposals } = await voter.reverseProposals({ limit: 1 }); const proposalId = proposals[0].id; const voteResult = await voter.voteMultisigProposal(proposalId, Vote.Yes); expect(voteResult).toBeTruthy(); @@ -306,7 +306,7 @@ describe("Cw3CosmWasmClient", () => { at_height: currentHeight + 5, }, ); - const { proposals } = await voter1.reverseProposals(undefined, 1); + const { proposals } = await voter1.reverseProposals({ limit: 1 }); const proposalId = proposals[0].id; const vote1Result = await voter1.voteMultisigProposal(proposalId, Vote.Abstain); diff --git a/packages/cosmwasm/src/cw3cosmwasmclient.ts b/packages/cosmwasm/src/cw3cosmwasmclient.ts index f2344a3e..bfde5a36 100644 --- a/packages/cosmwasm/src/cw3cosmwasmclient.ts +++ b/packages/cosmwasm/src/cw3cosmwasmclient.ts @@ -55,6 +55,21 @@ export interface VotersResult { readonly voters: readonly VoterResult[]; } +interface StartBeforeNumberPaginationOptions { + readonly startBefore?: number; + readonly limit?: number; +} + +interface StartAfterNumberPaginationOptions { + readonly startAfter?: number; + readonly limit?: number; +} + +interface StartAfterStringPaginationOptions { + readonly startAfter?: string; + readonly limit?: number; +} + export class Cw3CosmWasmClient extends SigningCosmWasmClient { private readonly cw3ContractAddress: string; @@ -79,7 +94,9 @@ export class Cw3CosmWasmClient extends SigningCosmWasmClient { return this.queryContractSmart(this.cw3ContractAddress, { proposal: { proposal_id: proposalId } }); } - public listProposals(startAfter?: number, limit?: number): Promise { + public listProposals({ startAfter, limit }: StartAfterNumberPaginationOptions = {}): Promise< + ProposalsResult + > { return this.queryContractSmart(this.cw3ContractAddress, { list_proposals: { start_after: startAfter, @@ -88,7 +105,9 @@ export class Cw3CosmWasmClient extends SigningCosmWasmClient { }); } - public reverseProposals(startBefore?: number, limit?: number): Promise { + public reverseProposals({ startBefore, limit }: StartBeforeNumberPaginationOptions = {}): Promise< + ProposalsResult + > { return this.queryContractSmart(this.cw3ContractAddress, { reverse_proposals: { start_before: startBefore, @@ -106,7 +125,10 @@ export class Cw3CosmWasmClient extends SigningCosmWasmClient { }); } - public listVotes(proposalId: number, startAfter?: string, limit?: number): Promise { + public listVotes( + proposalId: number, + { startAfter, limit }: StartAfterStringPaginationOptions = {}, + ): Promise { return this.queryContractSmart(this.cw3ContractAddress, { list_votes: { proposal_id: proposalId, @@ -124,7 +146,7 @@ export class Cw3CosmWasmClient extends SigningCosmWasmClient { }); } - public listVoters(startAfter?: string, limit?: number): Promise { + public listVoters({ startAfter, limit }: StartAfterStringPaginationOptions = {}): Promise { return this.queryContractSmart(this.cw3ContractAddress, { list_voters: { start_after: startAfter, diff --git a/packages/cosmwasm/types/cw3cosmwasmclient.d.ts b/packages/cosmwasm/types/cw3cosmwasmclient.d.ts index 72171efe..529f34f8 100644 --- a/packages/cosmwasm/types/cw3cosmwasmclient.d.ts +++ b/packages/cosmwasm/types/cw3cosmwasmclient.d.ts @@ -47,6 +47,18 @@ export interface VoterResult { export interface VotersResult { readonly voters: readonly VoterResult[]; } +interface StartBeforeNumberPaginationOptions { + readonly startBefore?: number; + readonly limit?: number; +} +interface StartAfterNumberPaginationOptions { + readonly startAfter?: number; + readonly limit?: number; +} +interface StartAfterStringPaginationOptions { + readonly startAfter?: string; + readonly limit?: number; +} export declare class Cw3CosmWasmClient extends SigningCosmWasmClient { private readonly cw3ContractAddress; constructor( @@ -60,12 +72,15 @@ export declare class Cw3CosmWasmClient extends SigningCosmWasmClient { ); getThreshold(): Promise; getProposal(proposalId: number): Promise; - listProposals(startAfter?: number, limit?: number): Promise; - reverseProposals(startBefore?: number, limit?: number): Promise; + listProposals({ startAfter, limit }?: StartAfterNumberPaginationOptions): Promise; + reverseProposals({ startBefore, limit }?: StartBeforeNumberPaginationOptions): Promise; getVote(proposalId: number, voter: string): Promise; - listVotes(proposalId: number, startAfter?: string, limit?: number): Promise; + listVotes( + proposalId: number, + { startAfter, limit }?: StartAfterStringPaginationOptions, + ): Promise; getVoter(address: string): Promise; - listVoters(startAfter?: string, limit?: number): Promise; + listVoters({ startAfter, limit }?: StartAfterStringPaginationOptions): Promise; createMultisigProposal( title: string, description: string, @@ -78,3 +93,4 @@ export declare class Cw3CosmWasmClient extends SigningCosmWasmClient { executeMultisigProposal(proposalId: number, memo?: string): Promise; closeMultisigProposal(proposalId: number, memo?: string): Promise; } +export {};