# NOTE: This file is auto generated by OpenAPI Generator 7.14.0 (https://openapi-generator.tech).
# Do not edit this file manually.

defmodule FinFeedAPIStockRESTAPI.Model.AdminAdminMessageModel do
  @moduledoc """
  Represents the response DTO for IEX admin information, combining all symbol-based admin message types
  """

  @derive JSON.Encoder
  defstruct [
    :trading_status,
    :official_price,
    :security_event,
    :auction_information,
    :short_sale_price_test,
    :operational_halt_status,
    :retail_liquidity_indicator,
    :system_event,
    :security_directory
  ]

  @type t :: %__MODULE__{
    :trading_status => FinFeedAPIStockRESTAPI.Model.AdminTradingStatusModel.t | nil,
    :official_price => FinFeedAPIStockRESTAPI.Model.AdminOfficialPriceModel.t | nil,
    :security_event => FinFeedAPIStockRESTAPI.Model.AdminSecurityEventModel.t | nil,
    :auction_information => FinFeedAPIStockRESTAPI.Model.AdminAuctionInformationModel.t | nil,
    :short_sale_price_test => FinFeedAPIStockRESTAPI.Model.AdminShortSalePriceTestStatusModel.t | nil,
    :operational_halt_status => FinFeedAPIStockRESTAPI.Model.AdminOperationalHaltStatusModel.t | nil,
    :retail_liquidity_indicator => FinFeedAPIStockRESTAPI.Model.AdminRetailLiquidityIndicatorModel.t | nil,
    :system_event => FinFeedAPIStockRESTAPI.Model.AdminSystemEventModel.t | nil,
    :security_directory => FinFeedAPIStockRESTAPI.Model.AdminSecurityDirectoryModel.t | nil
  }

  alias FinFeedAPIStockRESTAPI.Deserializer

  def decode(value) do
    value
     |> Deserializer.deserialize(:trading_status, :struct, FinFeedAPIStockRESTAPI.Model.AdminTradingStatusModel)
     |> Deserializer.deserialize(:official_price, :struct, FinFeedAPIStockRESTAPI.Model.AdminOfficialPriceModel)
     |> Deserializer.deserialize(:security_event, :struct, FinFeedAPIStockRESTAPI.Model.AdminSecurityEventModel)
     |> Deserializer.deserialize(:auction_information, :struct, FinFeedAPIStockRESTAPI.Model.AdminAuctionInformationModel)
     |> Deserializer.deserialize(:short_sale_price_test, :struct, FinFeedAPIStockRESTAPI.Model.AdminShortSalePriceTestStatusModel)
     |> Deserializer.deserialize(:operational_halt_status, :struct, FinFeedAPIStockRESTAPI.Model.AdminOperationalHaltStatusModel)
     |> Deserializer.deserialize(:retail_liquidity_indicator, :struct, FinFeedAPIStockRESTAPI.Model.AdminRetailLiquidityIndicatorModel)
     |> Deserializer.deserialize(:system_event, :struct, FinFeedAPIStockRESTAPI.Model.AdminSystemEventModel)
     |> Deserializer.deserialize(:security_directory, :struct, FinFeedAPIStockRESTAPI.Model.AdminSecurityDirectoryModel)
  end
end

