Source code for evmos.transactions

from __future__ import annotations

from collections.abc import Mapping
from typing import Any

from evmos.eip712 import (
    IBC_MSG_TRANSFER_TYPES,
    MSG_SEND_TYPES,
    MSG_VOTE_TYPES,
    create_ibc_msg_transfer,
    create_msg_send,
    create_msg_vote,
)
from evmos.proto import (
    AuthInfo,
    MessageGenerated,
    MsgSend,
    MsgTransfer,
    MsgVote,
    TxBody,
    TxRaw,
    create_any_message,
    create_ibc_msg_transfer as proto_create_ibc_msg_transfer,
    create_msg_send as proto_msg_send,
    create_msg_vote as proto_create_msg_vote,
    create_tx_raw,
    create_web3_extension,
)
from evmos.proto.autogen.py.ethermint.types.v1 import ExtensionOptionsWeb3Tx
from evmos.transactions.authz import (
    create_tx_msg_stake_authorization,
    create_tx_msg_stake_revoke_authorization,
)
from evmos.transactions.common import (
    Chain,
    Fee,
    Sender,
    TxGenerated,
    TxGeneratedBase,
    to_generated,
)
from evmos.transactions.erc20 import (
    create_tx_msg_convert_coin,
    create_tx_msg_convert_erc20,
)
from evmos.transactions.staking import (
    create_tx_msg_begin_redelegate,
    create_tx_msg_delegate,
    create_tx_msg_multiple_withdraw_delegator_reward,
    create_tx_msg_set_withdraw_address,
    create_tx_msg_undelegate,
    create_tx_msg_withdraw_delegator_reward,
    create_tx_msg_withdraw_validator_commission,
)
from evmos.transactions.validator import create_tx_msg_edit_validator

__all__ = [
    "Chain",
    "Fee",
    "Sender",
    "TxGenerated",
    "TxGeneratedBase",
    "create_message_send",
    "create_tx_ibc_msg_transfer",
    "create_tx_msg_begin_redelegate",
    "create_tx_msg_convert_coin",
    "create_tx_msg_convert_erc20",
    "create_tx_msg_delegate",
    "create_tx_msg_edit_validator",
    "create_tx_msg_multiple_withdraw_delegator_reward",
    "create_tx_msg_set_withdraw_address",
    "create_tx_msg_stake_authorization",
    "create_tx_msg_stake_revoke_authorization",
    "create_tx_msg_undelegate",
    "create_tx_msg_vote",
    "create_tx_msg_withdraw_delegator_reward",
    "create_tx_msg_withdraw_validator_commission",
    "create_tx_raw_eip712",
    "signature_to_web3_extension",
]


# gov.ts


[docs] @to_generated(MSG_VOTE_TYPES, proto=True) def create_tx_msg_vote( account_address: str, proposal_id: int, option: int, ) -> tuple[Mapping[str, Any], MessageGenerated[MsgVote]]: """Create transaction with voting message.""" # EIP712 msg = create_msg_vote( proposal_id, option, account_address, ) # Cosmos msg_cosmos = proto_create_msg_vote( proposal_id, option, account_address, ) return msg, msg_cosmos
# ibcMessageTransfer.ts
[docs] @to_generated(IBC_MSG_TRANSFER_TYPES, proto=True) def create_tx_ibc_msg_transfer( account_address: str, # Channel source_port: str, source_channel: str, # Token amount: str, denom: str, # Addresses receiver: str, # Timeout revision_number: int, revision_height: int, timeout_timestamp: str, ) -> tuple[Mapping[str, Any], MessageGenerated[MsgTransfer]]: """Create transaction with IBC transfer message.""" # EIP712 msg = create_ibc_msg_transfer( receiver, account_address, source_channel, source_port, revision_height, revision_number, timeout_timestamp, amount, denom, ) # Cosmos msg_cosmos = proto_create_ibc_msg_transfer( source_port, source_channel, amount, denom, account_address, receiver, revision_number, revision_height, timeout_timestamp, ) return msg, msg_cosmos
# msgSend.ts
[docs] @to_generated(MSG_SEND_TYPES, proto=True) def create_message_send( account_address: str, destination_address: str, amount: str, denom: str, ) -> tuple[Mapping[str, Any], MessageGenerated[MsgSend]]: """Create transaction with message send.""" # EIP712 msg = create_msg_send( amount, denom, account_address, destination_address, ) # Cosmos msg_send = proto_msg_send( account_address, destination_address, amount, denom, ) return msg, msg_send
# txRaw.ts
[docs] def create_tx_raw_eip712( body: TxBody, auth_info: AuthInfo, extension: MessageGenerated[Any], ) -> MessageGenerated[TxRaw]: """Create a message with raw EIP712 transaction.""" body.extension_options.append(create_any_message(extension)) return create_tx_raw(bytes(body), bytes(auth_info), [b""])
# web3Extension.ts
[docs] def signature_to_web3_extension( chain: Chain, sender: Sender, signature: bytes, ) -> MessageGenerated[ExtensionOptionsWeb3Tx]: """Create a message with web3 extension from signature.""" return create_web3_extension( chain.chain_id, sender.account_address, signature, )