Class: Hyperliquid::Info
- Inherits:
-
Object
- Object
- Hyperliquid::Info
- Defined in:
- lib/hyperliquid/info.rb
Overview
Client for read-only Info API endpoints
Instance Method Summary collapse
-
#active_asset_data(user, coin) ⇒ Hash
Retrieve User’s Active Asset Data.
-
#all_mids(dex: nil) ⇒ Hash
Get all market mid prices.
-
#candles_snapshot(coin, interval, start_time, end_time) ⇒ Array
Get candlestick data.
-
#delegations(user) ⇒ Array
Query a user’s staking delegations.
-
#delegator_history(user) ⇒ Array
Query a user’s staking history.
-
#delegator_rewards(user) ⇒ Array
Query a user’s staking rewards.
-
#delegator_summary(user) ⇒ Hash
Query a user’s staking summary.
-
#extra_agents(user) ⇒ Array
Get authorized agent addresses for a user.
-
#frontend_open_orders(user, dex: nil) ⇒ Array
Get a user’s open orders with additional frontend info.
-
#funding_history(coin, start_time, end_time = nil) ⇒ Array
Retrieve historical funding rates.
-
#historical_orders(user, start_time = nil, end_time = nil) ⇒ Array
Retrieve a user’s historical orders.
-
#initialize(client) ⇒ Info
constructor
A new instance of Info.
-
#l2_book(coin) ⇒ Hash
Get L2 order book for a coin.
-
#max_builder_fee(user, builder) ⇒ Hash
Check builder fee approval.
-
#meta(dex: nil) ⇒ Hash
Get metadata for all assets.
-
#meta_and_asset_ctxs ⇒ Hash
Get metadata for all assets including universe info.
-
#open_orders(user, dex: nil) ⇒ Array
Get a user’s open orders.
-
#order_status(user, oid) ⇒ Hash
Get order status by order ID.
-
#order_status_by_cloid(user, cloid) ⇒ Hash
Get order status by client order ID (cloid).
-
#perp_deploy_auction_status ⇒ Hash
Retrieve information about the Perp Deploy Auction.
-
#perp_dex_limits(dex) ⇒ Hash
Retrieve Builder-Deployed Perp Market Limits.
-
#perp_dexs ⇒ Array
Retrieve all perpetual dexs.
-
#perps_at_open_interest_cap ⇒ Array
Query perps at open interest caps.
-
#portfolio(user) ⇒ Array
Query a user’s portfolio time series.
-
#predicted_fundings ⇒ Array
Retrieve predicted funding rates for different venues.
-
#referral(user) ⇒ Hash
Query a user’s referral information.
-
#spot_balances(user) ⇒ Hash
Get a user’s spot token balances.
-
#spot_deploy_state(user) ⇒ Hash
Get Spot Deploy Auction state for a user.
-
#spot_meta ⇒ Hash
Get spot metadata.
-
#spot_meta_and_asset_ctxs ⇒ Array
Get spot metadata and asset contexts.
-
#spot_pair_deploy_auction_status ⇒ Hash
Get Spot Pair Deploy Auction status.
-
#token_details(token_id) ⇒ Hash
Get token details by tokenId.
-
#user_dex_abstraction(user) ⇒ Hash
Get dex abstraction config for a user.
-
#user_fees(user) ⇒ Hash
Query a user’s effective fee rates and schedule.
-
#user_fills(user) ⇒ Array
Get a user’s fill history.
-
#user_fills_by_time(user, start_time, end_time = nil) ⇒ Array
Get a user’s fills within a time range.
-
#user_funding(user, start_time, end_time = nil) ⇒ Array
Retrieve a user’s funding history.
-
#user_non_funding_ledger_updates(user, start_time, end_time = nil) ⇒ Array
Retrieve a user’s non-funding ledger updates.
-
#user_rate_limit(user) ⇒ Hash
Query user rate limits and usage.
-
#user_role(user) ⇒ Hash
Query a user’s role.
-
#user_state(user, dex: nil) ⇒ Hash
Get user’s trading state.
-
#user_subaccounts(user) ⇒ Array
Retrieve a user’s subaccounts.
-
#user_to_multi_sig_signers(user) ⇒ Hash
Get multi-sig signer mappings for a user.
-
#user_twap_slice_fills(user, start_time = nil, end_time = nil) ⇒ Array
Retrieve a user’s TWAP slice fills.
-
#user_vault_equities(user) ⇒ Array
Retrieve a user’s vault deposits.
-
#vault_details(vault_address, user = nil) ⇒ Hash
Retrieve details for a vault.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
255 256 257 258 259 |
# File 'lib/hyperliquid/info.rb', line 255 def (dex: nil) body = { type: 'meta' } body[:dex] = dex if dex @client.post(Constants::INFO_ENDPOINT, body) end |
#meta_and_asset_ctxs ⇒ Hash
Get metadata for all assets including universe info
263 264 265 |
# File 'lib/hyperliquid/info.rb', line 263 def @client.post(Constants::INFO_ENDPOINT, { type: 'metaAndAssetCtxs' }) end |
#open_orders(user, dex: nil) ⇒ Array
Get a user’s open orders
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
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)
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_status ⇒ Hash
Retrieve information about the Perp Deploy Auction
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
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_dexs ⇒ Array
Retrieve all perpetual dexs
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_cap ⇒ Array
Query perps at open interest caps
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
175 176 177 |
# File 'lib/hyperliquid/info.rb', line 175 def portfolio(user) @client.post(Constants::INFO_ENDPOINT, { type: 'portfolio', user: user }) end |
#predicted_fundings ⇒ Array
Retrieve predicted funding rates for different venues
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
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
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
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_meta ⇒ Hash
Get spot metadata
349 350 351 |
# File 'lib/hyperliquid/info.rb', line 349 def @client.post(Constants::INFO_ENDPOINT, { type: 'spotMeta' }) end |
#spot_meta_and_asset_ctxs ⇒ Array
Get spot metadata and asset contexts
355 356 357 |
# File 'lib/hyperliquid/info.rb', line 355 def @client.post(Constants::INFO_ENDPOINT, { type: 'spotMetaAndAssetCtxs' }) end |
#spot_pair_deploy_auction_status ⇒ Hash
Get Spot Pair Deploy Auction status
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 |