From 74098c57e57ed09b77eb4a32bb61da807625ddb1 Mon Sep 17 00:00:00 2001 From: Foulks-Plb Date: Thu, 13 Nov 2025 14:07:13 +0100 Subject: [PATCH 1/5] refactor(addresses): remove morphoMarketV1AdapterFactory from ChainAddresses interface --- packages/blue-sdk/src/addresses.ts | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/packages/blue-sdk/src/addresses.ts b/packages/blue-sdk/src/addresses.ts index 4a7afd2a..d3e6c801 100644 --- a/packages/blue-sdk/src/addresses.ts +++ b/packages/blue-sdk/src/addresses.ts @@ -36,7 +36,6 @@ export interface ChainAddresses { publicAllocator?: Address; metaMorphoFactory?: Address; vaultV2Factory?: Address; - morphoMarketV1AdapterFactory?: Address; morphoVaultV1AdapterFactory?: Address; registryList?: Address; chainlinkOracleFactory?: Address; @@ -78,7 +77,6 @@ const _addressesRegistry = { publicAllocator: "0xfd32fA2ca22c76dD6E550706Ad913FC6CE91c75D", metaMorphoFactory: "0x1897A8997241C1cD4bD0698647e4EB7213535c24", vaultV2Factory: "0xA1D94F746dEfa1928926b84fB2596c06926C0405", - morphoMarketV1AdapterFactory: "0xb049465969ac6355127cDf9E88deE63d25204d5D", morphoVaultV1AdapterFactory: "0xD1B8E2dee25c2b89DCD2f98448a7ce87d6F63394", registryList: "0x3696c5eAe4a7Ffd04Ea163564571E9CD8Ed9364e", chainlinkOracleFactory: "0x3A7bB36Ee3f3eE32A60e9f2b33c1e5f2E83ad766", @@ -137,7 +135,6 @@ const _addressesRegistry = { publicAllocator: "0xA090dD1a701408Df1d4d0B85b716c87565f90467", metaMorphoFactory: "0xFf62A7c278C62eD665133147129245053Bbf5918", vaultV2Factory: "0x4501125508079A99ebBebCE205DeC9593C2b5857", - morphoMarketV1AdapterFactory: "0x133baC94306B99f6dAD85c381a5be851d8DD717c", morphoVaultV1AdapterFactory: "0xF42D9c36b34c9c2CF3Bc30eD2a52a90eEB604642", registryList: "0x5C2531Cbd2cf112Cf687da3Cd536708aDd7DB10a", chainlinkOracleFactory: "0x2DC205F24BCb6B311E5cdf0745B0741648Aebd3d", @@ -164,7 +161,6 @@ const _addressesRegistry = { publicAllocator: "0xfac15aff53ADd2ff80C2962127C434E8615Df0d3", metaMorphoFactory: "0xa9c87daB340631C34BB738625C70499e29ddDC98", vaultV2Factory: "0xC11a53eE9B1eCc7a068D8e40F8F17926584F97Cf", - morphoMarketV1AdapterFactory: "0xD1A0C86F28ecD1657Ad06415c2B230cC89D9b6dd", morphoVaultV1AdapterFactory: "0xEb174FEA51Da241eB3B516959B216e013de2888a", registryList: "0xb70a43821d2707fA9d0EDd9511CC499F468Ba564", chainlinkOracleFactory: "0x1ff7895Eb842794c5d07C4c547b6730e61295215", @@ -188,7 +184,6 @@ const _addressesRegistry = { publicAllocator: "0x769583Af5e9D03589F159EbEC31Cc2c23E8C355E", metaMorphoFactory: "0x878988f5f561081deEa117717052164ea1Ef0c82", vaultV2Factory: "0x6b46fa3cc9EBF8aB230aBAc664E37F2966Bf7971", - morphoMarketV1AdapterFactory: "0x96456Bf888D4de607Bf3ca0b3C8e4DF9b0d0Ad47", morphoVaultV1AdapterFactory: "0xD8Fc8a85779551e78B516da9f74061cb3b086793", registryList: "0xc00eb3c7aD1aE986A7f05F5A9d71aCa39c763C65", chainlinkOracleFactory: "0x98Ce5D183DC0c176f54D37162F87e7eD7f2E41b5", @@ -210,7 +205,6 @@ const _addressesRegistry = { publicAllocator: "0x0d68a97324E602E02799CD83B42D337207B40658", metaMorphoFactory: "0x3Bb6A6A0Bc85b367EFE0A5bAc81c5E52C892839a", vaultV2Factory: "0x6128b680b277Bf4Df80DFE9D8c55A498660870ef", - morphoMarketV1AdapterFactory: "0x65956d5Ba4974983ecCe111612FC0A0c22650A11", morphoVaultV1AdapterFactory: "0xEe9F7C64dD827ED7b5CAA2272936366FAca00CF3", registryList: "0xD1346be260cd22Eab9E6163010b0D5CbfAAAD32b", chainlinkOracleFactory: "0x1ec408D4131686f727F3Fd6245CF85Bc5c9DAD70", @@ -230,7 +224,6 @@ const _addressesRegistry = { publicAllocator: "0xef9889B4e443DEd35FA0Bd060f2104Cca94e6A43", metaMorphoFactory: "0x4DBB3a642a2146d5413750Cca3647086D9ba5F12", vaultV2Factory: "0x6846EA318B6B987Ee6b28eBFd87c3409F1d13108", - morphoMarketV1AdapterFactory: "0xAf93F2d8508053432659d509b0210fdF1472493D", morphoVaultV1AdapterFactory: "0xbF7DEa3756668C7E396C655D646C039826ba8416", registryList: "0x06A47994B4890dcA28C076969cedE1151d86EFCF", chainlinkOracleFactory: "0xd706690BA1Fe26b70c4AD89e60ff62cEB3A2eD02", @@ -297,7 +290,6 @@ const _addressesRegistry = { publicAllocator: "0xB0c9a107fA17c779B3378210A7a593e88938C7C9", metaMorphoFactory: "0xe9EdE3929F43a7062a007C3e8652e4ACa610Bdc0", vaultV2Factory: "0xC9b34c108014B44e5a189A830e7e04c56704a0c9", - morphoMarketV1AdapterFactory: "0x117b92Ab1C025B175ED38a0CDe5A067a745224a0", morphoVaultV1AdapterFactory: "0xf1Ab9e885C0faa0cbCEd407498BBA895537aD754", registryList: "0xB9130D2A87d7c60ED7E7e4b25bdA6e3E6841becB", chainlinkOracleFactory: "0x43269546e1D586a1f7200a0AC07e26f9631f7539", @@ -405,7 +397,6 @@ const _addressesRegistry = { publicAllocator: "0x39EB6Da5e88194C82B13491Df2e8B3E213eD2412", metaMorphoFactory: "0x1c8De6889acee12257899BFeAa2b7e534de32E16", vaultV2Factory: "0xFcb8b57E56787bB29e130Fca67f3c5a1232975D1", - morphoMarketV1AdapterFactory: "0x2e6BE3a3A27fb45c6AbA2D1833eeA48E8788538e", morphoVaultV1AdapterFactory: "0xc8D22B1adD3D176600E9952e7876e9249254cAAF", registryList: "0xA9132a09838fD20304dF2B2892679d06A4cc6371", chainlinkOracleFactory: "0x7D047fB910Bc187C18C81a69E30Fa164f8c536eC", @@ -467,7 +458,6 @@ const _addressesRegistry = { publicAllocator: "0x517505be22D9068687334e69ae7a02fC77edf4Fc", metaMorphoFactory: "0xec051b19d654C48c357dC974376DeB6272f24e53", vaultV2Factory: "0xD7217E5687FF1071356C780b5fe4803D9D967da7", - morphoMarketV1AdapterFactory: "0xc6b8B565C715134b0Ca3D6fa3D29B25759D0b9e2", morphoVaultV1AdapterFactory: "0xdf5202e29654e02011611A086f15477880580CAc", registryList: "0x857B55cEb57dA0C2A83EE08a8dB529B931089aee", chainlinkOracleFactory: "0xeb476f124FaD625178759d13557A72394A6f9aF5", @@ -516,7 +506,6 @@ const _addressesRegistry = { publicAllocator: "0x2d4cf00e18D48fD030d9b1E2FAAE6e0384C7610B", metaMorphoFactory: "0xA148a8223B622A72dC36472DE1492aBb5c089BA7", vaultV2Factory: "0x5DC11CF8BA4C39d1194F91218D35008d9F52A5d0", - morphoMarketV1AdapterFactory: "0x3267BbdC94274B4BE081c01ffc6123dA12E8c043", morphoVaultV1AdapterFactory: "0x6FaF26DD640e22457cA4fd5DA702BA3E169eEd87", registryList: "0x122Ea8ff8888C29F8736665d576e3fAEF15D27D5", chainlinkOracleFactory: "0x3FFF726062B03BfD5BC485eeEEcc92CF1d8F0105", @@ -535,7 +524,6 @@ const _addressesRegistry = { publicAllocator: "0xfd70575B732F9482F4197FE1075492e114E97302", metaMorphoFactory: "0x33f20973275B2F574488b18929cd7DCBf1AbF275", vaultV2Factory: "0x8B2F922162FBb60A6a072cC784A2E4168fB0bb0c", - morphoMarketV1AdapterFactory: "0x8Da54fbF89B3D6fC6DCC92F31CF75a211ACF3d46", morphoVaultV1AdapterFactory: "0x9f3c0999425656fD189C69a8aD68cB64986D644A", registryList: "0x6a42f8b46224baA4DbBBc2F860F4675eeA7bd52B", chainlinkOracleFactory: "0xC8659Bcd5279DB664Be973aEFd752a5326653739", @@ -573,7 +561,6 @@ const _deployments = { publicAllocator: 19375099n, metaMorphoFactory: 21439510n, vaultV2Factory: 23375073n, - morphoMarketV1AdapterFactory: 23375073n, morphoVaultV1AdapterFactory: 23375073n, registryList: 23375119n, chainlinkOracleFactory: 19375066n, @@ -594,7 +581,6 @@ const _deployments = { publicAllocator: 13979545n, metaMorphoFactory: 23928808n, vaultV2Factory: 35615206n, - morphoMarketV1AdapterFactory: 35615206n, morphoVaultV1AdapterFactory: 35615206n, registryList: 35615358n, chainlinkOracleFactory: 13978286n, @@ -615,7 +601,6 @@ const _deployments = { publicAllocator: 66931042n, metaMorphoFactory: 66931042n, vaultV2Factory: 77371907n, - morphoMarketV1AdapterFactory: 77371907n, morphoVaultV1AdapterFactory: 77371907n, registryList: 77372020n, chainlinkOracleFactory: 66931042n, @@ -635,7 +620,6 @@ const _deployments = { publicAllocator: 296446593n, metaMorphoFactory: 296447195n, vaultV2Factory: 387016724n, - morphoMarketV1AdapterFactory: 387016724n, morphoVaultV1AdapterFactory: 387016724n, registryList: 387017701n, chainlinkOracleFactory: 296447195n, @@ -653,7 +637,6 @@ const _deployments = { publicAllocator: 130770075n, metaMorphoFactory: 130770189n, vaultV2Factory: 142122059n, - morphoMarketV1AdapterFactory: 142122059n, morphoVaultV1AdapterFactory: 142122059n, registryList: 142122170n, chainlinkOracleFactory: 130770189n, @@ -669,7 +652,6 @@ const _deployments = { publicAllocator: 9025669n, metaMorphoFactory: 9025733n, vaultV2Factory: 20253005n, - morphoMarketV1AdapterFactory: 20253005n, morphoVaultV1AdapterFactory: 20253005n, registryList: 20253132n, chainlinkOracleFactory: 9025733n, @@ -724,7 +706,6 @@ const _deployments = { publicAllocator: 9139027n, metaMorphoFactory: 9316789n, vaultV2Factory: 29092109n, - morphoMarketV1AdapterFactory: 29092109n, morphoVaultV1AdapterFactory: 29092109n, registryList: 29092328n, chainlinkOracleFactory: 9316789n, @@ -812,7 +793,6 @@ const _deployments = { publicAllocator: 2741069n, metaMorphoFactory: 2741420n, vaultV2Factory: 13096629n, - morphoMarketV1AdapterFactory: 13096629n, morphoVaultV1AdapterFactory: 13096629n, registryList: 13096853n, chainlinkOracleFactory: 2741420n, @@ -864,7 +844,6 @@ const _deployments = { publicAllocator: 1988429n, metaMorphoFactory: 1988677n, vaultV2Factory: 14188393n, - morphoMarketV1AdapterFactory: 14188393n, morphoVaultV1AdapterFactory: 14188393n, registryList: 14188698n, chainlinkOracleFactory: 1988677n, @@ -906,7 +885,6 @@ const _deployments = { publicAllocator: 25072608n, metaMorphoFactory: 25072665n, vaultV2Factory: 25072951n, - morphoMarketV1AdapterFactory: 25072951n, morphoVaultV1AdapterFactory: 25072951n, registryList: 25073088n, chainlinkOracleFactory: 25072665n, @@ -922,7 +900,6 @@ const _deployments = { publicAllocator: 31907457n, metaMorphoFactory: 32320327n, vaultV2Factory: 32321811n, - morphoMarketV1AdapterFactory: 32321811n, morphoVaultV1AdapterFactory: 32321811n, registryList: 32322465n, chainlinkOracleFactory: 32320327n, From 60859f47b3b8658f29ad252359d5e7e5c532ca31 Mon Sep 17 00:00:00 2001 From: Foulks-Plb Date: Thu, 13 Nov 2025 14:23:57 +0100 Subject: [PATCH 2/5] fix(morphoMarketV1Adapter): remove references --- .../src/fetch/vault-v2/VaultV2Adapter.ts | 41 +-- .../blue-sdk-viem/test/VaultV2Adapter.test.ts | 255 +++++++++--------- 2 files changed, 131 insertions(+), 165 deletions(-) diff --git a/packages/blue-sdk-viem/src/fetch/vault-v2/VaultV2Adapter.ts b/packages/blue-sdk-viem/src/fetch/vault-v2/VaultV2Adapter.ts index 538558f9..77dff878 100644 --- a/packages/blue-sdk-viem/src/fetch/vault-v2/VaultV2Adapter.ts +++ b/packages/blue-sdk-viem/src/fetch/vault-v2/VaultV2Adapter.ts @@ -5,10 +5,7 @@ import { import type { Address, Client } from "viem"; import { getChainId, readContract } from "viem/actions"; import { morphoVaultV1AdapterFactoryAbi } from "../../abis"; -import { morphoMarketV1AdapterFactoryAbi } from "../../abis"; import type { DeploylessFetchParameters } from "../../types"; -import { fetchVaultV2MorphoMarketV1Adapter } from "./VaultV2MorphoMarketV1Adapter"; -import { fetchAccrualVaultV2MorphoMarketV1Adapter } from "./VaultV2MorphoMarketV1Adapter"; import { fetchAccrualVaultV2MorphoVaultV1Adapter, fetchVaultV2MorphoVaultV1Adapter, @@ -22,10 +19,9 @@ export async function fetchVaultV2Adapter( parameters.chainId ??= await getChainId(client); parameters.deployless ??= true; - const { morphoVaultV1AdapterFactory, morphoMarketV1AdapterFactory } = - getChainAddresses(parameters.chainId); + const { morphoVaultV1AdapterFactory } = getChainAddresses(parameters.chainId); - const [isMorphoVaultV1Adapter, isMorphoMarketV1Adapter] = await Promise.all([ + const [isMorphoVaultV1Adapter] = await Promise.all([ morphoVaultV1AdapterFactory ? readContract(client, { ...parameters, @@ -35,23 +31,11 @@ export async function fetchVaultV2Adapter( args: [address], }) : false, - morphoMarketV1AdapterFactory - ? readContract(client, { - ...parameters, - address: morphoMarketV1AdapterFactory, - abi: morphoMarketV1AdapterFactoryAbi, - functionName: "isMorphoMarketV1Adapter", - args: [address], - }) - : false, ]); if (isMorphoVaultV1Adapter) return fetchVaultV2MorphoVaultV1Adapter(address, client, parameters); - if (isMorphoMarketV1Adapter) - return fetchVaultV2MorphoMarketV1Adapter(address, client, parameters); - throw new UnsupportedVaultV2AdapterError(address); } @@ -63,10 +47,9 @@ export async function fetchAccrualVaultV2Adapter( parameters.chainId ??= await getChainId(client); parameters.deployless ??= true; - const { morphoVaultV1AdapterFactory, morphoMarketV1AdapterFactory } = - getChainAddresses(parameters.chainId); + const { morphoVaultV1AdapterFactory } = getChainAddresses(parameters.chainId); - const [isMorphoVaultV1Adapter, isMorphoMarketV1Adapter] = await Promise.all([ + const [isMorphoVaultV1Adapter] = await Promise.all([ morphoVaultV1AdapterFactory ? readContract(client, { ...parameters, @@ -76,26 +59,10 @@ export async function fetchAccrualVaultV2Adapter( args: [address], }) : false, - morphoMarketV1AdapterFactory - ? readContract(client, { - ...parameters, - address: morphoMarketV1AdapterFactory, - abi: morphoMarketV1AdapterFactoryAbi, - functionName: "isMorphoMarketV1Adapter", - args: [address], - }) - : false, ]); if (isMorphoVaultV1Adapter) return fetchAccrualVaultV2MorphoVaultV1Adapter(address, client, parameters); - if (isMorphoMarketV1Adapter) - return fetchAccrualVaultV2MorphoMarketV1Adapter( - address, - client, - parameters, - ); - throw new UnsupportedVaultV2AdapterError(address); } diff --git a/packages/blue-sdk-viem/test/VaultV2Adapter.test.ts b/packages/blue-sdk-viem/test/VaultV2Adapter.test.ts index 3985343b..4c2d2a00 100644 --- a/packages/blue-sdk-viem/test/VaultV2Adapter.test.ts +++ b/packages/blue-sdk-viem/test/VaultV2Adapter.test.ts @@ -2,7 +2,6 @@ import { AccrualVaultV2, CapacityLimitReason, MathLib, - VaultV2MorphoMarketV1Adapter, VaultV2MorphoVaultV1Adapter, } from "@morpho-org/blue-sdk"; import { @@ -32,16 +31,16 @@ const expectedDataVaultV1Adapter = new VaultV2MorphoVaultV1Adapter({ }); // VaultV2 with liquidity adapter marketV1 -const vaultV2Address2 = "0x678b8851DFcA08E40F3e31C8ABd08dE3E8E14b64"; -const vaultV2AdapterMarketV1Address = - "0x83831b31f225B3DD0e96C69D683606bE399Dc757"; +// const vaultV2Address2 = "0x678b8851DFcA08E40F3e31C8ABd08dE3E8E14b64"; +// const vaultV2AdapterMarketV1Address = +// "0x83831b31f225B3DD0e96C69D683606bE399Dc757"; -const expectedDataMarketV1Adapter = new VaultV2MorphoMarketV1Adapter({ - address: vaultV2AdapterMarketV1Address, - parentVault: vaultV2Address2, - skimRecipient: zeroAddress, - marketParamsList: [], -}); +// const expectedDataMarketV1Adapter = new VaultV2MorphoMarketV1Adapter({ +// address: vaultV2AdapterMarketV1Address, +// parentVault: vaultV2Address2, +// skimRecipient: zeroAddress, +// marketParamsList: [], +// }); describe("VaultV2Adapter", () => { describe("should fetch vaultV1 adapter", () => { @@ -70,31 +69,31 @@ describe("VaultV2Adapter", () => { }); }); - describe("should fetch marketV1 adapter", () => { - vaultV2Test("with deployless reads", async ({ client }) => { - const value = await fetchVaultV2Adapter( - vaultV2AdapterMarketV1Address, - client, - { - deployless: true, - }, - ); - - expect(value).toStrictEqual(expectedDataMarketV1Adapter); - }); - - vaultV2Test("with multicall", async ({ client }) => { - const value = await fetchVaultV2Adapter( - vaultV2AdapterMarketV1Address, - client, - { - deployless: false, - }, - ); - - expect(value).toStrictEqual(expectedDataMarketV1Adapter); - }); - }); + // describe("should fetch marketV1 adapter", () => { + // vaultV2Test("with deployless reads", async ({ client }) => { + // const value = await fetchVaultV2Adapter( + // vaultV2AdapterMarketV1Address, + // client, + // { + // deployless: true, + // }, + // ); + + // expect(value).toStrictEqual(expectedDataMarketV1Adapter); + // }); + + // vaultV2Test("with multicall", async ({ client }) => { + // const value = await fetchVaultV2Adapter( + // vaultV2AdapterMarketV1Address, + // client, + // { + // deployless: false, + // }, + // ); + + // expect(value).toStrictEqual(expectedDataMarketV1Adapter); + // }); + // }); }); describe("LiquidityAdapter vaultV1", () => { @@ -249,99 +248,99 @@ describe("LiquidityAdapter vaultV1", () => { }); }); -describe("LiquidityAdapter marketV1", () => { - describe("maxDeposit function", () => { - vaultV2Test("should be limited by balance", async ({ client }) => { - await client.writeContract({ - account: "0x707D44b65BA91C42f212e8bB61f71cc69fBf8fd7", - address: vaultV2Address2, - abi: vaultV2Abi, - functionName: "setCurator", - args: [curator], - }); - const data = encodeFunctionData({ - abi: vaultV2Abi, - functionName: "setIsAllocator", - args: [allocator, true], - }); - await client.writeContract({ - account: curator, - address: vaultV2Address2, - abi: vaultV2Abi, - functionName: "submit", - args: [data], - }); - await client.writeContract({ - account: "0x707D44b65BA91C42f212e8bB61f71cc69fBf8fd7", - address: vaultV2Address2, - abi: vaultV2Abi, - functionName: "setIsAllocator", - args: [allocator, true], - }); - await client.writeContract({ - account: allocator, - address: vaultV2Address2, - abi: vaultV2Abi, - functionName: "setLiquidityAdapterAndData", - args: [vaultV2AdapterMarketV1Address, "0x"], - }); - const accrualVaultV2 = await fetchAccrualVaultV2(vaultV2Address, client); - - const assets = parseUnits("100000", 6); // 100K assets - const result = accrualVaultV2.maxDeposit(assets); - expect(result).toStrictEqual({ - value: assets, - limiter: CapacityLimitReason.balance, - }); - }); - }); - - describe("maxWithdraw function", () => { - vaultV2Test("should be limited by balance", async ({ client }) => { - await client.writeContract({ - account: "0x707D44b65BA91C42f212e8bB61f71cc69fBf8fd7", - address: vaultV2Address2, - abi: vaultV2Abi, - functionName: "setCurator", - args: [curator], - }); - const data = encodeFunctionData({ - abi: vaultV2Abi, - functionName: "setIsAllocator", - args: [allocator, true], - }); - await client.writeContract({ - account: curator, - address: vaultV2Address2, - abi: vaultV2Abi, - functionName: "submit", - args: [data], - }); - await client.writeContract({ - account: "0x707D44b65BA91C42f212e8bB61f71cc69fBf8fd7", - address: vaultV2Address2, - abi: vaultV2Abi, - functionName: "setIsAllocator", - args: [allocator, true], - }); - await client.writeContract({ - account: allocator, - address: vaultV2Address2, - abi: vaultV2Abi, - functionName: "setLiquidityAdapterAndData", - args: [vaultV2AdapterMarketV1Address, "0x"], - }); - const accrualVaultV2 = await fetchAccrualVaultV2(vaultV2Address, client); - - const shares = parseUnits("100000", 6); // 100K shares - const result = accrualVaultV2.maxWithdraw(shares); - expect(result).toStrictEqual({ - value: 0n, - limiter: CapacityLimitReason.balance, - }); - }); - }); -}); +// describe("LiquidityAdapter marketV1", () => { +// describe("maxDeposit function", () => { +// vaultV2Test("should be limited by balance", async ({ client }) => { +// await client.writeContract({ +// account: "0x707D44b65BA91C42f212e8bB61f71cc69fBf8fd7", +// address: vaultV2Address2, +// abi: vaultV2Abi, +// functionName: "setCurator", +// args: [curator], +// }); +// const data = encodeFunctionData({ +// abi: vaultV2Abi, +// functionName: "setIsAllocator", +// args: [allocator, true], +// }); +// await client.writeContract({ +// account: curator, +// address: vaultV2Address2, +// abi: vaultV2Abi, +// functionName: "submit", +// args: [data], +// }); +// await client.writeContract({ +// account: "0x707D44b65BA91C42f212e8bB61f71cc69fBf8fd7", +// address: vaultV2Address2, +// abi: vaultV2Abi, +// functionName: "setIsAllocator", +// args: [allocator, true], +// }); +// await client.writeContract({ +// account: allocator, +// address: vaultV2Address2, +// abi: vaultV2Abi, +// functionName: "setLiquidityAdapterAndData", +// args: [vaultV2AdapterMarketV1Address, "0x"], +// }); +// const accrualVaultV2 = await fetchAccrualVaultV2(vaultV2Address, client); + +// const assets = parseUnits("100000", 6); // 100K assets +// const result = accrualVaultV2.maxDeposit(assets); +// expect(result).toStrictEqual({ +// value: assets, +// limiter: CapacityLimitReason.balance, +// }); +// }); +// }); + +// describe("maxWithdraw function", () => { +// vaultV2Test("should be limited by balance", async ({ client }) => { +// await client.writeContract({ +// account: "0x707D44b65BA91C42f212e8bB61f71cc69fBf8fd7", +// address: vaultV2Address2, +// abi: vaultV2Abi, +// functionName: "setCurator", +// args: [curator], +// }); +// const data = encodeFunctionData({ +// abi: vaultV2Abi, +// functionName: "setIsAllocator", +// args: [allocator, true], +// }); +// await client.writeContract({ +// account: curator, +// address: vaultV2Address2, +// abi: vaultV2Abi, +// functionName: "submit", +// args: [data], +// }); +// await client.writeContract({ +// account: "0x707D44b65BA91C42f212e8bB61f71cc69fBf8fd7", +// address: vaultV2Address2, +// abi: vaultV2Abi, +// functionName: "setIsAllocator", +// args: [allocator, true], +// }); +// await client.writeContract({ +// account: allocator, +// address: vaultV2Address2, +// abi: vaultV2Abi, +// functionName: "setLiquidityAdapterAndData", +// args: [vaultV2AdapterMarketV1Address, "0x"], +// }); +// const accrualVaultV2 = await fetchAccrualVaultV2(vaultV2Address, client); + +// const shares = parseUnits("100000", 6); // 100K shares +// const result = accrualVaultV2.maxWithdraw(shares); +// expect(result).toStrictEqual({ +// value: 0n, +// limiter: CapacityLimitReason.balance, +// }); +// }); +// }); +// }); describe("LiquidityAdapter zero address", () => { vaultV2Test( From f6538586c15fcaa0f18397c48fec7447b9a2c77f Mon Sep 17 00:00:00 2001 From: Foulks-Plb Date: Thu, 13 Nov 2025 18:57:06 +0100 Subject: [PATCH 3/5] feat(marketV1Adapter): remove all references --- packages/blue-api-sdk/src/cache.ts | 13 - packages/blue-api-sdk/src/types.ts | 40 +- .../GetVaultV2MorphoMarketV1Adapter.sol | 28 - .../interfaces/IMorphoMarketV1Adapter.sol | 33 -- packages/blue-sdk-viem/src/abis.ts | 480 ------------------ .../vault-v2/VaultV2MorphoMarketV1Adapter.ts | 102 ---- .../GetVaultV2MorphoMarketV1Adapter.ts | 64 --- .../vault/v2/VaultV2MorphoMarketV1Adapter.ts | 116 ----- packages/blue-sdk/src/vault/v2/index.ts | 1 - 9 files changed, 1 insertion(+), 876 deletions(-) delete mode 100644 packages/blue-sdk-viem/contracts/vault-v2/GetVaultV2MorphoMarketV1Adapter.sol delete mode 100644 packages/blue-sdk-viem/contracts/vault-v2/interfaces/IMorphoMarketV1Adapter.sol delete mode 100644 packages/blue-sdk-viem/src/fetch/vault-v2/VaultV2MorphoMarketV1Adapter.ts delete mode 100644 packages/blue-sdk-viem/src/queries/vault-v2/GetVaultV2MorphoMarketV1Adapter.ts delete mode 100644 packages/blue-sdk/src/vault/v2/VaultV2MorphoMarketV1Adapter.ts diff --git a/packages/blue-api-sdk/src/cache.ts b/packages/blue-api-sdk/src/cache.ts index 025b011b..f9bf37aa 100644 --- a/packages/blue-api-sdk/src/cache.ts +++ b/packages/blue-api-sdk/src/cache.ts @@ -868,19 +868,6 @@ export const typePolicies = { }, }, }, - MorphoMarketV1Adapter: { - fields: { - assets: { - read: readMaybeBigInt, - }, - creationBlockNumber: { - read: readMaybeBigInt, - }, - creationTimestamp: { - read: readMaybeBigInt, - }, - }, - }, MarketCollateralTransferTransactionData: { fields: { assets: { diff --git a/packages/blue-api-sdk/src/types.ts b/packages/blue-api-sdk/src/types.ts index 80e6d83b..b6cd49a1 100644 --- a/packages/blue-api-sdk/src/types.ts +++ b/packages/blue-api-sdk/src/types.ts @@ -1571,17 +1571,6 @@ export type MarketTransferTransactionData = { shares: Scalars["BigInt"]["output"]; }; -/** Market V1 cap data */ -export type MarketV1CapData = { - __typename?: "MarketV1CapData"; - /** The adapter to which this cap is associated to. Null if the adapter is not recognized. */ - adapter: Maybe; - adapterAddress: Scalars["Address"]["output"]; - /** The market to which this cap is associated. Null if the market is not recognized. */ - market: Maybe; - marketParams: MarketParams; -}; - /** Market warning */ export type MarketWarning = { __typename?: "MarketWarning"; @@ -1769,28 +1758,6 @@ export type MorphoChainlinkOracleV2Data = { scaleFactor: Scalars["BigInt"]["output"]; }; -export type MorphoMarketV1Adapter = VaultV2Adapter & { - __typename?: "MorphoMarketV1Adapter"; - address: Scalars["Address"]["output"]; - /** The assets managed by the adapter (includes virtually accrued interest). */ - assets: Scalars["BigInt"]["output"]; - /** The USD value of assets managed by the adapter (includes virtually accrued interest). */ - assetsUsd: Maybe; - chain: Chain; - creationBlockNumber: Scalars["BigInt"]["output"]; - creationTimestamp: Scalars["BigInt"]["output"]; - factory: VaultV2AdapterFactory; - id: Scalars["ID"]["output"]; - positions: PaginatedMarketPositions; - type: VaultV2AdapterType; - vault: VaultV2; -}; - -export type MorphoMarketV1AdapterPositionsArgs = { - first?: InputMaybe; - skip?: InputMaybe; -}; - /** Oracle */ export type Oracle = { __typename?: "Oracle"; @@ -3872,7 +3839,6 @@ export type VaultV2AdapterFactory = { export enum VaultV2AdapterType { MetaMorpho = "MetaMorpho", - MorphoMarketV1 = "MorphoMarketV1", } /** Vault V2 allocator */ @@ -3886,15 +3852,11 @@ export type VaultV2Allocator = { timestamp: Scalars["BigInt"]["output"]; }; -export type VaultV2CapData = - | AdapterCapData - | CollateralCapData - | MarketV1CapData; +export type VaultV2CapData = AdapterCapData | CollateralCapData; export enum VaultV2CapType { Adapter = "Adapter", Collateral = "Collateral", - MarketV1 = "MarketV1", Unknown = "Unknown", } diff --git a/packages/blue-sdk-viem/contracts/vault-v2/GetVaultV2MorphoMarketV1Adapter.sol b/packages/blue-sdk-viem/contracts/vault-v2/GetVaultV2MorphoMarketV1Adapter.sol deleted file mode 100644 index 42869baa..00000000 --- a/packages/blue-sdk-viem/contracts/vault-v2/GetVaultV2MorphoMarketV1Adapter.sol +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-License-Identifier: UNLICENSED -pragma solidity ^0.8.0; - -import {IMorphoMarketV1Adapter} from "./interfaces/IMorphoMarketV1Adapter.sol"; -import {MarketParams} from "../interfaces/IMorpho.sol"; - -struct VaultV2MorphoMarketV1AdapterResponse { - address parentVault; - address skimRecipient; - MarketParams[] marketParamsList; -} - -contract GetVaultV2MorphoMarketV1Adapter { - function query(IMorphoMarketV1Adapter adapter) - external - view - returns (VaultV2MorphoMarketV1AdapterResponse memory res) - { - res.parentVault = adapter.parentVault(); - res.skimRecipient = adapter.skimRecipient(); - - uint256 length = adapter.marketParamsListLength(); - res.marketParamsList = new MarketParams[](length); - for (uint256 i = 0; i < length; i++) { - res.marketParamsList[i] = adapter.marketParamsList(i); - } - } -} diff --git a/packages/blue-sdk-viem/contracts/vault-v2/interfaces/IMorphoMarketV1Adapter.sol b/packages/blue-sdk-viem/contracts/vault-v2/interfaces/IMorphoMarketV1Adapter.sol deleted file mode 100644 index 6195b08c..00000000 --- a/packages/blue-sdk-viem/contracts/vault-v2/interfaces/IMorphoMarketV1Adapter.sol +++ /dev/null @@ -1,33 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -// Copyright (c) 2025 Morpho Association -pragma solidity >=0.5.0; - -import {IAdapter} from "./IAdapter.sol"; -import {MarketParams} from "../../interfaces/IMorpho.sol"; - -interface IMorphoMarketV1Adapter is IAdapter { - /* EVENTS */ - - event SetSkimRecipient(address indexed newSkimRecipient); - event Skim(address indexed token, uint256 assets); - - /* ERRORS */ - - error LoanAssetMismatch(); - error NotAuthorized(); - - /* FUNCTIONS */ - - function factory() external view returns (address); - function parentVault() external view returns (address); - function asset() external view returns (address); - function morpho() external view returns (address); - function adapterId() external view returns (bytes32); - function skimRecipient() external view returns (address); - function marketParamsList(uint256 index) external view returns (MarketParams calldata); - function marketParamsListLength() external view returns (uint256); - function allocation(MarketParams memory marketParams) external view returns (uint256); - function ids(MarketParams memory marketParams) external view returns (bytes32[] memory); - function setSkimRecipient(address newSkimRecipient) external; - function skim(address token) external; -} diff --git a/packages/blue-sdk-viem/src/abis.ts b/packages/blue-sdk-viem/src/abis.ts index ef9b8e77..4cecdd02 100644 --- a/packages/blue-sdk-viem/src/abis.ts +++ b/packages/blue-sdk-viem/src/abis.ts @@ -11504,486 +11504,6 @@ export const morphoVaultV1AdapterAbi = [ }, ] as const; -export const morphoMarketV1AdapterAbi = [ - { - type: "constructor", - inputs: [ - { - name: "_parentVault", - type: "address", - internalType: "address", - }, - { - name: "_morpho", - type: "address", - internalType: "address", - }, - ], - stateMutability: "nonpayable", - }, - { - type: "function", - name: "adapterId", - inputs: [], - outputs: [ - { - name: "", - type: "bytes32", - internalType: "bytes32", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "allocate", - inputs: [ - { - name: "data", - type: "bytes", - internalType: "bytes", - }, - { - name: "assets", - type: "uint256", - internalType: "uint256", - }, - { - name: "", - type: "bytes4", - internalType: "bytes4", - }, - { - name: "", - type: "address", - internalType: "address", - }, - ], - outputs: [ - { - name: "", - type: "bytes32[]", - internalType: "bytes32[]", - }, - { - name: "", - type: "int256", - internalType: "int256", - }, - ], - stateMutability: "nonpayable", - }, - { - type: "function", - name: "allocation", - inputs: [ - { - name: "marketParams", - type: "tuple", - internalType: "struct MarketParams", - components: [ - { - name: "loanToken", - type: "address", - internalType: "address", - }, - { - name: "collateralToken", - type: "address", - internalType: "address", - }, - { - name: "oracle", - type: "address", - internalType: "address", - }, - { - name: "irm", - type: "address", - internalType: "address", - }, - { - name: "lltv", - type: "uint256", - internalType: "uint256", - }, - ], - }, - ], - outputs: [ - { - name: "", - type: "uint256", - internalType: "uint256", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "asset", - inputs: [], - outputs: [ - { - name: "", - type: "address", - internalType: "address", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "deallocate", - inputs: [ - { - name: "data", - type: "bytes", - internalType: "bytes", - }, - { - name: "assets", - type: "uint256", - internalType: "uint256", - }, - { - name: "", - type: "bytes4", - internalType: "bytes4", - }, - { - name: "", - type: "address", - internalType: "address", - }, - ], - outputs: [ - { - name: "", - type: "bytes32[]", - internalType: "bytes32[]", - }, - { - name: "", - type: "int256", - internalType: "int256", - }, - ], - stateMutability: "nonpayable", - }, - { - type: "function", - name: "factory", - inputs: [], - outputs: [ - { - name: "", - type: "address", - internalType: "address", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "ids", - inputs: [ - { - name: "marketParams", - type: "tuple", - internalType: "struct MarketParams", - components: [ - { - name: "loanToken", - type: "address", - internalType: "address", - }, - { - name: "collateralToken", - type: "address", - internalType: "address", - }, - { - name: "oracle", - type: "address", - internalType: "address", - }, - { - name: "irm", - type: "address", - internalType: "address", - }, - { - name: "lltv", - type: "uint256", - internalType: "uint256", - }, - ], - }, - ], - outputs: [ - { - name: "", - type: "bytes32[]", - internalType: "bytes32[]", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "marketParamsList", - inputs: [ - { - name: "", - type: "uint256", - internalType: "uint256", - }, - ], - outputs: [ - { - name: "loanToken", - type: "address", - internalType: "address", - }, - { - name: "collateralToken", - type: "address", - internalType: "address", - }, - { - name: "oracle", - type: "address", - internalType: "address", - }, - { - name: "irm", - type: "address", - internalType: "address", - }, - { - name: "lltv", - type: "uint256", - internalType: "uint256", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "marketParamsListLength", - inputs: [], - outputs: [ - { - name: "", - type: "uint256", - internalType: "uint256", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "morpho", - inputs: [], - outputs: [ - { - name: "", - type: "address", - internalType: "address", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "parentVault", - inputs: [], - outputs: [ - { - name: "", - type: "address", - internalType: "address", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "realAssets", - inputs: [], - outputs: [ - { - name: "", - type: "uint256", - internalType: "uint256", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "setSkimRecipient", - inputs: [ - { - name: "newSkimRecipient", - type: "address", - internalType: "address", - }, - ], - outputs: [], - stateMutability: "nonpayable", - }, - { - type: "function", - name: "skim", - inputs: [ - { - name: "token", - type: "address", - internalType: "address", - }, - ], - outputs: [], - stateMutability: "nonpayable", - }, - { - type: "function", - name: "skimRecipient", - inputs: [], - outputs: [ - { - name: "", - type: "address", - internalType: "address", - }, - ], - stateMutability: "view", - }, - { - type: "event", - name: "SetSkimRecipient", - inputs: [ - { - name: "newSkimRecipient", - type: "address", - indexed: true, - internalType: "address", - }, - ], - anonymous: false, - }, - { - type: "event", - name: "Skim", - inputs: [ - { - name: "token", - type: "address", - indexed: true, - internalType: "address", - }, - { - name: "assets", - type: "uint256", - indexed: false, - internalType: "uint256", - }, - ], - anonymous: false, - }, - { - type: "error", - name: "ApproveReturnedFalse", - inputs: [], - }, - { - type: "error", - name: "ApproveReverted", - inputs: [], - }, - { - type: "error", - name: "LoanAssetMismatch", - inputs: [], - }, - { - type: "error", - name: "NoCode", - inputs: [], - }, - { - type: "error", - name: "NotAuthorized", - inputs: [], - }, - { - type: "error", - name: "TransferReturnedFalse", - inputs: [], - }, - { - type: "error", - name: "TransferReverted", - inputs: [], - }, -] as const; - -export const morphoMarketV1AdapterFactoryAbi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "parentVault", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "morpho", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "morphoMarketV1Adapter", - type: "address", - }, - ], - name: "CreateMorphoMarketV1Adapter", - type: "event", - }, - { - inputs: [ - { internalType: "address", name: "parentVault", type: "address" }, - { internalType: "address", name: "morpho", type: "address" }, - ], - name: "createMorphoMarketV1Adapter", - outputs: [{ internalType: "address", name: "", type: "address" }], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [{ internalType: "address", name: "account", type: "address" }], - name: "isMorphoMarketV1Adapter", - outputs: [{ internalType: "bool", name: "", type: "bool" }], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { internalType: "address", name: "parentVault", type: "address" }, - { internalType: "address", name: "morpho", type: "address" }, - ], - name: "morphoMarketV1Adapter", - outputs: [{ internalType: "address", name: "", type: "address" }], - stateMutability: "view", - type: "function", - }, -]; - /** * @deprecated Use `morphoVaultV1AdapterFactoryAbi` instead. */ diff --git a/packages/blue-sdk-viem/src/fetch/vault-v2/VaultV2MorphoMarketV1Adapter.ts b/packages/blue-sdk-viem/src/fetch/vault-v2/VaultV2MorphoMarketV1Adapter.ts deleted file mode 100644 index 63e32511..00000000 --- a/packages/blue-sdk-viem/src/fetch/vault-v2/VaultV2MorphoMarketV1Adapter.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { - AccrualVaultV2MorphoMarketV1Adapter, - VaultV2MorphoMarketV1Adapter, -} from "@morpho-org/blue-sdk"; -import type { Address, Client } from "viem"; -import { getChainId, readContract } from "viem/actions"; -import { morphoMarketV1AdapterAbi } from "../../abis"; -import { - abi, - code, -} from "../../queries/vault-v2/GetVaultV2MorphoMarketV1Adapter"; -import type { DeploylessFetchParameters } from "../../types"; -import { readContractRestructured } from "../../utils"; -import { fetchAccrualPosition } from "../Position"; - -export async function fetchVaultV2MorphoMarketV1Adapter( - address: Address, - client: Client, - { deployless = true, ...parameters }: DeploylessFetchParameters = {}, -) { - parameters.chainId ??= await getChainId(client); - - if (deployless) { - try { - const adapter = await readContract(client, { - ...parameters, - abi, - code, - functionName: "query", - args: [address], - }); - - return new VaultV2MorphoMarketV1Adapter({ - ...adapter, - marketParamsList: [...adapter.marketParamsList], - address, - }); - } catch { - // Fallback to multicall if deployless call fails. - } - } - - const [parentVault, skimRecipient, marketParamsListLength] = - await Promise.all([ - readContract(client, { - ...parameters, - address, - abi: morphoMarketV1AdapterAbi, - functionName: "parentVault", - }), - readContract(client, { - ...parameters, - address, - abi: morphoMarketV1AdapterAbi, - functionName: "skimRecipient", - }), - readContract(client, { - ...parameters, - address, - abi: morphoMarketV1AdapterAbi, - functionName: "marketParamsListLength", - }), - ]); - - const marketParamsList = await Promise.all( - Array.from({ length: Number(marketParamsListLength) }, (_, i) => - readContractRestructured(client, { - ...parameters, - address, - abi: morphoMarketV1AdapterAbi, - functionName: "marketParamsList", - args: [BigInt(i)], - }), - ), - ); - - return new VaultV2MorphoMarketV1Adapter({ - parentVault, - skimRecipient, - address, - marketParamsList, - }); -} - -export async function fetchAccrualVaultV2MorphoMarketV1Adapter( - address: Address, - client: Client, - parameters: DeploylessFetchParameters = {}, -) { - const adapter = await fetchVaultV2MorphoMarketV1Adapter( - address, - client, - parameters, - ); - const positions = await Promise.all( - adapter.marketParamsList.map((params) => - fetchAccrualPosition(address, params.id, client, parameters), - ), - ); - - return new AccrualVaultV2MorphoMarketV1Adapter(adapter, positions); -} diff --git a/packages/blue-sdk-viem/src/queries/vault-v2/GetVaultV2MorphoMarketV1Adapter.ts b/packages/blue-sdk-viem/src/queries/vault-v2/GetVaultV2MorphoMarketV1Adapter.ts deleted file mode 100644 index d74c3576..00000000 --- a/packages/blue-sdk-viem/src/queries/vault-v2/GetVaultV2MorphoMarketV1Adapter.ts +++ /dev/null @@ -1,64 +0,0 @@ -export const abi = [ - { - inputs: [ - { - internalType: "contract IMorphoMarketV1Adapter", - name: "adapter", - type: "address", - }, - ], - name: "query", - outputs: [ - { - components: [ - { - internalType: "address", - name: "parentVault", - type: "address", - }, - { - internalType: "address", - name: "skimRecipient", - type: "address", - }, - { - components: [ - { - internalType: "address", - name: "loanToken", - type: "address", - }, - { - internalType: "address", - name: "collateralToken", - type: "address", - }, - { - internalType: "address", - name: "oracle", - type: "address", - }, - { internalType: "address", name: "irm", type: "address" }, - { - internalType: "uint256", - name: "lltv", - type: "uint256", - }, - ], - internalType: "struct MarketParams[]", - name: "marketParamsList", - type: "tuple[]", - }, - ], - internalType: "struct VaultV2MorphoMarketV1AdapterResponse", - name: "res", - type: "tuple", - }, - ], - stateMutability: "view", - type: "function", - }, -] as const; - -export const code = - "0x608080604052346015576104a2908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c63d4fc9fc614610025575f80fd5b346102ca5760203660031901126102ca576004356001600160a01b03811691908290036102ca576060810181811067ffffffffffffffff8211176103c6576040525f815260208101915f83526040820190606082526040516307f1b29b60e11b8152602081600481855afa9081156102d6575f9161038c575b506001600160a01b0316835260405163388af5b560e01b8152602081600481855afa9081156102d6575f91610352575b506001600160a01b0316845260405163b045ff5b60e01b815290602082600481845afa9182156102d6575f9261031e575b5061010d829594939561042c565b61011a60405191826103f6565b828152601f196101298461042c565b015f5b8181106102e157505085525f5b8281106101ef57505060408051602080825293516001600160a01b03908116858301529451909416908401525091516060808301528051608083018190529192839260a0840192909101905f5b818110610194575050500390f35b825180516001600160a01b039081168652602082810151821681880152604080840151831690880152606080840151909216918701919091526080918201519186019190915286955060a09094019390920191600101610186565b604051631f1a892160e11b815260048101829052949593949060a082602481865afa9182156102d6575f92610245575b5061023a816001938751906102348383610444565b52610444565b500194939294610139565b915060a0823d82116102ce575b8161025f60a093836103f6565b810103126102ca5761023a8160019360806040519161027d836103da565b61028681610418565b835261029460208201610418565b60208401526102a560408201610418565b60408401526102b660608201610418565b60608401520151608082015293505061021f565b5f80fd5b3d9150610252565b6040513d5f823e3d90fd5b602090604098969798516102f4816103da565b5f81525f838201525f60408201525f60608201525f6080820152828286010152019695949661012c565b9091506020813d60201161034a575b8161033a602093836103f6565b810103126102ca5751905f6100ff565b3d915061032d565b90506020813d602011610384575b8161036d602093836103f6565b810103126102ca5761037e90610418565b5f6100ce565b3d9150610360565b90506020813d6020116103be575b816103a7602093836103f6565b810103126102ca576103b890610418565b5f61009e565b3d915061039a565b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176103c657604052565b90601f8019910116810190811067ffffffffffffffff8211176103c657604052565b51906001600160a01b03821682036102ca57565b67ffffffffffffffff81116103c65760051b60200190565b80518210156104585760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfea26469706673582212207bc9b43d52db27e875ce34abdf262ca8c42d6dbd8e2ed76189f5a1d102c7c72b64736f6c634300081b0033"; diff --git a/packages/blue-sdk/src/vault/v2/VaultV2MorphoMarketV1Adapter.ts b/packages/blue-sdk/src/vault/v2/VaultV2MorphoMarketV1Adapter.ts deleted file mode 100644 index faa75600..00000000 --- a/packages/blue-sdk/src/vault/v2/VaultV2MorphoMarketV1Adapter.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { type Address, type Hex, encodeAbiParameters, keccak256 } from "viem"; -import { - type IMarketParams, - MarketParams, - marketParamsAbi, -} from "../../market"; -import type { AccrualPosition } from "../../position"; -import type { BigIntish } from "../../types"; -import { CapacityLimitReason } from "../../utils"; -import { VaultV2Adapter } from "./VaultV2Adapter"; -import type { IAccrualVaultV2Adapter, IVaultV2Adapter } from "./VaultV2Adapter"; - -export interface IVaultV2MorphoMarketV1Adapter - extends Omit { - marketParamsList: IMarketParams[]; -} - -export class VaultV2MorphoMarketV1Adapter - extends VaultV2Adapter - implements IVaultV2MorphoMarketV1Adapter -{ - static adapterId(address: Address) { - return keccak256( - encodeAbiParameters( - [{ type: "string" }, { type: "address" }], - ["this", address], - ), - ); - } - - static collateralId(address: Address) { - return keccak256( - encodeAbiParameters( - [{ type: "string" }, { type: "address" }], - ["collateralToken", address], - ), - ); - } - - static marketParamsId(address: Address, params: MarketParams) { - return keccak256( - encodeAbiParameters( - [{ type: "string" }, { type: "address" }, marketParamsAbi], - ["this/marketParams", address, params], - ), - ); - } - - public marketParamsList: MarketParams[]; - - constructor({ - marketParamsList, - ...vaultV2Adapter - }: IVaultV2MorphoMarketV1Adapter) { - super({ - ...vaultV2Adapter, - adapterId: VaultV2MorphoMarketV1Adapter.adapterId(vaultV2Adapter.address), - }); - - this.marketParamsList = marketParamsList.map( - (params) => new MarketParams(params), - ); - } - - public ids(params: MarketParams) { - return [ - this.adapterId, - VaultV2MorphoMarketV1Adapter.collateralId(params.collateralToken), - VaultV2MorphoMarketV1Adapter.marketParamsId(this.address, params), - ]; - } -} - -export interface IAccrualVaultV2MorphoMarketV1Adapter - extends IVaultV2MorphoMarketV1Adapter {} - -export class AccrualVaultV2MorphoMarketV1Adapter - extends VaultV2MorphoMarketV1Adapter - implements IAccrualVaultV2MorphoMarketV1Adapter, IAccrualVaultV2Adapter -{ - constructor( - adapter: IAccrualVaultV2MorphoMarketV1Adapter, - public positions: AccrualPosition[], - ) { - super(adapter); - } - - realAssets(timestamp?: BigIntish) { - return this.positions.reduce( - (total, position) => - total + position.accrueInterest(timestamp).supplyAssets, - 0n, - ); - } - - maxDeposit(_data: Hex, assets: BigIntish) { - return { - value: BigInt(assets), - limiter: CapacityLimitReason.balance, - }; - } - - maxWithdraw(data: Hex) { - const marketId = MarketParams.fromHex(data).id; - const position = this.positions.find( - (position) => position.marketId === marketId, - ); - - return ( - position?.market?.getWithdrawCapacityLimit(position) ?? { - value: 0n, - limiter: CapacityLimitReason.position, - } - ); - } -} diff --git a/packages/blue-sdk/src/vault/v2/index.ts b/packages/blue-sdk/src/vault/v2/index.ts index b3750f3e..1f760a1d 100644 --- a/packages/blue-sdk/src/vault/v2/index.ts +++ b/packages/blue-sdk/src/vault/v2/index.ts @@ -1,4 +1,3 @@ export * from "./VaultV2.js"; export * from "./VaultV2Adapter.js"; -export * from "./VaultV2MorphoMarketV1Adapter.js"; export * from "./VaultV2MorphoVaultV1Adapter.js"; From aacac0a1c33fc7b563c691079c84e9ace022b0df Mon Sep 17 00:00:00 2001 From: Foulks-Plb Date: Fri, 14 Nov 2025 10:22:29 +0100 Subject: [PATCH 4/5] feat(morphoMarketV1Adapter): revert remove type definitions and cache policies --- packages/blue-api-sdk/src/cache.ts | 13 ++++++++++ packages/blue-api-sdk/src/types.ts | 39 +++++++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/packages/blue-api-sdk/src/cache.ts b/packages/blue-api-sdk/src/cache.ts index f9bf37aa..025b011b 100644 --- a/packages/blue-api-sdk/src/cache.ts +++ b/packages/blue-api-sdk/src/cache.ts @@ -868,6 +868,19 @@ export const typePolicies = { }, }, }, + MorphoMarketV1Adapter: { + fields: { + assets: { + read: readMaybeBigInt, + }, + creationBlockNumber: { + read: readMaybeBigInt, + }, + creationTimestamp: { + read: readMaybeBigInt, + }, + }, + }, MarketCollateralTransferTransactionData: { fields: { assets: { diff --git a/packages/blue-api-sdk/src/types.ts b/packages/blue-api-sdk/src/types.ts index b6cd49a1..db8b5ed7 100644 --- a/packages/blue-api-sdk/src/types.ts +++ b/packages/blue-api-sdk/src/types.ts @@ -1571,6 +1571,16 @@ export type MarketTransferTransactionData = { shares: Scalars["BigInt"]["output"]; }; +export type MarketV1CapData = { + __typename?: "MarketV1CapData"; + /** The adapter to which this cap is associated to. Null if the adapter is not recognized. */ + adapter: Maybe; + adapterAddress: Scalars["Address"]["output"]; + /** The market to which this cap is associated. Null if the market is not recognized. */ + market: Maybe; + marketParams: MarketParams; +}; + /** Market warning */ export type MarketWarning = { __typename?: "MarketWarning"; @@ -1758,6 +1768,28 @@ export type MorphoChainlinkOracleV2Data = { scaleFactor: Scalars["BigInt"]["output"]; }; +export type MorphoMarketV1Adapter = VaultV2Adapter & { + __typename?: "MorphoMarketV1Adapter"; + address: Scalars["Address"]["output"]; + /** The assets managed by the adapter (includes virtually accrued interest). */ + assets: Scalars["BigInt"]["output"]; + /** The USD value of assets managed by the adapter (includes virtually accrued interest). */ + assetsUsd: Maybe; + chain: Chain; + creationBlockNumber: Scalars["BigInt"]["output"]; + creationTimestamp: Scalars["BigInt"]["output"]; + factory: VaultV2AdapterFactory; + id: Scalars["ID"]["output"]; + positions: PaginatedMarketPositions; + type: VaultV2AdapterType; + vault: VaultV2; +}; + +export type MorphoMarketV1AdapterPositionsArgs = { + first?: InputMaybe; + skip?: InputMaybe; +}; + /** Oracle */ export type Oracle = { __typename?: "Oracle"; @@ -3839,6 +3871,7 @@ export type VaultV2AdapterFactory = { export enum VaultV2AdapterType { MetaMorpho = "MetaMorpho", + MorphoMarketV1 = "MorphoMarketV1", } /** Vault V2 allocator */ @@ -3852,11 +3885,15 @@ export type VaultV2Allocator = { timestamp: Scalars["BigInt"]["output"]; }; -export type VaultV2CapData = AdapterCapData | CollateralCapData; +export type VaultV2CapData = + | AdapterCapData + | CollateralCapData + | MarketV1CapData; export enum VaultV2CapType { Adapter = "Adapter", Collateral = "Collateral", + MarketV1 = "MarketV1", Unknown = "Unknown", } From b782a421b055c5a9525bc8fe8e65fa5ee45f7262 Mon Sep 17 00:00:00 2001 From: Foulks-Plb Date: Fri, 14 Nov 2025 14:34:56 +0100 Subject: [PATCH 5/5] feat(types): add MarketV1CapData type definition --- packages/blue-api-sdk/src/types.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/blue-api-sdk/src/types.ts b/packages/blue-api-sdk/src/types.ts index db8b5ed7..80e6d83b 100644 --- a/packages/blue-api-sdk/src/types.ts +++ b/packages/blue-api-sdk/src/types.ts @@ -1571,6 +1571,7 @@ export type MarketTransferTransactionData = { shares: Scalars["BigInt"]["output"]; }; +/** Market V1 cap data */ export type MarketV1CapData = { __typename?: "MarketV1CapData"; /** The adapter to which this cap is associated to. Null if the adapter is not recognized. */