lib/iso_20022/camt/053/statement.ex

defmodule ISO20022.Camt053.Statement do
  @moduledoc """
  A single account statement from `<Stmt>`.

  One `Statement` covers one account for one reporting period.
  A single camt.053 `Document` may carry multiple statements (one per account
  or per reporting period).
  """

  alias ISO20022.Camt053.{Account, Balance, Entry}

  @type date_range :: %{from: DateTime.t() | nil, to: DateTime.t() | nil}

  @type t :: %__MODULE__{
          id: String.t(),
          electronic_seq_number: non_neg_integer() | nil,
          created_at: DateTime.t() | nil,
          from_to_date: date_range() | nil,
          account: Account.t(),
          balances: [Balance.t()],
          entries: [Entry.t()]
        }

  defstruct [
    :id,
    :electronic_seq_number,
    :created_at,
    :from_to_date,
    :account,
    balances: [],
    entries: []
  ]
end