diff --git a/packages/stargate/src/modules/staking/aminomessages.ts b/packages/stargate/src/modules/staking/aminomessages.ts index 7b4c3732..2300259b 100644 --- a/packages/stargate/src/modules/staking/aminomessages.ts +++ b/packages/stargate/src/modules/staking/aminomessages.ts @@ -5,6 +5,7 @@ import { decodePubkey, encodePubkey } from "@cosmjs/proto-signing"; import { assertDefinedAndNotNull } from "@cosmjs/utils"; import { MsgBeginRedelegate, + MsgCancelUnbondingDelegation, MsgCreateValidator, MsgDelegate, MsgEditValidator, @@ -143,6 +144,20 @@ export function isAminoMsgUndelegate(msg: AminoMsg): msg is AminoMsgUndelegate { return msg.type === "cosmos-sdk/MsgUndelegate"; } +export interface AminoMsgCancelUnbondingDelegation extends AminoMsg { + readonly type: "cosmos-sdk/MsgCancelUnbondingDelegation"; + readonly value: { + readonly delegator_address: string; + readonly validator_address: string; + readonly amount: Coin; + readonly creation_height: string; + }; +} + +export function isAminoMsgCancelUnbondingDelegation(msg: AminoMsg): msg is AminoMsgCancelUnbondingDelegation { + return msg.type === "cosmos-sdk/MsgCancelUnbondingDelegation"; +} + export function createStakingAminoConverters(): Record { return { "/cosmos.staking.v1beta1.MsgBeginRedelegate": { @@ -326,5 +341,33 @@ export function createStakingAminoConverters(): Record { amount: amount, }), }, + "/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation": { + aminoType: "cosmos-sdk/MsgCancelUnbondingDelegation", + toAmino: ({ + delegatorAddress, + validatorAddress, + amount, + creationHeight, + }: MsgCancelUnbondingDelegation): AminoMsgCancelUnbondingDelegation["value"] => { + assertDefinedAndNotNull(amount, "missing amount"); + return { + delegator_address: delegatorAddress, + validator_address: validatorAddress, + amount: amount, + creation_height: creationHeight, + }; + }, + fromAmino: ({ + delegator_address, + validator_address, + amount, + creation_height, + }: AminoMsgCancelUnbondingDelegation["value"]): MsgCancelUnbondingDelegation => ({ + delegator_address: delegator_address, + validator_address: validator_address, + amount: amount, + creation_height: creation_height, + }), + }, }; } diff --git a/packages/stargate/src/modules/staking/messages.ts b/packages/stargate/src/modules/staking/messages.ts index 7973adc3..0b769153 100644 --- a/packages/stargate/src/modules/staking/messages.ts +++ b/packages/stargate/src/modules/staking/messages.ts @@ -1,6 +1,7 @@ import { EncodeObject, GeneratedType } from "@cosmjs/proto-signing"; import { MsgBeginRedelegate, + MsgCancelUnbondingDelegation, MsgCreateValidator, MsgDelegate, MsgEditValidator, @@ -13,6 +14,7 @@ export const stakingTypes: ReadonlyArray<[string, GeneratedType]> = [ ["/cosmos.staking.v1beta1.MsgDelegate", MsgDelegate], ["/cosmos.staking.v1beta1.MsgEditValidator", MsgEditValidator], ["/cosmos.staking.v1beta1.MsgUndelegate", MsgUndelegate], + ["/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation", MsgCancelUnbondingDelegation], ]; export interface MsgBeginRedelegateEncodeObject extends EncodeObject { @@ -59,3 +61,17 @@ export interface MsgUndelegateEncodeObject extends EncodeObject { export function isMsgUndelegateEncodeObject(object: EncodeObject): object is MsgUndelegateEncodeObject { return (object as MsgUndelegateEncodeObject).typeUrl === "/cosmos.staking.v1beta1.MsgUndelegate"; } + +export interface MsgCancelUnbondingDelegationEncodeObject extends EncodeObject { + readonly typeUrl: "/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation"; + readonly value: Partial; +} + +export function isMsgCancelUnbondingDelegationEncodeObject( + object: EncodeObject, +): object is MsgCancelUnbondingDelegationEncodeObject { + return ( + (object as MsgCancelUnbondingDelegationEncodeObject).typeUrl === + "/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation" + ); +}