lib/product.ex

defmodule ExDeltaExchange.Product do
  @type t :: %__MODULE__{
    id: non_neg_integer,
    symbol: String.t(),
    description: String.t(),
    created_at: String.t(),
    updated_at: String.t(),
    settlement_time: String.t(),
    notional_type: String.t(),
    impact_size: 0,
    initial_margin: 0,
    maintenance_margin: String.t(),
    contract_value: String.t(),
    contract_unit_currency: String.t(),
    tick_size: String.t(),
    product_specs: map,
    state: String.t(),
    trading_status: String.t(),
    max_leverage_notional: String.t(),
    default_leverage: String.t(),
    initial_margin_scaling_factor: String.t(),
    maintenance_margin_scaling_factor: String.t(),
    taker_commission_rate: String.t(),
    maker_commission_rate: String.t(),
    liquidation_penalty_factor: String.t(),
    contract_type: String.t(),
    position_size_limit: non_neg_integer,
    basis_factor_max_limit: String.t(),
    is_quanto: boolean,
    funding_method: String.t(),
    annualized_funding: String.t(),
    price_band: String.t(),
    underlying_asset: map,
    quoting_asset: map,
    settling_asset: map,
    spot_index: map
  }

  defstruct ~w[
    id
    symbol
    description
    created_at
    updated_at
    settlement_time
    notional_type
    impact_size
    initial_margin
    maintenance_margin
    contract_value
    contract_unit_currency
    tick_size
    product_specs
    state
    trading_status
    max_leverage_notional
    default_leverage
    initial_margin_scaling_factor
    maintenance_margin_scaling_factor
    taker_commission_rate
    maker_commission_rate
    liquidation_penalty_factor
    contract_type
    position_size_limit
    basis_factor_max_limit
    is_quanto
    funding_method
    annualized_funding
    price_band
    underlying_asset
    quoting_asset
    settling_asset
    spot_index
  ]a
end