export type SpotAsset = {
  assetIndex: number // 10107
  baseTokenIndex: number // 150 — spotMeta.tokens index of the base token
  deployerLabel?: string // 'nqq' — base token's onchain deployer label, absent when unset
  display: string // HYPE — base symbol only (no quote asset)
  hyperliquidSymbol: string // @123
  index: number // 107 used to look up context data
  quoteAssetSymbol: string // USDC
  symbol: string // HYPE
  szDecimals: number
  tradeUrlSymbol: string // hype — the url name: bare base symbol, lowercase
  type: 'spot'
}

export type PerpsAsset = {
  assetIndex: number // 1 or 100001
  collateralTokenIndex: number // 0 — spotMeta.tokens index of the settlement token
  dex: string // '' for main HL, dex name otherwise (e.g. 'mkts', 'xyz')
  display: string // US500
  hyperliquidSymbol: string // mkts:US500
  maxLeverage: number
  onlyIsolated: boolean
  quoteAssetSymbol: 'USDC' | 'USDE' | 'USDH' | 'USDT'
  symbol: string // US500
  szDecimals: number
  tradeUrlSymbol: string // us500 — the url name: display name, lowercase, no dex
  type: 'perps'
}

export type Asset = SpotAsset | PerpsAsset
