Packages

Elixir client library for cryptocurrency exchanges — generated from CCXT specs via compile-time macros.

Current section

Files

Jump to
ccxt_client lib ccxt trading_fee.ex
Raw

lib/ccxt/trading_fee.ex

defmodule CCXT.TradingFee do
@moduledoc """
Unified trading fee schedule data.
Describes the maker/taker fee rates for a symbol. Distinct from
`CCXT.Fee` which represents the fee on a single trade or order.
## Fields
* `symbol` - Unified symbol (e.g., "BTC/USDT")
* `maker` - Maker fee rate as decimal (e.g., 0.001 = 0.1%)
* `taker` - Taker fee rate as decimal
* `percentage` - Whether fees are percentage-based (vs flat)
* `tier_based` - Whether fees vary by trading volume tier
* `info` - Raw exchange response
"""
import JSONSpec, only: [schema: 2]
@type t :: %__MODULE__{
symbol: String.t() | nil,
maker: number() | nil,
taker: number() | nil,
percentage: boolean() | nil,
tier_based: boolean() | nil,
info: map() | nil
}
defstruct [:symbol, :maker, :taker, :percentage, :tier_based, :info]
@json_schema schema(
%{
symbol: String.t() | nil,
maker: number() | nil,
taker: number() | nil,
percentage: boolean() | nil,
tier_based: boolean() | nil,
info: map() | nil
},
doc: [
symbol: "Unified symbol (e.g., BTC/USDT)",
maker: "Maker fee rate as decimal (e.g., 0.001 = 0.1%)",
taker: "Taker fee rate as decimal",
percentage: "Whether fees are percentage-based (vs flat)",
tier_based: "Whether fees vary by trading volume tier",
info: "Raw exchange response"
]
)
@doc "JSON Schema for the TradingFee unified type."
@spec schema() :: map()
def schema, do: @json_schema
end