HyperLiquid

Struct HyperLiquid 

Source
pub struct HyperLiquid { /* private fields */ }
Expand description

HyperLiquid exchange structure.

Implementations§

Source§

impl HyperLiquid

Source

pub async fn exchange_request( &self, action: Value, nonce: u64, ) -> Result<Value, Error>

👎Deprecated since 0.2.0: Use signed_action() builder instead

Make an exchange action request (requires authentication).

§Deprecated

This method is deprecated. Use signed_action() builder instead:

let exchange = HyperLiquid::builder()
    .private_key("0x...")
    .testnet(true)
    .build()?;

let action = json!({"type": "order", "orders": [], "grouping": "na"});
let response = exchange.signed_action(action).execute().await?;
Source

pub fn get_nonce(&self) -> u64

👎Deprecated since 0.2.0: Use signed_action() builder which auto-generates nonce

Get current timestamp as nonce.

§Deprecated

This method is deprecated. The signed_action() builder automatically generates the nonce. Use signed_action().nonce(value) if you need to override the auto-generated nonce.

Source

pub async fn fetch_markets( &self, ) -> Result<Arc<HashMap<String, Arc<Market>>>, Error>

Fetch all trading markets.

Source

pub async fn load_markets( &self, reload: bool, ) -> Result<Arc<HashMap<String, Arc<Market>>>, Error>

Load and cache market data.

Source

pub async fn fetch_ticker(&self, symbol: &str) -> Result<Ticker, Error>

Fetch ticker for a single trading pair.

Source

pub async fn fetch_tickers( &self, symbols: Option<Vec<String>>, ) -> Result<Vec<Ticker>, Error>

Fetch tickers for multiple trading pairs.

Source

pub async fn fetch_order_book( &self, symbol: &str, _limit: Option<u32>, ) -> Result<OrderBook, Error>

Fetch order book for a trading pair.

Source

pub async fn fetch_trades( &self, symbol: &str, limit: Option<u32>, ) -> Result<Vec<Trade>, Error>

Fetch recent public trades.

Source

pub async fn fetch_ohlcv( &self, symbol: &str, timeframe: &str, since: Option<i64>, limit: Option<u32>, ) -> Result<Vec<Ohlcv>, Error>

Fetch OHLCV (candlestick) data.

Source

pub async fn fetch_funding_rate( &self, symbol: &str, ) -> Result<FundingRate, Error>

Fetch current funding rate for a symbol.

Source

pub async fn fetch_balance(&self) -> Result<Balance, Error>

Fetch account balance.

Source

pub async fn fetch_positions( &self, symbols: Option<Vec<String>>, ) -> Result<Vec<Position>, Error>

Fetch open positions.

Source

pub async fn fetch_open_orders( &self, symbol: Option<&str>, _since: Option<i64>, _limit: Option<u32>, ) -> Result<Vec<Order>, Error>

Fetch open orders.

Source

pub async fn create_order( &self, symbol: &str, order_type: OrderType, side: OrderSide, amount: Amount, price: Option<Price>, ) -> Result<Order, Error>

Create a new order.

§Arguments
  • symbol - Trading pair symbol.
  • order_type - Order type (Market, Limit, etc.).
  • side - Order side (Buy or Sell).
  • amount - Order quantity as Amount type.
  • price - Optional price as Price type (required for limit orders).
§Returns

Returns the created Order structure with order details.

§Errors

Returns an error if authentication fails, market is not found, or the API request fails.

Source

pub async fn cancel_order(&self, id: &str, symbol: &str) -> Result<Order, Error>

Cancel an order.

Source

pub async fn set_leverage( &self, symbol: &str, leverage: u32, is_cross: bool, ) -> Result<(), Error>

Set leverage for a symbol.

Source

pub async fn cancel_all_orders( &self, symbol: Option<&str>, ) -> Result<Vec<Order>, Error>

Cancel all orders for a symbol.

Source§

impl HyperLiquid

Source

pub fn builder() -> HyperLiquidBuilder

Creates a new HyperLiquid instance using the builder pattern.

This is the recommended way to create a HyperLiquid instance.

§Example
use ccxt_exchanges::hyperliquid::HyperLiquid;

let exchange = HyperLiquid::builder()
    .private_key("0x...")
    .testnet(true)
    .build()
    .unwrap();
Source

pub fn new_with_options( config: ExchangeConfig, options: HyperLiquidOptions, auth: Option<HyperLiquidAuth>, ) -> Result<HyperLiquid, Error>

Creates a new HyperLiquid instance with custom options.

This is used internally by the builder pattern.

§Arguments
  • config - Exchange configuration.
  • options - HyperLiquid-specific options.
  • auth - Optional authentication instance.
Source

pub fn base(&self) -> &BaseExchange

Returns a reference to the base exchange.

Source

pub fn base_mut(&mut self) -> &mut BaseExchange

Returns a mutable reference to the base exchange.

Source

pub fn options(&self) -> &HyperLiquidOptions

Returns the HyperLiquid options.

Source

pub fn auth(&self) -> Option<&HyperLiquidAuth>

Returns a reference to the authentication instance.

Source

pub fn signed_action( &self, action: Value, ) -> HyperliquidSignedRequestBuilder<'_>

Creates a signed action builder for authenticated exchange requests.

This method provides a fluent API for constructing and executing authenticated Hyperliquid exchange actions using EIP-712 signing.

§Arguments
  • action - The action JSON to be signed and executed
§Returns

A HyperliquidSignedRequestBuilder that can be configured and executed.

§Example
use ccxt_exchanges::hyperliquid::HyperLiquid;
use serde_json::json;

let exchange = HyperLiquid::builder()
    .private_key("0x...")
    .testnet(true)
    .build()?;

// Create an order
let action = json!({
    "type": "order",
    "orders": [{"a": 0, "b": true, "p": "50000", "s": "0.001", "r": false, "t": {"limit": {"tif": "Gtc"}}}],
    "grouping": "na"
});

let response = exchange.signed_action(action)
    .execute()
    .await?;
Source

pub fn id(&self) -> &'static str

Returns the exchange ID.

Source

pub fn name(&self) -> &'static str

Returns the exchange name.

Source

pub fn version(&self) -> &'static str

Returns the API version.

Source

pub fn certified(&self) -> bool

Returns true if the exchange is CCXT-certified.

Source

pub fn pro(&self) -> bool

Returns true if Pro version (WebSocket) is supported.

Source

pub fn rate_limit(&self) -> u32

Returns the rate limit in requests per second.

Source

pub fn is_sandbox(&self) -> bool

Returns true if sandbox/testnet mode is enabled.

Sandbox mode is enabled when either:

  • config.sandbox is set to true
  • options.testnet is set to true
§Returns

true if sandbox mode is enabled, false otherwise.

§Example
use ccxt_exchanges::hyperliquid::HyperLiquid;

let exchange = HyperLiquid::builder()
    .testnet(true)
    .build()
    .unwrap();
assert!(exchange.is_sandbox());
Source

pub fn urls(&self) -> HyperLiquidUrls

Returns the API URLs.

Returns testnet URLs when sandbox mode is enabled (either via config.sandbox or options.testnet), otherwise returns mainnet URLs.

Source

pub fn wallet_address(&self) -> Option<&str>

Returns the wallet address if authenticated.

Trait Implementations§

Source§

impl Debug for HyperLiquid

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Exchange for HyperLiquid

Source§

fn id(&self) -> &'static str

Returns the exchange identifier (e.g., “binance”, “coinbase”) Read more
Source§

fn name(&self) -> &'static str

Returns the human-readable exchange name (e.g., “Binance”, “Coinbase”)
Source§

fn version(&self) -> &'static str

Returns the API version string
Source§

fn certified(&self) -> bool

Returns whether this exchange is CCXT certified Read more
Source§

fn has_websocket(&self) -> bool

Returns whether this exchange supports WebSocket (pro features)
Source§

fn capabilities(&self) -> ExchangeCapabilities

Returns the exchange capabilities Read more
Source§

fn timeframes(&self) -> Vec<Timeframe>

Returns supported timeframes for OHLCV data
Source§

fn rate_limit(&self) -> u32

Returns the rate limit (requests per second)
Source§

fn fetch_markets<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Vec<Market>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, HyperLiquid: 'async_trait,

Fetch all available markets Read more
Source§

fn load_markets<'life0, 'async_trait>( &'life0 self, reload: bool, ) -> Pin<Box<dyn Future<Output = Result<Arc<HashMap<String, Arc<Market>>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, HyperLiquid: 'async_trait,

Load markets and cache them Read more
Source§

fn fetch_ticker<'life0, 'life1, 'async_trait>( &'life0 self, symbol: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Ticker, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Fetch ticker for a single symbol Read more
Source§

fn fetch_tickers<'life0, 'life1, 'async_trait>( &'life0 self, symbols: Option<&'life1 [String]>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Ticker>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Fetch tickers for multiple symbols (or all if None) Read more
Source§

fn fetch_order_book<'life0, 'life1, 'async_trait>( &'life0 self, symbol: &'life1 str, limit: Option<u32>, ) -> Pin<Box<dyn Future<Output = Result<OrderBook, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Fetch order book for a symbol Read more
Source§

fn fetch_trades<'life0, 'life1, 'async_trait>( &'life0 self, symbol: &'life1 str, limit: Option<u32>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Trade>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Fetch recent public trades Read more
Source§

fn fetch_ohlcv<'life0, 'life1, 'async_trait>( &'life0 self, symbol: &'life1 str, timeframe: Timeframe, since: Option<i64>, limit: Option<u32>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Ohlcv>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Fetch OHLCV candlestick data Read more
Source§

fn create_order<'life0, 'life1, 'async_trait>( &'life0 self, symbol: &'life1 str, order_type: OrderType, side: OrderSide, amount: Amount, price: Option<Price>, ) -> Pin<Box<dyn Future<Output = Result<Order, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Create a new order Read more
Source§

fn cancel_order<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, id: &'life1 str, symbol: Option<&'life2 str>, ) -> Pin<Box<dyn Future<Output = Result<Order, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, HyperLiquid: 'async_trait,

Cancel an existing order Read more
Source§

fn cancel_all_orders<'life0, 'life1, 'async_trait>( &'life0 self, symbol: Option<&'life1 str>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Order>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Cancel all orders (optionally for a specific symbol) Read more
Source§

fn fetch_order<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, _id: &'life1 str, _symbol: Option<&'life2 str>, ) -> Pin<Box<dyn Future<Output = Result<Order, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, HyperLiquid: 'async_trait,

Fetch a specific order by ID Read more
Source§

fn fetch_open_orders<'life0, 'life1, 'async_trait>( &'life0 self, symbol: Option<&'life1 str>, since: Option<i64>, limit: Option<u32>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Order>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Fetch all open orders Read more
Source§

fn fetch_closed_orders<'life0, 'life1, 'async_trait>( &'life0 self, _symbol: Option<&'life1 str>, _since: Option<i64>, _limit: Option<u32>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Order>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Fetch closed orders Read more
Source§

fn fetch_balance<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Balance, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, HyperLiquid: 'async_trait,

Fetch account balance Read more
Source§

fn fetch_my_trades<'life0, 'life1, 'async_trait>( &'life0 self, _symbol: Option<&'life1 str>, _since: Option<i64>, _limit: Option<u32>, ) -> Pin<Box<dyn Future<Output = Result<Vec<Trade>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Fetch user’s trade history Read more
Source§

fn market<'life0, 'life1, 'async_trait>( &'life0 self, symbol: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Arc<Market>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Get a specific market by symbol Read more
Source§

fn markets<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Arc<HashMap<String, Arc<Market>>>> + Send + 'async_trait>>
where 'life0: 'async_trait, HyperLiquid: 'async_trait,

Get all cached markets Read more
Source§

fn is_symbol_active<'life0, 'life1, 'async_trait>( &'life0 self, symbol: &'life1 str, ) -> Pin<Box<dyn Future<Output = bool> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Check if a symbol is valid and active Read more
Source§

impl HyperLiquidEndpointRouter for HyperLiquid

Source§

fn rest_endpoint(&self) -> &'static str

Returns the REST API endpoint. Read more
Source§

fn ws_endpoint(&self) -> &str

Returns the WebSocket endpoint. Read more
Source§

impl WsExchange for HyperLiquid

Source§

fn ws_connect<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, HyperLiquid: 'async_trait,

Connect to the WebSocket server Read more
Source§

fn ws_disconnect<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, HyperLiquid: 'async_trait,

Disconnect from the WebSocket server Read more
Source§

fn ws_is_connected(&self) -> bool

Check if WebSocket is connected Read more
Source§

fn ws_state(&self) -> WsConnectionState

Get WebSocket connection state Read more
Source§

fn subscriptions(&self) -> Vec<String>

Get list of active subscriptions Read more
Source§

fn watch_ticker<'life0, 'life1, 'async_trait>( &'life0 self, _symbol: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<Ticker, Error>> + Send>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Watch ticker updates for a symbol Read more
Source§

fn watch_tickers<'life0, 'life1, 'async_trait>( &'life0 self, _symbols: &'life1 [String], ) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<Vec<Ticker>, Error>> + Send>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Watch tickers for multiple symbols Read more
Source§

fn watch_order_book<'life0, 'life1, 'async_trait>( &'life0 self, _symbol: &'life1 str, _limit: Option<u32>, ) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<OrderBook, Error>> + Send>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Watch order book updates Read more
Source§

fn watch_trades<'life0, 'life1, 'async_trait>( &'life0 self, _symbol: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<Vec<Trade>, Error>> + Send>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Watch public trades Read more
Source§

fn watch_ohlcv<'life0, 'life1, 'async_trait>( &'life0 self, _symbol: &'life1 str, _timeframe: Timeframe, ) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<Ohlcv, Error>> + Send>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Watch OHLCV candlestick updates Read more
Source§

fn watch_balance<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<Balance, Error>> + Send>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, HyperLiquid: 'async_trait,

Watch account balance updates Read more
Source§

fn watch_orders<'life0, 'life1, 'async_trait>( &'life0 self, _symbol: Option<&'life1 str>, ) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<Order, Error>> + Send>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Watch order updates Read more
Source§

fn watch_my_trades<'life0, 'life1, 'async_trait>( &'life0 self, _symbol: Option<&'life1 str>, ) -> Pin<Box<dyn Future<Output = Result<Pin<Box<dyn Stream<Item = Result<Trade, Error>> + Send>>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HyperLiquid: 'async_trait,

Watch user trade updates Read more
Source§

fn subscribe<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, _channel: &'life1 str, _symbol: Option<&'life2 str>, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, HyperLiquid: 'async_trait,

Subscribe to a channel Read more
Source§

fn unsubscribe<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, _channel: &'life1 str, _symbol: Option<&'life2 str>, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, HyperLiquid: 'async_trait,

Unsubscribe from a channel Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> ExchangeExt for T
where T: Exchange + ?Sized,

Source§

fn supports_market_data(&self) -> bool

Check if this exchange implements the MarketData trait. Read more
Source§

fn supports_trading(&self) -> bool

Check if this exchange implements the Trading trait. Read more
Source§

fn supports_account(&self) -> bool

Check if this exchange implements the Account trait. Read more
Source§

fn supports_margin(&self) -> bool

Check if this exchange implements the Margin trait. Read more
Source§

fn supports_funding(&self) -> bool

Check if this exchange implements the Funding trait. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> FullExchange for T
where T: Exchange + WsExchange,