Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add alliance amino codecs #19

Merged
merged 3 commits into from
Apr 26, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 51 additions & 19 deletions src/core/alliance/msgs/MsgClaimDelegationRewards.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,51 +11,74 @@ import { MsgClaimDelegationRewards as MsgClaimDelegationRewards_pb } from '@terr
* The rewards will be deposited to their Withdraw Address.
*/
export class MsgClaimDelegationRewards extends JSONSerializable<
{},
MsgClaimDelegationRewards.Amino,
MsgClaimDelegationRewards.Data,
MsgClaimDelegationRewards.Proto
> {
/**
*
* @param delegatorAddress delegator's account address
* @param validatorAddress validator's operator address
* @param delegator_address delegator's account address
* @param validator_address validator's operator address
* @param denom alliance denom to claim rewards for (e.g. ibc/AAE7E4 or uluna...)
*/
constructor(
public delegatorAddress: AccAddress,
public validatorAddress: ValAddress,
public delegator_address: AccAddress,
public validator_address: ValAddress,
public denom: string
) {
super();
}

public toAmino(_?: boolean): {} {
public static fromAmino(
data: MsgClaimDelegationRewards.Amino,
_?: boolean
): MsgClaimDelegationRewards {
_;
throw Error(
'Legacy Amino not supported for MsgDelegate from x/alliance module'
const {
value: { delegator_address, validator_address, denom },
} = data;

return new MsgClaimDelegationRewards(
delegator_address,
validator_address,
denom
);
}

public toAmino(_?: boolean): MsgClaimDelegationRewards.Amino {
_;
const { delegator_address, validator_address, denom } = this;

return {
type: 'alliance/MsgClaimDelegationRewards',
value: {
delegator_address,
validator_address,
denom,
},
};
}

public static fromData(
proto: MsgClaimDelegationRewards.Data,
_?: boolean
): MsgClaimDelegationRewards {
_;
const { delegatorAddress, validatorAddress, denom } = proto;
const { delegator_address, validator_address, denom } = proto;
return new MsgClaimDelegationRewards(
delegatorAddress,
validatorAddress,
delegator_address,
validator_address,
denom
);
}

public toData(_?: boolean): MsgClaimDelegationRewards.Data {
_;
const { delegatorAddress, validatorAddress, denom } = this;
const { delegator_address, validator_address, denom } = this;
return {
'@type': '/alliance.alliance.MsgClaimDelegationRewards',
delegatorAddress,
validatorAddress,
delegator_address,
validator_address,
denom,
};
}
Expand All @@ -74,10 +97,10 @@ export class MsgClaimDelegationRewards extends JSONSerializable<

public toProto(_?: boolean): MsgClaimDelegationRewards.Proto {
_;
const { delegatorAddress, validatorAddress, denom } = this;
const { delegator_address, validator_address, denom } = this;
return MsgClaimDelegationRewards_pb.fromPartial({
delegatorAddress: delegatorAddress,
validatorAddress: validatorAddress,
delegatorAddress: delegator_address,
validatorAddress: validator_address,
denom: denom,
});
}
Expand All @@ -99,10 +122,19 @@ export class MsgClaimDelegationRewards extends JSONSerializable<
}

export namespace MsgClaimDelegationRewards {
export interface Amino {
type: 'alliance/MsgClaimDelegationRewards';
value: {
delegator_address: AccAddress;
validator_address: ValAddress;
denom: string;
};
}

export interface Data {
'@type': '/alliance.alliance.MsgClaimDelegationRewards';
delegatorAddress: AccAddress;
validatorAddress: ValAddress;
delegator_address: AccAddress;
validator_address: ValAddress;
denom: string;
}

Expand Down
66 changes: 47 additions & 19 deletions src/core/alliance/msgs/MsgDelegate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,31 +9,50 @@ import { MsgDelegate as MsgDelegate_pb } from '@terra-money/terra.proto/alliance
* to be staked through the alliance module in a validator.
*/
export class MsgDelegate extends JSONSerializable<
{},
MsgDelegate.Amino,
MsgDelegate.Data,
MsgDelegate.Proto
> {
/**
*
* @param delegatorAddress delegator's account address
* @param validatorAddress validator's operator address
* @param delegator_address delegator's account address
* @param validator_address validator's operator address
* @param amount amount of alliance assets to be sent for delegation
*/
constructor(
public delegatorAddress: AccAddress,
public validatorAddress: ValAddress,
public delegator_address: AccAddress,
public validator_address: ValAddress,
public amount: Coin
) {
super();
}

public toAmino(_?: boolean): {} {
public static fromAmino(data: MsgDelegate.Amino, _?: boolean): MsgDelegate {
_;
throw Error(
'Legacy Amino not supported for MsgDelegate from x/alliance module'
const {
value: { delegator_address, validator_address, amount },
} = data;

return new MsgDelegate(
delegator_address,
validator_address,
Coin.fromAmino(amount)
);
}

public toAmino(_?: boolean): MsgDelegate.Amino {
_;
const { delegator_address, validator_address, amount } = this;
return {
type: 'alliance/MsgDelegate',
value: {
delegator_address: delegator_address,
validator_address: validator_address,
amount: amount.toAmino(),
},
};
}

public static fromProto(proto: MsgDelegate.Proto, _?: boolean): MsgDelegate {
_;
return new MsgDelegate(
Expand All @@ -45,11 +64,11 @@ export class MsgDelegate extends JSONSerializable<

public toProto(_?: boolean): MsgDelegate.Proto {
_;
const { delegatorAddress, validatorAddress, amount } = this;
const { delegator_address, validator_address, amount } = this;
return MsgDelegate_pb.fromPartial({
amount: amount.toProto(),
delegatorAddress: delegatorAddress,
validatorAddress: validatorAddress,
delegatorAddress: delegator_address,
validatorAddress: validator_address,
});
}

Expand All @@ -68,31 +87,40 @@ export class MsgDelegate extends JSONSerializable<

public static fromData(data: MsgDelegate.Data, _?: boolean): MsgDelegate {
_;
const { delegatorAddress, validatorAddress, amount } = data;
const { delegator_address, validator_address, amount } = data;
return new MsgDelegate(
delegatorAddress,
validatorAddress,
delegator_address,
validator_address,
Coin.fromData(amount)
);
}

public toData(_?: boolean): MsgDelegate.Data {
_;
const { delegatorAddress, validatorAddress, amount } = this;
const { delegator_address, validator_address, amount } = this;
return {
'@type': '/alliance.alliance.MsgDelegate',
delegatorAddress,
validatorAddress,
delegator_address,
validator_address,
amount: amount.toData(),
};
}
}

export namespace MsgDelegate {
export interface Amino {
type: 'alliance/MsgDelegate';
value: {
delegator_address: AccAddress;
validator_address: ValAddress;
amount: Coin.Amino;
};
}

export interface Data {
'@type': '/alliance.alliance.MsgDelegate';
delegatorAddress: AccAddress;
validatorAddress: ValAddress;
delegator_address: AccAddress;
validator_address: ValAddress;
amount: Coin.Data;
}

Expand Down
Loading