From 44cf677d48df2809e5e47623b01ead6b82474749 Mon Sep 17 00:00:00 2001 From: p22z Date: Fri, 27 Feb 2026 15:36:00 +0100 Subject: [PATCH 1/7] feat(lagoon): split apyBase and apyReward for DefiLlama --- src/adaptors/lagoon/index.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/adaptors/lagoon/index.js b/src/adaptors/lagoon/index.js index 9bfa25ebe2..68fa8ad32e 100644 --- a/src/adaptors/lagoon/index.js +++ b/src/adaptors/lagoon/index.js @@ -38,6 +38,7 @@ const gqlQueries = { state { totalAssetsUsd weeklyApr { + linearNetApr linearNetAprWithoutExtraYields } } @@ -65,12 +66,19 @@ const apy = async () => { skip += 100; } const _pools = allVaults.map((vault) => { + const { linearNetApr, linearNetAprWithoutExtraYields } = + vault.state.weeklyApr; + + const apyBase = linearNetAprWithoutExtraYields; + const apyReward = linearNetApr - linearNetAprWithoutExtraYields || null; + return { pool: `lagoon-${vault.address}-${chain}`, chain, project: 'lagoon', symbol: vault.symbol, - apyBase: vault.state.weeklyApr.linearNetAprWithoutExtraYields, + apyBase, + apyReward, tvlUsd: vault.state.totalAssetsUsd || 0, underlyingTokens: [vault.asset.address], url: `https://app.lagoon.finance/vault/${vault.chain.id}/${vault.address}`, From 24419b1956d4c46a881031dd7d21cc7f2dfc433e Mon Sep 17 00:00:00 2001 From: gdupont Date: Fri, 24 Apr 2026 15:40:37 +0200 Subject: [PATCH 2/7] fix(lagoon): exclude native yield from apyReward Sum incentives[].apr + airdrops[].apr directly instead of deriving apyReward from (linearNetApr - linearNetAprWithoutExtraYields), which also includes native yield. DefiLlama's apyReward should represent reward incentives only, not yield intrinsic to the underlying asset. --- src/adaptors/lagoon/index.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/adaptors/lagoon/index.js b/src/adaptors/lagoon/index.js index 68fa8ad32e..e6459ca7e2 100644 --- a/src/adaptors/lagoon/index.js +++ b/src/adaptors/lagoon/index.js @@ -38,8 +38,13 @@ const gqlQueries = { state { totalAssetsUsd weeklyApr { - linearNetApr linearNetAprWithoutExtraYields + incentives { + apr + } + airdrops { + apr + } } } } @@ -66,11 +71,14 @@ const apy = async () => { skip += 100; } const _pools = allVaults.map((vault) => { - const { linearNetApr, linearNetAprWithoutExtraYields } = + const { linearNetAprWithoutExtraYields, incentives, airdrops } = vault.state.weeklyApr; + const sumApr = (items) => + items.reduce((acc, { apr }) => acc + (apr ?? 0), 0); + const apyBase = linearNetAprWithoutExtraYields; - const apyReward = linearNetApr - linearNetAprWithoutExtraYields || null; + const apyReward = sumApr(incentives) + sumApr(airdrops) || null; return { pool: `lagoon-${vault.address}-${chain}`, From 2a018009ac4f713ef33d98d9798b086ca326856d Mon Sep 17 00:00:00 2001 From: gdupont Date: Fri, 24 Apr 2026 16:00:05 +0200 Subject: [PATCH 3/7] fix: empty array when incentives or airdrops are null --- package-lock.json | 2 +- src/adaptors/lagoon/index.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index b1d1f00914..543dc8be60 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8263,7 +8263,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "devOptional": true + "dev": true }, "node_modules/crc-32": { "version": "1.2.2", diff --git a/src/adaptors/lagoon/index.js b/src/adaptors/lagoon/index.js index e6459ca7e2..eb77b5fa30 100644 --- a/src/adaptors/lagoon/index.js +++ b/src/adaptors/lagoon/index.js @@ -78,7 +78,8 @@ const apy = async () => { items.reduce((acc, { apr }) => acc + (apr ?? 0), 0); const apyBase = linearNetAprWithoutExtraYields; - const apyReward = sumApr(incentives) + sumApr(airdrops) || null; + const apyReward = + sumApr(incentives ?? []) + sumApr(airdrops ?? []) || null; return { pool: `lagoon-${vault.address}-${chain}`, From 3f95563e4ebe89f82c6988c3296ec5ae9d2b44da Mon Sep 17 00:00:00 2001 From: gdupont Date: Fri, 24 Apr 2026 16:00:48 +0200 Subject: [PATCH 4/7] fix: replace null by 0 --- src/adaptors/lagoon/index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/adaptors/lagoon/index.js b/src/adaptors/lagoon/index.js index eb77b5fa30..c987cdab1d 100644 --- a/src/adaptors/lagoon/index.js +++ b/src/adaptors/lagoon/index.js @@ -77,9 +77,8 @@ const apy = async () => { const sumApr = (items) => items.reduce((acc, { apr }) => acc + (apr ?? 0), 0); - const apyBase = linearNetAprWithoutExtraYields; - const apyReward = - sumApr(incentives ?? []) + sumApr(airdrops ?? []) || null; + const apyBase = linearNetAprWithoutExtraYields || 0; + const apyReward = sumApr(incentives ?? []) + sumApr(airdrops ?? []) || 0; return { pool: `lagoon-${vault.address}-${chain}`, From e3d33e7590c2700c95ac90ba8481e1533cc1d4bf Mon Sep 17 00:00:00 2001 From: gdupont Date: Fri, 24 Apr 2026 16:05:16 +0200 Subject: [PATCH 5/7] exclude vault without APY field --- src/adaptors/lagoon/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/adaptors/lagoon/index.js b/src/adaptors/lagoon/index.js index c987cdab1d..c79fa10194 100644 --- a/src/adaptors/lagoon/index.js +++ b/src/adaptors/lagoon/index.js @@ -79,7 +79,7 @@ const apy = async () => { const apyBase = linearNetAprWithoutExtraYields || 0; const apyReward = sumApr(incentives ?? []) + sumApr(airdrops ?? []) || 0; - + if (apyBase === 0 && apyReward === 0) return null; return { pool: `lagoon-${vault.address}-${chain}`, chain, From b3f8bbd87255c9d67c1825fdefc51cbf22e4f6dd Mon Sep 17 00:00:00 2001 From: gdupont Date: Fri, 24 Apr 2026 16:13:06 +0200 Subject: [PATCH 6/7] filter null vaults --- src/adaptors/lagoon/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/adaptors/lagoon/index.js b/src/adaptors/lagoon/index.js index ed892c2d1f..ac5080cde6 100644 --- a/src/adaptors/lagoon/index.js +++ b/src/adaptors/lagoon/index.js @@ -93,6 +93,7 @@ const apy = async () => { url: `https://app.lagoon.finance/vault/${vault.chain.id}/${vault.address}`, }; }); + _pools = _pools.filter(Boolean); pools = pools.concat(_pools); } From 0953e6ad4e0a56adbe13e7ee3bedb52da7ada21e Mon Sep 17 00:00:00 2001 From: gdupont Date: Fri, 24 Apr 2026 16:15:14 +0200 Subject: [PATCH 7/7] filter null vaults --- src/adaptors/lagoon/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/adaptors/lagoon/index.js b/src/adaptors/lagoon/index.js index ac5080cde6..8dca0607c8 100644 --- a/src/adaptors/lagoon/index.js +++ b/src/adaptors/lagoon/index.js @@ -93,8 +93,7 @@ const apy = async () => { url: `https://app.lagoon.finance/vault/${vault.chain.id}/${vault.address}`, }; }); - _pools = _pools.filter(Boolean); - pools = pools.concat(_pools); + pools = pools.concat(_pools.filter(Boolean)); } return pools;