From 8da37cd2e56e7778b34f973a9163749c663c33b1 Mon Sep 17 00:00:00 2001 From: Milan Steiner Date: Wed, 6 Apr 2022 10:44:55 +0200 Subject: [PATCH 1/4] Adding vesting module to stargate --- CHANGELOG.md | 1 + packages/stargate/src/modules/index.ts | 6 ++ .../src/modules/vesting/aminomessages.ts | 57 +++++++++++++++++++ .../stargate/src/modules/vesting/messages.ts | 6 ++ 4 files changed, 70 insertions(+) create mode 100644 packages/stargate/src/modules/vesting/aminomessages.ts create mode 100644 packages/stargate/src/modules/vesting/messages.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index d83dce78..ddfd548f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ and this project adheres to - @cosmjs/stargate: Added the ability to specify a custom account parser for `StargateClient` +- @cosmjs/stargate: Added support for vesting messages. ### Fixed diff --git a/packages/stargate/src/modules/index.ts b/packages/stargate/src/modules/index.ts index 755fe9ef..d8ff595a 100644 --- a/packages/stargate/src/modules/index.ts +++ b/packages/stargate/src/modules/index.ts @@ -86,3 +86,9 @@ export { } from "./staking/messages"; export { setupStakingExtension, StakingExtension } from "./staking/queries"; export { setupTxExtension, TxExtension } from "./tx/queries"; +export { + AminoMsgCreateVestingAccount, + createVestingAminoConverters, + isAminoMsgCreateVestingAccount, +} from "./vesting/aminomessages"; +export { vestingTypes } from "./vesting/messages"; diff --git a/packages/stargate/src/modules/vesting/aminomessages.ts b/packages/stargate/src/modules/vesting/aminomessages.ts new file mode 100644 index 00000000..46fa54f1 --- /dev/null +++ b/packages/stargate/src/modules/vesting/aminomessages.ts @@ -0,0 +1,57 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import { AminoMsg, Coin } from "@cosmjs/amino"; +import { MsgCreateVestingAccount } from "cosmjs-types/cosmos/vesting/v1beta1/tx"; +import Long from "long"; + +import { AminoConverters } from "../../aminotypes"; + +export interface AminoMsgCreateVestingAccount extends AminoMsg { + readonly type: "cosmos-sdk/MsgCreateVestingAccount"; + readonly value: { + /** Bech32 account address */ + readonly from_address: string; + /** Bech32 account address */ + readonly to_address: string; + readonly amount: readonly Coin[]; + readonly end_time: Long; + readonly delayed: boolean; + }; +} + +export function isAminoMsgCreateVestingAccount(msg: AminoMsg): msg is AminoMsgCreateVestingAccount { + return msg.type === "cosmos-sdk/MsgCreateVestingAccount"; +} + +export function createVestingAminoConverters(): AminoConverters { + return { + "/cosmos.vesting.v1beta1.MsgCreateVestingAccount": { + aminoType: "cosmos-sdk/MsgCreateVestingAccount", + toAmino: ({ + fromAddress, + toAddress, + amount, + endTime, + delayed, + }: MsgCreateVestingAccount): AminoMsgCreateVestingAccount["value"] => ({ + from_address: fromAddress, + to_address: toAddress, + amount: [...amount], + end_time: endTime, + delayed: delayed, + }), + fromAmino: ({ + from_address, + to_address, + amount, + end_time, + delayed, + }: AminoMsgCreateVestingAccount["value"]): MsgCreateVestingAccount => ({ + fromAddress: from_address, + toAddress: to_address, + amount: [...amount], + endTime: end_time, + delayed: delayed, + }), + }, + }; +} diff --git a/packages/stargate/src/modules/vesting/messages.ts b/packages/stargate/src/modules/vesting/messages.ts new file mode 100644 index 00000000..5fd99567 --- /dev/null +++ b/packages/stargate/src/modules/vesting/messages.ts @@ -0,0 +1,6 @@ +import { GeneratedType } from "@cosmjs/proto-signing"; +import { MsgCreateVestingAccount } from "cosmjs-types/cosmos/vesting/v1beta1/tx"; + +export const vestingTypes: ReadonlyArray<[string, GeneratedType]> = [ + ["/cosmos.vesting.v1beta1.MsgCreateVestingAccount", MsgCreateVestingAccount], +]; From 124f16ff71ac474d73a7775d060d540b01ce276a Mon Sep 17 00:00:00 2001 From: Milan Steiner Date: Wed, 6 Apr 2022 11:01:42 +0200 Subject: [PATCH 2/4] Adding vesting to default types --- packages/stargate/src/signingstargateclient.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/stargate/src/signingstargateclient.ts b/packages/stargate/src/signingstargateclient.ts index 5b3e72cf..92b2ae3f 100644 --- a/packages/stargate/src/signingstargateclient.ts +++ b/packages/stargate/src/signingstargateclient.ts @@ -38,6 +38,7 @@ import { MsgUndelegateEncodeObject, MsgWithdrawDelegatorRewardEncodeObject, stakingTypes, + vestingTypes, } from "./modules"; import { createAuthzAminoConverters, @@ -47,6 +48,7 @@ import { createGovAminoConverters, createIbcAminoConverters, createStakingAminoConverters, + createVestingAminoConverters, } from "./modules"; import { DeliverTxResponse, StargateClient, StargateClientOptions } from "./stargateclient"; @@ -59,6 +61,7 @@ export const defaultRegistryTypes: ReadonlyArray<[string, GeneratedType]> = [ ...govTypes, ...stakingTypes, ...ibcTypes, + ...vestingTypes, ]; function createDefaultRegistry(): Registry { From 55344935ed57b2f48c722e39d424da7bacac9aa5 Mon Sep 17 00:00:00 2001 From: Milan Steiner Date: Wed, 6 Apr 2022 12:56:13 +0200 Subject: [PATCH 3/4] Adding vestingAminoConverters to defaultTypes --- packages/stargate/src/signingstargateclient.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/stargate/src/signingstargateclient.ts b/packages/stargate/src/signingstargateclient.ts index 92b2ae3f..e0e13c5a 100644 --- a/packages/stargate/src/signingstargateclient.ts +++ b/packages/stargate/src/signingstargateclient.ts @@ -102,6 +102,7 @@ function createDefaultTypes(prefix: string): AminoConverters { ...createStakingAminoConverters(prefix), ...createIbcAminoConverters(), ...createFreegrantAminoConverters(), + ...createVestingAminoConverters(), }; } From d61be455168dadaf8b076a085a149edd358f85a3 Mon Sep 17 00:00:00 2001 From: Milan Steiner Date: Thu, 7 Apr 2022 10:29:11 +0200 Subject: [PATCH 4/4] Moving changes to ## Unreleased --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ddfd548f..60c54ee7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,13 +6,14 @@ and this project adheres to ## [Unreleased] +- @cosmjs/stargate: Added support for vesting messages. + ## [0.28.1] - 2022-03-30 ### Added - @cosmjs/stargate: Added the ability to specify a custom account parser for `StargateClient` -- @cosmjs/stargate: Added support for vesting messages. ### Fixed