> For the complete documentation index, see [llms.txt](https://docs.augustdigital.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augustdigital.io/developers/typescript-sdk/changelog.md).

# Changelog

{% updates format="full" %}
{% update date="2026-06-18" %}

## 8.5.0

{% hint style="info" %}
**Integrator highlights**

* **New:** CROSS\_CHAIN\_VAULT\_CONFIGS registry for August LayerZero OVault deployments.
* **New:** getCrossChainVaultConfig, isCrossChainVault, getOVaultChains, isHubOnlyReceipt, getWithdrawDestinationChains helpers.
* **New:** Resolve full ICrossChainVaultConfig by vault address for crossChainVaultDeposit and quoteCrossChainDeposit.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 621e098: feat(evm): add cross-chain OVault vault registry + resolver helpers

  Adds an address-keyed registry (`CROSS_CHAIN_VAULT_CONFIGS`) of August's LayerZero OVault deployments plus `getCrossChainVaultConfig`, `isCrossChainVault`, `getOVaultChains`, `isHubOnlyReceipt`, and `getWithdrawDestinationChains`. Consumers can now resolve a full `ICrossChainVaultConfig` by vault address — and pass it straight to `crossChainVaultDeposit` / `quoteCrossChainDeposit` — instead of hand-assembling per-chain contract maps and LayerZero EIDs. Mirrors the SwapRouter registry pattern.

</details>
{% endupdate %}

{% update date="2026-06-18" %}

## 8.4.0

{% hint style="info" %}
**Integrator highlights**

* **Action:** Review `getVaults` behavior — closed vaults are excluded by default; pass `includeClosed: true` for portfolio/position-tracking use cases.
* **New:** New `AugustApi` backend module with `getVaultUnrealizedPnlHistory()` and `getLatestUnrealizedPnl()` methods.
* **New:** `getVaults` now accepts optional `includeClosed` flag to include closed vaults in results.
* **New:** Published type declarations now include full TSDoc and exclude `@internal` helpers from autocomplete.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 70e1792: feat: new `AugustApi` backend module — `sdk.apiModule` (methods also exposed directly on `AugustSDK`) for backend-computed data with no on-chain equivalent:

  * `getVaultUnrealizedPnlHistory({ vault, limit? })` — a vault's unrealized-PnL snapshot series, newest first.
  * `getLatestUnrealizedPnl()` — the most recent unrealized-PnL snapshot for every tracked vault.

  Both methods hit the public (unauthenticated) August API with exactly one HTTPS request and no RPC calls, validate inputs up front (`AugustValidationError`), throw typed errors on HTTP failures and response-contract mismatches, and return camelCased `IUnrealizedPnlSnapshot` objects.
* 8191dc7: feat: `getVaults` gains an opt-in `includeClosed` flag for portfolio use. By default `getVaults` excludes closed vaults, so marketplace/discovery callers never receive a `status: 'closed'` vault and don't have to filter it out themselves. When `includeClosed: true` is passed, closed vaults are returned (regardless of `is_visible`, since closed + invisible vaults bucket as closed) so a consumer joining user positions can render a position held in a closed vault. In that mode, loans/allocations enrichment is also skipped for closed vaults — they have none, and `getVaultAllocations` otherwise re-throws (no debank data / no subaccounts), which previously dropped the vault into the `failed` bucket and silently removed it from the result. Additionally, `includeClosed` now propagates down to the per-vault EVM getter (`getEvmVaultV1`/`getEvmVaultV2`), which otherwise returns `null` for any `status: 'closed'` + `is_visible: false` vault ("skip closed staging vaults") — that null caused `getVault` to return null and the vault to vanish from `getVaults` even with the closed bucket spread in. With `includeClosed`, closed + invisible vaults resolve their metadata. Active vaults are always fully enriched and unaffected.
* 1e1d1b1: feat: trim `@internal` helpers from the published type surface and restore TSDoc in published declarations
  * `package.json#types` now points at an api-extractor rollup (`lib/sdk.d.ts`) that omits every export tagged `@internal` (`safeBigInt`, `safeSendTx`, `safeWaitForTx`, `tryRecoverTxHash`, `resolveSpender`, `validateAmountPrecision`, and friends) so they no longer appear in integrator autocomplete or type resolution from the package root.
  * The SDK build no longer strips comments from emitted output, so the published `.d.ts` carries the full TSDoc — editors now show hover documentation for every public method.
  * Runtime exports are unchanged and deep `lib/**` imports still resolve; this is a types-surface change only. `walletClientToSigner` intentionally remains public until the viem-native signer path ships.
  * CI fails if an `@internal` export reappears in the public types (`scripts/check-internal-dts.mjs`).

### Patch Changes

* db5a53a: fix: Phase-2 review hardening
  * `@augustdigital/config`: result-schema `address` fields now accept Stellar (`G…` account / `C…` contract) addresses, matching the SDK and backend address contract — previously a Stellar vault passed input validation but failed output-schema validation with a misleading `SCHEMA_MISMATCH`.
  * `@augustdigital/mcp`: address validation now accepts Stellar `C…` contract addresses (parity with the SDK's `isStellarAddress`), and the HTTP transport compares bearer tokens in constant time via `crypto.timingSafeEqual`.
  * `@augustdigital/sdk`: the unrealized-PnL response guard validates every required snapshot field — including the numeric monetary fields — so backend contract drift throws a typed `AugustServerError` instead of silently emitting `undefined` PnL values.

</details>
{% endupdate %}

{% update date="2026-06-17" %}

## 8.3.2

{% hint style="info" %}
**Integrator highlights**

* **New:** Add `apyOverride` and `website_url` fields to vault types.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 572b363: feat: add apyOverride and website\_url fields to vault types

</details>
{% endupdate %}

{% update date="2026-06-17" %}

## 8.3.1

{% hint style="info" %}
**Integrator highlights**

* **New:** Add `apy_override` field to `ITokenizedVault` and `website_url` to `ITokenizedVaultStrategist`.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* a7077e3: feat: add `apy_override` field to `ITokenizedVault` and `website_url` to `ITokenizedVaultStrategist`

</details>
{% endupdate %}

{% update date="2026-06-16" %}

## 8.3.0

{% hint style="info" %}
**Integrator highlights**

* **Action:** IStellarUserPosition gains optional `decimalsFromFallback?: boolean`; callers sizing a redeem must refuse to settle when it is `true`.
* **Action:** Stellar Soroban transactions now use a 10-minute validity window anchored to network time, reducing `txTOO_LATE` errors on slow signers.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* ee58832: feat(telemetry): forward SDK-internal logs to Sentry in production

  `initializeSentry` now bridges the SDK's `Logger` to the resolved Sentry SDK. `Logger.log.error` is captured as a sanitized Sentry issue (the call-site label becomes the `sdk.origin` tag; structured context becomes scope extras), and `Logger.log.warn` is recorded as a `warning`-level breadcrumb that rides along with the next captured event.

  Previously these were no-ops in production unless an integrator manually wired a logger, so the SDK's own diagnostics never reached the partner-usage dashboard. The bridge is installed only when analytics is enabled (it respects every existing disable path — `analytics.enabled: false`, `AUGUST_SDK_DISABLE_ANALYTICS`, dev/test `NODE_ENV`, and localhost), never throws back into the caller, and is cleared by `resetAnalytics()`. The integrator-pluggable `Logger.setLogger` / `Logger.setStructuredLogger` slots are unchanged.
* 908c2c4: fix(stellar): anchor Soroban tx timebounds to the network clock and widen the validity window to 10 minutes (AUGUST-6386)

  Stellar Soroban deposit/redeem transactions could fail with `txTOO_LATE` after signing. `buildSorobanTx` stamped the transaction's `maxTime` from the signer's local clock via `.setTimeout(120)`, so:

  * a device clock lagging behind network time built an already-expired transaction, and
  * slow / asynchronous signing paths (hardware wallets, institutional approval flows) could not complete within the 120-second window.

  Changes:

  * `maxTime` is now anchored to the **network** clock. `buildSorobanTx` reads the latest ledger close time (`getLatestLedger` → `getLedgers().latestLedgerCloseTime`) and builds the tx with `setTimebounds(0, networkCloseTime + TX_TIMEOUT_SECONDS)`, immunizing the deadline against signer clock skew. The network read runs in parallel with the account fetch (no added latency) and falls back to the previous local-clock `setTimeout` window on any RPC failure, so it never regresses.
  * `TX_TIMEOUT_SECONDS` raised from 120 to 600 (10 minutes) to cover slow/async signing while staying within the Soroban footprint/ledger-entry TTL.

  No public API surface changes. The read-only `queryContract` path is unaffected.
* 15a6fcf: fix(stellar): surface a `decimals()` read failure on `getStellarUserPosition` instead of silently falling back to 7

  `getStellarUserPosition` reads `balance()` and `decimals()` in parallel. When `decimals()` failed but `balance()` succeeded, it returned a confident `{ shares, decimals: 7 }` indistinguishable from a genuine 7-decimal vault. A consumer sizing a `redeem` against an ERC4626 offset vault (share decimals = asset + offset, e.g. 13) would then under-redeem by `10^offset` — a silent money-correctness gap (AUGUST-6381, follow-up to AUGUST-6380).

  `IStellarUserPosition` now carries an optional `decimalsFromFallback?: boolean` (optional for source back-compat — existing consumer object literals still compile — but always populated by `getStellarUserPosition`). It is `true` when `decimals` is the fallback (the on-chain read failed) and `false` when it is the authoritative on-chain value. Callers that size a redeem MUST refuse to settle when it is `true` rather than trusting `decimals`. The SDK's own `getVaultPositions` now treats a fallback-decimals position as a failed read and reports a zero balance instead of a mis-scaled one. No change to the `null`-on-balance-failure behavior.

### Patch Changes

* d548100: chore: migrate tooling to Biome (lint + format) and add Knip (dead-code/unused-deps)

  Replaces ESLint + Prettier + oxlint with [Biome](https://biomejs.dev) for linting and formatting, and adds [Knip](https://knip.dev) for unused-file/dependency detection (report-only baseline). A minimal ESLint config is retained solely to run `eslint-plugin-tsdoc` (`pnpm lint:tsdoc`), which Biome has no equivalent for. Inline `// eslint-disable` directives that referenced now-Biome rules were translated to `// biome-ignore` / `// biome-ignore-all`. No runtime behavior or public API change.
* 769c982: refactor(logging): route remaining console.\* calls through Logger

  Swept the last non-Solana `console.{log,warn,error}` sites onto `Logger.log.{info,warn,error}`, each tagged with its originating function: `core/fetcher.ts`, `core/helpers/web3.ts`, `core/base.class.ts`, `adapters/sui/getters.ts`, and `modules/vaults/fetcher.ts`. Combined with the Logger→Sentry bridge, these diagnostics are now sanitized and (in production) forwarded to Sentry instead of leaking to the integrator's console.

  The `no-console` ESLint rule is tightened to flag every console method (previously `warn`/`error` were allowed). The logger module — the dev-mode floor (`core/logger/index.ts`) and the Slack transport (`core/logger/slack.ts`, which cannot import `Logger` without a cycle) — is exempted, and a few deliberately integrator-facing notices (the version-update nudge and the `override` deprecation warning) keep `console.warn` behind documented inline exceptions.

</details>
{% endupdate %}

{% update date="2026-06-10" %}

## 8.2.0

{% hint style="info" %}
**Integrator highlights**

* **Action:** Indexers watching vaults now in `VAULTS_USING_SWAP_ROUTER` must also index SwapRouter events (`Deposit`, `SwapExecuted`, etc.) as vault-direct deposit events no longer fire.
* **Action:** Call `vaultDeposit` with `slippageBps` option to override the default 1% slippage on SwapRouter-routed deposits.
* **New:** `EVMAdapter` gains `swapAndDeposit`, `depositViaSwapRouter`, and `depositNativeViaSwapRouter` for single-call swap-and-deposit flows.
* **New:** New `fetchSwapQuote` function builds calldata for the SwapRouter swap leg; results include `fetchedAt` for staleness detection.
* **New:** New `IContractWriteOptions.receiver` lets callers mint vault shares to an address other than `wallet`.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 0070001: feat: SwapRouter integration for vault deposits (AUGUST-5475).

  Adds the on-chain `SwapRouter` periphery contract to the SDK so users can deposit any whitelisted ERC-20 (or native ETH) into any opted-in August vault via a single atomic call. The SwapRouter swaps the input to the vault's reference asset and forwards the proceeds to the vault's deposit interface, normalizing ERC-4626 (v1/v3) and multi-asset (v2) flows behind one entry point.

  ### New public surface

  * New methods on `EVMAdapter`: `swapAndDeposit`, `depositViaSwapRouter`, `depositNativeViaSwapRouter` (all in `modules/vaults/write.actions.ts`). Each handles approval automatically against the SwapRouter as spender and returns the resulting tx hash.
  * New public function `fetchSwapQuote` in `services/swap-quotes` builds the calldata needed for a SwapRouter swap leg. v1 uses Paraswap; the result is shaped so 1inch/0x can be added later without breaking callers. Results include `fetchedAt` so UI integrators can detect stale quotes.
  * `vaultDeposit` now routes through the SwapRouter automatically when the target vault is in `VAULTS_USING_SWAP_ROUTER` and the chain has a registered router. The existing call signature is unchanged. New optional `IContractWriteOptions.receiver` lets callers mint shares to a different address than `wallet` (treasury / cold-storage flows).
  * New per-chain constants: `SWAP_ROUTER_ADDRESSES` (Ethereum mainnet: `0xAC771209FF2b71EECfF6E85a9AD01db8Ff2618B0`), `SWAP_ROUTER_WRAPPED_NATIVE` (mainnet: WETH), and `SWAP_ROUTER_MAX_SWAPS` (mirrors the on-chain `MAX_SWAPS = 9`). New vault opt-in set `VAULTS_USING_SWAP_ROUTER` and `ORIGIN_CODES` registry for partner/referral fee tracking.
  * New types: `ISwapParams`, `ISwapAndDepositOptions`, `ISwapRouterDirectDepositOptions`, `ISwapRouterNativeDepositOptions`, `SwapRouterVaultType` (values `1` for ERC-4626, `2` for TokenizedVaultV2 — mirrors the on-chain constants).
  * New ABI `ABI_SWAP_ROUTER`.

  ### Safety hardening (vs. naive integration)

  * Per-leg `ISwapParams` validation rejects `amountIn === 0n`, `minAmountOut === 0n` (slippage off), `tokenIn === tokenOut`, malformed router/payload at the SDK boundary.
  * `slippageBps` accepts `[0, 10_000)` — `10_000` (100% slippage = no protection) is rejected.
  * `originCode` must be a 32-byte hex string; the SDK throws a typed `AugustValidationError` instead of waiting for the on-chain `InvalidOrigin` revert.
  * Paraswap response shape is validated end-to-end: `priceRoute.destAmount` must be a numeric string, `to` must be a valid address, `data` must be hex calldata with at least a 4-byte selector.
  * Vaults in `VAULTS_USING_SWAP_ROUTER` cannot silently fall through to the legacy adapter path. If the chain has no SwapRouter deployed, or `chainId` cannot be resolved, the SDK throws `AugustValidationError('INVALID_CHAIN')` — never routes through the MEV-vulnerable legacy `minAmountOut: 0` path.
  * `isDepositWithPermit: true` on a SwapRouter-routed vault throws rather than silently dropping the permit signature.
  * Native ETH deposits target only vaults whose reference asset equals the chain's wrapped-native token; other configurations throw with actionable guidance.
  * `swapAndDeposit` strictly requires `signer.getAddress()` to return a valid EOA (no silent fallback to receiver). Smart-account integrators (Safe, ERC-4337) should be aware that the SwapRouter pulls from `msg.sender`, not the controlling EOA — for those flows the SDK currently expects the smart account itself to be the signer's address.
  * Paraswap quote fetches accept an optional `AbortSignal` for cancellation/timeout.

  ### Coexistence with legacy adapters

  Legacy adapter paths (Treehouse, Kelp, AVAX native, Paraswap `UniversalAdapter` for non-opted-in vaults) continue to work unchanged. The two systems coexist; vaults will converge onto the SwapRouter in follow-up PRs.

  ### Deployment checklist (operator)

  Before adding a vault to `VAULTS_USING_SWAP_ROUTER`, the contract owner must complete the following on the SwapRouter (`0xAC77…18B0` on mainnet):

  1. `enableVault(vaultAddr, vaultType, swapFee)` — register the vault with the correct `vaultType` (1 for ERC-4626, 2 for TokenizedVaultV2) and any per-vault swap fee in bps.
  2. `enableToken(token)` — per accepted input token (e.g. WBTC, cbBTC, tBTC for the BTC v2 vault).
  3. `enableRouter(routerAddr, tokenApprovalAddr, authorizedSelector)` — per DEX router the quote provider may target. Paraswap's "augustor" address is set per chain; the approval-target (`TokenTransferProxy`) and the selectors used by `/transactions` are admin inputs.
  4. For non-default origin codes, `addOrigin(originCode, originFee, originFeeCollector)`.
  5. For v2 multi-asset vaults: add the SwapRouter to the vault's sender whitelist.

  The forknet smoke test at `tests/vaults/forknet-swap-router-abi.test.js` reads `vaultInfo`, `whitelistedTokens`, and the contract constants from the deployed router and fails if any expected vault is unregistered. Run `pnpm test:forknet` to verify before release.

  ### Behavior change for indexers

  For vaults moved to the SwapRouter, deposits no longer emit from the vault contract directly — events are emitted by the SwapRouter (`Deposit`, `SwapExecuted`, `SwapFeeApplied`, `OriginFeeApplied`). Subgraphs that index the vault's deposit events for the BTC v2 vault should be updated to also index the SwapRouter.

### Patch Changes

* 7d4f38f: fix: sync `VAULTS_USING_SWAP_ROUTER` with on-chain `enableVault` state on the mainnet SwapRouter (`0xAC771209FF2b71EECfF6E85a9AD01db8Ff2618B0`).

  The set previously listed `0x8AcA0841…362C21` (uptBTC) as a placeholder, but no `VaultEnabled` event was ever emitted for that address — `vaultUsesSwapRouter` was reporting `true` for a vault that the on-chain router would reject with `InvalidVault` at deposit time.

  Replaces the set with the two vaults currently registered on the contract:

  * `0xE9B725010A9E419412ed67d0fA5f3A5f40159D32` — **Upshift Core USDC** (vaultType=1, ERC-4626, reference asset USDC).
  * `0x74aD2F789Ed583DBd141bbdafC673fE1F033718b` — **Sentora USD** (vaultType=2, Tokenized Vault V2, reference asset USDC).

  Verified via `vaultInfo(addr)` reads and the full `VaultEnabled` event log on the deployed router. Consumers gated on `vaultUsesSwapRouter` (notably `vaultDeposit` dispatch) will now route the two registered vaults through the SwapRouter and continue to fall back to the legacy adapter path for everything else.
* ea679fc: fix: SwapRouter dispatch now reads the underlying asset's on-chain decimals when fetching a swap quote (previously reused the vault share-token decimals, which diverge for multi-asset v2 vaults — e.g. the 18-decimal share over the 8-decimal WBTC reference asset on the BTC v2 vault — and yielded a mispriced Paraswap quote).

  fix: Paraswap calldata now embeds the slippage-adjusted minimum `destAmount` so the aggregator's own min-out check matches the SwapRouter's `minAmountOut`. Previously the calldata was built with the exact priceRoute `destAmount` (0% tolerance) and the DEX leg would revert on any adverse movement before the SwapRouter's slippage check could apply.

  feat: `IContractWriteOptions.slippageBps` lets callers of `vaultDeposit` override the default 1% slippage tolerance applied on SwapRouter-routed deposits that require a swap.
* 5242f18: fix: honor `IContractWriteOptions.receiver` on the SwapRouter swap-and-deposit path

  `vaultDeposit` dispatched through the SwapRouter was passing `wallet` as the share recipient on the swap leg, ignoring an explicit `receiver` override. The direct-deposit and native-deposit paths already honored it; the swap path now matches.

</details>
{% endupdate %}

{% update date="2026-06-05" %}

## 8.1.0

{% hint style="info" %}
**Integrator highlights**

* **Breaking:** Result record from `getHealthFactorOfBorrowersByVault` is now keyed by lowercased vault address; lookups using mixed-case addresses will miss.
* **Action:** Update vault-address lookup keys to use `address.toLowerCase()` when reading health-factor results.
* **New:** `AugustSDK.getVaultBorrowerHealthFactor` accepts an optional `vault` field to scope the fetch to a single vault.
* **New:** New exported type `IVaultBorrowerHealthFactor` replaces the previous inline result shape.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* bc5d468: feat: `getVaultBorrowerHealthFactor` is now vault-scopable and resilient to per-loan failures.

  * New optional `vault` field on `AugustSDK.getVaultBorrowerHealthFactor({ chainId, vault })` (and matching positional param on `AugustVaults.getVaultBorrowerHealthFactor`). When provided, only that vault's tokenized record is fetched and only its loans are walked — the all-vaults / all-chains fanout is skipped entirely.
  * Internal `getVaultBorrowerHealthFactor({ vault, options })` and `getHealthFactorOfBorrowersByVault({ options, vault? })` (both in `modules/vaults/getters.ts`) now use `Promise.allSettled` for the loan-state / borrower / per-vault iterations. A single bad loan contract (e.g. a test loan whose address isn't a real deployed contract, or whose `loanState()` reverts) drops that row from the result and is logged via `Logger.log.warn` instead of rejecting the whole batch. Same applies to the per-borrower August backend call.
  * The `Record<vault, …>` returned by `getHealthFactorOfBorrowersByVault` is now keyed by **lowercased** vault address. Callers must look entries up with `address.toLowerCase()`. The previous keys reflected whatever casing the upstream `/public/tokenized_vault/` endpoint returned, which silently caused lookups against `getAddress(pool)` to miss.
  * New exported type `IVaultBorrowerHealthFactor` replaces the previous inline `{ borrower, loan, health_factor? }` shape.

  Closes the upshift-app issue where the Allocation Breakdown HF column would render a perpetual loading skeleton on Upshift USDC because one bad test loan's RPC call sank the entire health-factor batch (AUGUST-6291).

</details>
{% endupdate %}

{% update date="2026-06-04" %}

## 8.0.0

{% hint style="info" %}
**Integrator highlights**

* **Breaking:** `StellarNetwork` type alias is removed; switch to `IStellarNetwork`.
* **Breaking:** Constructor `keys.octavfi` field is removed; passing it was always a no-op.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Major Changes

* ebeb2c6: chore: remove two unused symbols from the published type surface — the `@deprecated StellarNetwork` alias (use `IStellarNetwork` instead; the alias existed for back-compat and has 0 internal consumers across our repos) and the `octavfi?: string` field on the SDK constructor's `keys` config (the field was never read; the octavfi service uses a hardcoded API key, not this config). No runtime behavior changes. Consumers that referenced `StellarNetwork` should switch to `IStellarNetwork`; consumers that passed `keys.octavfi` can drop it — it was a no-op.

### Patch Changes

* 66b18f2: fix: `fetchTokenPricesFromCoinGecko` now returns the latest price on the success path. The previous `if (data && data.length)` guard checked the `length` property on an object response (`{ prices, market_caps, total_volumes }`) and silently collapsed every successful response to `null` — only the hardcoded `musd` short-circuit was returning a real value. Fixes defect #1 from `todo/32-coingecko-fetcher-defects.md`; defects #2 (typed errors on non-2xx) and #3 (up-front symbol validation) remain pending.
* 175da88: fix: `fetchVaultsBatch` no longer mis-routes successful fetches that resolve to a falsy value (`0`, `''`, `0n`, `null`, `false`) into the failed pile. The success/failure branch now keys on `result.success` only, respecting the function's documented contract that `data` is the source of truth when `success === true`.
* 10b3b85: fix: break circular dependency `core/index.ts → core/auth → core/fetcher.ts → services/coingecko/fetcher.ts → core/index.ts` by importing `Logger` from the `core/logger` leaf module in `services/coingecko/fetcher.ts` instead of the `core` barrel. Restores the zero-cycle invariant enforced by the `Circular Dependency Check` CI job.
* 66b18f2: chore: route all `console.*` calls under `packages/sdk/src.ts/services/` (coingecko, debank, octavfi, subgraph) through `Logger.log.{info,error}`. Each call is now tagged with the originating function name and carries structured context (status, statusText, pool, address, etc.) instead of the previous raw, unsanitized strings. Errors now flow through `sanitizeError` before reaching Sentry, and dashboards can group by function tag rather than by error-message text. A new `tests/services/services-logger-hygiene.test.ts` regression-tests the floor: no `console.*` in `services/`.

</details>
{% endupdate %}

{% update date="2026-06-03" %}

## 7.0.1

{% hint style="info" %}
**Integrator highlights**

* **Breaking:** `explorerLink` return type is restored to `string`; code relying on the brief `string | undefined` shape from 7.0.0 should remove undefined guards.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* ddbfa62: fix: restore `explorerLink` return type to `string` (regression in 7.0.0)

  The circular-dependency cleanup unintentionally tightened `explorerLink`'s return type to `string | undefined` by surfacing a branch that was previously masked by `strictNullChecks: false`. Consumers had always compiled against `string` via the emitted `.d.ts`. Restore the historical public shape by returning `''` when `chain` is falsy or unknown.

</details>
{% endupdate %}

{% update date="2026-06-03" %}

## 7.0.0

{% hint style="info" %}
**Integrator highlights**

* **Breaking:** Write helpers now throw `AugustValidationError` / `AugustSDKError` instead of returning `undefined` or throwing plain `Error`; callers must use `try/catch` and narrow on these types.
* **Breaking:** `handleSolanaDeposit` and `handleSolanaRedeem` now throw on failure instead of returning `null`; replace null-return checks with `try/catch`.
* **Breaking:** Solana/Stellar adapters now throw `AugustValidationError` for input validation failures; existing plain-`Error` message-string matches will break.
* **Action:** Cross-chain: call `isQuoteStale(quote)` before submitting a cross-chain deposit/redeem and re-quote when it returns `true`; `quotedAt`/`expiresAt` are now populated.
* **Action:** Solana deposit/redeem `depositAmount`/`redeemShares` now accept `bigint` for raw on-chain units; prefer `bigint` for money flows to avoid float precision loss.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Major Changes

* 7ede403: fix(audit): correctness, validation, and observability hardening across deposit / withdraw / redeem flows

  **Breaking** — write helpers now throw `AugustValidationError` on bad input and `AugustSDKError` on downstream failures (previously returned `undefined` or threw a plain `Error`). Callers that depended on the silent no-op or were matching on `Error` message strings need to wrap calls in `try`/`catch` and narrow on `AugustValidationError` / `AugustSDKError`.

  **Breaking** — `handleSolanaDeposit` and `handleSolanaRedeem` (the Solana adapter's `vaultDeposit` / `vaultRedeem`) now `throw` on failure instead of returning `null`. Callers checking for a `null` return must convert to `try`/`catch`.

  ### EVM `write.actions`

  * **vaultDeposit**: amount is now encoded against the *deposit token's* decimals (not the vault's share decimals). Fixes a silent mis-scaling on EVM-2 multi-asset vaults and any native-token deposit into a vault whose share decimals ≠ 18. Native deposits always use 18 decimals.
  * **vaultApprove**: now mirrors `vaultDeposit`'s routing — picks the wrapper as spender for adapter deposits and the vault for multi-asset / standard deposits. Compares the existing on-chain allowance against the required amount (was: only re-approved when allowance was exactly `0`).
  * **vaultRequestRedeem**: receipt-token approval now goes through `safeSendTx` so Monad-style RPCs that return malformed pending-tx fields don't throw during parsing.
  * **vaultRedeem** (dated-claim flow) and **rwaRedeemAsset**: both now use `safeSendTx` + `tryRecoverTxHash` for nonce-fallback parity with `vaultDeposit` / `vaultRequestRedeem`.
  * **rwaRedeemAsset**: doc fix — the **vault share** must be approved to the subaccount, not the redeemable (output) asset. Caller responsibility unchanged; the comment was wrong.
  * All write helpers (`vaultApprove`, `vaultDeposit`, `vaultRequestRedeem`, `vaultRedeem`, `depositNative`, `rwaRedeemAsset`) now throw `AugustValidationError` on invalid wallet/target/wrapper addresses or missing required inputs, and reject JS `number` amounts that exceed `Number.MAX_SAFE_INTEGER`.
  * `vaultDeposit` and `vaultRequestRedeem` now require `amount` (previously silently encoded as `0` via `toNormalizedBn(undefined)`).
  * `vaultDeposit` throws `AugustValidationError` when `depositAsset` differs from the vault's underlying but no adapter is configured for the vault (previously fell through to a cryptic on-chain revert).
  * `vaultDeposit` and `vaultRequestRedeem` always wait for the ERC-20 approval receipt before sending the deposit/redeem tx, regardless of the caller's `wait` flag — closes a race window where a follow-up tx could be re-ordered ahead of the approval on some RPCs.
  * Downstream tx failures (e.g. on-chain reverts) are now wrapped in `AugustSDKError` with the original error preserved on `cause` and a structured `context` payload, instead of a plain `Error("Deposit failed: …")`.
  * `safeBigInt` allowance read inside `vaultDeposit` now passes a `'vaultDeposit:allowance'` context so flaky-RPC warnings are discriminable from approve-path warnings.
  * **safeBigInt**: emits a `Logger.warn` on malformed RPC responses (e.g. bare `"0x"`) so flaky RPCs don't cause silent gas waste from spurious approvals.

  ### EVM cross-chain (`crossChainVault`)

  * **crossChainVaultDeposit**: now rejects unsupported user chains up front with a clear error (was: cryptic config-lookup or gas-estimation revert).
  * **approveCrossChain**: throws when the approval receipt reports `reverted` (was: returned the hash unconditionally).
  * Monkey-patch lock: timing out now **throws** instead of silently proceeding with conflicting concurrent patches.
  * Fee patch: warns via `Logger.warn` when the LayerZero SDK returns an unexpected `contractFunctionName`, so the in-place LZ-fee buffer being silently no-op'd is visible in telemetry.
  * TSDoc on `crossChainVaultDeposit`, `crossChainVaultRedeem`, `buildCrossChainVaultTx`, and `needsCrossChainApproval` now states the default slippage / fee / gas buffers and documents the "approval needed on RPC failure" defensive behavior.

  ### Solana

  * **handleSolanaRedeem**: replaced `parseInt` with the new `uiAmountToRawBn` BN-based helper. Fixes precision loss for any 18-decimal mint above a few thousandths or any 9-decimal mint above \~9M tokens.
  * **handleSolanaDeposit**: now uses the same helper for consistency.
  * Both handlers now throw `AugustValidationError` / `AugustSDKError` on failure instead of returning `null`, matching the EVM helpers' error contract.

  ### Stellar

  * **submitStellarTransaction**: polling now backs off geometrically (1.5x, capped at 8s) instead of fixed 2s — same worst-case ceiling on attempts, lower RPC pressure on long waits.
  * `handleStellarRedeem` TSDoc now documents the exact Soroban contract interface it assumes (`redeem(shares: i128, receiver, owner, operator)`).

  ### Telemetry

  * `rwaRedeemAsset` is now classified under `write.redeem` in `METHOD_CATEGORIES` (previously fell back to `'unknown'`).

  ### New exports

  * `uiAmountToRawBn` (from `adapters/solana/utils`).
  * `resolveDepositTokenDecimals`, `resolveSpender`, `validateAmountPrecision`, `safeBigInt`, `safeSendTx`, `safeWaitForTx`, `tryRecoverTxHash`, `isNonceParsing` from `modules/vaults/write.actions` (marked `@internal` — exported for unit testing).
  * New polling constants: `POLL_INTERVAL_MAX_MS`, `POLL_INTERVAL_BACKOFF`.

### Minor Changes

* ae03a7b: feat(sdk): new `approve` method returns a discriminated `ApproveResult`

  Adds `augustSdk.evm.approve(...)` (and the underlying `approve` export from `modules/vaults/write.actions`) that returns one of:

  ```ts
  type ApproveResult =
    | { kind: "sent"; hash: string }
    | { kind: "sufficient"; existing: bigint }
    | { kind: "native" };
  ```

  Lets callers tell apart "we sent a tx", "existing allowance already covers the amount", and "the resolved deposit asset is native (msg.value, no allowance applies)" without re-reading on-chain state.

  `vaultApprove` is unchanged — same `Promise<string | undefined>` shape, same spender routing, same allowance / native short-circuits. Both functions share the routing implementation via an internal helper so behavior stays identical.

  Method-taxonomy entry `approve → write.approve` added so Sentry rolls the new method up next to `vaultApprove`.
* dee70e0: feat(AUG-6139): partner-usage telemetry — isomorphic Sentry bootstrap, method taxonomy, dimension tags, and arg-shape capture
  * Node + browser Sentry resolved at runtime (`@sentry/node` added alongside `@sentry/browser`); CLI now emits telemetry from its top-level error handler.
  * Every method span carries `sdk.category`, `sdk.chain`, and `sdk.argShape` so dashboards can slice partner usage by intent, chain, and call shape without leaking values.
  * Fallback `partner.id = 'unverified:<appName>'` and `partner.tier = 'unverified'` tags ship until the verified-partner endpoint exists.
  * `setMeasurement('sdk.method.invocation' | 'sdk.method.error', …)` adds counter-style aggregates for sum-based dashboards.
  * New public exports: `getSentrySDK`, `getSentryRuntime`, `getMethodCategory`, `METHOD_CATEGORIES`, `chainIdToTagValue`, `computeArgShape`, `captureSdkException`.
* ae03a7b: feat(sdk): preview / allowance / balance / maxDeposit read helpers on the EVM adapter

  Adds five additive read methods to `augustSdk.evm` so consumers can stop reaching into raw ABIs for the most common vault reads:

  * `previewDeposit({ vault, amount, asset? })` — shares returned by a deposit. Routes EVM-1 vaults to `IERC4626.previewDeposit(uint256)` and EVM-2 multi- asset vaults to `previewDeposit(address, uint256)` (returns the share slot of the tuple).
  * `previewRedeem({ vault, shares })` — assets returned by a redeem. Routes EVM-1 vaults to `IERC4626.previewRedeem(uint256)` and EVM-2 to `previewRedemption(uint256, false)` (gross slot).
  * `allowance({ vault, owner, asset? })` — raw ERC-20 allowance the owner has granted the vault. When `asset` is omitted the SDK resolves the vault's underlying via `IERC4626.asset()`.
  * `balanceOf({ asset, owner })` — raw ERC-20 balance.
  * `maxDeposit({ vault, receiver? })` — vault deposit cap. EVM-2 multi-asset vaults resolve via `maxDepositAmount()`; EVM-1 vaults use `maxDeposit(receiver)` with a zero-address default.

  All helpers return a raw `bigint` so BigInt math stays precise. Existing helpers (`vaultAllowance`, `previewRedemption`) are unchanged.

  Notes:

  * These methods require a signer because they live on `EVMAdapter`, matching the existing read pattern (`vaultAllowance`, `sendersWhitelistAddress`, etc.). A read-only `JsonRpcProvider` wrapped via `Wallet.createRandom().connect(provider)` works for query-only use.
  * Method-taxonomy entries (`previewDeposit`, `previewRedeem`, `allowance`, `balanceOf`, `maxDeposit`) added so Sentry rolls them up correctly.
  * Benchmarks for these helpers are deferred — they need a signer plumbed into `packages/sdk/benchmarks/suites/sdk-methods.js`; unit tests with mocked contracts cover the routing and validation paths.
* ae03a7b: feat(sdk): constructor option `timeoutMs` overrides the request timeout default

  Adds an additive `timeoutMs` option to the `AugustSDK` constructor (via the shared `IAugustBase` config) that overrides the default request timeout used by every August fetcher helper. The compiled-in default (90 s) is preserved when the option is omitted; per-call `IFetchAugustOptions.timeoutMs` still wins over the SDK-level default.

  ```ts
  const sdk = new AugustSDK({
    appName: "acme-trader",
    providers: { 1: "..." },
    keys: { august: process.env.AUGUST_KEY },
    timeoutMs: 20_000, // shorten the default deadline to 20s for this instance
  });
  ```

  Also exports two helpers for advanced use:

  * `setSdkRequestTimeout(ms | null)` — apply / clear the override directly.
  * `getSdkRequestTimeout()` — read the active default (override or compiled-in).

  Notes:

  * This is process-global state. If you instantiate multiple `AugustSDK` objects in the same process with different timeouts, the last constructor call wins.
  * Lowering the default for the entire package was deliberately skipped — that change is behaviorally observable for current integrators and belongs on a major bump.
* e3d589e: feat(audit-followup): tx-flow audit fixes — Solana bigint amounts, cross-chain destination validation, quote staleness, Stellar account error

  Additive correctness improvements identified during the deposit / withdraw / redeem audit. No new exported types are renamed or removed.

  ### Solana (`adapters/solana`)

  * **`handleSolanaDeposit` / `handleSolanaRedeem`** now accept `bigint` for `depositAmount` / `redeemShares`, in addition to the existing `number` form. When `bigint` is passed it is treated as the raw on-chain unit and used directly — no `uiAmountToRawBn` round-trip through a JS float. Recommended for money flows so the value the wallet signs cannot drift from the value the UI displayed. The `number` form is still supported for back-compat.
  * The SDK wrapper methods `augustSdk.solana.vaultDeposit` and `vaultRedeem` widen their `depositAmount` / `redeemShares` parameter to `number | bigint` accordingly.
  * Both handlers reject `0n` (and `0`) via `AugustValidationError`.

  ### Cross-chain (`evm/methods/crossChainVault`)

  * **`buildCrossChainVaultTx`** now rejects requests where `destinationChainId` or `userChainId` (on `DEPOSIT`) is neither the configured `hubChainId` nor present in `config.layerZeroEids.spokes`. Previously the unknown chain ID silently fell back to the hub EID, routing user funds to a chain they did not pick. Behavior unchanged when the chain ID is omitted / equals the hub / is a configured spoke.
  * **`quoteCrossChainDeposit` / `quoteCrossChainRedeem`** now populate `quotedAt` and `expiresAt` on the returned `IQuoteCrossChainResult`. The UI should call `isQuoteStale(quote)` before submit and re-quote when it returns `true` — LayerZero fees drift between quote and submit.
  * New exports from `evm/types/crossChain`:
    * `CROSS_CHAIN_QUOTE_TTL_MS` (30 000 ms default validity window).
    * `isQuoteStale(quote, now?)` helper.

  ### Stellar (`adapters/stellar/soroban`)

  * **`buildSorobanTx`** now wraps `server.getAccount` failures: when the account does not exist or is unfunded, the SDK throws an `AugustValidationError` with copy that names the actual fix ("send at least 1 XLM to activate"). Detected via both `instanceof NotFoundError` (forward-compat) and the current `"Account not found: <addr>"` message the rpc server actually throws. Other RPC errors propagate unchanged.

  ### Known limitations (deferred)

  * The Solana `deposit` instruction's IDL does not yet accept a `min_shares_out` argument, so client-side slippage protection cannot be enforced on-chain for Solana vaults. A `TODO(slippage)` comment marks the call site in `vault.actions.ts`; on-chain enforcement requires a program update.

### Patch Changes

* a18ea6d: chore(benchmarks): per-iteration RPC/API request counting

  Adds `benchmarks/request-counter.js`, a `globalThis.fetch` wrapper that buckets requests as `rpc` (Alchemy, Helius, QuickNode, etc.) vs `api` (everything else, with a per-host breakdown). The harness now resets the counter before each measured iteration and surfaces `meanRpc`, `meanApi`, `meanRequests`, and a `hostBreakdown` on every result.

  Console + markdown reporters render the new columns when counts are present and append a "Total requests across all measured iterations" section so AUGUST-5835-style perf claims (in-flight dedup, whitelist cache, `parallelLimit` fix) can be measured directly instead of estimated from the diff.

  Counting is on by default. Set `BENCHMARK_ALCHEMY_REQUEST_COUNT=0` to skip the global fetch patch (e.g. in environments where another tool already wraps `fetch`). No behavior change to the SDK itself — this is a benchmark-tooling-only change.
* 0f92c9c: refactor(vaults/date-utils): lift duplicate `TIMESTAMP_MANIPULATION_WINDOW = 300` to module scope

  `computeClaimableDate` and `isClaimableNow` each re-declared the same `const TIMESTAMP_MANIPULATION_WINDOW = 300` inside their function bodies. Lifted to a single module-level constant mirroring `TimelockedVault.sol`'s 5-minute window. Pure refactor — identical observable behavior.

  Coverage was thin (no existing tests for `date-utils.ts`); adds `tests/vaults/date-utils.test.ts` covering `computeClaimableDate`, `isClaimableNow`, `formatDateKey`, `isValidClaimableDate`, and `getDaysInMonth` (8 tests, including UTC-day rollover and leap-February).
* 0f92c9c: perf(adapters/evm): parallelize receipt-token + whitelisted-assets fetch in `getEvmVaultV2`

  After the initial vault-contract `Promise.all` resolves, `getEvmVaultV2` previously fetched the receipt-token metadata batch (5 RPCs) and the whitelisted-assets list (1 RPC) **sequentially**, even though both depend only on `vaultContractCalls` and have no data dependency on each other. They now run inside a shared outer `Promise.all`, so the wall time per V2 vault read is bounded by the slower of the two batches instead of their sum.

  No change to the merged `combinedCalls` / `combinedFunctions` shape, so downstream `buildFormattedVault` sees identical inputs. Static regression test (`tests/adapters/evm-vault-v2-parallel-fetch.test.ts`) guards the wrapping pattern.
* 0f92c9c: docs(adapters/evm): TSDoc for `vaultAllowance`, `vaultDeposit`, `vaultRequestRedeem`, `depositNative`, and `vaultRedeem`

  The EVM adapter's public write methods shipped without TSDoc blocks, which CLAUDE.md section 1 requires for every exported symbol on the published surface. Integrators saw "(no description)" in their IDE and had to read `modules/vaults/write.actions.ts` to learn the parameter shape and return semantics. Each method now has a one-sentence summary, `@param` / `@returns` / `@throws` notes, and an `@example`. A static presence test (`tests/adapters/evm-write-tsdoc.test.ts`) guards against regression.

  No behavior change.
* 0f92c9c: refactor(vaults/utils): extract local `IEvmAssetMetadata` type

  `buildFormattedVault` declared the same `{ address: IAddress; symbol: string; decimals: number }` shape twice as inline types (once for `depositAssets[]`, once for `receipt`). Lifted to a single file-local `@internal` type `IEvmAssetMetadata`. Not exported — kept internal so the public surface doesn't grow. Pure refactor.
* 0f92c9c: perf(core/web3): in-flight request dedup for `getDecimals` and `getSymbol`

  `getDecimals` and `getSymbol` already cache results in the shared `lru-cache`, but concurrent identical calls (e.g. a fresh page-load with multiple components asking for the same token's decimals before any cache write lands) each fired their own RPC. The price-fetcher path already used an in-flight `Map<key, Promise>` to coalesce these — `PRICE_REQUESTS` in `core/fetcher.ts:250` — and this change applies the same pattern to `getDecimals` (`DECIMALS_REQUESTS`) and `getSymbol` (`SYMBOL_REQUESTS`).

  Behavior on a cold cache: the first caller initiates the RPC; subsequent callers within the same tick share that promise instead of starting their own. On error, the in-flight entry is cleared in a `finally` so the next caller can retry. Cache-hit and Solana-address fast paths are unchanged, so no observable difference for callers that aren't concurrent.

  Adds `tests/utils/getdecimals-getsymbol-dedup.test.ts` with three cases (coalescing, no-false-coalescing across addresses, getSymbol parity).
* 0f92c9c: perf(core/web3): in-flight request dedup for `getReceiptTokenAddress`

  `getReceiptTokenAddress` already caches results in the shared `lru-cache`, but concurrent identical reads (multiple components or vault paths resolving the same vault's receipt-token address before the first cache write lands) each fired their own `lpTokenAddress()` RPC. This change adds a `RECEIPT_TOKEN_REQUESTS` in-flight `Map<string, Promise>` so simultaneous identical reads share a single promise — same pattern as the existing `DECIMALS_REQUESTS`, `SYMBOL_REQUESTS`, and `WHITELISTED_ASSETS_REQUESTS` maps. The in-flight entry is cleared in a `finally` so the next caller can retry after a failure.

  Cache-hit and missing-arg fast paths are unchanged.

  Adds `tests/utils/getreceipttokenaddress-dedup.test.ts` (coalescing + no false-coalescing across addresses).
* 0f92c9c: perf(vaults/getters): lift duplicate `getReceiptTokenAddress` call in the V2 position-read path

  Inside the `version === 'evm-2'` branch of the position loop in `modules/vaults/getters.ts`, `getReceiptTokenAddress(provider, vault)` was awaited twice for the same vault in back-to-back lines — once to derive decimals, once again to construct the receipt contract for the balance read. The second call was a cache hit (so cheap in RPC terms) but still incurred a function call, a cache lookup, and a Promise hop per iteration. Both call sites now reuse a single `receiptAddress` local.

  Pure lift with no behavior change — same value returned in both spots either way, and the wallet-balance branch only runs when the first await would also have run.
* ae03a7b: fix(adapters): Solana / Stellar adapters now throw typed errors for input validation

  Replaces every `throw new Error(...)` in the Solana and Stellar adapter paths that represents an input-validation failure with `AugustValidationError`, and the Stellar submit / Soroban downstream failures with `AugustSDKError` / `AugustTimeoutError`. Consumers can now narrow:

  ```ts
  catch (err) {
    if (err instanceof AugustValidationError) { ... }
  }
  ```

  …on non-EVM paths, just like EVM. Error messages are unchanged, so existing substring assertions and Sentry message-based grouping continue to work; the class-based bucket gains signal.

  Affected files:

  * `adapters/stellar/actions.ts` — `validateContractAddress`, `validateAccountAddress`
  * `adapters/stellar/soroban.ts` — `toBigIntAmount`, simulation / assembly failures (now `AugustSDKError`)
  * `adapters/stellar/submit.ts` — submission failures (`AugustSDKError`), poll-timeout (`AugustTimeoutError`)
  * `adapters/stellar/getters.ts` — `getStellarUserPosition` / `convertToShares` address validators
  * `adapters/stellar/utils.ts` — `assertNotStellar` (now `INVALID_CHAIN`)
  * `adapters/solana/vault.actions.ts` — input-validation failures inside `handleSolanaDeposit` / `handleSolanaRedeem`
  * `adapters/solana/utils.ts` — wallet / program-id / vault-version validation and `uiAmountToRawBn` precision checks
* bb0873f: fix(perf-pr-review): address review findings on the perf-optimizations PR

  Bundle of small fixes responding to the code review of `AUGUST-5835-perf-optimizations`. No public-API change.

  * **`CACHE.has` vs `CACHE.get` truthy check** — flipped 4 sites in `core/helpers/web3.ts` (`getDecimals`, `getSymbol`, `getReceiptTokenAddress`, `getWhitelistedAssets`) from `if (CACHE.get(key))` to `if (CACHE.has(key))`. Tokens with `decimals === 0`, empty-string symbols, or empty whitelist arrays were silently re-fetching on every sequential call because the cached value was falsy. Resolves and supersedes `todo/29`.
  * **`getWhitelistedAssets` typed error** — replaced `throw new Error(...)` with `AugustValidationError('INVALID_INPUT', ...)`. The function stays `@internal`; the change keeps Sentry's error-grouping intact (raw `Error` collapsed to the generic bucket).
  * **`generatePermitSignature` Logger** — the `console.error('Could not fetch DOMAIN_SEPARATOR…')` that the Solana sweep had skipped is now `Logger.log.error('generatePermitSignature', error, { message: … })`, with the original throw preserved.
  * **Dead `name` write** — moved `let name` into the cache-miss discovery block (`const name = …`). The assignment on the cache-hit path was never read; `signTypedData` uses `matchingDomain` directly.
  * **`runWithConcurrency` correctness note** — one-line comment explaining why `nextIndex++` is safe across workers (JS single-threaded; increment finishes before any `await`).
  * **Parallel-fetch test upgrade** — `tests/adapters/evm-vault-v2-parallel-fetch.test.ts` is rewritten from a regex-on-source assertion to a behavior test that mocks `Contract` / `getDecimals` / `getSymbol` / `getWhitelistedAssets` with controlled delays and asserts wall time falls in the parallel range (`1.5×–2.5× RPC_DELAY`), not the serial range (`3× RPC_DELAY`).
  * **New regression test** — `tests/utils/cache-falsy-value-hit.test.ts` proves `getDecimals` returning `0` is cached and the second call doesn't re-fetch.
* 0f92c9c: perf(vaults/utils): cache matched permit domain per (chainId, token)

  `generatePermitSignature` previously, on every invocation, fetched the token's `name()` (RPC), built 4 candidate EIP-2612 domain configurations, hashed each with `TypedDataEncoder.hashDomain`, and — only if all 4 failed — fell back to fetching `version()` (another RPC). For integrators generating multiple permits against the same token in a session, every signature reran the full discovery.

  The matched `TypedDataDomain` is now cached in the SDK's shared `lru-cache` keyed `permit-domain-<chainId>-<token>` for 1 hour. The live `DOMAIN_SEPARATOR()` is still fetched on every call and compared against the cached domain's hash; on mismatch (e.g. an upgraded token contract) the cache entry is invalidated and the original discovery loop runs. On a cache hit the `name()` RPC, the 4-iteration hashing loop, and the rare `version()` fallback are all skipped.

  The function also pairs `nonces()` with `DOMAIN_SEPARATOR()` in a single `Promise.all` (they were previously sequential), shaving a round trip on the cache-miss path.

  Adds `tests/vaults/permit-domain-cache.test.ts` covering the discovery path and the cached fast-path.
* 0f92c9c: refactor(adapters/solana): route console.\* through Logger

  Replaces all 50 raw `console.log` / `console.warn` / `console.error` calls in `adapters/solana/{vault.actions,utils}.ts` with the equivalent `Logger.log.{info,warn,error}` calls. Output is now sanitized via the analytics pipeline and gated by `Logger.setDevMode()` / `Logger.setStructuredLogger()` rather than being printed unconditionally to stdout. Level mapping is preserved (`console.log` → `info`, `console.warn` → `warn`, `console.error` → `error`). No behavior change for callers that have not configured a logger; consumers that have already enabled dev mode or plugged in a structured logger will now receive Solana adapter events on the same channel as the rest of the SDK. A static test (`tests/adapters/solana-logger-hygiene.test.ts`) guards against regression.
* a18ea6d: fix(adapters/solana): propagate the underlying error from `getVaultMints` instead of swallowing it

  `SolanaUtils.getVaultMints` previously caught any failure inside `program.account.vaultState.fetch(vaultStatePda)` — Anchor discriminator mismatch, account-not-found, RPC error — logged it, and returned `{ depositMint: '', shareMint: '', vaultVersion: undefined }`. Downstream `handleSolanaDeposit` / `handleSolanaRedeem` checked the empty mints and threw the generic `"Failed to read vault mints from on-chain state"`, which carried zero diagnostic signal. Operators triaging a failed deposit on a specific vault (e.g. Sentora xBTC on the Upshift portfolio page) had nothing actionable in the user-visible error.

  `getVaultMints` now throws an `AugustSDKError` (`code: 'UNKNOWN'`) whose `message` includes the underlying cause and whose `context` carries `vaultProgramId` and `vaultAddress`. The original error is set as `.cause`. Successful reads still cache as before; the existing read-side `getVaultStateReadOnly` path is unchanged.

  The outer catch in `handleSolanaDeposit` already re-wraps SDK errors with `cause`, so the user-visible message becomes `"Solana deposit failed: Failed to read vault mints from on-chain state: <real cause>"` — pointing at whether the IDL is wrong, the PDA doesn't exist, or the RPC failed.

  Adds `tests/vaults/solana-vault-mints-error-propagation.test.ts` covering account-not-found and discriminator-mismatch causes, asserting the typed-error shape and that the cause string flows through.
* 0f92c9c: fix(vaults/fetcher): honor `parallelLimit` in batch + comprehensive vault fetchers

  `fetchVaultsBatch` and `fetchVaultsComprehensive` previously accepted a `parallelLimit` option but renamed it to `_parallelLimit` and ran every task in a batch concurrently via `Promise.all` — the option was a no-op. The default `getVaults` call site (`modules/vaults/main.ts`) passes `parallelLimit: 8` expecting it to take effect, so RPC fan-out for a typical batch of 15 vaults was running 15-wide instead of the intended 8-wide.

  Both fetchers now route their per-batch work through an internal `runWithConcurrency` helper that pulls tasks from a queue with a hard in-flight cap. The default `parallelLimit` is `batchSize`, so any caller that did not specify `parallelLimit` sees identical pre-fix concurrency (no regression). Callers that did specify it — including the SDK's own `getVaults` — now get the cap they asked for.

  Adds `tests/vaults/fetcher-parallel-limit.test.ts` covering: the cap, the default-preserves-prior-behavior path, and that every task still completes when `parallelLimit < batchSize`.
* 0f92c9c: perf(core/vaults): pre-compute lowercase `VAULT_SYMBOLS` lookup map

  `getVaultSymbol`'s hardcoded-fallback path used `Object.entries(VAULT_SYMBOLS).find(([k]) => k.toLowerCase() === address.toLowerCase())` — an O(n) scan over the table on every cache-miss / non-canonical-case lookup. The canonical-case fast path (`VAULT_SYMBOLS[address]`) is preserved; the case-insensitive fallback now reads from a module-level `VAULT_SYMBOLS_LOWERCASE` map built once via `Object.fromEntries`, making it O(1).

  The lookup precedence (backend metadata → hardcoded fallback → on-chain `getSymbol`) is unchanged. The hardcoded list is `@deprecated` per its existing TSDoc — backend remains canonical.

  Adds `tests/utils/get-vault-symbol-lowercase.test.ts` covering canonical-case, lowercase, and unknown-address paths.
* 0f92c9c: perf(core/web3): cache `getWhitelistedAssets` list per (chain, whitelist contract)

  V2 vault reads (`getEvmVaultV2`) call `getWhitelistedAssets` on the vault's whitelist contract on every invocation, and the returned list immediately fans out into per-asset `getDecimals` + `getSymbol` reads inside `buildFormattedVault`. The list itself rarely changes, so a new internal helper `getWhitelistedAssets` (in `core/helpers/web3.ts`) wraps the contract call with an `lru-cache` entry keyed `whitelisted-assets-<providerScope>-<whitelistAddress>` and a 5-minute TTL. Concurrent identical reads share an in-flight promise — same pattern as `getDecimals` / `getSymbol`.

  `getEvmVaultV2` now delegates to that helper instead of building the contract inline; the merge step that flattens `contractCalls.getWhitelistedAssets` into the formatted vault is unchanged, so callers see the same shape.

  Adds `tests/utils/get-whitelisted-assets-cache.test.ts` (in-flight coalescing, sequential cache-hit, no false-coalescing across addresses).

</details>
{% endupdate %}

{% update date="2026-05-26" %}

## 6.0.1

{% hint style="info" %}
**Integrator highlights**

* **Action:** Update any hardcoded Flare explorer URLs from `flare-explorer.flare.network` to `flarescan.com`.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* c7c508b: fix Flare chain explorer URL from flare-explorer.flare.network to flarescan.com

</details>
{% endupdate %}

{% update date="2026-05-22" %}

## 6.0.0

{% hint style="info" %}
**Integrator highlights**

* **Breaking:** `registerUserForPoints` now requires four additional parameters (`chainId`, `signature`, `nonce`, `expiry`) and no longer uses an admin API key; all existing call sites must be updated.
* **Action:** Callers must obtain an EIP-191 personal\_sign signature over the canonical message template before calling `registerUserForPoints`; see TSDoc for exact message format.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Major Changes

* 00c6ba9: `registerUserForPoints` now authenticates via a wallet signature instead of an admin API key. The function gains four required parameters — `chainId`, `signature`, `nonce`, `expiry` — and no longer reads `options.augustKey`. Callers must obtain a personal\_sign (EIP-191) signature over a canonical message containing the lowercased user address, lowercased referrer (or `"none"`), chain id, nonce, and expiry; the backend reconstructs the same message and verifies the signature against the claimed wallet (EOA recovery first, then EIP-1271 for smart-contract wallets such as Safe). `chainId` must be one of the chains Upshift supports (see backend `SUPPORTED_REGISTRATION_CHAINS`); unsupported chains return 422. The class method `AugustVaults#registerUserForPoints` and the top-level `Sdk#registerUserForPoints` add `chainId`, `signature`, `nonce`, `expiry` as required positional arguments after `referrerAddress`. See the TSDoc on `registerUserForPoints` for the exact message template and a worked example.

### Patch Changes

* 0422e61: patch an issue with version ts. This patches a broken import in v 5.1.0 and 5.1.1

</details>
{% endupdate %}

{% update date="2026-05-22" %}

## 5.1.1

{% hint style="info" %}
**Integrator highlights**

* **Action:** Upgrade from 5.1.0 to 5.1.1 immediately; the 5.1.0 npm tarball was built from a stale directory and is missing the Solana share-price and position fixes.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Re-publish of 5.1.0 with a clean build. The 5.1.0 tarball on npm was shipped from a stale `lib/` directory and was missing the Solana share-price + position fixes described in the 5.1.0 changelog below — `lib/adapters/solana/getters.js` still read only `deployedAum` for `totalAssets`. Anyone on `@augustdigital/sdk@5.1.0` should bump to `5.1.1`.
* Added a `prepublishOnly` script (`pnpm clean && pnpm build`) so subsequent publishes refuse to ship a stale `lib/` and force a fresh transpile. The 5.1.0 mishap was caused by a manual `pnpm publish` run without a preceding `pnpm build`; the new hook makes that impossible by construction.

</details>
{% endupdate %}

{% update date="2026-05-22" %}

## 5.1.0

{% hint style="info" %}
**Integrator highlights**

* **Action:** Solana vault share prices and position sizes were previously mis-calculated; verify any redemption-sizing or max-action logic that relied on those values.
* **Action:** Upgrade from any prior 5.x release to pick up the corrected Borsh IDL field order; earlier builds may have deserialized vault state fields from wrong byte offsets.
* **New:** New `SolanaAdapter.fetchUserShareBalanceRaw({ publicKey, shareMint })` returns raw share balance and decimals.
* **New:** SDK constructor now accepts a dedicated `solana: { rpcUrl, network }` config entry so Solana can be configured without polluting the EVM `providers` map.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 9dbc693: fix(solana): use `local_aum + deployed_aum` for vault total assets; add BigInt-safe share-balance helper; stop dropping Solana from `getVaults` / `getVaultPositions`

  **Bump rationale (minor, not patch):** this release is bug-fix-driven but adds two purely additive public-surface elements — `SolanaAdapter.fetchUserShareBalanceRaw()` and the dedicated `IAugustBase.solana = { rpcUrl, network }` config entry point. Per the additive-public-API rule a minor bump is required even though no existing API breaks.

  **Root causes**

  * `getSolanaVault` read only `vaultState.deployedAum` for `totalAssets`, but the on-chain `VaultState::total_assets()` is `local_aum + deployed_aum`. The displayed share price dropped below 1.0 the instant the operator deployed any portion of the vault, even with zero PnL (jitoSOL showed `0.7370` against a 1:1 share supply).
  * `getVaultPositions` Solana branch passed `uiAmount` (a JS number) into `toNormalizedBn` with no decimals argument. It defaulted to 18 and produced a `walletBalance.raw` off by `10**(18 − mintDecimals)`, breaking redemption sizing and max-action math even though the displayed `normalized` looked plausible.
  * The provider-availability filter (`vaultsPerAvailableProviders`) had an explicit Stellar pass-through but no Solana one — Solana vaults were silently dropped from both the vault list and position list on any SDK instance whose `providers` map didn't register chainId `-1`.
  * The IDL (`vault-idl.ts` / `.json`) and `ISolanaVaultState` were missing `local_aum`, `aum_increase_limit`, `aum_decrease_limit`, and `vault_version` — fields that exist in the Rust `VaultState` struct (see `programs/august-vault/src/state/vault.rs`). Because the missing fields sat *after* `deployed_aum`, the earlier fields still deserialized correctly but every field after the drift (`pda_bump`, `paused`, `padding`) read from the wrong bytes. `paused` happening to read `0x00` is why this didn't blow up in production sooner.

  **Changes**

  * `adapters/solana/getters.ts`: sum `localAum + deployedAum` for `totalAssets`. Falls back to backend TVL when on-chain is unavailable.
  * `adapters/solana/utils.ts`: new `fetchUserShareBalanceRaw({ publicKey, shareMint })` returning `{ amount: string; decimals: number | null }` from a single `getParsedTokenAccountsByOwner`.
  * `adapters/solana/index.ts`: expose the helper on `SolanaAdapter` with TSDoc and a worst-case RPC note.
  * `adapters/solana/types.ts`: extend `ISolanaVaultState` with `localAum`, `aumIncreaseLimit`, `aumDecreaseLimit`, and the (re-positioned) `vaultVersion`.
  * `adapters/solana/idl/vault-idl.{ts,json}`: re-sync `VaultState` field order with the Rust source.
  * `main.ts`: construct `SolanaAdapter` from either `providers[-1]` or the dedicated `solana: { rpcUrl, network }` config, so partner SDK instances can opt into Solana without polluting their EVM providers map.
  * `modules/vaults/main.ts`: pass `chain_type === 'solana'` through the provider filter when `this.solanaService` is available — mirrors the existing Stellar clause.
  * `modules/vaults/getters.ts`: Solana branch now reads via the raw helper, uses the mint's true decimals, drops the `as any` on `vaultState`, and returns `vault: v.address` instead of the outer parameter (mirrors the Stellar branch).
  * `modules/vaults/types.ts`: `ISolanaService.fetchUserShareBalanceRaw` is required (only impl is the in-package `SolanaAdapter`, which now always provides it).

  **No behaviour change for EVM or Stellar paths.**

  **Verification**

  * Borsh layout sanity-checked against `programs/august-vault/src/state/vault.rs:36-50` and against the live jitoSOL vault state at `2tmMcVv2Ene7wFGebPivhwYhAZyjaJoibMz1GYVaXsB1`: 455-byte account decodes cleanly with the new field order — `local_aum=564_529_610`, `deployed_aum=1_582_093_475`, `aum_increase_limit=20`, `aum_decrease_limit=20`, `pda_bump=[254]`, `vault_version=[0]`, `paused=false`, padding all-zero. `local_aum + deployed_aum` equals the share-mint supply at parity. Every byte accounted for.
  * Benchmark entry added at `benchmarks/suites/sdk-methods.js`: `fetchUserShareBalanceRaw() [cold, no account]`. Gated on `BENCHMARK_SOLANA_RPC_URL` so the existing EVM-only CI run isn't affected; set the env var to opt in. Uses the jitoSOL share mint with the system-program key as wallet — deterministic "no account" path that measures `getParsedTokenAccountsByOwner` round-trip plus the short-circuit return, which is the hot path on the vault grid for users without a position.

</details>
{% endupdate %}

{% update date="2026-05-21" %}

## 5.0.0

{% hint style="info" %}
**Integrator highlights**

* **Breaking:** AugustSDK constructor now requires `appName` (kebab-case slug, 3–64 chars); throws synchronously if missing or invalid.
* **Breaking:** fetchAugustWithKey(undefined, …) now throws `AugustAuthError` instead of returning a synthetic `{status:500}` response.
* **Breaking:** Removed `name` field from `AugustSDK`; use `appName` on `AugustBase` instead.
* **Action:** Add `appName: '<your-slug>'` to every `new AugustSDK({…})` call before upgrading.
* **Action:** Replace any `if (res.status === 500)` missing-auth checks; missing key now throws `AugustAuthError` instead.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Major Changes

* 8881c9b: Integrator experience: require `appName`, add a runtime version-nudge.

  **Breaking — required `appName`.** `appName` is now a required field on the `AugustSDK` constructor (and `IAugustBase`). Pass a stable kebab-case slug identifying your application — e.g. `new AugustSDK({ appName: 'acme-trader', ... })`. Despite the friendly name the value is identifier-shaped: 3–64 chars, `[a-zA-Z0-9._-]` only (it's used as a Sentry tag and HTTP header). Use a slug like `'acme-trader'`, not a display name like `'Acme Trader'`. The SDK throws synchronously from the constructor when the value is missing, empty, or out of the allowed shape.

  Why: the SDK now tags outbound analytics events with `app.name`, so the August Digital team can attribute error spikes to the right consuming application and reach out about breaking changes / critical bugs. See the "App Name" section in `packages/sdk/README.md`.

  Migration: add `appName: '<your-slug>'` to your existing `new AugustSDK({ ... })` call. No other changes required.

  **Additive — version-nudge on construction.** On non-production builds the SDK now performs one best-effort npm-registry check per session and prints a `console.warn` banner when a newer `@augustdigital/sdk` is available. The check never runs in `NODE_ENV=production`, can be silenced with `AUGUST_SDK_DISABLE_VERSION_CHECK=1`, or programmatically with `new AugustSDK({ versionCheck: { enabled: false }, ... })`. Never blocks construction; failures are silent. New exports: `runVersionCheck`, `IVersionCheckConfig`, `compareSemver`.

### Minor Changes

* c24003b: feat: production-grade hardening

  **Security & errors**

  * New typed error hierarchy: `AugustSDKError`, `AugustAuthError`, `AugustNetworkError`, `AugustTimeoutError`, `AugustValidationError`, `AugustRateLimitError`, `AugustServerError`, plus `isAugustSDKError` type guard. All extend `Error` so existing `instanceof Error` consumers are unaffected.
  * Secret sanitization in error messages, logger, and Slack adapter via `sanitizeString` / `sanitizeError` / `sanitizeForLogging`.
  * URL injection hardening: `buildAugustUrl` rejects unknown server keys, absolute URLs, and protocol-relative paths; origin check enforces same-origin.
  * `fetchAugustWithKey(undefined, …)` now throws `AugustAuthError(AUTH_MISSING_KEY)` instead of returning a synthetic `{status: 500}` response — callers using `if (res.status === 200)` previously misclassified missing-auth as a 500 server error; they now receive a proper typed error. `verifyAugustKey` short-circuits empty keys so `init()` behavior is unchanged.
  * `override` flag on `IFetchAugustOptions` is `@deprecated` with a one-time runtime warning; will be removed in the next major.
  * HTTP errors are now typed by status: 401 → `AugustAuthError`, 429 → `AugustRateLimitError`, else `AugustServerError`.
  * `Response.headers.get('x-correlation-id')` (was bracket-accessed; always `undefined`).

  **Transport**

  * Per-request `signal: AbortSignal` and `timeoutMs: number` on `IFetchAugustOptions`. Combined with the default timeout via `AbortSignal.any` (Node 22+) with a manual relay + cleanup fallback. Distinguishes caller-cancel from timeout via an internal `timedOut` flag.

  **Observability**

  * New `ILogger` interface and `Logger.setStructuredLogger()` alongside the existing Sentry-compatible `SDKLogger`. Pino-friendly: pass a context object as the first arg.

  **Performance**

  * Parallelized `getVault` loans + allocations (`Promise.allSettled`, preserves original control flow).
  * Removed redundant `fetchTokenizedVault` calls in `getVaultLoans` / `getVaultSubaccountLoans`.
  * `createProvider(rpcUrl, chainId?)` enables ethers' `staticNetwork` (skips the `eth_chainId` round-trip).
  * `getInfuraProvider` routes through `createProvider` (was rebuilding per call).
  * `decimals` / `symbol` / `receipt-token` caches are chain-scoped via `providerScope`.

  **Bundle**

  * Buffer polyfill extracted to `polyfills.ts`; guarded against clobbering a consumer-set `Buffer`.
  * `sideEffects: ["./lib/polyfills.js"]` lets bundlers tree-shake the rest of the SDK.
  * Source maps excluded from the npm tarball.

  **Bug fixes**

  * `fetchAugustWithBearer` no longer crashes when `options` is undefined (`options?.` everywhere).
  * `AbortSignal` fallback path now removes its `abort` listener on completion (no more leak across long-lived caller signals).
  * Slack adapter's webhook fetch has a 5s timeout.
  * `sanitizeError` preserves typed-error subclasses by cloning via prototype + own properties instead of calling the constructor (which would have misaligned positional args like `AugustAuthError(code, message, opts)`).
  * `AugustSDKError` and subclasses ship a `toJSON()` so `JSON.stringify(err)` no longer returns `"{}"`. `code`, `correlationId`, `status`, `timeoutMs`, `retryAfterMs`, and `cause` are all included.

  **No public API breaks.** All additions are opt-in. The only behavior change is `fetchAugustWithKey(undefined, …)` throwing instead of returning a fake 500 — the thrown value is still an `Error` instance.
* 8881c9b: feat(sdk): expose `getVaultRedemptionHistory` on the `AugustVaults` module and the top-level `AugustSDK` class. Wraps the existing module-level getter with the standard option-plumbing (RPC resolution from `chainId`, `augustKey`/`subgraphKey`/`headers` from the SDK instance), validates the vault input, and returns the same historical redemption records the underlying getter produces. Stellar vaults continue to return `[]` until on-chain indexing lands for that adapter.

### Patch Changes

* 7027223: fix: vault read paths no longer hang or surface ethers' `network is not available yet` when the configured RPC is unreachable or rate-limited

  Three related changes that together resolve `august vault tvl <addr> --chain <id>` failures (cryptic `NETWORK_ERROR` on a healthy RPC, infinite "JsonRpcProvider failed to detect network" retry loop on a 403/401 RPC):

  * `providerScope` (cache-key builder used by `getDecimals`, `getReceiptTokenAddress`, …) now tolerates ethers v6's lazy-network state. Reading `provider._network` is a *getter* that throws `network is not available yet` until the first successful request resolves the chain id; the throw was bubbling out of every cached vault read on freshly constructed providers.
  * `AugustVaults.getVaultTvl` now threads `chainId` into the getter options, and the EVM branch of `getVaultTvl` (`packages/sdk/src.ts/modules/vaults/getters.ts`) forwards it to `createProvider`. This sets ethers' `staticNetwork`, skipping the `eth_chainId` round-trip and, more importantly, preventing the indefinite network-detection retry loop when the RPC returns 4xx errors.
  * `createProvider` now throws a clear, remediable error when called with a missing or empty `rpcUrl`, instead of silently constructing a `JsonRpcProvider` pointed at `http://localhost:8545`.
* f0741e2: fix: HyperEVM RPC compatibility for `getWithdrawalRequestsWithStatus`
* c14c10b: chore: remove unused `name` field from `AugustSDK`. The field was declared but never assigned and never read — `appName` (on `AugustBase`) is the single source of truth for the app identifier.
* 0cb921a: fix: cap `fetchTokenizedVaults` cache at 10 minutes and avoid stale-get eviction

  `fetchTokenizedVaults` (bulk list) was calling `CACHE.set(key, value)` with no TTL override, falling back to the 24-hour global default — so vault config changes made on the backend (fee rates, fee waivers, etc.) could take up to 24h to surface to bulk-list consumers. The cache lookup also called `CACHE.get(key)` twice in a row; because the global `CACHE` is configured with `allowStale: true`, the first `.get()` on a stale entry returns it *and* evicts it, leaving the second `.get()` `undefined`. Switched to `getSafeCache` (which uses `.has()` and so never triggers stale-get eviction) and set an explicit 10-minute TTL to match `fetchTokenizedVault` (single).

</details>
{% endupdate %}

{% update date="2026-05-12" %}

## 4.27.3

{% hint style="info" %}
**Integrator highlights**

* **Action:** Blacklisted vault addresses are now excluded from `totalDeposited`; verify any TVL aggregations that relied on all vaults being counted.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 651d08f: feat: add a TVL exclusion list for vaults so blacklisted addresses no longer count toward `totalDeposited`.
* b07fd3f: chore: update Goldsky subgraph routes for improved query performance.

</details>
{% endupdate %}

{% update date="2026-05-12" %}

## 4.27.2

{% hint style="info" %}
**Integrator highlights**

* **Action:** Older withdrawal requests previously missed by `getWithdrawalRequestsWithStatus` will now appear; update any UI or logic that assumed a complete list.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 7fc6a6b: fix: correct the lookback block window in `getWithdrawalRequestsWithStatus` so older withdrawal requests are no longer missed.

</details>
{% endupdate %}

{% update date="2026-05-12" %}

## 4.27.1

{% hint style="info" %}
**Integrator highlights**

* **New:** Fluent network is now supported with a default RPC URL and block explorer.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 178dbfc: feat: add support for the Fluent network, including default RPC URL and block explorer.

</details>
{% endupdate %}

{% update date="2026-05-12" %}

## 4.27.0

{% hint style="info" %}
**Integrator highlights**

* **Breaking:** getWithdrawalRequestsWithStatus now requires a chainId argument; calls without it will break cross-chain queries.
* **Action:** Pass `chainId` to all existing `getWithdrawalRequestsWithStatus` calls.
* **New:** `AugustVaults.rwaRedeemAsset()` and `previewRwaRedemption()` added for RWA instant redemption flows.
* **New:** New `instant_redeem_config` field on `IVault` returned from `getVault`/`getVaults`.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 78231b6: feat: add RWA instant redemption — new `AugustVaults.rwaRedeemAsset()` and `previewRwaRedemption()` methods, plus an `instant_redeem_config` field on `IVault` returned from `getVault`/`getVaults`. The SDK automatically routes redemption calls to the correct `RwaRedeemSubaccount` for each vault.

### Patch Changes

* 5766173: fix: `getWithdrawalRequestsWithStatus` now requires a `chainId` argument so cross-chain queries return correct results.
* 8872391: feat: add helpers for OFT (LayerZero Omnichain Fungible Token) flows.

</details>
{% endupdate %}

{% update date="2026-04-14" %}

## 4.25.2

{% hint style="info" %}
**Integrator highlights**

* **Action:** Non-EVM Debank positions previously missing from `getVaultAllocations` now appear; update any allocation totals accordingly.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* f002124: fix: include non-EVM Debank positions in the response from `getVaultAllocations`.

</details>
{% endupdate %}

{% update date="2026-04-14" %}

## 4.25.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 3102191: fix: prevent `ethers v6 tx.wait()` from crashing on Monad RPC when pending transactions return a malformed nonce.

</details>
{% endupdate %}

{% update date="2026-04-14" %}

## 4.25.0

{% hint style="info" %}
**Integrator highlights**

* **Action:** New `show_cap_filled` field on tokenized vault responses can now drive cap-filled UI states.
* **New:** `getWithdrawalRequestsWithStatus` added for tracking withdrawal request statuses.
* **New:** New `getVaultPendingRedemptions` method added on `AugustVaults`.
* **New:** New `fetchTokenizedVaultSubaccountLoans` function available for subaccount loan data on tokenized vaults.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* a267145: feat: add a Stellar SDK adapter — Soroban RPC support, transaction building and submission, and end-to-end localnet test coverage.
* 455b625: feat: add `getWithdrawalRequestsWithStatus` for tracking the status of withdrawal requests.
* ad5ea73: chore: remove SUI points from vault responses.
* 7e5aa22: feat: add Stellar vault support (backend-only) including a Stellar adapter, routing, and a shared vault builder.

### Patch Changes

* 8f1bcee: chore: refactor Solana vault adapter getters into a shared `buildBackendVault` utility (no public API change).
* c721801: fix: include PnL data in LayerZero (LZ) vault responses.
* e12e957: fix: prevent silent data loss in `getWithdrawalRequestsWithStatus` when responses span multiple pages.
* d6e7f96: feat: add `fetchTokenizedVaultSubaccountLoans` for retrieving subaccount loan data on tokenized vaults.
* bba0483: feat: add `show_cap_filled` to the tokenized vault response so callers can render cap-filled UI states.
* fd90233: feat: add a `getVaultPendingRedemptions` method on `AugustVaults`.

</details>
{% endupdate %}

{% update date="2026-03-04" %}

## 4.24.10

{% hint style="info" %}
**Integrator highlights**

* **Action:** CeFi positions previously missing from allocations responses now appear; update any allocation aggregations.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* ac2bb72: fix: include CeFi positions that were previously missing from the allocations response.

</details>
{% endupdate %}

{% update date="2026-03-03" %}

## 4.24.9

{% hint style="info" %}
**Integrator highlights**

* **New:** Withdraw support added for the earnAUSD vault.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* ff68463: feat: add withdraw support for the earnAUSD vault.

</details>
{% endupdate %}

{% update date="2026-03-02" %}

## 4.24.8

{% hint style="info" %}
**Integrator highlights**

* **Action:** Solana share balances now reflect correct decimals via `uiAmount`; verify any balance display logic.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 78b4b2a: fix: use the parsed `uiAmount` when reading Solana share balances so they reflect the correct decimals.

</details>
{% endupdate %}

{% update date="2026-03-02" %}

## 4.24.7

{% hint style="info" %}
**Integrator highlights**

* **New:** Vault version is now supported in Solana PDA derivation.
* **New:** Additional fields are available on vault response objects.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 40e6410: feat: support vault version in Solana PDA derivation; remove unused vault token-balance fetching.
* bad15e1: feat: add additional fields to vault responses.

</details>
{% endupdate %}

{% update date="2026-02-26" %}

## 4.24.6

{% hint style="info" %}
**Integrator highlights**

* **Action:** CommonJS builds previously had `AugustBase` undefined due to circular imports; upgrade to fix.
* **Action:** Solana multi-vault programs now correctly read the share mint from on-chain state instead of PDA derivation.
* **New:** earnAUSD support added over LayerZero.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* bf55850: feat: add earnAUSD support over LayerZero.
* 301e84e: fix: resolve a circular dependency in the Solana adapter imports that caused `AugustBase` to be undefined in CommonJS builds.
* e0a1135: fix: forward `vaultAddress` to `getVaultState` from `getVaultPositions` so PDA derivation no longer returns the wrong address.
* 40d8d3f: fix: read the share mint from on-chain vault state (instead of PDA derivation) so multi-vault Solana programs are supported correctly.
* ebefff4: fix: ensure the tokenized vault API call always issues its query.

</details>
{% endupdate %}

{% update date="2026-02-19" %}

## 4.24.5

{% hint style="info" %}
**Integrator highlights**

* **New:** `default_apy_horizon` field is now exposed on vault responses.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 6ab5765: feat: expose `default_apy_horizon` on vault responses.

</details>
{% endupdate %}

{% update date="2026-02-17" %}

## 4.24.4

{% hint style="info" %}
**Integrator highlights**

* **New:** A staging API URL is now available for non-production environments.
* **New:** Deposits made through LayerZero relayers are now supported.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* a3bf6eb: feat: add a staging API URL for use in non-production environments.
* 4365252: feat: support deposits made through LayerZero relayers.

</details>
{% endupdate %}

{% update date="2026-02-12" %}

## 4.24.3

{% hint style="info" %}
**Integrator highlights**

* **New:** Citrea chain support added to explorer link helpers.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 4cd81a9: feat: add Citrea chain support to explorer link helpers.

</details>
{% endupdate %}

{% update date="2026-02-06" %}

## 4.24.2

{% hint style="info" %}
**Integrator highlights**

* **New:** `getSubaccountSummary` method added for fetching summarized subaccount data.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* c53ae5e: feat: add `getSubaccountSummary` for fetching summarized subaccount data.

</details>
{% endupdate %}

{% update date="2026-02-04" %}

## 4.24.1

{% hint style="info" %}
**Integrator highlights**

* **Action:** `getVaultUserLifetimePnl` now excludes invalid transactions and handles multi-asset deposit vaults correctly; verify PnL calculations.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 6213fb9: fix: `getVaultUserLifetimePnl` now excludes invalid transactions when computing PnL.
* 52cc399: fix: `getVaultUserLifetimePnl` correctly handles vaults that accept multi-asset deposits.

</details>
{% endupdate %}

{% update date="2026-02-02" %}

## 4.24.0

{% hint style="info" %}
**Integrator highlights**

* **New:** Sender-whitelist allocations are now supported on the vault contract.
* **New:** The `withdrawal_only` field is now included on vault responses.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 654d3f2: feat: support sender-whitelist allocations on the vault contract; fix: include the `withdrawal_only` field on vault responses.

</details>
{% endupdate %}

{% update date="2026-01-29" %}

## 4.23.2

{% hint style="info" %}
**Integrator highlights**

* **New:** `cachedAt` is now exposed on cached responses so callers can reason about staleness.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* cec539b: perf: improve loading speed of `getVaultPositions`.
* a498e6e: feat: expose `cachedAt` on cached responses so callers can reason about staleness.

</details>
{% endupdate %}

{% update date="2026-01-23" %}

## 4.23.1

{% hint style="info" %}
**Integrator highlights**

* **New:** Debank service is now exposed publicly, allowing consumers to access raw Debank data directly.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 2d5af1c: feat: expose the Debank service so consumers can access raw Debank data directly.

</details>
{% endupdate %}

{% update date="2026-01-23" %}

## 4.23.0

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 9bbcc06: chore: internal version bump — no customer-facing changes.

</details>
{% endupdate %}

{% update date="2026-01-23" %}

## 4.22.0

{% hint style="info" %}
**Integrator highlights**

* **Action:** CJS consumers should update to restore CommonJS compatibility broken by the prior `uuid` version.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 1700a0c: fix: fetch earnAUSD exposures from the Debank API.
* e1c36f3: fix: downgrade the `uuid` dependency to a version that ships CommonJS, restoring CJS consumer compatibility.

</details>
{% endupdate %}

{% update date="2026-01-21" %}

## 4.20.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* e6d592f: fix: improve type safety of the contract wrapper.

</details>
{% endupdate %}

{% update date="2026-01-21" %}

## 4.20.0

{% hint style="info" %}
**Integrator highlights**

* **New:** Sentry integration for SDK error reporting is now available as an opt-in feature.
* **New:** A strongly typed ABI-driven contract class is introduced for safer on-chain reads and writes.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 9c456e8: feat: integrate Sentry for SDK observability and error reporting (opt-in).

### Patch Changes

* 0252a45: feat: introduce a strongly typed ABI-driven contract class for safer reads and writes.

</details>
{% endupdate %}

{% update date="2026-01-14" %}

## 4.18.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 444f2d9: fix: add a hardcoded subaccount address for earnAUSD where on-chain discovery is not available.

</details>
{% endupdate %}

{% update date="2026-01-13" %}

## 4.18.0

{% hint style="info" %}
**Integrator highlights**

* **New:** New write function available for depositing native assets into multi-asset vaults.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* a765147: feat: add a write function for depositing native assets into multi-asset vaults.

</details>
{% endupdate %}

{% update date="2026-01-12" %}

## 4.17.0

{% hint style="info" %}
**Integrator highlights**

* **New:** The SUI limited vault is now exposed via the SDK.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* dd2bc24: feat: expose the SUI limited vault.

</details>
{% endupdate %}

{% update date="2026-01-09" %}

## 4.16.0

{% hint style="info" %}
**Integrator highlights**

* **New:** Subgraph URLs and vault symbols are now fetched from the backend at runtime; new vaults appear without an SDK release.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* d7b8729: feat: remove hardcoded subgraph URLs and vault symbols — these are now fetched from the backend at runtime, so new vaults can appear without an SDK release.

</details>
{% endupdate %}

{% update date="2026-01-06" %}

## 4.15.4

{% hint style="info" %}
**Integrator highlights**

* **Action:** Instant redemption fee values may change; the corrected fetch function is now used.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 3f45029: fix: correct the function used to fetch the instant redemption fee.

</details>
{% endupdate %}

{% update date="2026-01-05" %}

## 4.15.3

{% hint style="info" %}
**Integrator highlights**

* **New:** EVM2 instant withdrawal logic is now supported.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 1e34016: chore: generalize the Goldsky URL for better scaling; feat: add EVM2 instant withdrawal logic.

</details>
{% endupdate %}

{% update date="2026-01-01" %}

## 4.15.2

{% hint style="info" %}
**Integrator highlights**

* **Action:** `toNormalizeBN` now correctly handles exponential notation values; verify dependent calculations.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 769b4c7: fix: `toNormalizeBN` now correctly handles values represented in exponential notation.

</details>
{% endupdate %}

{% update date="2025-12-23" %}

## 4.15.1

{% hint style="info" %}
**Integrator highlights**

* **New:** `previewRedemption()` method is now available.
* **New:** `campaignApy` field is now included on `IVault`.
* **New:** sentUSD is now available in subgraph configuration.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* e79ced7: feat: add sentUSD to the subgraph configuration.
* fff8076: feat: add `previewRedemption()`; perf: cache the tokenized vault API response in `fetchTokenizedVault`; fix: add the missing `campaignApy` field to `IVault`.

</details>
{% endupdate %}

{% update date="2025-12-19" %}

## 4.15.0

{% hint style="info" %}
**Integrator highlights**

* **New:** `getTotalDeposit()`, `depositCap`, `maxDepositAmount`, `enabled_historical_price_horizons`, and `latest_reported_tvl` are now exposed on vault responses.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* c7422f7: feat: expose `getTotalDeposit()`, `depositCap`, `maxDepositAmount`, `enabled_historical_price_horizons`, and `latest_reported_tvl` on vault responses.

</details>
{% endupdate %}

{% update date="2025-12-19" %}

## 4.14.1

{% hint style="info" %}
**Integrator highlights**

* **New:** Campaign APY is now included in the tokenized vault response.
* **New:** earnXRP and Tydro vaults are now supported.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 1d6fae6: chore: upgrade the supported Node.js version to 22.
* 04c9281: feat: include campaign APY in the tokenized vault response.
* cfc7f40: feat: add support for the earnXRP and Tydro vaults.

</details>
{% endupdate %}

{% update date="2025-12-16" %}

## 4.14.0

{% hint style="info" %}
**Integrator highlights**

* **New:** Campaign APY is now included in the tokenized vault response.
* **New:** earnXRP and Tydro vaults are now supported.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 1d6fae6: chore: upgrade the supported Node.js version to 22.
* 04c9281: feat: include campaign APY in the tokenized vault response.
* cfc7f40: feat: add support for the earnXRP and Tydro vaults.

</details>
{% endupdate %}

{% update date="2025-12-20" %}

## 4.14.0

{% hint style="info" %}
**Integrator highlights**

* **Action:** Migrate `IVaultAnnualizedApy.hgETH30dLiquidAPY` to `liquidAPY30Day` before 2026-01-01.
* **Action:** Migrate `IVaultAnnualizedApy.hgETH7dLiquidAPY` to `liquidAPY7Day` before 2026-01-01.
* **New:** `getVaultAnnualizedApy`, `getVaultSummary`, and `getVaultWithdrawals` methods are now available.
* **New:** New types `IVaultAnnualizedApy`, `IVaultSummary`, and `IVaultWithdrawals` are exported.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 0364b53: feat: add new vault API methods.

  **New Methods:**

  * `getVaultAnnualizedApy` — fetch annualized APY metrics for vaults (cUSDO, tETH, wstETH, rsETH).
  * `getVaultSummary` — fetch a summary of a vault (name, type, chain, recent returns).
  * `getVaultWithdrawals` — fetch a withdrawal summary and the pending withdrawal queue.

  **New Types:**

  * `IVaultAnnualizedApy`
  * `IVaultSummary`
  * `IVaultWithdrawals`

  **Deprecation Notice:**

  * `IVaultAnnualizedApy.hgETH30dLiquidAPY` — use `liquidAPY30Day` instead (removal: 2026-01-01).
  * `IVaultAnnualizedApy.hgETH7dLiquidAPY` — use `liquidAPY7Day` instead (removal: 2026-01-01).

  **Documentation:**

  * Vault method documentation added to `docs/02-vaults.md`.

</details>
{% endupdate %}

{% update date="2025-12-11" %}

## 4.13.2

{% hint style="info" %}
**Integrator highlights**

* **Action:** Migrate from deprecated `getVaultApy` to `getVaultHistoricalTimeseries`.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* c6d5ad5: fix: update the type of historical APY values; deprecate `getVaultApy` — use `getVaultHistoricalTimeseries` instead.

</details>
{% endupdate %}

{% update date="2025-12-10" %}

## 4.13.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* e67bb0c: fix: make subaccount and snapshot loading optional in `fetchVaultsComprehensive` to reduce unneeded RPC volume.

</details>
{% endupdate %}

{% update date="2025-12-10" %}

## 4.13.0

{% hint style="info" %}
**Integrator highlights**

* **Action:** Migrate from deprecated `historical_snapshots` on vault response to `getVaultHistoricalTimeseries`.
* **New:** Katana chain is now supported.
* **New:** Subgraph configuration added for superMON, earnMON, and k3EUROP vaults.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 01f6203: feat: add support for the Katana chain.

### Patch Changes

* e58170f: fix: improve observability when Goldsky subgraph requests fail.
* d417f0b: feat: add subgraph configuration for the superMON, earnMON, and k3EUROP vaults.
* fe74f64: fix: update the query parameters used by the tokenized vault endpoints; deprecate `historical_snapshots` on the vault response — use `getVaultHistoricalTimeseries` instead.

</details>
{% endupdate %}

{% update date="2025-12-09" %}

## 4.12.1

{% hint style="info" %}
**Integrator highlights**

* **New:** getVaultTimeSeries endpoint is now exposed on the AugustSDK class.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 01cb0b6: feat: expose the `getVaultTimeSeries` endpoint on the `AugustSDK` class.

</details>
{% endupdate %}

{% update date="2025-12-09" %}

## 4.12.0

{% hint style="info" %}
**Integrator highlights**

* **New:** New vault time-series endpoint added to the SDK.
* **New:** getTokenizedVault accepts a new optional loadSubaccounts parameter.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 8ef93e5: feat: add a vault time-series endpoint; fix: add an optional `loadSubaccounts` parameter to the get tokenized vault endpoint.

</details>
{% endupdate %}

{% update date="2025-12-07" %}

## 4.11.6

{% hint style="info" %}
**Integrator highlights**

* **New:** New getVaultPnl method available for fetching vault-level PnL.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* b842e02: feat: add `getVaultPnl` for fetching vault-level PnL.

</details>
{% endupdate %}

{% update date="2025-12-04" %}

## 4.11.5

{% hint style="info" %}
**Integrator highlights**

* **Action:** getVaultUserLifetimePnl now uses share price for position derivation; verify PnL values against previous results.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* f4eb84c: fix: `getVaultUserLifetimePnl` now derives the user's current position from the share price for a more accurate PnL.

</details>
{% endupdate %}

{% update date="2025-12-04" %}

## 4.11.4

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 3f210b1: fix: update the Monad block explorer URL.

</details>
{% endupdate %}

{% update date="2025-12-03" %}

## 4.11.3

{% hint style="info" %}
**Integrator highlights**

* **Action:** getVaultUserLifetimePnl calculation logic corrected; re-verify any cached or displayed PnL values.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 623f3ec: fix: correct the calculation logic in `getVaultUserLifetimePnl`.

</details>
{% endupdate %}

{% update date="2025-12-02" %}

## 4.11.2

{% hint style="info" %}
**Integrator highlights**

* **Action:** lagDuration calculation corrected; results depending on this value may change.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 73636bd: fix: correct the `lagDuration` calculation.

</details>
{% endupdate %}

{% update date="2025-12-02" %}

## 4.11.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 38dbaa8: fix: additional fixes for the Hyena vaults.

</details>
{% endupdate %}

{% update date="2025-12-02" %}

## 4.11.0

{% hint style="info" %}
**Integrator highlights**

* **New:** New external points interface added for vaults integrating third-party point programs.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 74af6be: feat: add an external points interface for vaults that integrate third-party point programs.

</details>
{% endupdate %}

{% update date="2025-12-02" %}

## 4.10.0

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* a23bce0: perf: optimize `getVaultUserLifetimePnl` for faster execution.

</details>
{% endupdate %}

{% update date="2025-11-26" %}

## 4.9.0

{% hint style="info" %}
**Integrator highlights**

* **New:** New `getVaultUserLifetimePnl` function retrieves a user's lifetime PnL for a vault.
* **New:** Subgraph history queries now support the EVM2 network.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 83ee1e1: feat: add `getVaultUserLifetimePnl` for retrieving a user's lifetime PnL on a vault.

### Patch Changes

* f2582b9: feat: support EVM2 for subgraph history queries.

</details>
{% endupdate %}

{% update date="2025-11-21" %}

## 4.7.3

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* f2e0046: chore: update Monad Goldsky subgraph endpoints.

</details>
{% endupdate %}

{% update date="2025-11-20" %}

## 4.7.2

{% hint style="info" %}
**Integrator highlights**

* **Breaking:** The `getVault` family of functions has been renamed to `fetchTokenizedVault`; update all call sites.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 545dd1b: refactor: rename the `getVault` family of functions to `fetchTokenizedVault`.

</details>
{% endupdate %}

{% update date="2025-11-21" %}

## 4.7.2

{% hint style="info" %}
**Integrator highlights**

* **New:** Vault response objects now include additional fields.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* acd34a8: feat: include additional fields on vault responses.

</details>
{% endupdate %}

{% update date="2025-11-19" %}

## 4.7.1

{% hint style="info" %}
**Integrator highlights**

* **Action:** A regression was introduced in tokenized vault fetching; update to this patch to restore correct behavior.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 4ffaeeb: fix: revert a recent change to the tokenized vault fetch logic that introduced regressions.

</details>
{% endupdate %}

{% update date="2025-11-19" %}

## 4.7.0

{% hint style="info" %}
**Integrator highlights**

* **New:** Added support for the Ink and Flare chains.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 88e5d79: feat: add support for the Ink and Flare chains.

</details>
{% endupdate %}

{% update date="2025-11-14" %}

## 4.6.1

{% hint style="info" %}
**Integrator highlights**

* **Action:** Deposit cap is no longer fetched on initial vault load; ensure your integration handles on-demand loading.
* **New:** Tokenized vault response now includes a `historical_apy` field.
* **New:** New deposit-with-permit function allows depositing using EIP-2612 signatures.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 79c3917: feat: add `historical_apy` to the tokenized vault response.
* b01879f: feat: add a deposit-with-permit function so callers can deposit using EIP-2612 signatures.
* 5506682: perf: reduce RPC calls during vault fetching.
* c7b052e: perf: remove the deposit cap query from the initial vault fetch — it's loaded on demand instead.

</details>
{% endupdate %}

{% update date="2025-11-19" %}

## 4.6.1

{% hint style="info" %}
**Integrator highlights**

* **Action:** `integration` and `apy` fields are now sourced from the backend; verify values match your expectations.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 87c24b2: chore: source the `integration` and `apy` fields from the backend instead of computing them client-side.

</details>
{% endupdate %}

{% update date="2025-11-14" %}

## 4.6.0

{% hint style="info" %}
**Integrator highlights**

* **Breaking:** `getAvailableRedemptions` now uses the correct normalization function, which may change returned values.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 4cbe3b4: fix: `getAvailableRedemptions` now uses the correct normalization function.

</details>
{% endupdate %}

{% update date="2025-11-14" %}

## 4.5.2

{% hint style="info" %}
**Integrator highlights**

* **Action:** Available and pending withdrawal values have changed for accuracy; verify your withdrawal logic against updated results.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 50d47da: fix: improve the available and pending withdrawal logic for accuracy.

</details>
{% endupdate %}

{% update date="2025-11-12" %}

## 4.5.1

{% hint style="info" %}
**Integrator highlights**

* **New:** New `depositCap` contract call is exposed when the vault implements it.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 4d1c505: feat: expose the `depositCap` contract call when the vault implements it.

</details>
{% endupdate %}

{% update date="2025-11-07" %}

## 4.5.0

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 7e03e06: chore: update the SDK to consume the latest subgraph schema.

</details>
{% endupdate %}

{% update date="2025-11-06" %}

## 4.4.7

{% hint style="info" %}
**Integrator highlights**

* **Action:** Improved `bigint` arithmetic handling may change results for large amounts; verify calculations.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 3a43ccc: fix: improve `bigint` handling for safer arithmetic on large amounts.

</details>
{% endupdate %}

{% update date="2025-11-06" %}

## 4.4.6

{% hint style="info" %}
**Integrator highlights**

* **New:** New vault reader function available for direct on-chain reads.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 715c56f: feat: expose a vault reader function for direct on-chain reads.

</details>
{% endupdate %}

{% update date="2025-11-06" %}

## 4.4.5

{% hint style="info" %}
**Integrator highlights**

* **Breaking:** The `vaultRequestRedeem` function signature has changed; update all call sites.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 394a38e: feat: update the `vaultRequestRedeem` function signature.

</details>
{% endupdate %}

{% update date="2025-11-05" %}

## 4.4.4

{% hint style="info" %}
**Integrator highlights**

* **New:** `walletToSigner` helper added for converting a wallet to an ethers signer.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 9a77fbe: feat: add a `walletToSigner` helper for converting a wallet to an ethers signer.

</details>
{% endupdate %}

{% update date="2025-11-04" %}

## 4.4.3

{% hint style="info" %}
**Integrator highlights**

* **Breaking:** The `vaultDeposit` function signature has changed; update all call sites.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* e704bc7: feat: update the `vaultDeposit` function signature.

</details>
{% endupdate %}

{% update date="2025-11-03" %}

## 4.4.2

{% hint style="info" %}
**Integrator highlights**

* **New:** Monad chain is now supported.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* e76546f: feat: add support for the Monad chain.

</details>
{% endupdate %}

{% update date="2025-11-03" %}

## 4.4.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* cc0e6cf: chore: internal version bump — no customer-facing changes.

</details>
{% endupdate %}

{% update date="2025-10-31" %}

## 4.4.0

{% hint style="info" %}
**Integrator highlights**

* **New:** `getVault` API version has been bumped; responses may include new schema fields.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* d4bad1a: feat: bump the `getVault` API version.

</details>
{% endupdate %}

{% update date="2025-10-31" %}

## 4.3.5

{% hint style="info" %}
**Integrator highlights**

* **New:** Added support for the farmBOLD vault.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 19ffdd2: feat: add support for the farmBOLD vault.

</details>
{% endupdate %}

{% update date="2025-10-31" %}

## 4.3.4

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* f761bfb: chore: update EOA-operator types.

</details>
{% endupdate %}

{% update date="2025-10-30" %}

## 4.3.3

{% hint style="info" %}
**Integrator highlights**

* **New:** Points response now includes a `rank` field for the user.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 92a0cef: feat: add a user `rank` to the points response.

</details>
{% endupdate %}

{% update date="2025-10-30" %}

## 4.3.2

{% hint style="info" %}
**Integrator highlights**

* **New:** Vaults now support EOA operators.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* b79ab00: chore: update the Goldsky URL.
* 051fece: feat: support EOA operators on vaults.

</details>
{% endupdate %}

{% update date="2025-10-29" %}

## 4.3.1

{% hint style="info" %}
**Integrator highlights**

* **New:** `getVault` accepts updated/additional parameters.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* cf57cc7: feat: update the parameters accepted by `getVault`.

</details>
{% endupdate %}

{% update date="2025-10-29" %}

## 4.3.0

{% hint style="info" %}
**Integrator highlights**

* **Action:** Historical APY data URL corrected; verify APY results if you cache or depend on that endpoint.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* ebccf02: fix: correct the URL used to fetch historical APY data.

</details>
{% endupdate %}

{% update date="2025-10-29" %}

## 4.2.3

{% hint style="info" %}
**Integrator highlights**

* **New:** Added support for Sentora WBTC and Sentora USCC vaults.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* fa53783: feat: add support for the Sentora WBTC and Sentora USCC vaults.

</details>
{% endupdate %}

{% update date="2025-10-23" %}

## 4.2.1

{% hint style="info" %}
**Integrator highlights**

* **New:** Goldsky subgraph configuration added for new vaults.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* d5a62f1: feat: add Goldsky subgraph configuration for new vaults.

</details>
{% endupdate %}

{% update date="2025-10-23" %}

## 4.2.0

{% hint style="info" %}
**Integrator highlights**

* **Breaking:** `getVaultTVL` now requires a `chainId` parameter for cross-chain accuracy.
* **Action:** Pass `chainId` when calling `getVaultTVL` to ensure correct results.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* bc9a666: feat: `getVaultTVL` now takes a `chainId` for cross-chain accuracy.

</details>
{% endupdate %}

{% update date="2025-10-21" %}

## 4.1.0

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* d3cec8b: chore: update the strategists fallback list.

### Patch Changes

* 8ab6dab: chore: add hardcoded fallback values for some vault metadata.

</details>
{% endupdate %}

{% update date="2025-09-22" %}

## 3.16.1

{% hint style="info" %}
**Integrator highlights**

* **New:** Raw tokens response from Debank is now exposed directly in the SDK.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 0b615f9: expose raw tokens response from debank
* Updated dependencies \[0b615f9]
  * @augustdigital/services\@3.16.1
  * @augustdigital/vaults\@3.16.1
  * @augustdigital/pools\@3.16.1
  * @augustdigital/types\@3.16.1
  * @augustdigital/utils\@3.16.1
  * @augustdigital/abis\@3.16.1

</details>
{% endupdate %}

{% update date="2025-09-19" %}

## 3.16.0

{% hint style="info" %}
**Integrator highlights**

* **New:** An optional Sentry logger can now be configured in the SDK.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 2edc611: adding an optional logger for sentry

### Patch Changes

* Updated dependencies \[2edc611]
  * @augustdigital/services\@3.16.0
  * @augustdigital/vaults\@3.16.0
  * @augustdigital/pools\@3.16.0
  * @augustdigital/types\@3.16.0
  * @augustdigital/utils\@3.16.0
  * @augustdigital/abis\@3.16.0

</details>
{% endupdate %}

{% update date="2025-09-10" %}

## 3.15.2

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 23fcd01: add xhype subgraph
* Updated dependencies \[23fcd01]
  * @augustdigital/services\@3.15.2
  * @augustdigital/vaults\@3.15.2
  * @augustdigital/pools\@3.15.2
  * @augustdigital/types\@3.15.2
  * @augustdigital/utils\@3.15.2
  * @augustdigital/abis\@3.15.2

</details>
{% endupdate %}

{% update date="2025-09-09" %}

## 3.15.1

{% hint style="info" %}
**Integrator highlights**

* **New:** Debank response now includes an error field for failed responses.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 1ef7bfb: adding coingecko key to staking
* 04c7782: add error response to debank res
* Updated dependencies \[1ef7bfb]
* Updated dependencies \[04c7782]
  * @augustdigital/services\@3.15.1
  * @augustdigital/vaults\@3.15.1
  * @augustdigital/pools\@3.15.1
  * @augustdigital/types\@3.15.1
  * @augustdigital/utils\@3.15.1
  * @augustdigital/abis\@3.15.1

</details>
{% endupdate %}

{% update date="2025-09-09" %}

## 3.15.0

{% hint style="info" %}
**Integrator highlights**

* **New:** API fallback fetch behavior has been updated.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 3bf450e: update API fallback fetch

### Patch Changes

* Updated dependencies \[3bf450e]
  * @augustdigital/services\@3.15.0
  * @augustdigital/vaults\@3.15.0
  * @augustdigital/pools\@3.15.0
  * @augustdigital/types\@3.15.0
  * @augustdigital/utils\@3.15.0
  * @augustdigital/abis\@3.15.0

</details>
{% endupdate %}

{% update date="2025-08-19" %}

## 3.13.10

{% hint style="info" %}
**Integrator highlights**

* **New:** `getWithdraws` now includes withdraw events in its returned data.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* d2e7f94: adding withdraw event to getWithdraws
* Updated dependencies \[d2e7f94]
  * @augustdigital/services\@3.13.10
  * @augustdigital/vaults\@3.13.10
  * @augustdigital/pools\@3.13.10
  * @augustdigital/types\@3.13.10
  * @augustdigital/utils\@3.13.10
  * @augustdigital/abis\@3.13.10

</details>
{% endupdate %}

{% update date="2025-08-12" %}

## 3.13.6

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* a2ca1dd: update lendiingpoolv3
* Updated dependencies \[a2ca1dd]
  * @augustdigital/services\@3.13.6
  * @augustdigital/vaults\@3.13.6
  * @augustdigital/pools\@3.13.6
  * @augustdigital/types\@3.13.6
  * @augustdigital/utils\@3.13.6
  * @augustdigital/abis\@3.13.6

</details>
{% endupdate %}

{% update date="2025-08-12" %}

## 3.13.4

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 383cf57: add upGAMMAusdc subgraph
* Updated dependencies \[383cf57]
  * @augustdigital/services\@3.13.4
  * @augustdigital/vaults\@3.13.4
  * @augustdigital/pools\@3.13.4
  * @augustdigital/types\@3.13.4
  * @augustdigital/utils\@3.13.4
  * @augustdigital/abis\@3.13.4

</details>
{% endupdate %}

{% update date="2025-08-07" %}

## 3.13.3

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[82d0738]
  * @augustdigital/utils\@3.13.3
  * @augustdigital/pools\@3.13.3
  * @augustdigital/services\@3.13.2
  * @augustdigital/vaults\@3.13.3

</details>
{% endupdate %}

{% update date="2025-08-05" %}

## 3.13.0

{% hint style="info" %}
**Integrator highlights**

* **Breaking:** Token exposure return value has been updated, which may require code changes.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 3c1913d: updating token exposure return value

### Patch Changes

* Updated dependencies \[3c1913d]
  * @augustdigital/vaults\@3.13.0
  * @augustdigital/pools\@3.13.0
  * @augustdigital/types\@3.13.0
  * @augustdigital/utils\@3.13.0
  * @augustdigital/abis\@3.13.0

</details>
{% endupdate %}

{% update date="2025-07-25" %}

## 3.12.2

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[cbf643f]
  * @augustdigital/utils\@3.12.2
  * @augustdigital/pools\@3.12.2
  * @augustdigital/vaults\@3.12.2

</details>
{% endupdate %}

{% update date="2025-07-23" %}

## 3.12.1

{% hint style="info" %}
**Integrator highlights**

* **New:** earnAUSD subgraph support added.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 4ce6f73: add earnAUSD subgraph
* Updated dependencies \[4ce6f73]
  * @augustdigital/vaults\@3.12.1
  * @augustdigital/pools\@3.12.1
  * @augustdigital/types\@3.12.1
  * @augustdigital/utils\@3.12.1
  * @augustdigital/abis\@3.12.1

</details>
{% endupdate %}

{% update date="2025-07-21" %}

## 3.12.0

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 1aa9169: fix mezo explorer

### Patch Changes

* Updated dependencies \[1aa9169]
  * @augustdigital/vaults\@3.12.0
  * @augustdigital/pools\@3.12.0
  * @augustdigital/types\@3.12.0
  * @augustdigital/utils\@3.12.0
  * @augustdigital/abis\@3.12.0

</details>
{% endupdate %}

{% update date="2025-07-17" %}

## 3.11.0

{% hint style="info" %}
**Integrator highlights**

* **New:** mezo-mUSD asset support added.
* **New:** Unichain explorer support added.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 2ab0157: adding mezo-mUSD support

### Patch Changes

* b441f0b: add unichain explorer
* Updated dependencies \[b441f0b]
* Updated dependencies \[2ab0157]
  * @augustdigital/vaults\@3.11.0
  * @augustdigital/pools\@3.11.0
  * @augustdigital/types\@3.11.0
  * @augustdigital/utils\@3.11.0
  * @augustdigital/abis\@3.11.0

</details>
{% endupdate %}

{% update date="2025-07-10" %}

## 3.9.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* e1ee449: patch bump
* Updated dependencies \[e1ee449]
  * @augustdigital/vaults\@3.9.1
  * @augustdigital/pools\@3.9.1
  * @augustdigital/types\@3.9.1
  * @augustdigital/utils\@3.9.1
  * @augustdigital/abis\@3.9.1

</details>
{% endupdate %}

{% update date="2025-06-28" %}

## 3.6.0

{% hint style="info" %}
**Integrator highlights**

* **New:** Vault and services now surface handled errors instead of throwing silently.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 1eba6a4: handled errors in vault & services

### Patch Changes

* Updated dependencies \[1eba6a4]
  * @augustdigital/vaults\@3.6.0
  * @augustdigital/utils\@3.8.0
  * @augustdigital/abis\@3.6.0
  * @augustdigital/pools\@3.6.0
  * @augustdigital/types\@3.6.0

</details>
{% endupdate %}

{% update date="2025-06-26" %}

## 3.5.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[b56895f]
  * @augustdigital/utils\@3.7.0
  * @augustdigital/pools\@3.5.1
  * @augustdigital/vaults\@3.5.1

</details>
{% endupdate %}

{% update date="2025-06-26" %}

## 3.5.0

{% hint style="info" %}
**Integrator highlights**

* **New:** HyperEVM transaction history for users is now available.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* f9edb34: add hyper evm history for user

### Patch Changes

* Updated dependencies \[f9edb34]
  * @augustdigital/abis\@3.5.0
  * @augustdigital/pools\@3.5.0
  * @augustdigital/types\@3.5.0
  * @augustdigital/utils\@3.6.0
  * @augustdigital/vaults\@3.5.0

</details>
{% endupdate %}

{% update date="2025-06-25" %}

## 3.4.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[e945c91]
  * @augustdigital/utils\@3.5.0
  * @augustdigital/pools\@3.4.1
  * @augustdigital/vaults\@3.4.1

</details>
{% endupdate %}

{% update date="2025-06-23" %}

## 3.4.0

{% hint style="info" %}
**Integrator highlights**

* **New:** Vault objects now include risk data.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* f98bdf4: update vault with risk

### Patch Changes

* Updated dependencies \[f98bdf4]
  * @augustdigital/vaults\@3.4.0
  * @augustdigital/pools\@3.4.0
  * @augustdigital/types\@3.4.0
  * @augustdigital/utils\@3.4.0
  * @augustdigital/abis\@3.4.0

</details>
{% endupdate %}

{% update date="2025-06-18" %}

## 3.3.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* b364c2b: update fetching isVisible vault logic
* Updated dependencies \[b364c2b]
  * @augustdigital/vaults\@3.3.1
  * @augustdigital/pools\@3.3.1
  * @augustdigital/types\@3.3.1
  * @augustdigital/utils\@3.3.1
  * @augustdigital/abis\@3.3.1

</details>
{% endupdate %}

{% update date="2025-06-16" %}

## 3.3.0

{% hint style="info" %}
**Integrator highlights**

* **New:** Event objects now include a hash field for easier transaction lookup.
* **New:** User history fetching behavior has been updated.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* a86b316: update
* c5c2570: update hash in events
* c9b3c1a: update
* 705637a: update fetch user history
* b6e3aba: update version

### Patch Changes

* Updated dependencies \[a86b316]
* Updated dependencies \[c5c2570]
* Updated dependencies \[c9b3c1a]
* Updated dependencies \[705637a]
* Updated dependencies \[b6e3aba]
  * @augustdigital/pools\@3.3.0
  * @augustdigital/types\@3.3.0
  * @augustdigital/utils\@3.3.0
  * @augustdigital/abis\@3.3.0
  * @augustdigital/vaults\@3.3.0

</details>
{% endupdate %}

{% update date="2025-05-27" %}

## 3.1.0

{% hint style="info" %}
**Integrator highlights**

* **New:** Pools now expose an `isFeeWaived` boolean field.
* **New:** User history data has been updated with new information.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 81ab166: add isFeeWaived to pools
* 25bc103: update user history
* 2c4618a: remove console

### Patch Changes

* Updated dependencies \[81ab166]
* Updated dependencies \[25bc103]
* Updated dependencies \[2c4618a]
  * @augustdigital/pools\@3.1.0
  * @augustdigital/types\@3.1.0
  * @augustdigital/utils\@3.1.0
  * @augustdigital/abis\@3.1.0
  * @augustdigital/sdk\@3.1.0

</details>
{% endupdate %}

{% update date="2025-05-21" %}

## 2.18.11

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[311a622]
  * @augustdigital/utils\@2.18.11
  * @augustdigital/pools\@2.18.11

</details>
{% endupdate %}

{% update date="2025-05-08" %}

## 2.18.5

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 7ebbe39: Update Injective Description
* Updated dependencies \[7ebbe39]
  * @augustdigital/pools\@2.18.5
  * @augustdigital/types\@2.18.5
  * @augustdigital/utils\@2.18.5
  * @augustdigital/abis\@2.18.5

</details>
{% endupdate %}

{% update date="2025-05-08" %}

## 2.18.4

{% hint style="info" %}
**Integrator highlights**

* **New:** A new Injective Vault USDT pool is now available.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* b6b86a0: Added Injective Vault USDT
* Updated dependencies \[b6b86a0]
  * @augustdigital/pools\@2.18.4
  * @augustdigital/types\@2.18.4
  * @augustdigital/utils\@2.18.4
  * @augustdigital/abis\@2.18.4

</details>
{% endupdate %}

{% update date="2025-04-19" %}

## 2.16.8

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* 70f3fa8: Mezo Vault Change
* Updated dependencies \[70f3fa8]
* Updated dependencies \[a3ad743]
  * @augustdigital/pools\@2.16.8
  * @augustdigital/types\@2.16.8
  * @augustdigital/utils\@2.16.8
  * @augustdigital/abis\@2.16.8

</details>
{% endupdate %}

{% update date="2025-04-18" %}

## 2.16.2

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[ba9846d]
  * @augustdigital/utils\@2.16.2
  * @augustdigital/pools\@2.16.2

</details>
{% endupdate %}

{% update date="2025-04-17" %}

## 2.16.0

{% hint style="info" %}
**Integrator highlights**

* **New:** Vault whitelist address is now publicly exposed on vault/pool data.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 9cf59d6: expose vault whitelist address

### Patch Changes

* Updated dependencies \[9cf59d6]
  * @augustdigital/pools\@2.16.0
  * @augustdigital/types\@2.16.0
  * @augustdigital/utils\@2.16.0
  * @augustdigital/abis\@2.16.0

</details>
{% endupdate %}

{% update date="2025-04-11" %}

## 2.15.0

{% hint style="info" %}
**Integrator highlights**

* **New:** OTC positions are now available and can be fetched via the SDK.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* e32fce4: add otc positions

### Patch Changes

* Updated dependencies \[e32fce4]
  * @augustdigital/pools\@2.15.0
  * @augustdigital/types\@2.15.0
  * @augustdigital/utils\@2.15.0
  * @augustdigital/abis\@2.15.0

</details>
{% endupdate %}

{% update date="2025-03-31" %}

## 2.13.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[f57d7e3]
  * @augustdigital/pools\@2.14.0
  * @augustdigital/utils\@2.14.0

</details>
{% endupdate %}

{% update date="2025-03-28" %}

## 2.13.0

{% hint style="info" %}
**Integrator highlights**

* **New:** DeBank response data is now supported in the SDK.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 83dc214: add debank response

### Patch Changes

* Updated dependencies \[83dc214]
  * @augustdigital/pools\@2.13.0
  * @augustdigital/types\@2.13.0
  * @augustdigital/utils\@2.13.0
  * @augustdigital/abis\@2.13.0

</details>
{% endupdate %}

{% update date="2025-03-25" %}

## 2.12.0

{% hint style="info" %}
**Integrator highlights**

* **New:** Protocol exposure data has been updated with new values.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* dd2cb76: update protocol exposure data

### Patch Changes

* Updated dependencies \[dd2cb76]
  * @augustdigital/pools\@2.12.0
  * @augustdigital/types\@2.12.0
  * @augustdigital/utils\@2.12.0
  * @augustdigital/abis\@2.12.0

</details>
{% endupdate %}

{% update date="2025-03-05" %}

## 2.10.2

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[dcc926f]
  * @augustdigital/abis\@2.10.2
  * @augustdigital/pools\@2.10.2
  * @augustdigital/utils\@2.10.2

</details>
{% endupdate %}

{% update date="2025-03-05" %}

## 2.10.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[f8f709d]
  * @augustdigital/abis\@2.10.1
  * @augustdigital/pools\@2.10.1
  * @augustdigital/utils\@2.10.1

</details>
{% endupdate %}

{% update date="2025-03-03" %}

## 2.10.0

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 034db45: spelling error

### Patch Changes

* Updated dependencies \[034db45]
  * @augustdigital/pools\@2.10.0
  * @augustdigital/types\@2.10.0
  * @augustdigital/utils\@2.10.0
  * @augustdigital/abis\@2.10.0

</details>
{% endupdate %}

{% update date="2025-03-03" %}

## 2.9.0

{% hint style="info" %}
**Integrator highlights**

* **New:** Idle capital data is now available in the SDK.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 31ae26a: add idle capital

### Patch Changes

* Updated dependencies \[31ae26a]
  * @augustdigital/pools\@2.9.0
  * @augustdigital/types\@2.9.0
  * @augustdigital/utils\@2.9.0
  * @augustdigital/abis\@2.9.0

</details>
{% endupdate %}

{% update date="2025-01-23" %}

## 2.6.5

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[62619e1]
  * @augustdigital/pools\@2.6.5

</details>
{% endupdate %}

{% update date="2025-01-22" %}

## 2.6.2

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[61d51d4]
  * @augustdigital/pools\@2.6.2

</details>
{% endupdate %}

{% update date="2025-01-21" %}

## 2.6.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[8d45228]
  * @augustdigital/pools\@2.6.1
  * @augustdigital/utils\@2.5.1

</details>
{% endupdate %}

{% update date="2025-01-17" %}

## 2.6.0

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* update upshift rewards typography
* d56eb68: update AVAX rewards

### Patch Changes

* Updated dependencies
* Updated dependencies \[d56eb68]
  * @augustdigital/pools\@2.6.0
  * @augustdigital/types\@2.6.0
  * @augustdigital/utils\@2.5.0
  * @augustdigital/abis\@2.5.0

</details>
{% endupdate %}

{% update date="2025-01-17" %}

## 2.5.0

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* ca9514d: update rewards for AVAX

### Patch Changes

* Updated dependencies \[ca9514d]
  * @augustdigital/pools\@2.5.0
  * @augustdigital/types\@2.5.0
  * @augustdigital/utils\@2.4.1

</details>
{% endupdate %}

{% update date="2025-01-17" %}

## 2.4.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[44876f7]
  * @augustdigital/pools\@2.4.1

</details>
{% endupdate %}

{% update date="2025-01-16" %}

## 2.4.0

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* ab136b2: update upshift points multiplier

### Patch Changes

* Updated dependencies \[ab136b2]
  * @augustdigital/pools\@2.4.0
  * @augustdigital/types\@2.4.0
  * @augustdigital/utils\@2.4.0
  * @augustdigital/abis\@2.4.0

</details>
{% endupdate %}

{% update date="2025-01-15" %}

## 2.3.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[4c562dd]
  * @augustdigital/pools\@2.3.1

</details>
{% endupdate %}

{% update date="2025-01-13" %}

## 2.3.0

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 5515b33: override managementFee

### Patch Changes

* Updated dependencies \[5515b33]
  * @augustdigital/pools\@2.3.0
  * @augustdigital/types\@2.3.0
  * @augustdigital/utils\@2.3.0
  * @augustdigital/abis\@2.3.0

</details>
{% endupdate %}

{% update date="2025-01-10" %}

## 2.2.0

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* f47df7b: updated management fee call

### Patch Changes

* Updated dependencies \[f47df7b]
  * @augustdigital/pools\@2.2.0
  * @augustdigital/types\@2.2.0
  * @augustdigital/utils\@2.2.0
  * @augustdigital/abis\@2.2.0

</details>
{% endupdate %}

{% update date="2025-01-10" %}

## 2.1.2

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[cf49466]
  * @augustdigital/pools\@2.1.1

</details>
{% endupdate %}

{% update date="2025-01-08" %}

## 2.1.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[fe65b9d]
  * @augustdigital/pools\@2.1.0
  * @augustdigital/types\@2.1.0
  * @augustdigital/utils\@2.1.3

</details>
{% endupdate %}

{% update date="2025-01-08" %}

## 2.1.0

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 8c457fa: update static keys

</details>
{% endupdate %}

{% update date="2025-01-07" %}

## 2.0.4

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[e96e036]
  * @augustdigital/pools\@2.0.4

</details>
{% endupdate %}

{% update date="2025-01-02" %}

## 2.0.3

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[0ade132]
  * @augustdigital/utils\@2.1.2
  * @augustdigital/abis\@2.1.2
  * @augustdigital/pools\@2.0.3

</details>
{% endupdate %}

{% update date="2024-12-30" %}

## 2.0.2

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[ac83b7d]
* Updated dependencies \[5c34d73]
  * @augustdigital/utils\@2.1.1
  * @augustdigital/abis\@2.1.1
  * @augustdigital/pools\@2.0.2

</details>
{% endupdate %}

{% update date="2024-12-30" %}

## 2.0.1

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* Updated dependencies \[4c16fd6]
  * @augustdigital/utils\@2.1.0
  * @augustdigital/abis\@2.1.0
  * @augustdigital/pools\@2.0.1

</details>
{% endupdate %}

{% update date="2024-12-27" %}

## 2.0.0

{% hint style="info" %}
**Integrator highlights**

* **Breaking:** This release contains breaking changes — see the full changelog below.
* **Action:** Ethena APY value has been updated; verify any hardcoded or cached APY values are refreshed.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Major Changes

* 4267b9a: update ethena apy val

### Patch Changes

* Updated dependencies \[4267b9a]
  * @augustdigital/pools\@2.0.0
  * @augustdigital/types\@2.0.0
  * @augustdigital/utils\@2.0.0
  * @augustdigital/abis\@2.0.0

</details>
{% endupdate %}

{% update date="2024-11-04" %}

## 1.3.0

{% hint style="info" %}
**Integrator highlights**

* **New:** Ava Labs aUSD pool is now available in the pools package.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* c9505a1: added ava labs ausd pool to pool package

### Patch Changes

* Updated dependencies \[c9505a1]
  * @augustdigital/pools\@1.3.0
  * @augustdigital/types\@1.3.0
  * @augustdigital/utils\@1.3.0
  * @augustdigital/abis\@1.3.0

</details>
{% endupdate %}

{% update date="2024-11-01" %}

## 1.2.0

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 3bfe99b: Added build to workflow

### Patch Changes

* Updated dependencies \[3bfe99b]
  * @augustdigital/pools\@1.2.0
  * @augustdigital/types\@1.2.0
  * @augustdigital/utils\@1.2.0
  * @augustdigital/abis\@1.2.0

</details>
{% endupdate %}

{% update date="2024-11-01" %}

## 1.1.0

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* 4504eda: Testing new github workflow"

### Patch Changes

* Updated dependencies \[4504eda]
  * @augustdigital/pools\@1.1.0
  * @augustdigital/types\@1.1.0
  * @augustdigital/utils\@1.1.0
  * @augustdigital/abis\@1.1.0

</details>
{% endupdate %}

{% update date="2024-10-26" %}

## 0.1.0

{% hint style="info" %}
**Integrator highlights**

* **New:** Pool fetchers now accept additional parameters for more granular data fetching.
  {% endhint %}

<details>

<summary>Full changelog</summary>

### Minor Changes

* f9df78f: added parameters to pool fetchers in sdk"

### Patch Changes

* Updated dependencies \[f9df78f]
  * @augustdigital/pools\@0.1.0
  * @augustdigital/types\@0.1.0
  * @augustdigital/utils\@0.1.0
  * @augustdigital/abis\@0.1.0

</details>
{% endupdate %}

{% update date="2024-10-08" %}

## 0.0.3

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* d72f854: (v0.0.3) testing github workflows
* 2f95c56: v0.0.3 edited readme and testing automated npm publish github workflow
* c388be5: (v0.0.2) changeset working appropriately
* Updated dependencies \[d72f854]
* Updated dependencies \[2f95c56]
* Updated dependencies \[c388be5]
  * @augustdigital/pools\@0.0.3
  * @augustdigital/types\@0.0.3
  * @augustdigital/utils\@0.0.3
  * @augustdigital/abis\@0.0.3

</details>
{% endupdate %}

{% update date="2024-10-08" %}

## 0.0.2

{% hint style="info" %}
**Integrator highlights** — internal changes only; no integrator action needed.
{% endhint %}

<details>

<summary>Full changelog</summary>

### Patch Changes

* (0.0.1) testing changeset
* Updated dependencies
  * @augustdigital/pools\@0.0.2
  * @augustdigital/types\@0.0.2
  * @augustdigital/utils\@0.0.2
  * @augustdigital/abis\@0.0.2

</details>
{% endupdate %}
{% endupdates %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.augustdigital.io/developers/typescript-sdk/changelog.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
