# Vault Operations

Complete examples for common vault operations.

### Display Vault List

```typescript
import { YieldFiSDK } from "yieldfi-sdk";

async function displayVaultList() {
  const sdk = await YieldFiSDK.create({
    gatewayUrl: "https://gw.yield.fi",
  });

  // Get all vaults
  const vaults = await sdk.vault.getVaults({
    chainId: 1,
    page: 1,
    pageSize: 20,
  });

  console.log(`Found ${vaults.pagination.total} vaults\n`);

  vaults.data.forEach((vault) => {
    console.log(`${vault.name} (${vault.symbol})`);
    console.log(`  Key: ${vault.vaultKey}`);
    console.log(`  TVL: $${vault.metrics.tvl}`);
    console.log(`  APY (7d): ${vault.metrics.apy7d}%`);
    console.log(`  Strategy: ${vault.strategy}`);
    console.log("");
  });
}

displayVaultList();
```

### Get Vault Details

```typescript
async function getVaultDetails(vaultKey: string, chainId: number) {
  const sdk = await YieldFiSDK.create({
    gatewayUrl: "https://gw.yield.fi",
  });

  // Get vault information
  const vault = await sdk.vault.getVaultByKey(vaultKey, chainId);
  console.log(`Vault: ${vault.vault.name}`);
  console.log(`Description: ${vault.vault.description}`);
  console.log(`Manager: ${vault.vault.manager}`);

  // Get whitelisted assets
  const assets = await sdk.vault.getWhitelistedAssets(vaultKey, chainId, false);
  console.log(`\nWhitelisted Assets (${assets.assets.length}):`);
  assets.assets.forEach((asset) => {
    console.log(`  ${asset.symbol}: ${asset.address}`);
  });

  // Get FAQs
  const faqs = await sdk.vault.getVaultFaqs(vaultKey, chainId);
  if (faqs.faqs.length > 0) {
    console.log(`\nFAQs:`);
    faqs.faqs.forEach((faq) => {
      console.log(`  Q: ${faq.question}`);
      console.log(`  A: ${faq.answer}\n`);
    });
  }
}

getVaultDetails("yusd", 1);
```

### Check Asset Whitelisting

```typescript
async function checkAsset(vaultKey: string, assetAddress: string, chainId: number) {
  const sdk = await YieldFiSDK.create({
    gatewayUrl: "https://gw.yield.fi",
  });

  const checkResult = await sdk.vault.checkAssetWhitelisted(
    vaultKey,
    assetAddress,
    chainId
  );

  if (checkResult.isWhitelisted) {
    console.log("✅ Asset is whitelisted");
    console.log(`Deposit Enabled: ${checkResult.depositEnabled ? "Yes" : "No"}`);
    console.log(`Redeem Enabled: ${checkResult.redeemEnabled ? "Yes" : "No"}`);
  } else {
    console.log("❌ Asset is not whitelisted");
  }
}

checkAsset(
  "yusd",
  "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
  1
);
```

### Protocol Statistics Dashboard

```typescript
async function protocolDashboard() {
  const sdk = await YieldFiSDK.create({
    gatewayUrl: "https://gw.yield.fi",
  });

  // Get protocol stats
  const stats = await sdk.vault.getProtocolStats();
  console.log("=== Protocol Statistics ===");
  console.log(`Total TVL: $${stats.stats.totalTvl}`);
  console.log(`Max APY: ${stats.stats.maxApy}%`);
  console.log(`Total Users: ${stats.stats.totalUsers}`);
  console.log(`Total Fund Managers: ${stats.stats.totalFundManagers}`);
  console.log(`YPO: ${stats.stats.ypo}`);

  // Get strategies
  const strategies = await sdk.vault.getStrategies();
  console.log(`\n=== Available Strategies ===");
  strategies.strategies.forEach((strategy) => {
    console.log(`  - ${strategy}`);
  });

  // Get vaults by strategy
  const defiVaults = await sdk.vault.getVaults({
    chainId: 1,
    strategy: "DeFi",
  });
  console.log(`\n=== DeFi Vaults: ${defiVaults.pagination.total} ===`);
}

protocolDashboard();
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.yield.fi/earn-with-yieldfi/integration-sdk/examples-and-guides/vault-operations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
