Skip to main content
Looks up a vault configuration by asset address, yield type, and chain ID. Use this to discover the vaultAddress needed by getVaultAPY and getVaultTVL.

Import

import { findVaultByConfig } from '@paxoslabs/amplify-sdk'

Usage

const vault = await findVaultByConfig({
  assetAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
  yieldType: YieldType.CORE,
  chainId: 1,
})

if (vault) {
  console.log(vault.vault.boringVaultAddress) // Vault contract address
}

Parameters

ParameterTypeRequiredDescription
assetAddressAddressYesToken contract address (e.g., USDC)
yieldTypeYieldTypeYesYield strategy (CORE, TREASURY, FRONTIER)
chainIdnumberYesBlockchain network ID
interface FindVaultByConfigParams {
  assetAddress: Address
  yieldType: YieldType
  chainId: number
}

Return Type

Returns the matching AmplifyVault, or null if no vault matches.
type FindVaultByConfigReturn = AmplifyVault | null
interface AmplifyVault {
  id: string;
  name: string;              // Pass as vaultName to transaction functions
  chainId: number;
  yieldType: YieldType;
  vault: {
    boringVaultAddress: Address;  // Pass as vaultAddress to display helpers
    tellerAddress: Address;
    accountantAddress: Address;
    managerAddress: Address;
    rolesAuthorityAddress: Address;
    baseTokenAddress: Address;
    baseTokenStandIn?: Address;
    withdrawQueueAddress?: Address;
  };
  sla?: VaultSLA;
  supportedAssets: VaultSupportedAsset[];
}
The key fields are vault.boringVaultAddress (pass as vaultAddress to display helpers) and name (pass as vaultName to transaction functions).

Example: Vault Discovery → APY Display

import {
  findVaultByConfig,
  getVaultAPY,
  getVaultTVL,
  YieldType,
} from '@paxoslabs/amplify-sdk'

const vault = await findVaultByConfig({
  assetAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
  yieldType: YieldType.CORE,
  chainId: 1,
})

if (vault) {
  const vaultAddress = vault.vault.boringVaultAddress

  const apyResult = await getVaultAPY({ vaultAddress, chainId: 1 })
  console.log(apyResult.apyFormatted) // "4.50%"

  const tvlResult = await getVaultTVL({ vaultAddress, chainId: 1 })
  console.log(
    `$${Number(tvlResult.tvl).toLocaleString()} ${tvlResult.tvlAsset}`
  )
}

Example: React Component

import { useQuery } from '@tanstack/react-query'
import {
  findVaultByConfig,
  getVaultAPY,
  YieldType,
} from '@paxoslabs/amplify-sdk'

function VaultAPY({
  assetAddress,
  chainId,
}: {
  assetAddress: `0x${string}`
  chainId: number
}) {
  const { data, isLoading } = useQuery({
    queryKey: ['vaultAPY', assetAddress, chainId],
    queryFn: async () => {
      const vault = await findVaultByConfig({
        assetAddress,
        yieldType: YieldType.CORE,
        chainId,
      })
      if (!vault) return null
      return getVaultAPY({
        vaultAddress: vault.vault.boringVaultAddress,
        chainId,
      })
    },
  })

  if (isLoading) return <span>Loading...</span>

  return <span>{data?.apyFormatted ?? 'N/A'}</span>
}

Error Handling

Error Message PatternDescriptionResolution
"SDK not initialized"SDK not initializedCall initAmplifySDK() first
Returns null (not an error) when no vault matches the given parameters. Always check the return value before accessing vault properties.