Skip to content

Commit 3d8a191

Browse files
Foulks-Plbclaude
andcommitted
feat(adapters): add type discriminant field to VaultV2 adapter interfaces
Add a `type` string literal field to each adapter interface to enable easy type narrowing via type assertion instead of instanceof checks. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent cdc0f34 commit 3d8a191

File tree

4 files changed

+19
-3
lines changed

4 files changed

+19
-3
lines changed

packages/blue-sdk/src/vault/v2/VaultV2Adapter.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,28 @@ import type { BigIntish } from "../../types.js";
33
import type { CapacityLimit } from "../../utils.js";
44

55
export interface IVaultV2Adapter {
6+
type: string;
67
address: Address;
78
parentVault: Address;
89
adapterId: Hash;
910
skimRecipient: Address;
1011
}
1112

1213
export abstract class VaultV2Adapter implements IVaultV2Adapter {
14+
public readonly type: string;
1315
public readonly address: Address;
1416
public readonly parentVault: Address;
1517
public readonly adapterId: Hash;
1618
public skimRecipient: Address;
1719

1820
constructor({
21+
type,
1922
address,
2023
parentVault,
2124
adapterId,
2225
skimRecipient,
2326
}: IVaultV2Adapter) {
27+
this.type = type;
2428
this.address = address;
2529
this.parentVault = parentVault;
2630
this.adapterId = adapterId;

packages/blue-sdk/src/vault/v2/VaultV2MorphoMarketV1Adapter.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,17 @@ import type {
1414
} from "./VaultV2Adapter.js";
1515

1616
export interface IVaultV2MorphoMarketV1Adapter
17-
extends Omit<IVaultV2Adapter, "adapterId"> {
17+
extends Omit<IVaultV2Adapter, "adapterId" | "type"> {
18+
type?: "VaultV2MorphoMarketV1Adapter";
1819
marketParamsList: IMarketParams[];
1920
}
2021

2122
export class VaultV2MorphoMarketV1Adapter
2223
extends VaultV2Adapter
2324
implements IVaultV2MorphoMarketV1Adapter
2425
{
26+
public declare readonly type: "VaultV2MorphoMarketV1Adapter";
27+
2528
static adapterId(address: Address) {
2629
return keccak256(
2730
encodeAbiParameters(
@@ -57,6 +60,7 @@ export class VaultV2MorphoMarketV1Adapter
5760
}: IVaultV2MorphoMarketV1Adapter) {
5861
super({
5962
...vaultV2Adapter,
63+
type: "VaultV2MorphoMarketV1Adapter",
6064
adapterId: VaultV2MorphoMarketV1Adapter.adapterId(vaultV2Adapter.address),
6165
});
6266

packages/blue-sdk/src/vault/v2/VaultV2MorphoMarketV1AdapterV2.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ import type {
1313
} from "./VaultV2Adapter.js";
1414

1515
export interface IVaultV2MorphoMarketV1AdapterV2
16-
extends Omit<IVaultV2Adapter, "adapterId"> {
16+
extends Omit<IVaultV2Adapter, "adapterId" | "type"> {
17+
type?: "VaultV2MorphoMarketV1AdapterV2";
1718
marketIds: MarketId[];
1819
adaptiveCurveIrm: Address;
1920
supplyShares: Record<MarketId, bigint>;
@@ -23,6 +24,8 @@ export class VaultV2MorphoMarketV1AdapterV2
2324
extends VaultV2Adapter
2425
implements IVaultV2MorphoMarketV1AdapterV2
2526
{
27+
public declare readonly type: "VaultV2MorphoMarketV1AdapterV2";
28+
2629
static adapterId(address: Address) {
2730
return keccak256(
2831
encodeAbiParameters(
@@ -62,6 +65,7 @@ export class VaultV2MorphoMarketV1AdapterV2
6265
}: IVaultV2MorphoMarketV1AdapterV2) {
6366
super({
6467
...vaultV2Adapter,
68+
type: "VaultV2MorphoMarketV1AdapterV2",
6569
adapterId: VaultV2MorphoMarketV1AdapterV2.adapterId(
6670
vaultV2Adapter.address,
6771
),

packages/blue-sdk/src/vault/v2/VaultV2MorphoVaultV1Adapter.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import { type Address, type Hex, encodeAbiParameters, keccak256 } from "viem";
33
import { VaultV2Adapter } from "./VaultV2Adapter.js";
44

55
export interface IVaultV2MorphoVaultV1Adapter
6-
extends Omit<IVaultV2Adapter, "adapterId"> {
6+
extends Omit<IVaultV2Adapter, "adapterId" | "type"> {
7+
type?: "VaultV2MorphoVaultV1Adapter";
78
morphoVaultV1: Address;
89
}
910

@@ -18,6 +19,8 @@ export class VaultV2MorphoVaultV1Adapter
1819
extends VaultV2Adapter
1920
implements IVaultV2MorphoVaultV1Adapter
2021
{
22+
public declare readonly type: "VaultV2MorphoVaultV1Adapter";
23+
2124
static adapterId(address: Address) {
2225
return keccak256(
2326
encodeAbiParameters(
@@ -35,6 +38,7 @@ export class VaultV2MorphoVaultV1Adapter
3538
}: IVaultV2MorphoVaultV1Adapter) {
3639
super({
3740
...vaultV2Adapter,
41+
type: "VaultV2MorphoVaultV1Adapter",
3842
adapterId: VaultV2MorphoVaultV1Adapter.adapterId(vaultV2Adapter.address),
3943
});
4044

0 commit comments

Comments
 (0)