# `Rujira.Fin.Range`
[🔗](https://github.com/RujiraNetwork/rujira_ex/blob/v0.0.1/lib/rujira/fin/range.ex#L1)

Concentrated liquidity position (range) for the FIN protocol.

Struct, construction, and queries. Use `Rujira.Fin` as the public API.

# `t`

```elixir
@type t() :: %Rujira.Fin.Range{
  ask: Decimal.t(),
  base: Rujira.Amount.t(),
  bid: Decimal.t(),
  fee: Decimal.t(),
  fees_base: Rujira.Amount.t(),
  fees_quote: Rujira.Amount.t(),
  high: Decimal.t(),
  id: String.t(),
  idx: integer(),
  low: Decimal.t(),
  owner: String.t(),
  pair: String.t(),
  price: Decimal.t(),
  quote: Rujira.Amount.t(),
  skew: Decimal.t(),
  spread: Decimal.t(),
  value_usd: Rujira.Amount.t()
}
```

# `from_id`

```elixir
@spec from_id(String.t()) :: {:ok, t()} | {:error, term()}
```

# `list`

```elixir
@spec list(Rujira.Fin.Pair.t(), String.t() | nil, keyword()) ::
  {:ok, [t()]} | {:error, term()}
```

# `list_all`

```elixir
@spec list_all(String.t() | nil, [String.t()] | nil) ::
  {:ok, [t()]} | {:error, term()}
```

# `load`

```elixir
@spec load(Rujira.Fin.Pair.t(), integer()) :: {:ok, t()} | {:error, term()}
```

# `new`

```elixir
@spec new(Rujira.Fin.Pair.t(), map()) :: {:ok, t()} | {:error, term()}
```

Parses a range from a contract query response.

When called with a string address and integer index, creates a minimal
range struct for subscription edge responses.

# `query_list`

# `query_list`

# `query_list`

# `total_tvl`

```elixir
@spec total_tvl() :: {:ok, non_neg_integer()} | {:error, term()}
```

# `tvl`

```elixir
@spec tvl(Rujira.Fin.Pair.t()) :: {:ok, non_neg_integer()} | {:error, term()}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
