Packages

An Elixir client for the Polymarket API.

Current section

Files

Jump to
ex_polymarket lib schemas fee_schedule.ex
Raw

lib/schemas/fee_schedule.ex

defmodule Polymarket.Schemas.FeeSchedule do
@moduledoc """
Fee schedule for a market. Part of a NewMarketEvent.
"""
use TypedEctoSchema
alias Polymarket.JsonUtil
alias Polymarket.Schemas.Coerce
@primary_key false
@derive Jason.Encoder
typed_embedded_schema do
field(:exponent, :float)
field(:rate, :float)
field(:rebate_rate, :float)
field(:taker_only, :boolean)
end
@doc "Builds a `FeeSchedule` from a decoded (JSON) map, coercing each field."
@spec from_attrs(map()) :: {:ok, t()}
def from_attrs(attrs) do
attrs = JsonUtil.snake_case_keys(attrs)
{:ok,
%__MODULE__{
exponent: Coerce.to_float(attrs["exponent"]),
rate: Coerce.to_float(attrs["rate"]),
rebate_rate: Coerce.to_float(attrs["rebate_rate"]),
taker_only: attrs["taker_only"]
}}
end
end