1+ import { EncodeObject } from "@cosmjs/proto-signing"
2+ import {
3+ createMsgWithdrawDelegatorReward ,
4+ createIBCMsgTransfer ,
5+ createMsgSend ,
6+ createMsgBeginRedelegate ,
7+ createMsgDelegate ,
8+ createMsgUndelegate ,
9+ createMsgVote ,
10+ // createMsgWithdrawValidatorCommission,
11+ } from '@tharsis/proto'
12+ import {
13+ MSG_WITHDRAW_DELEGATOR_REWARD_TYPES ,
14+ MSG_BEGIN_REDELEGATE_TYPES ,
15+ MSG_DELEGATE_TYPES ,
16+ MSG_SEND_TYPES ,
17+ MSG_UNDELEGATE_TYPES ,
18+ MSG_VOTE_TYPES ,
19+ IBC_MSG_TRANSFER_TYPES ,
20+ MSG_WITHDRAW_VALIDATOR_COMMISSION_TYPES ,
21+ } from "@tharsis/eip712"
22+
23+ export interface MessageAdapter {
24+ toProto ( message : EncodeObject ) : object
25+ getTypes : ( ) => object
26+ }
27+
28+ export class WithdrawMessageAdapter implements MessageAdapter {
29+ toProto ( message : EncodeObject ) {
30+ const param = message . value
31+ return createMsgWithdrawDelegatorReward ( param . delegatorAddress , param . validatorAddress )
32+ }
33+ getTypes ( ) {
34+ return MSG_WITHDRAW_DELEGATOR_REWARD_TYPES
35+ }
36+ }
37+
38+ export class WithdrawCommissionMessageAdapter implements MessageAdapter {
39+ toProto ( message : EncodeObject ) {
40+ const param = message . value
41+ return createMsgWithdrawDelegatorReward ( param . delegatorAddress , param . validatorAddress )
42+ }
43+ getTypes ( ) {
44+ return MSG_WITHDRAW_VALIDATOR_COMMISSION_TYPES
45+ }
46+ }
47+
48+ export class BeginRedelegateMessageAdapter implements MessageAdapter {
49+ toProto ( message : EncodeObject ) {
50+ const param = message . value
51+ return createMsgBeginRedelegate (
52+ param . delegatorAddress ,
53+ param . validatorSrcAddress ,
54+ param . validatorDstAddress ,
55+ param . amount . amount ,
56+ param . amount . denom )
57+ }
58+ getTypes ( ) {
59+ return MSG_BEGIN_REDELEGATE_TYPES
60+ }
61+ }
62+
63+ export class DelegateMessageAdapter implements MessageAdapter {
64+ toProto ( message : EncodeObject ) {
65+ const param = message . value
66+ const amount = Array . isArray ( param . amount ) ? param . amount [ 0 ] : param . amount
67+ return createMsgDelegate ( param . delegatorAddress , param . validatorAddress , amount . amount , amount . denom )
68+ }
69+ getTypes ( ) {
70+ return MSG_DELEGATE_TYPES
71+ }
72+ }
73+
74+ export class SendMessageAdapter implements MessageAdapter {
75+ toProto ( message : EncodeObject ) {
76+ const param = message . value
77+ const amount = Array . isArray ( param . amount ) ? param . amount [ 0 ] : param . amount
78+ return createMsgSend ( param . fromAddress , param . toAddress , amount . amount , amount . denom )
79+ }
80+ getTypes ( ) {
81+ return MSG_SEND_TYPES
82+ }
83+ }
84+
85+ export class UndelegateMessageAdapter implements MessageAdapter {
86+ toProto ( message : EncodeObject ) {
87+ const param = message . value
88+ const amount = Array . isArray ( param . amount ) ? param . amount [ 0 ] : param . amount
89+ return createMsgUndelegate ( param . delegatorAddress , param . validatorAddress , amount . amount , amount . denom )
90+ }
91+ getTypes ( ) {
92+ return MSG_UNDELEGATE_TYPES
93+ }
94+ }
95+
96+ export class VoteMessageAdapter implements MessageAdapter {
97+ toProto ( message : EncodeObject ) {
98+ const param = message . value
99+ return createMsgVote ( param . proposalId , param . option , param . voter )
100+ }
101+ getTypes ( ) {
102+ return MSG_VOTE_TYPES
103+ }
104+ }
105+
106+ export class IBCMessageAdapter implements MessageAdapter {
107+ toProto ( message : EncodeObject ) {
108+ const param = message . value
109+ return createIBCMsgTransfer (
110+ param . sourcePort ,
111+ param . sourceChannel ,
112+ param . amount . amount ,
113+ param . amount . denom ,
114+ param . sender ,
115+ param . receiver ,
116+ param . revisionNumber ,
117+ param . revisionHeight ,
118+ param . timeoutTimestamp
119+ )
120+ }
121+ getTypes ( ) {
122+ return IBC_MSG_TRANSFER_TYPES
123+ }
124+ }
125+
126+
127+ export const defaultMessageAdapter : Record < string , MessageAdapter > = {
128+ "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward" : new WithdrawMessageAdapter ( ) ,
129+ "/cosmos.staking.v1beta1.MsgDelegate" : new DelegateMessageAdapter ( ) ,
130+ "/cosmos.staking.v1beta1.MsgBeginRedelegate" : new BeginRedelegateMessageAdapter ( ) ,
131+ "/cosmos.staking.v1beta1.MsgUndelegate" : new UndelegateMessageAdapter ( ) ,
132+ "/cosmos.bank.v1beta1.MsgSend" : new SendMessageAdapter ( ) ,
133+ "/cosmos.gov.v1beta1.MsgVote" : new VoteMessageAdapter ( ) ,
134+ "/ibc.applications.transfer.v1.MsgTransfer" : new IBCMessageAdapter ( ) ,
135+ "/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission" : new WithdrawCommissionMessageAdapter ( )
136+ }
0 commit comments