from __future__ import annotations
from typing import Final
from evmos.eip712.base import MsgInterface, MsgWithValidatorInterface
MSG_DELEGATE_TYPES: Final = {
'MsgValue': [
{'name': 'delegator_address', 'type': 'string'},
{'name': 'validator_address', 'type': 'string'},
{'name': 'amount', 'type': 'TypeAmount'},
],
'TypeAmount': [
{'name': 'denom', 'type': 'string'},
{'name': 'amount', 'type': 'string'},
],
}
"""Types for delegation message."""
[docs]def create_msg_delegate(
delegator_address: str,
validator_address: str,
amount: str,
denom: str,
) -> MsgInterface:
"""Create delegation message."""
return {
'type': 'cosmos-sdk/MsgDelegate',
'value': {
'amount': {'amount': amount, 'denom': denom},
'delegator_address': delegator_address,
'validator_address': validator_address,
},
}
MSG_BEGIN_REDELEGATE_TYPES: Final = {
'MsgValue': [
{'name': 'delegator_address', 'type': 'string'},
{'name': 'validator_src_address', 'type': 'string'},
{'name': 'validator_dst_address', 'type': 'string'},
{'name': 'amount', 'type': 'TypeAmount'},
],
'TypeAmount': [
{'name': 'denom', 'type': 'string'},
{'name': 'amount', 'type': 'string'},
],
}
"""Types for redelegation beginning message."""
[docs]def create_msg_begin_redelegate(
delegator_address: str,
validator_src_address: str,
validator_dst_address: str,
amount: str,
denom: str,
) -> MsgInterface:
"""Create redelegation beginning message."""
return {
'type': 'cosmos-sdk/MsgBeginRedelegate',
'value': {
'amount': {'amount': amount, 'denom': denom},
'delegator_address': delegator_address,
'validator_src_address': validator_src_address,
'validator_dst_address': validator_dst_address,
},
}
MSG_UNDELEGATE_TYPES: Final = {
'MsgValue': [
{'name': 'delegator_address', 'type': 'string'},
{'name': 'validator_address', 'type': 'string'},
{'name': 'amount', 'type': 'TypeAmount'},
],
'TypeAmount': [
{'name': 'denom', 'type': 'string'},
{'name': 'amount', 'type': 'string'},
],
}
"""Types for delegation cancellation message."""
[docs]def create_msg_undelegate(
delegator_address: str,
validator_address: str,
amount: str,
denom: str,
) -> MsgInterface:
"""Create delegation cancellation message."""
return {
'type': 'cosmos-sdk/MsgUndelegate',
'value': {
'amount': {'amount': amount, 'denom': denom},
'delegator_address': delegator_address,
'validator_address': validator_address,
},
}
MSG_WITHDRAW_DELEGATOR_REWARD_TYPES: Final = {
'MsgValue': [
{'name': 'delegator_address', 'type': 'string'},
{'name': 'validator_address', 'type': 'string'},
],
}
"""Types for delegation reward withdrawal message."""
[docs]def create_msg_withdraw_delegator_reward(
delegator_address: str,
validator_address: str,
) -> MsgInterface:
"""Create delegation reward withdrawal message."""
return {
'type': 'cosmos-sdk/MsgWithdrawDelegationReward',
'value': {
'delegator_address': delegator_address,
'validator_address': validator_address,
},
}
MSG_WITHDRAW_VALIDATOR_COMMISSION_TYPES: Final = {
'MsgValue': [{'name': 'validator_address', 'type': 'string'}],
}
"""Types for validator commission withdrawal message."""
[docs]def create_msg_withdraw_validator_commission(
validator_address: str,
) -> MsgWithValidatorInterface:
"""Create validator commission withdrawal message."""
return {
'type': 'cosmos-sdk/MsgWithdrawValidatorCommission',
'value': {'validator_address': validator_address},
}
MSG_SET_WITHDRAW_ADDRESS_TYPES: Final = {
'MsgValue': [
{'name': 'delegator_address', 'type': 'string'},
{'name': 'withdraw_address', 'type': 'string'},
],
}
"""Types for validator withdrawal address setting message."""
[docs]def create_msg_set_withdraw_address(
delegator_address: str,
withdraw_address: str,
) -> MsgInterface:
"""Create validator withdrawal address setting message."""
return {
'type': 'cosmos-sdk/MsgModifyWithdrawAddress',
'value': {
'delegator_address': delegator_address,
'withdraw_address': withdraw_address,
},
}