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,
},
}