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