getProviders
Returns all available providers, including theirsetup steps, trading actions, and categories.
Parameters
Returns
ProvidersResponse — { providers: Provider[] }:
Each Provider:
The API sends the five monetary amounts above as decimal strings. Parse each one before you compare or calculate with it.
@lifi/perps-types@18.1.0 still declares the five fields number; that declaration disagrees with the live wire, and the next major of the package corrects it to DecimalString. Use the types in this table, not the published declaration.ProviderCategory:
Each
ProviderAction:
setup and actions share the ProviderAction shape. Which array an entry sits in carries the categorisation. Entries additionally populate the presentation and ordering fields a client renders:
SetupAction
Eachsetup entry is a SetupAction: a ProviderAction with two extra fields. Both fields are always present.
options holds the choices, and default marks the recommended one. At most one option of a step has default. The SDK never executes the recommended option on its own. Pass the option the user picked to executeProviderOption(). Use isSetupOptionFor(option, ActionType.ACCOUNT_TYPE) to narrow an option to the params of its action.
The /providers response carries no provider-level options property.
PerpsSigner
Who fulfils a step. Surfaced per action inProviderAction.signer.
ActionRelay
Where a signed step goes. Surfaced per action inProviderAction.relay.
SigningMethod
Identifies how an action is authorized. The SDK uses this to dispatch to the provider-owned signing path. The wire-level values are camelCase strings exposed by theSigningMethod enum.
Use
provider.setup to build the setup UI, with options for each choice. See Hyperliquid / Setup for the full flow. The SDK is the supported integration path. If you call the API without it, see Integrating without the SDK.SDKRequestOptions
Every service function takes an optional finaloptions argument of type SDKRequestOptions:
Deposit Flow Discovery
PerpsClient.getDepositFlow({ provider, address }) asks the registered provider plugin how that account must be funded. It returns undefined when the plugin declares no deposit flow, otherwise one of three discriminated variants:
DeclaredDepositAsset is identified by { chainId, address, decimals }. Do not infer token identity from its symbol.
Executing a deposit flow
How to move funds depends on the flowkind:
Each on-chain leg is broadcast on its own chain. The wallet must be on that chain, or the client must have a
switchChain hook configured; a leg whose target chain differs from the wallet’s chain throws before broadcasting. When a balance needed to choose the next stage cannot be read, do not guess a stage.
API Reference: GET /providers