View Source Hyperliquid.Api.ExchangeEndpoint (hyperliquid v0.2.2)

DSL for defining authenticated exchange endpoints with signing support.

This macro reduces boilerplate for exchange actions while preserving explicit action building and signing logic.

Usage

Simple L1 Action (Noop, SetDisplayName)

defmodule Hyperliquid.Api.Exchange.Noop do
  use Hyperliquid.Api.ExchangeEndpoint,
    action_type: "noop",
    signing: :l1

  # The DSL generates request/1
end

Simple L1 Action with params

defmodule Hyperliquid.Api.Exchange.SetDisplayName do
  use Hyperliquid.Api.ExchangeEndpoint,
    action_type: "setDisplayName",
    signing: :l1

  def build_action(display_name) do
    %{type: "setDisplayName", displayName: display_name}
  end
end

Signing Strategies

  • :exchange - Full exchange action signing (orders, cancels)
  • :l1 - L1 action signing via connection_id (noop, setDisplayName)

Generated Functions

For simple endpoints (no custom build_action):

  • request/1 - Make signed request with private key
  • request/2 - With opts (vault_address, etc.)

Telemetry Events

  • [:hyperliquid, :api, :exchange, :start]
  • [:hyperliquid, :api, :exchange, :stop]
  • [:hyperliquid, :api, :exchange, :exception]