lib/starcoin/transaction/raw_transaction.ex

defmodule Web3SuiEx.Starcoin.Transaction.RawTransaction do
  @moduledoc """
  In order to sign transaction offline, we need to encode RawTransaction in bcs format.
  """

  alias Web3SuiEx.Starcoin.Transaction.TransactionPayload

  @derive {Bcs.Struct,
           [
             sender: [:u8 | 16],
             sequence_number: :u64,
             payload: TransactionPayload,
             max_gas_amount: :u64,
             gas_unit_price: :u64,
             gas_token_code: :string,
             expiration_timestamp_secs: :u64,
             chain_id: :u8
           ]}

  defstruct [
    :sender,
    :sequence_number,
    :payload,
    :max_gas_amount,
    :gas_unit_price,
    :gas_token_code,
    :expiration_timestamp_secs,
    :chain_id
  ]
end