PerpsClient.getDepositFlow() instead of hard-coding the destination token. The Hyperliquid provider always returns a lifiSwap flow, whether or not the account exists yet.
flow.destination is the SDK’s exported HYPERLIQUID_USDC constant: { chainId: ChainId.HPL, address: 0xaf88d065e77c8cC2239327C5EDb3A432268e5831, decimals: 6 }, the 6-decimal USDC perps contract on the Hyperliquid venue chain.
The provider advertises minDepositUsd: '5': Hyperliquid’s Arbitrum bridge rejects smaller amounts.
If the user already has USDC on Arbitrum, they can deposit directly via the Hyperliquid bridge with a normal transfer.
Deposit before setup
An address without a Hyperliquid account reportsaccountExists: false from checkSetup() with no setup steps. The account exists only after its first deposit, which pays Hyperliquid’s one-time account creation fee. Deposit first, then run Setup.
Which balance is usable for trading
Only under
unifiedAccount or portfolioMargin (a user-signed accountMode change) is spot USDC usable as perps margin. In Standard (disabled) mode, the state of an account that never set a mode, spot and perps USDC are separate balances and perps trading uses the perps balance. See Account Abstraction. Across the hyperliquid category and HIP-3 categories such as xyz, collateral is held per dex in Standard mode.