๐Ÿ’ฐVaults

Query vault data across EVM and Solana chains. All vault getters are available on the main AugustSDK class.

Overview

The August SDK provides comprehensive vault querying capabilities across all supported chains. Vaults follow the ERC4626 standard and include additional features for loan management, allocations, and user positions.

Vault Versions

Version
Description
Chains

evm-0

Legacy vaults

Ethereum, Arbitrum

evm-1

Standard vaults

All EVM chains

evm-2

Multi-asset vaults

Ethereum, Base

sol-0

Solana vaults

Solana Mainnet

Get All Vaults

Fetch all vaults across configured networks with optional enrichment.

sdk.getVaults(options?: {
  chainIds?: number[];
  loans?: boolean;
  allocations?: boolean;
  wallet?: string;
  solanaWallet?: string;
}): Promise<IVault[]>

Parameters

Parameter
Type
Required
Description

options.chainIds

number[]

No

Filter by specific chain IDs

options.loans

boolean

No

Include loan data (default: true)

options.allocations

boolean

No

Include allocation data (default: true)

options.wallet

string

No

EVM wallet to fetch positions for

options.solanaWallet

string

No

Solana wallet to fetch positions for

Returns

Array of IVault objects

Example

import { AugustSDK } from '@augustdigital/sdk';

const sdk = new AugustSDK({
  providers: {
    1: 'https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY',
    42161: 'https://arb-mainnet.g.alchemy.com/v2/YOUR_KEY',
  },
});

// Get all vaults
const vaults = await sdk.getVaults();
console.log(`Found ${vaults.length} vaults`);

// Filter by chain
const ethVaults = await sdk.getVaults({ chainIds: [1] });

// Include user positions
const vaultsWithPositions = await sdk.getVaults({
  wallet: '0xYourWallet...',
  loans: false, // Skip loan data for faster response
});

Get Single Vault

Fetch detailed data for a specific vault with optional enrichment.

sdk.getVault({
  vault: string;
  chainId?: number;
  options?: {
    loans?: boolean;
    allocations?: boolean;
    wallet?: string;
    solanaWallet?: string;
  };
}): Promise<IVault>

Parameters

Parameter
Type
Required
Description

vault

string

Yes

Vault contract address or program ID

chainId

number

No

Chain ID (uses active network if not provided)

options.loans

boolean

No

Include loan data (default: true)

options.allocations

boolean

No

Include allocation data (default: true)

options.wallet

string

No

EVM wallet for position data

options.solanaWallet

string

No

Solana wallet for position data

Returns

Single IVault object

Example

// Get vault with all data
const vault = await sdk.getVault({
  vault: '0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42',
  chainId: 1,
});

console.log(vault.name); // "Upshift USDC"
console.log(vault.apy); // Vault APY
console.log(vault.depositAssets); // All supported deposit tokens

// Get vault with user position
const vaultWithPosition = await sdk.getVault({
  vault: '0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42',
  chainId: 1,
  options: {
    wallet: '0xYourWallet...',
    loans: false,
  },
});

console.log(vaultWithPosition.position?.walletBalance);

Get Vault Loans

Fetch active loan data for a vault (EVM-0 vaults only).

sdk.getVaultLoans({
  vault: string;
  chainId?: number;
}): Promise<IVaultLoan[]>

Returns

Array of loan objects with borrower, principal, interest, and APR data.

Example

const loans = await sdk.getVaultLoans({
  vault: '0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42',
  chainId: 1,
});

loans.forEach(loan => {
  console.log(`Borrower: ${loan.borrower}`);
  console.log(`Principal: ${loan.principalAmount}`);
  console.log(`APR: ${loan.apr}%`);
});

Get Vault Allocations

Fetch DeFi, CeFi, and OTC allocation breakdowns for a vault.

sdk.getVaultAllocations({
  vault: string;
  chainId?: number;
}): Promise<IVaultAllocations>

Returns

Object containing defi, cefi, otc, and tokens arrays.

Example

const allocations = await sdk.getVaultAllocations({
  vault: '0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42',
  chainId: 1,
});

console.log('DeFi protocols:', allocations.defi.length);
console.log('CeFi positions:', allocations.cefi.length);
console.log('Net value:', allocations.netValue);

Get Vault APY

Fetch current or historical APY data for a vault.

sdk.getVaultApy({
  vault: string;
  historical?: {
    daysAgo?: number;
    order?: 'asc' | 'desc';
    interval?: 'days' | 'weeks' | 'months' | 'years';
  };
}): Promise<{ value: number; timestamp: string }[]>

Returns

Array of APY data points with timestamps.

Example

// Current APY
const [current] = await sdk.getVaultApy({
  vault: '0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42',
});
console.log('Current APY:', current.value);

// Historical APY
const historical = await sdk.getVaultApy({
  vault: '0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42',
  historical: {
    daysAgo: 30,
    interval: 'days',
    order: 'desc',
  },
});

Get Vault TVL

Fetch current or historical total value locked (TVL) for a vault.

sdk.getVaultTvl({
  vault: string;
  chainId?: number;
  historical?: {
    daysAgo?: number;
    order?: 'asc' | 'desc';
    interval?: 'days' | 'weeks' | 'months' | 'years';
  };
}): Promise<{ value: INormalizedNumber; timestamp: string }[]>

Returns

Array of TVL data points with timestamps.

Example

// Current TVL
const [current] = await sdk.getVaultTvl({
  vault: '0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42',
  chainId: 1,
});

console.log('TVL:', current.value.normalized);

// Historical TVL
const historical = await sdk.getVaultTvl({
  vault: '0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42',
  chainId: 1,
  historical: { daysAgo: 7, interval: 'days' },
});

Get Vault Positions

Fetch user positions across one or all vaults.

sdk.getVaultPositions({
  vault?: string;
  wallet?: string;
  chainId?: number;
  showAllVaults?: boolean;
  solanaWallet?: string;
}): Promise<IVaultPosition[]>

Parameters

Parameter
Type
Required
Description

vault

string

No

Specific vault address (omit for all vaults)

wallet

string

No

EVM wallet address

solanaWallet

string

No

Solana wallet address

chainId

number

No

Filter by specific chain

showAllVaults

boolean

No

Include vaults with no position (default: false)

Returns

Array of vault position objects.

Example

// Get all positions for a wallet
const positions = await sdk.getVaultPositions({
  wallet: '0xYourWallet...',
  chainId: 1,
});

positions.forEach(pos => {
  console.log(`Vault: ${pos.vault}`);
  console.log(`Balance: ${pos.walletBalance.normalized}`);
  console.log(`Status: ${pos.status}`); // STAKED, REDEEM, or PENDING
  console.log(`Available redemptions: ${pos.availableRedemptions.length}`);
});

// Get position for specific vault
const vaultPosition = await sdk.getVaultPositions({
  vault: '0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42',
  wallet: '0xYourWallet...',
  chainId: 1,
});

Get Available Redemptions

Fetch claimable redemption requests for a vault and wallet.

sdk.getVaultAvailableRedemptions({
  vault: string;
  chainId?: number;
  wallet?: string;
}): Promise<{
  availableRedemptions: IVaultAvailableRedemption[];
  pendingRedemptions: IVaultAvailableRedemption[];
}>

Returns

Object with availableRedemptions (ready to claim) and pendingRedemptions (waiting for lag period).

Example

const { availableRedemptions, pendingRedemptions } = 
  await sdk.getVaultAvailableRedemptions({
    vault: '0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42',
    chainId: 1,
    wallet: '0xYourWallet...',
  });

console.log(`Available to claim: ${availableRedemptions.length}`);
console.log(`Pending: ${pendingRedemptions.length}`);

// Claim available redemptions
for (const redemption of availableRedemptions) {
  console.log(`Can claim ${redemption.amount.normalized} tokens`);
  console.log(`Date: ${redemption.date}`);
}

IVault Interface

All vault getter methods return the IVault interface:

interface IVault {
  // Basic Info
  address: string;
  chainId: number;
  name: string;
  logoUrl: string;
  description: string;
  status: 'active' | 'closed' | 'testing';
  version: 'evm-0' | 'evm-1' | 'evm-2' | 'sol-0';
  decimals: number;
  tags: string[];
  reserveTarget: number;
  reserveTolerance: number;
  lagDuration: number;
  maxDailyDrawdown: number;
  risk: string;
  startDatetime: string;
  
  // Receipt Token
  receipt: {
    address: string;
    symbol: string;
    decimals: number;
  };
  
  // Deposit Assets (includes adapter tokens when available)
  depositAssets: Array<{
    address: string;
    symbol: string;
    decimals: number;
  }>;
  
  // Vault Stats
  totalAssets: INormalizedNumber;
  totalSupply: INormalizedNumber;
  maxSupply: INormalizedNumber;
  idleAssets: INormalizedNumber;
  
  // APY & Rewards
  apy: {
    apy: number;
    explainer: string;
    liquidApy: number;
    rewardsClaimable: number;
    rewardsCompounded: number;
    underlyingApy: number;
  };
  rewards: {
    points: string;
    multiplier: number;
    multipliers: Array<{ value: number; timestamp: number }>;
    additionalPoints: string[];
  };
  
  // Management
  operator: string;
  strategists: Array<{
    address: string;
    logo: string;
    name: string;
  }>;
  fees: {
    management: number;
    isManagementWaived: boolean;
    performance: number;
    isPerformanceWaived: boolean;
  };
  
  // Settings
  isFeatured: boolean;
  isVisible: boolean;
  isWithdrawalPaused: boolean;
  isDepositPaused: boolean;
  
  // Optional Enrichments
  loans?: IVaultLoan[];
  allocations?: IVaultAllocations;
  position?: IVaultPosition;
}

Key Fields

depositAssets - Array of all supported deposit tokens including:

  • Underlying asset (always first)

  • Adapter tokens (if available)

  • Whitelisted assets (for multi-asset vaults)

version - Determines which deposit/withdrawal functions to use:

  • evm-0, evm-1: 2-param deposit

  • evm-2: 3-param deposit with asset selection

position - User-specific data (when wallet provided):

  • Wallet balance

  • Available redemptions

  • Pending redemptions

  • Redeemable amount

Additional Getters

Get User History

sdk.getUserHistory({
  wallet: string;
  chainId?: number;
  vault?: string;
}): Promise<IVaultUserHistoryItem[]>

Returns user transaction history (deposits, withdrawals, etc.).

Get User Transfers

sdk.getUserTransfers({
  wallet: string;
  chainId?: number;
  vault?: string;
}): Promise<IVaultTransfer[]>

Returns vault share transfer history for a user.

Get Staking Positions

sdk.getStakingPositions(
  wallet?: string,
  chainId?: number
): Promise<IActiveStakingPosition[]>

Returns active reward staking positions.

Examples

Complete Vault Query

const vault = await sdk.getVault({
  vault: '0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42',
  chainId: 1,
  options: {
    loans: true,
    allocations: true,
    wallet: '0xYourWallet...',
  },
});

// Basic info
console.log(vault.name);
console.log(vault.version);
console.log(vault.apy.apy);

// Deposit options
console.log('Can deposit:', vault.depositAssets.map(a => a.symbol));

// User position
if (vault.position) {
  console.log('Your balance:', vault.position.walletBalance.normalized);
  console.log('Available redemptions:', vault.position.availableRedemptions.length);
}

// Loans (if available)
if (vault.loans) {
  console.log('Active loans:', vault.loans.length);
}

Filter Vaults by Criteria

const vaults = await sdk.getVaults();

// High APY vaults
const highYield = vaults.filter(v => v.apy.apy > 10);

// Featured vaults
const featured = vaults.filter(v => v.isFeatured);

// Active vaults only
const active = vaults.filter(v => v.status === 'active');

// Vaults with deposits enabled
const depositable = vaults.filter(v => !v.isDepositPaused);

// Multi-asset vaults
const multiAsset = vaults.filter(v => v.version === 'evm-2');

Check Deposit Options

const vault = await sdk.getVault({
  vault: '0x5Fde59415625401278c4d41C6beFCe3790eb357f',
  chainId: 1,
});

// Show all deposit options to user
console.log('You can deposit:');
vault.depositAssets.forEach(asset => {
  console.log(`- ${asset.symbol} (${asset.address})`);
});
// Output:
// - wstETH (0x7f39...)  <- Underlying
// - WETH (0xC02a...)    <- Adapter
// - ETH (0x0000...)     <- Adapter

Error Handling

try {
  const vault = await sdk.getVault({
    vault: vaultAddress,
    chainId: 1,
  });
} catch (error) {
  if (error.message.includes('Missing RPC URL')) {
    console.error('Configure RPC for this chain');
  } else if (error.message.includes('not found')) {
    console.error('Vault does not exist');
  } else {
    console.error('Failed to fetch vault:', error.message);
  }
}

Last updated