# Models

## The VaultInfo object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultInfo":{"type":"object","properties":{"vaultType":{"type":"string","enum":["boring","nest","boringNest"]},"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Canonical vault address (boring vault address or nest share OFT address)"},"nestShareOftAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaults":{"type":"array","items":{"type":"object","properties":{"nestVaultAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"asset":{"type":"string"},"chainAssets":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"integer","minimum":0,"exclusiveMinimum":true},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["chainId","assetAddress"]},"minItems":1}},"required":["nestVaultAddress","chainAssets"]}},"nestComposers":{"type":"array","items":{"$ref":"#/components/schemas/PublicNestComposer"}},"accountantAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"isHubAccountant":{"type":"boolean","description":"Deprecated aggregate compatibility flag. Use `nestAccountant.chain[chain].accountantType` to select the NestHubAccountant vs NestSpokeAccountant state ABI per chain."},"nestAccountant":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"isHub":{"type":"boolean","description":"Deprecated aggregate compatibility flag. Use chain-level `accountantType` entries instead."},"chain":{"$ref":"#/components/schemas/ChainConfig"}},"required":["address","chain"],"description":"Nest accountant metadata for nest-style vaults. For `nest` vaults, `accountantAddress` and `nestAccountant.address` refer to the same Nest accountant. For `boringNest` vaults, `accountantAddress` is the legacy `AccountantWithRateProvider` and `nestAccountant.address` is the Nest accountant."},"authorityAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"tellerContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number","description":"Default decimals for vault"},"decimalsOverride":{"type":"object","additionalProperties":{"type":"number"},"description":"Override for the number of decimals for the vault on specific chains"},"chain":{"$ref":"#/components/schemas/ChainConfig"},"solana":{"type":"object","properties":{"mintAddress":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number"},"startBlock":{"type":"number","description":"start block on Plume corresponding to launch of vault on Solana"}},"required":["mintAddress","startBlock"]},"liquidAssets":{"type":"array","items":{"$ref":"#/components/schemas/LiquidAsset"}},"slug":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"icon":{"type":"string"},"targetComposition":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["slug","name","description"]}},"sec30d":{"type":"number","nullable":true},"tvl":{"type":"number","nullable":true},"numHolders":{"type":"number","nullable":true},"volume24h":{"type":"number","nullable":true}},"required":["vaultType","vaultAddress","accountantAddress","authorityAddress","decimals","chain","liquidAssets","slug","name","symbol","icon","targetComposition","sec30d","tvl","numHolders","volume24h"]},"PublicNestComposer":{"type":"object","properties":{"asset":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["asset","composerAddress"]},"ChainConfig":{"type":"object","properties":{"mainnet":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"plume":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"plasma":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"arbitrum":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"bsc":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"worldchain":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]}}},"LiquidAsset":{"type":"object","properties":{"contractAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"symbol":{"type":"string"},"iconUrl":{"type":"string","nullable":true},"decimals":{"type":"number"},"price":{"type":"number"},"chainId":{"type":"number"},"minimumSourceRules":{"type":"array","items":{"type":"object","properties":{"sourceChain":{"type":"integer","minimum":0,"exclusiveMinimum":true},"sourceParams":{"type":"object","properties":{"excludeWallets":{"type":"array","items":{"type":"string"}}}}},"required":["sourceChain"]}}},"required":["contractAddress","symbol","decimals","price","chainId"]}}}}
```

## The PublicNestComposer object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"PublicNestComposer":{"type":"object","properties":{"asset":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["asset","composerAddress"]}}}}
```

## The ChainConfig object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"ChainConfig":{"type":"object","properties":{"mainnet":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"plume":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"plasma":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"arbitrum":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"bsc":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"worldchain":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]}}}}}}
```

## The LiquidAsset object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"LiquidAsset":{"type":"object","properties":{"contractAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"symbol":{"type":"string"},"iconUrl":{"type":"string","nullable":true},"decimals":{"type":"number"},"price":{"type":"number"},"chainId":{"type":"number"},"minimumSourceRules":{"type":"array","items":{"type":"object","properties":{"sourceChain":{"type":"integer","minimum":0,"exclusiveMinimum":true},"sourceParams":{"type":"object","properties":{"excludeWallets":{"type":"array","items":{"type":"string"}}}}},"required":["sourceChain"]}}},"required":["contractAddress","symbol","decimals","price","chainId"]}}}}
```

## The VaultDetails object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultDetails":{"type":"object","properties":{"vaultType":{"type":"string","enum":["boring","nest","boringNest"]},"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Canonical vault address (boring vault address or nest share OFT address)"},"nestShareOftAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaults":{"type":"array","items":{"type":"object","properties":{"nestVaultAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"asset":{"type":"string"},"chainAssets":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"integer","minimum":0,"exclusiveMinimum":true},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["chainId","assetAddress"]},"minItems":1}},"required":["nestVaultAddress","chainAssets"]}},"nestComposers":{"type":"array","items":{"$ref":"#/components/schemas/PublicNestComposer"}},"accountantAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"isHubAccountant":{"type":"boolean","description":"Deprecated aggregate compatibility flag. Use `nestAccountant.chain[chain].accountantType` to select the NestHubAccountant vs NestSpokeAccountant state ABI per chain."},"nestAccountant":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"isHub":{"type":"boolean","description":"Deprecated aggregate compatibility flag. Use chain-level `accountantType` entries instead."},"chain":{"$ref":"#/components/schemas/ChainConfig"}},"required":["address","chain"],"description":"Nest accountant metadata for nest-style vaults. For `nest` vaults, `accountantAddress` and `nestAccountant.address` refer to the same Nest accountant. For `boringNest` vaults, `accountantAddress` is the legacy `AccountantWithRateProvider` and `nestAccountant.address` is the Nest accountant."},"authorityAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"tellerContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number","description":"Default decimals for vault"},"decimalsOverride":{"type":"object","additionalProperties":{"type":"number"},"description":"Override for the number of decimals for the vault on specific chains"},"chain":{"$ref":"#/components/schemas/ChainConfig"},"solana":{"type":"object","properties":{"mintAddress":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number"},"startBlock":{"type":"number","description":"start block on Plume corresponding to launch of vault on Solana"}},"required":["mintAddress","startBlock"]},"liquidAssets":{"type":"array","items":{"$ref":"#/components/schemas/LiquidAsset"}},"slug":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"icon":{"type":"string"},"targetComposition":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["slug","name","description"]}},"tvl":{"type":"number","nullable":true},"tvl30DayChange":{"type":"number","nullable":true},"volume24h":{"type":"number","nullable":true},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"]},"tokenPrice":{"type":"number","nullable":true},"tokenPriceUpdatedAtEpoch":{"type":"number","nullable":true},"liquidFunds":{"type":"number","nullable":true},"liquidFundsRange":{"type":"number","nullable":true},"holders":{"type":"number","nullable":true},"tokenPriceUpdatedAt":{"type":"string","nullable":true,"format":"date-time"},"pendingRedemptions":{"type":"number","nullable":true},"pendingRedemptionsValue":{"type":"number","nullable":true},"shortfall":{"type":"number","nullable":true}},"required":["vaultType","vaultAddress","accountantAddress","authorityAddress","decimals","chain","liquidAssets","slug","name","symbol","icon","targetComposition","tvl","tvl30DayChange","volume24h","apy","tokenPrice","tokenPriceUpdatedAtEpoch","liquidFunds","liquidFundsRange","holders","tokenPriceUpdatedAt","pendingRedemptions","pendingRedemptionsValue","shortfall"]},"PublicNestComposer":{"type":"object","properties":{"asset":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["asset","composerAddress"]},"ChainConfig":{"type":"object","properties":{"mainnet":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"plume":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"plasma":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"arbitrum":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"bsc":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"worldchain":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]}}},"LiquidAsset":{"type":"object","properties":{"contractAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"symbol":{"type":"string"},"iconUrl":{"type":"string","nullable":true},"decimals":{"type":"number"},"price":{"type":"number"},"chainId":{"type":"number"},"minimumSourceRules":{"type":"array","items":{"type":"object","properties":{"sourceChain":{"type":"integer","minimum":0,"exclusiveMinimum":true},"sourceParams":{"type":"object","properties":{"excludeWallets":{"type":"array","items":{"type":"string"}}}}},"required":["sourceChain"]}}},"required":["contractAddress","symbol","decimals","price","chainId"]}}}}
```

## The VaultDetailsLite object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultDetailsLite":{"type":"object","properties":{"vaultType":{"type":"string","enum":["boring","nest","boringNest"]},"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Canonical vault address (boring vault address or nest share OFT address)"},"nestShareOftAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaults":{"type":"array","items":{"type":"object","properties":{"nestVaultAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"asset":{"type":"string"},"chainAssets":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"integer","minimum":0,"exclusiveMinimum":true},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["chainId","assetAddress"]},"minItems":1}},"required":["nestVaultAddress","chainAssets"]}},"nestComposers":{"type":"array","items":{"$ref":"#/components/schemas/PublicNestComposer"}},"accountantAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"isHubAccountant":{"type":"boolean","description":"Deprecated aggregate compatibility flag. Use `nestAccountant.chain[chain].accountantType` to select the NestHubAccountant vs NestSpokeAccountant state ABI per chain."},"nestAccountant":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"isHub":{"type":"boolean","description":"Deprecated aggregate compatibility flag. Use chain-level `accountantType` entries instead."},"chain":{"$ref":"#/components/schemas/ChainConfig"}},"required":["address","chain"],"description":"Nest accountant metadata for nest-style vaults. For `nest` vaults, `accountantAddress` and `nestAccountant.address` refer to the same Nest accountant. For `boringNest` vaults, `accountantAddress` is the legacy `AccountantWithRateProvider` and `nestAccountant.address` is the Nest accountant."},"authorityAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"tellerContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number","description":"Default decimals for vault"},"decimalsOverride":{"type":"object","additionalProperties":{"type":"number"},"description":"Override for the number of decimals for the vault on specific chains"},"chain":{"$ref":"#/components/schemas/ChainConfig"},"solana":{"type":"object","properties":{"mintAddress":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"decimals":{"type":"number"},"startBlock":{"type":"number","description":"start block on Plume corresponding to launch of vault on Solana"}},"required":["mintAddress","startBlock"]},"liquidAssets":{"type":"array","items":{"$ref":"#/components/schemas/LiquidAsset"}},"slug":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"icon":{"type":"string"},"targetComposition":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}},"required":["slug","name","description"]}},"tvl":{"type":"number","nullable":true},"tvl30DayChange":{"type":"number","nullable":true},"volume24h":{"type":"number","nullable":true},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"]},"tokenPrice":{"type":"number","nullable":true},"tokenPriceUpdatedAtEpoch":{"type":"number","nullable":true},"liquidFunds":{"type":"number","nullable":true},"liquidFundsRange":{"type":"number","nullable":true},"holders":{"type":"number","nullable":true}},"required":["vaultType","vaultAddress","accountantAddress","authorityAddress","decimals","chain","liquidAssets","slug","name","symbol","icon","targetComposition","tvl","tvl30DayChange","volume24h","apy","tokenPrice","tokenPriceUpdatedAtEpoch","liquidFunds","liquidFundsRange","holders"]},"PublicNestComposer":{"type":"object","properties":{"asset":{"type":"string"},"composerAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"assetAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"}},"required":["asset","composerAddress"]},"ChainConfig":{"type":"object","properties":{"mainnet":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"plume":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"plasma":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"arbitrum":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"bsc":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"worldchain":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]}}},"LiquidAsset":{"type":"object","properties":{"contractAddress":{"type":"string","pattern":"^0x[a-f0-9]+$"},"symbol":{"type":"string"},"iconUrl":{"type":"string","nullable":true},"decimals":{"type":"number"},"price":{"type":"number"},"chainId":{"type":"number"},"minimumSourceRules":{"type":"array","items":{"type":"object","properties":{"sourceChain":{"type":"integer","minimum":0,"exclusiveMinimum":true},"sourceParams":{"type":"object","properties":{"excludeWallets":{"type":"array","items":{"type":"string"}}}}},"required":["sourceChain"]}}},"required":["contractAddress","symbol","decimals","price","chainId"]}}}}
```

## The VaultApy object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultApy":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"],"description":"Composition-weighted yield APY based on underlying yield-bearing assets. Liquid assets do NOT dilute this value (liquid assets are excluded from the APY denominator)."},"navApy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"],"description":"Price-delta (NAV-based) APY calculated from vault token price changes over time."},"breakdown":{"type":"object","properties":{"totalValue":{"type":"number"},"liquidAssets":{"type":"object","properties":{"totalValue":{"type":"number"},"weight":{"type":"number"}},"required":["totalValue","weight"]},"yieldAssets":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"value":{"type":"number"},"weight":{"type":"number"},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"]}},"required":["slug","value","weight","apy"]}}},"required":["totalValue","liquidAssets","yieldAssets"],"description":"Optional breakdown of how composition APY is calculated"},"errors":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","description":"The external API or service that caused the error"},"operation":{"type":"string","description":"The operation that failed"},"message":{"type":"string","description":"Human-readable error message"},"code":{"type":"string","enum":["TIMEOUT","NETWORK_ERROR","EXTERNAL_API_ERROR","UNKNOWN_ERROR"],"description":"Error classification code"},"timestamp":{"type":"number","description":"Unix timestamp in seconds when error occurred"}},"required":["source","operation","message","timestamp"]},"description":"Non-fatal errors that occurred during request processing (e.g., external API timeouts)"}},"required":["vaultAddress","apy","navApy"]}}}}
```

## The VaultTvl object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultTvl":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"tvl":{"type":"number","nullable":true}},"required":["vaultAddress","tvl"]}}}}
```

## The VaultVolume object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultVolume":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"volume24h":{"type":"number","nullable":true}},"required":["vaultAddress","volume24h"]}}}}
```

## The VaultHolders object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultHolders":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"totalHolders":{"type":"number","nullable":true},"holders":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"number"},"user":{"anyOf":[{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},{"type":"string"}]},"balance":{"type":"number"},"holderSince":{"type":"number"}},"required":["chainId","user","balance","holderSince"]},"description":"Top holders for the vault by balance"}},"required":["vaultAddress","totalHolders","holders"]}}}}
```

## The VaultsStats object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultsStats":{"type":"object","properties":{"totalTvl":{"type":"number","description":"Current TVL summed across all vaults and chains"},"totalVolumeAllTime":{"type":"number","description":"All-time gross volume (deposits + redemptions) across all vaults and chains"},"totalHolders":{"type":"number","description":"Current holder count with chain-level dedupe per vault token (same user in same vault across chains counts once)"}},"required":["totalTvl","totalVolumeAllTime","totalHolders"]}}}}
```

## The VaultApyHistory object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultApyHistory":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"],"description":"Composition-weighted yield APY for this day (liquid assets excluded from APY denominator)."},"navApy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"],"description":"Price-delta (NAV-based) APY for this day."}},"required":["day","apy","navApy"]}},"errors":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","description":"The external API or service that caused the error"},"operation":{"type":"string","description":"The operation that failed"},"message":{"type":"string","description":"Human-readable error message"},"code":{"type":"string","enum":["TIMEOUT","NETWORK_ERROR","EXTERNAL_API_ERROR","UNKNOWN_ERROR"],"description":"Error classification code"},"timestamp":{"type":"number","description":"Unix timestamp in seconds when error occurred"}},"required":["source","operation","message","timestamp"]},"description":"Non-fatal errors that occurred during request processing (e.g., external API timeouts)"}},"required":["vaultAddress","history"]}}}}
```

## The VaultTvlHistory object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultTvlHistory":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"tvl":{"type":"number","nullable":true,"description":"TVL at close of day"}},"required":["day","tvl"]}}},"required":["vaultAddress","history"]}}}}
```

## The VaultHoldersHistory object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultHoldersHistory":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"chainId":{"type":"number"},"start":{"type":"number","nullable":true},"end":{"type":"number","nullable":true},"min":{"type":"number","nullable":true},"max":{"type":"number","nullable":true},"average":{"type":"number","nullable":true},"count":{"type":"number","nullable":true}},"required":["day","chainId","start","end","min","max","average","count"]}}},"required":["vaultAddress","history"]}}}}
```

## The VaultVolumeHistory object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultVolumeHistory":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"volume24h":{"type":"number","nullable":true}},"required":["day","volume24h"]}}},"required":["vaultAddress","history"]}}}}
```

## The VaultPendingRedemptionsUnion object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultPendingRedemptionsUnion":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"pendingRedemptions":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/AtomicQueuePendingRedemptionEntry"},{"$ref":"#/components/schemas/NestVaultPendingRedemptionResponseEntry"}],"discriminator":{"propertyName":"redemptionType","mapping":{"atomicQueue":"#/components/schemas/AtomicQueuePendingRedemptionEntry","nest":"#/components/schemas/NestVaultPendingRedemptionResponseEntry"}}}}},"required":["vaultAddress","pendingRedemptions"]},"AtomicQueuePendingRedemptionEntry":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"amount":{"type":"number"},"requestedAt":{"type":"number"},"expiresAt":{"type":"number"},"queueAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"wantTokenContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"minPrice":{"type":"number","description":"The price in terms of `want` asset the user wants their `offer` assets 'sold' at"},"isValid":{"type":"boolean","description":"Whether the redemption is valid. False if the redemption is expired or invalid."},"redemptionType":{"type":"string","enum":["atomicQueue"]}},"required":["requestTransactionHash","user","chainId","amount","requestedAt","expiresAt","queueAddress","wantTokenContractAddress","minPrice","isValid","redemptionType"]},"NestVaultPendingRedemptionResponseEntry":{"allOf":[{"$ref":"#/components/schemas/NestVaultPendingRedemptionEntry"},{"type":"object","properties":{"redemptionType":{"type":"string","enum":["nest"]}},"required":["redemptionType"]}]},"NestVaultPendingRedemptionEntry":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"initialShares":{"type":"number"},"initialSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"currentPendingShares":{"type":"number"},"currentPendingSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"currentRedeemableShares":{"type":"number"},"currentRedeemableSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","initialSharesRaw","currentPendingShares","currentPendingSharesRaw","currentRedeemableShares","currentRedeemableSharesRaw","requestedAt","lastUpdatedAt","operatorApproved"]}}}}
```

## The AtomicQueuePendingRedemptionEntry object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"AtomicQueuePendingRedemptionEntry":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"amount":{"type":"number"},"requestedAt":{"type":"number"},"expiresAt":{"type":"number"},"queueAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"wantTokenContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"minPrice":{"type":"number","description":"The price in terms of `want` asset the user wants their `offer` assets 'sold' at"},"isValid":{"type":"boolean","description":"Whether the redemption is valid. False if the redemption is expired or invalid."},"redemptionType":{"type":"string","enum":["atomicQueue"]}},"required":["requestTransactionHash","user","chainId","amount","requestedAt","expiresAt","queueAddress","wantTokenContractAddress","minPrice","isValid","redemptionType"]}}}}
```

## The NestVaultPendingRedemptionResponseEntry object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"NestVaultPendingRedemptionResponseEntry":{"allOf":[{"$ref":"#/components/schemas/NestVaultPendingRedemptionEntry"},{"type":"object","properties":{"redemptionType":{"type":"string","enum":["nest"]}},"required":["redemptionType"]}]},"NestVaultPendingRedemptionEntry":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"initialShares":{"type":"number"},"initialSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"currentPendingShares":{"type":"number"},"currentPendingSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"currentRedeemableShares":{"type":"number"},"currentRedeemableSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","initialSharesRaw","currentPendingShares","currentPendingSharesRaw","currentRedeemableShares","currentRedeemableSharesRaw","requestedAt","lastUpdatedAt","operatorApproved"]}}}}
```

## The NestVaultPendingRedemptionEntry object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"NestVaultPendingRedemptionEntry":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"initialShares":{"type":"number"},"initialSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"currentPendingShares":{"type":"number"},"currentPendingSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"currentRedeemableShares":{"type":"number"},"currentRedeemableSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","initialSharesRaw","currentPendingShares","currentPendingSharesRaw","currentRedeemableShares","currentRedeemableSharesRaw","requestedAt","lastUpdatedAt","operatorApproved"]}}}}
```

## The VaultFailedRedemptions object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultFailedRedemptions":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"failedRedemptions":{"type":"array","items":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"amount":{"type":"number"},"requestedAt":{"type":"number"},"expiresAt":{"type":"number"},"queueAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"wantTokenContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"minPrice":{"type":"number","description":"The price in terms of `want` asset the user wants their `offer` assets 'sold' at"},"isValid":{"type":"boolean","description":"Whether the redemption is valid. False if the redemption is expired or invalid."}},"required":["requestTransactionHash","user","chainId","amount","requestedAt","expiresAt","queueAddress","wantTokenContractAddress","minPrice","isValid"]}}},"required":["vaultAddress","failedRedemptions"]}}}}
```

## The VaultFulfilledRedemptions object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultFulfilledRedemptions":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"fulfilledRedemptions":{"type":"array","items":{"$ref":"#/components/schemas/FulfilledRedemption"}}},"required":["vaultAddress","fulfilledRedemptions"]},"FulfilledRedemption":{"type":"object","properties":{"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"offerAmountSpent":{"type":"number"},"wantAmountReceived":{"type":"number"},"chainId":{"type":"number"},"fulfilledAt":{"type":"number"}},"required":["transactionHash","user","offerAmountSpent","wantAmountReceived","chainId","fulfilledAt"]}}}}
```

## The FulfilledRedemption object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"FulfilledRedemption":{"type":"object","properties":{"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"offerAmountSpent":{"type":"number"},"wantAmountReceived":{"type":"number"},"chainId":{"type":"number"},"fulfilledAt":{"type":"number"}},"required":["transactionHash","user","offerAmountSpent","wantAmountReceived","chainId","fulfilledAt"]}}}}
```

## The NestVaultPendingRedemptionSummary object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"NestVaultPendingRedemptionSummary":{"type":"object","properties":{"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"currentPendingShares":{"type":"number"},"currentPendingSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"currentRedeemableShares":{"type":"number"},"currentRedeemableSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"currentClaimableAssets":{"type":"number"},"pendingRedemptions":{"type":"array","items":{"$ref":"#/components/schemas/NestVaultPendingRedemptionEntryWithHistory"}}},"required":["assetAddress","currentPendingShares","currentPendingSharesRaw","currentRedeemableShares","currentRedeemableSharesRaw","currentClaimableAssets","pendingRedemptions"]},"NestVaultPendingRedemptionEntryWithHistory":{"allOf":[{"$ref":"#/components/schemas/NestVaultPendingRedemptionBase"},{"type":"object","properties":{"currentClaimableAssets":{"type":"number"},"claimableAssetsSource":{"type":"string","enum":["estimated_per_request"]},"processedHistory":{"type":"array","items":{"$ref":"#/components/schemas/NestVaultProcessedRedemption"}}},"required":["currentClaimableAssets","claimableAssetsSource","processedHistory"]}]},"NestVaultPendingRedemptionBase":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"initialShares":{"type":"number"},"initialSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"currentPendingShares":{"type":"number"},"currentPendingSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"currentRedeemableShares":{"type":"number"},"currentRedeemableSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","initialSharesRaw","currentPendingShares","currentPendingSharesRaw","currentRedeemableShares","currentRedeemableSharesRaw","requestedAt","lastUpdatedAt","operatorApproved"]},"NestVaultProcessedRedemption":{"type":"object","properties":{"nestShareAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"logIndex":{"type":"number"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"updateType":{"type":"string","enum":["UPDATE_REDEEM","FULFILL_REDEEM","REDEEM","INSTANT_REDEEM"]},"sharesProcessed":{"type":"number"},"assetsProcessed":{"type":"number"},"processedAt":{"type":"number"},"redemptionRequestedAt":{"type":"number"}},"required":["nestShareAddress","nestVaultAddress","assetAddress","requestTransactionHash","transactionHash","logIndex","user","chainId","updateType","sharesProcessed","assetsProcessed","processedAt","redemptionRequestedAt"]}}}}
```

## The NestVaultPendingRedemptionEntryWithHistory object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"NestVaultPendingRedemptionEntryWithHistory":{"allOf":[{"$ref":"#/components/schemas/NestVaultPendingRedemptionBase"},{"type":"object","properties":{"currentClaimableAssets":{"type":"number"},"claimableAssetsSource":{"type":"string","enum":["estimated_per_request"]},"processedHistory":{"type":"array","items":{"$ref":"#/components/schemas/NestVaultProcessedRedemption"}}},"required":["currentClaimableAssets","claimableAssetsSource","processedHistory"]}]},"NestVaultPendingRedemptionBase":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"initialShares":{"type":"number"},"initialSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"currentPendingShares":{"type":"number"},"currentPendingSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"currentRedeemableShares":{"type":"number"},"currentRedeemableSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","initialSharesRaw","currentPendingShares","currentPendingSharesRaw","currentRedeemableShares","currentRedeemableSharesRaw","requestedAt","lastUpdatedAt","operatorApproved"]},"NestVaultProcessedRedemption":{"type":"object","properties":{"nestShareAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"logIndex":{"type":"number"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"updateType":{"type":"string","enum":["UPDATE_REDEEM","FULFILL_REDEEM","REDEEM","INSTANT_REDEEM"]},"sharesProcessed":{"type":"number"},"assetsProcessed":{"type":"number"},"processedAt":{"type":"number"},"redemptionRequestedAt":{"type":"number"}},"required":["nestShareAddress","nestVaultAddress","assetAddress","requestTransactionHash","transactionHash","logIndex","user","chainId","updateType","sharesProcessed","assetsProcessed","processedAt","redemptionRequestedAt"]}}}}
```

## The NestVaultProcessedRedemption object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"NestVaultProcessedRedemption":{"type":"object","properties":{"nestShareAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"transactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"logIndex":{"type":"number"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"updateType":{"type":"string","enum":["UPDATE_REDEEM","FULFILL_REDEEM","REDEEM","INSTANT_REDEEM"]},"sharesProcessed":{"type":"number"},"assetsProcessed":{"type":"number"},"processedAt":{"type":"number"},"redemptionRequestedAt":{"type":"number"}},"required":["nestShareAddress","nestVaultAddress","assetAddress","requestTransactionHash","transactionHash","logIndex","user","chainId","updateType","sharesProcessed","assetsProcessed","processedAt","redemptionRequestedAt"]}}}}
```

## The NestVaultPendingRedemptionBase object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"NestVaultPendingRedemptionBase":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nestVaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"initialShares":{"type":"number"},"initialSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"currentPendingShares":{"type":"number"},"currentPendingSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"currentRedeemableShares":{"type":"number"},"currentRedeemableSharesRaw":{"type":"string","pattern":"^-?\\d+$","description":"Exact integer string preserving the original base-unit bigint value."},"requestedAt":{"type":"number"},"lastUpdatedAt":{"type":"number"},"operatorApproved":{"type":"boolean"}},"required":["requestTransactionHash","nestVaultAddress","user","chainId","assetAddress","initialShares","initialSharesRaw","currentPendingShares","currentPendingSharesRaw","currentRedeemableShares","currentRedeemableSharesRaw","requestedAt","lastUpdatedAt","operatorApproved"]}}}}
```

## The VaultLastPriceUpdate object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultLastPriceUpdate":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"lastPriceUpdates":{"type":"array","items":{"type":"object","properties":{"accountantAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Accountant contract that emitted the price update event."},"chainId":{"type":"number"},"price":{"type":"number"},"prevPrice":{"type":"number"},"updatedAt":{"type":"number"}},"required":["accountantAddress","chainId","price","prevPrice","updatedAt"]},"description":"Latest indexed price update for the requested accountant, or for the default pricing accountant on each configured chain when no accountant is specified."}},"required":["vaultAddress","lastPriceUpdates"]}}}}
```

## The VaultPriceInfo object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultPriceInfo":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"nav":{"type":"number"},"price":{"type":"number"},"totalSupply":{"type":"number"},"interpolatedPrice":{"type":"number","description":"Synthetic interpolated price derived from the latest real price update and a fixed APR. Present only for supported vaults."}},"required":["vaultAddress","nav","price","totalSupply"]}}}}
```

## The yield object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"yield":{"type":"number","nullable":true,"description":"yield from position, if available"}}}}
```

## The VaultAuthority object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultAuthority":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"accountantAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Accountant address of the vault"},"isHubAccountant":{"type":"boolean","description":"Deprecated aggregate compatibility flag. Use `nestAccountant.chain[chain].accountantType` to select the NestHubAccountant vs NestSpokeAccountant state ABI per chain."},"nestAccountant":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chain":{"$ref":"#/components/schemas/ChainConfig"}},"required":["address","chain"],"description":"Nest accountant metadata for nest and boringNest vaults."},"authority":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"Authority contract address for the vault"}},"required":["vaultAddress","accountantAddress","authority"]},"ChainConfig":{"type":"object","properties":{"mainnet":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"plume":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"plasma":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"arbitrum":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"bsc":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]},"worldchain":{"type":"object","properties":{"startBlock":{"type":"number"},"accountantType":{"type":"string","enum":["hub","spoke"],"description":"Nest accountant role on this chain. Hub accountants use the hub state ABI; spokes use the spoke ABI."}},"required":["startBlock"]}}}}}}
```

## The VaultRoleAssignmentsPaginated object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultRoleAssignmentsPaginated":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"roleAssignments":{"type":"array","items":{"$ref":"#/components/schemas/RoleAssignment"},"description":"List of role assignments for the vault"},"pageInfo":{"type":"object","properties":{"endCursor":{"type":"string","nullable":true,"description":"Cursor to fetch the next page of results"},"hasNextPage":{"type":"boolean","description":"Whether another page of results is available"}},"required":["endCursor","hasNextPage"]}},"required":["vaultAddress","roleAssignments","pageInfo"]},"RoleAssignment":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"User address with the role assignment"},"role":{"type":"string","enum":["STRATEGIST","MANAGER","TELLER","UPDATE_EXCHANGE_RATE","SOLVER","PAUSER"],"description":"Role assigned to the user"},"enabled":{"type":"boolean","description":"Whether the role assignment is enabled"},"chainId":{"type":"number","description":"Chain ID where the role assignment exists"}},"required":["vaultAddress","user","role","enabled","chainId"]}}}}
```

## The RoleAssignment object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"RoleAssignment":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$","description":"User address with the role assignment"},"role":{"type":"string","enum":["STRATEGIST","MANAGER","TELLER","UPDATE_EXCHANGE_RATE","SOLVER","PAUSER"],"description":"Role assigned to the user"},"enabled":{"type":"boolean","description":"Whether the role assignment is enabled"},"chainId":{"type":"number","description":"Chain ID where the role assignment exists"}},"required":["vaultAddress","user","role","enabled","chainId"]}}}}
```

## The VaultPendingRedemptions object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultPendingRedemptions":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"pendingRedemptions":{"type":"array","items":{"type":"object","properties":{"requestTransactionHash":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"user":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"amount":{"type":"number"},"requestedAt":{"type":"number"},"expiresAt":{"type":"number"},"queueAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"wantTokenContractAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"minPrice":{"type":"number","description":"The price in terms of `want` asset the user wants their `offer` assets 'sold' at"},"isValid":{"type":"boolean","description":"Whether the redemption is valid. False if the redemption is expired or invalid."}},"required":["requestTransactionHash","user","chainId","amount","requestedAt","expiresAt","queueAddress","wantTokenContractAddress","minPrice","isValid"]}}},"required":["vaultAddress","pendingRedemptions"]}}}}
```

## The VaultCompositionHistory object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultCompositionHistory":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number","description":"Unix timestamp at start of day (UTC)"},"totalValue":{"type":"number","description":"Total vault value in USD"},"liquidAssets":{"type":"object","properties":{"totalValue":{"type":"number","description":"Total value of liquid assets in USD"},"weight":{"type":"number","description":"Proportion of vault total value (0-1)"},"assets":{"type":"array","items":{"type":"object","properties":{"assetAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"value":{"type":"number","description":"Value in USD"}},"required":["assetAddress","chainId","value"]},"description":"Individual liquid asset positions"}},"required":["totalValue","weight","assets"]},"yieldAssets":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","description":"Unique identifier for the yield asset"},"totalValue":{"type":"number","description":"Total value across all tokens in USD"},"weight":{"type":"number","description":"Proportion of vault total value (0-1)"},"tokens":{"type":"array","items":{"type":"object","properties":{"tokenAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"chainId":{"type":"number"},"isPending":{"type":"boolean","description":"When true, this token entry represents pending (in-transit) redemption value rather than an on-chain token balance."},"balance":{"type":"number","description":"Token balance in native units"},"price":{"type":"number","description":"Price per token in USD"},"value":{"type":"number","description":"Total value in USD (balance * price)"}},"required":["tokenAddress","chainId","balance","price","value"]},"description":"Individual token positions within this yield asset"}},"required":["slug","totalValue","weight","tokens"]}}},"required":["day","totalValue","liquidAssets","yieldAssets"]}}},"required":["vaultAddress","history"]}}}}
```

## The VaultPerformanceHistory object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"VaultPerformanceHistory":{"type":"object","properties":{"vaultAddress":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"},"assets":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string","nullable":true}},"required":["slug","name"]}},"history":{"type":"array","items":{"type":"object","properties":{"day":{"type":"number"},"vault":{"type":"object","properties":{"price":{"type":"number","nullable":true},"tvl":{"type":"number","nullable":true},"liquidFunds":{"type":"number","nullable":true},"apy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"]},"navApy":{"type":"object","properties":{"rolling7d":{"type":"number","nullable":true},"rolling30d":{"type":"number","nullable":true},"sec30d":{"type":"number","nullable":true}},"required":["rolling7d","rolling30d","sec30d"]}},"required":["price","tvl","liquidFunds","apy","navApy"]},"assets":{"type":"object","additionalProperties":{"type":"object","properties":{"price":{"type":"number","nullable":true},"apy7d":{"type":"number","nullable":true},"apy30d":{"type":"number","nullable":true},"compositionPct":{"type":"number","nullable":true}},"required":["price","apy7d","apy30d","compositionPct"]}}},"required":["day","vault"]}}},"required":["vaultAddress","assets","history"]}}}}
```

## The PredicateMessage object

```json
{"openapi":"3.0.0","info":{"title":"Nest API","version":"1.0.0"},"components":{"schemas":{"PredicateMessage":{"type":"object","properties":{"taskId":{"type":"string","nullable":true},"expireByBlockNumber":{"type":"number","nullable":true,"deprecated":true,"description":"Deprecated field. Use `expireByTime` instead."},"expireByTime":{"type":"number","nullable":true},"signerAddresses":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"}},"signatures":{"type":"array","items":{"type":"string","pattern":"^0x[a-fA-F0-9]+$"}}},"required":["taskId","expireByBlockNumber","expireByTime","signerAddresses","signatures"]}}}}
```


---

# 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.nest.credit/developers/api/models.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.
