Class: Hyperliquid::Info

Inherits:
Object
  • Object
show all
Defined in:
lib/hyperliquid/info.rb

Overview

Client for read-only Info API endpoints

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Info

Returns a new instance of Info.



6
7
8
# File 'lib/hyperliquid/info.rb', line 6

def initialize(client)
  @client = client
end

Instance Method Details

#active_asset_data(user, coin) ⇒ Hash

Retrieve User’s Active Asset Data

Parameters:

  • user (String)
  • coin (String)

Returns:

  • (Hash)


299
300
301
# File 'lib/hyperliquid/info.rb', line 299

def active_asset_data(user, coin)
  @client.post(Constants::INFO_ENDPOINT, { type: 'activeAssetData', user: user, coin: coin })
end

#all_mids(dex: nil) ⇒ Hash

Get all market mid prices

Parameters:

  • dex (String, nil) (defaults to: nil)

    Optional perp dex name (defaults to first perp dex; spot mids only included with first perp dex)

Returns:

  • (Hash)

    Hash containing mid prices for all markets



17
18
19
20
21
# File 'lib/hyperliquid/info.rb', line 17

def all_mids(dex: nil)
  body = { type: 'allMids' }
  body[:dex] = dex if dex
  @client.post(Constants::INFO_ENDPOINT, body)
end

#candles_snapshot(coin, interval, start_time, end_time) ⇒ Array

Get candlestick data

Parameters:

  • coin (String)

    Coin symbol

  • interval (String)

    Time interval (e.g., “1m”, “1h”, “1d”)

  • start_time (Integer)

    Start timestamp in milliseconds

  • end_time (Integer)

    End timestamp in milliseconds

Returns:

  • (Array)

    Array of candlestick data



97
98
99
100
101
102
103
104
105
106
107
# File 'lib/hyperliquid/info.rb', line 97

def candles_snapshot(coin, interval, start_time, end_time)
  @client.post(Constants::INFO_ENDPOINT, {
                 type: 'candleSnapshot',
                 req: {
                   coin: coin,
                   interval: interval,
                   startTime: start_time,
                   endTime: end_time
                 }
               })
end

#delegations(user) ⇒ Array

Query a user’s staking delegations

Parameters:

  • user (String)

Returns:

  • (Array)


196
197
198
# File 'lib/hyperliquid/info.rb', line 196

def delegations(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'delegations', user: user })
end

#delegator_history(user) ⇒ Array

Query a user’s staking history

Parameters:

  • user (String)

Returns:

  • (Array)


210
211
212
# File 'lib/hyperliquid/info.rb', line 210

def delegator_history(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'delegatorHistory', user: user })
end

#delegator_rewards(user) ⇒ Array

Query a user’s staking rewards

Parameters:

  • user (String)

Returns:

  • (Array)


217
218
219
# File 'lib/hyperliquid/info.rb', line 217

def delegator_rewards(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'delegatorRewards', user: user })
end

#delegator_summary(user) ⇒ Hash

Query a user’s staking summary

Parameters:

  • user (String)

Returns:

  • (Hash)


203
204
205
# File 'lib/hyperliquid/info.rb', line 203

def delegator_summary(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'delegatorSummary', user: user })
end

#extra_agents(user) ⇒ Array

Get authorized agent addresses for a user

Parameters:

  • user (String)

    Wallet address

Returns:

  • (Array)

    Array of authorized agent addresses



224
225
226
# File 'lib/hyperliquid/info.rb', line 224

def extra_agents(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'extraAgents', user: user })
end

#frontend_open_orders(user, dex: nil) ⇒ Array

Get a user’s open orders with additional frontend info

Parameters:

  • user (String)

    Wallet address

  • dex (String, nil) (defaults to: nil)

    Optional perp dex name

Returns:

  • (Array)


37
38
39
40
41
# File 'lib/hyperliquid/info.rb', line 37

def frontend_open_orders(user, dex: nil)
  body = { type: 'frontendOpenOrders', user: user }
  body[:dex] = dex if dex
  @client.post(Constants::INFO_ENDPOINT, body)
end

#funding_history(coin, start_time, end_time = nil) ⇒ Array

Retrieve historical funding rates

Parameters:

  • coin (String)
  • start_time (Integer)
  • end_time (Integer, nil) (defaults to: nil)

Returns:

  • (Array)


337
338
339
340
341
# File 'lib/hyperliquid/info.rb', line 337

def funding_history(coin, start_time, end_time = nil)
  body = { type: 'fundingHistory', coin: coin, startTime: start_time }
  body[:endTime] = end_time if end_time
  @client.post(Constants::INFO_ENDPOINT, body)
end

#historical_orders(user, start_time = nil, end_time = nil) ⇒ Array

Retrieve a user’s historical orders

Parameters:

  • user (String)

    Wallet address

  • start_time (Integer, nil) (defaults to: nil)

    Optional start timestamp in milliseconds

  • end_time (Integer, nil) (defaults to: nil)

    Optional end timestamp in milliseconds

Returns:

  • (Array)


122
123
124
125
126
127
# File 'lib/hyperliquid/info.rb', line 122

def historical_orders(user, start_time = nil, end_time = nil)
  body = { type: 'historicalOrders', user: user }
  body[:startTime] = start_time if start_time
  body[:endTime] = end_time if end_time
  @client.post(Constants::INFO_ENDPOINT, body)
end

#l2_book(coin) ⇒ Hash

Get L2 order book for a coin

Parameters:

  • coin (String)

    Coin symbol (e.g., “BTC”, “ETH”)

Returns:

  • (Hash)

    L2 order book data with bids and asks



87
88
89
# File 'lib/hyperliquid/info.rb', line 87

def l2_book(coin)
  @client.post(Constants::INFO_ENDPOINT, { type: 'l2Book', coin: coin })
end

#max_builder_fee(user, builder) ⇒ Hash

Check builder fee approval

Parameters:

  • user (String)

    Wallet address

  • builder (String)

    Builder address

Returns:

  • (Hash)


113
114
115
# File 'lib/hyperliquid/info.rb', line 113

def max_builder_fee(user, builder)
  @client.post(Constants::INFO_ENDPOINT, { type: 'maxBuilderFee', user: user, builder: builder })
end

#meta(dex: nil) ⇒ Hash

Get metadata for all assets

Parameters:

  • dex (String, nil) (defaults to: nil)

    Optional perp dex name (defaults to first perp dex when not provided)

Returns:

  • (Hash)

    Metadata for all tradable assets



255
256
257
258
259
# File 'lib/hyperliquid/info.rb', line 255

def meta(dex: nil)
  body = { type: 'meta' }
  body[:dex] = dex if dex
  @client.post(Constants::INFO_ENDPOINT, body)
end

#meta_and_asset_ctxsHash

Get metadata for all assets including universe info

Returns:

  • (Hash)

    Extended metadata for all assets with universe information



263
264
265
# File 'lib/hyperliquid/info.rb', line 263

def meta_and_asset_ctxs
  @client.post(Constants::INFO_ENDPOINT, { type: 'metaAndAssetCtxs' })
end

#open_orders(user, dex: nil) ⇒ Array

Get a user’s open orders

Parameters:

  • user (String)

    Wallet address

  • dex (String, nil) (defaults to: nil)

    Optional perp dex name

Returns:

  • (Array)

    Array of open orders for the user



27
28
29
30
31
# File 'lib/hyperliquid/info.rb', line 27

def open_orders(user, dex: nil)
  body = { type: 'openOrders', user: user }
  body[:dex] = dex if dex
  @client.post(Constants::INFO_ENDPOINT, body)
end

#order_status(user, oid) ⇒ Hash

Get order status by order ID

Parameters:

  • user (String)

    Wallet address

  • oid (Integer)

    Order ID

Returns:

  • (Hash)

    Order status information



72
73
74
# File 'lib/hyperliquid/info.rb', line 72

def order_status(user, oid)
  @client.post(Constants::INFO_ENDPOINT, { type: 'orderStatus', user: user, oid: oid })
end

#order_status_by_cloid(user, cloid) ⇒ Hash

Get order status by client order ID (cloid)

Parameters:

  • user (String)

    Wallet address

  • cloid (String)

    Client order ID

Returns:

  • (Hash)

    Order status information



80
81
82
# File 'lib/hyperliquid/info.rb', line 80

def order_status_by_cloid(user, cloid)
  @client.post(Constants::INFO_ENDPOINT, { type: 'orderStatus', user: user, cloid: cloid })
end

#perp_deploy_auction_statusHash

Retrieve information about the Perp Deploy Auction

Returns:

  • (Hash)


291
292
293
# File 'lib/hyperliquid/info.rb', line 291

def perp_deploy_auction_status
  @client.post(Constants::INFO_ENDPOINT, { type: 'perpDeployAuctionStatus' })
end

#perp_dex_limits(dex) ⇒ Hash

Retrieve Builder-Deployed Perp Market Limits

Parameters:

  • dex (String)

Returns:

  • (Hash)


306
307
308
# File 'lib/hyperliquid/info.rb', line 306

def perp_dex_limits(dex)
  @client.post(Constants::INFO_ENDPOINT, { type: 'perpDexLimits', dex: dex })
end

#perp_dexsArray

Retrieve all perpetual dexs

Returns:

  • (Array)


248
249
250
# File 'lib/hyperliquid/info.rb', line 248

def perp_dexs
  @client.post(Constants::INFO_ENDPOINT, { type: 'perpDexs' })
end

#perps_at_open_interest_capArray

Query perps at open interest caps

Returns:

  • (Array)


285
286
287
# File 'lib/hyperliquid/info.rb', line 285

def perps_at_open_interest_cap
  @client.post(Constants::INFO_ENDPOINT, { type: 'perpsAtOpenInterestCap' })
end

#portfolio(user) ⇒ Array

Query a user’s portfolio time series

Parameters:

  • user (String)

Returns:

  • (Array)


175
176
177
# File 'lib/hyperliquid/info.rb', line 175

def portfolio(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'portfolio', user: user })
end

#predicted_fundingsArray

Retrieve predicted funding rates for different venues

Returns:

  • (Array)


279
280
281
# File 'lib/hyperliquid/info.rb', line 279

def predicted_fundings
  @client.post(Constants::INFO_ENDPOINT, { type: 'predictedFundings' })
end

#referral(user) ⇒ Hash

Query a user’s referral information

Parameters:

  • user (String)

Returns:

  • (Hash)


182
183
184
# File 'lib/hyperliquid/info.rb', line 182

def referral(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'referral', user: user })
end

#spot_balances(user) ⇒ Hash

Get a user’s spot token balances

Parameters:

  • user (String)

    Wallet address

Returns:

  • (Hash)

    Object containing balances array



362
363
364
# File 'lib/hyperliquid/info.rb', line 362

def spot_balances(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'spotClearinghouseState', user: user })
end

#spot_deploy_state(user) ⇒ Hash

Get Spot Deploy Auction state for a user

Parameters:

  • user (String)

    Wallet address

Returns:

  • (Hash)

    Spot deploy state



369
370
371
# File 'lib/hyperliquid/info.rb', line 369

def spot_deploy_state(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'spotDeployState', user: user })
end

#spot_metaHash

Get spot metadata

Returns:

  • (Hash)

    Spot tokens and universe metadata



349
350
351
# File 'lib/hyperliquid/info.rb', line 349

def spot_meta
  @client.post(Constants::INFO_ENDPOINT, { type: 'spotMeta' })
end

#spot_meta_and_asset_ctxsArray

Get spot metadata and asset contexts

Returns:

  • (Array)
    spot_meta, spot_asset_ctxs


355
356
357
# File 'lib/hyperliquid/info.rb', line 355

def spot_meta_and_asset_ctxs
  @client.post(Constants::INFO_ENDPOINT, { type: 'spotMetaAndAssetCtxs' })
end

#spot_pair_deploy_auction_statusHash

Get Spot Pair Deploy Auction status

Returns:

  • (Hash)

    Auction timing and gas parameters



375
376
377
# File 'lib/hyperliquid/info.rb', line 375

def spot_pair_deploy_auction_status
  @client.post(Constants::INFO_ENDPOINT, { type: 'spotPairDeployAuctionStatus' })
end

#token_details(token_id) ⇒ Hash

Get token details by tokenId

Parameters:

  • token_id (String)

    34-character hexadecimal token id

Returns:

  • (Hash)

    Token details



382
383
384
# File 'lib/hyperliquid/info.rb', line 382

def token_details(token_id)
  @client.post(Constants::INFO_ENDPOINT, { type: 'tokenDetails', tokenId: token_id })
end

#user_dex_abstraction(user) ⇒ Hash

Get dex abstraction config for a user

Parameters:

  • user (String)

    Wallet address

Returns:

  • (Hash)

    Dex abstraction configuration



238
239
240
# File 'lib/hyperliquid/info.rb', line 238

def user_dex_abstraction(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'userDexAbstraction', user: user })
end

#user_fees(user) ⇒ Hash

Query a user’s effective fee rates and schedule

Parameters:

  • user (String)

Returns:

  • (Hash)


189
190
191
# File 'lib/hyperliquid/info.rb', line 189

def user_fees(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'userFees', user: user })
end

#user_fills(user) ⇒ Array

Get a user’s fill history

Parameters:

  • user (String)

    Wallet address

Returns:

  • (Array)

    Array of fill history for the user



46
47
48
# File 'lib/hyperliquid/info.rb', line 46

def user_fills(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'userFills', user: user })
end

#user_fills_by_time(user, start_time, end_time = nil) ⇒ Array

Get a user’s fills within a time range

Parameters:

  • user (String)

    Wallet address

  • start_time (Integer)

    Start timestamp in milliseconds

  • end_time (Integer, nil) (defaults to: nil)

    Optional end timestamp in milliseconds

Returns:

  • (Array)


55
56
57
58
59
# File 'lib/hyperliquid/info.rb', line 55

def user_fills_by_time(user, start_time, end_time = nil)
  body = { type: 'userFillsByTime', user: user, startTime: start_time }
  body[:endTime] = end_time if end_time
  @client.post(Constants::INFO_ENDPOINT, body)
end

#user_funding(user, start_time, end_time = nil) ⇒ Array

Retrieve a user’s funding history

Parameters:

  • user (String)
  • start_time (Integer)
  • end_time (Integer, nil) (defaults to: nil)

Returns:

  • (Array)


315
316
317
318
319
# File 'lib/hyperliquid/info.rb', line 315

def user_funding(user, start_time, end_time = nil)
  body = { type: 'userFunding', user: user, startTime: start_time }
  body[:endTime] = end_time if end_time
  @client.post(Constants::INFO_ENDPOINT, body)
end

#user_non_funding_ledger_updates(user, start_time, end_time = nil) ⇒ Array

Retrieve a user’s non-funding ledger updates

Parameters:

  • user (String)
  • start_time (Integer)
  • end_time (Integer, nil) (defaults to: nil)

Returns:

  • (Array)


326
327
328
329
330
# File 'lib/hyperliquid/info.rb', line 326

def user_non_funding_ledger_updates(user, start_time, end_time = nil)
  body = { type: 'userNonFundingLedgerUpdates', user: user, startTime: start_time }
  body[:endTime] = end_time if end_time
  @client.post(Constants::INFO_ENDPOINT, body)
end

#user_rate_limit(user) ⇒ Hash

Query user rate limits and usage

Parameters:

  • user (String)

    Wallet address

Returns:

  • (Hash)


64
65
66
# File 'lib/hyperliquid/info.rb', line 64

def user_rate_limit(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'userRateLimit', user: user })
end

#user_role(user) ⇒ Hash

Query a user’s role

Parameters:

  • user (String)

Returns:

  • (Hash)


168
169
170
# File 'lib/hyperliquid/info.rb', line 168

def user_role(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'userRole', user: user })
end

#user_state(user, dex: nil) ⇒ Hash

Get user’s trading state

Parameters:

  • user (String)

    Wallet address

  • dex (String, nil) (defaults to: nil)

    Optional perp dex name

Returns:

  • (Hash)

    User’s trading state including positions and balances



271
272
273
274
275
# File 'lib/hyperliquid/info.rb', line 271

def user_state(user, dex: nil)
  body = { type: 'clearinghouseState', user: user }
  body[:dex] = dex if dex
  @client.post(Constants::INFO_ENDPOINT, body)
end

#user_subaccounts(user) ⇒ Array

Retrieve a user’s subaccounts

Parameters:

  • user (String)

Returns:

  • (Array)


144
145
146
# File 'lib/hyperliquid/info.rb', line 144

def user_subaccounts(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'subaccounts', user: user })
end

#user_to_multi_sig_signers(user) ⇒ Hash

Get multi-sig signer mappings for a user

Parameters:

  • user (String)

    Multi-sig wallet address

Returns:

  • (Hash)

    Multi-sig signer information



231
232
233
# File 'lib/hyperliquid/info.rb', line 231

def user_to_multi_sig_signers(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'userToMultiSigSigners', user: user })
end

#user_twap_slice_fills(user, start_time = nil, end_time = nil) ⇒ Array

Retrieve a user’s TWAP slice fills

Parameters:

  • user (String)

    Wallet address

  • start_time (Integer, nil) (defaults to: nil)

    Optional start timestamp in milliseconds

  • end_time (Integer, nil) (defaults to: nil)

    Optional end timestamp in milliseconds

Returns:

  • (Array)


134
135
136
137
138
139
# File 'lib/hyperliquid/info.rb', line 134

def user_twap_slice_fills(user, start_time = nil, end_time = nil)
  body = { type: 'userTwapSliceFills', user: user }
  body[:startTime] = start_time if start_time
  body[:endTime] = end_time if end_time
  @client.post(Constants::INFO_ENDPOINT, body)
end

#user_vault_equities(user) ⇒ Array

Retrieve a user’s vault deposits

Parameters:

  • user (String)

    Wallet address

Returns:

  • (Array)


161
162
163
# File 'lib/hyperliquid/info.rb', line 161

def user_vault_equities(user)
  @client.post(Constants::INFO_ENDPOINT, { type: 'userVaultEquities', user: user })
end

#vault_details(vault_address, user = nil) ⇒ Hash

Retrieve details for a vault

Parameters:

  • vault_address (String)

    Vault address

  • user (String, nil) (defaults to: nil)

    Optional wallet address

Returns:

  • (Hash)


152
153
154
155
156
# File 'lib/hyperliquid/info.rb', line 152

def vault_details(vault_address, user = nil)
  body = { type: 'vaultDetails', vaultAddress: vault_address }
  body[:user] = user if user
  @client.post(Constants::INFO_ENDPOINT, body)
end