@steerprotocol/sdk 1.29.3 → 1.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/base/VaultClient.js +430 -78
- package/dist/cjs/base/VaultClient.js.map +1 -1
- package/dist/cjs/utils/SubgraphVaultClient.js +11 -1
- package/dist/cjs/utils/SubgraphVaultClient.js.map +1 -1
- package/dist/esm/base/VaultClient.js +431 -79
- package/dist/esm/base/VaultClient.js.map +1 -1
- package/dist/esm/utils/SubgraphVaultClient.js +11 -1
- package/dist/esm/utils/SubgraphVaultClient.js.map +1 -1
- package/dist/types/base/VaultClient.d.ts +43 -1
- package/dist/types/base/VaultClient.d.ts.map +1 -1
- package/dist/types/utils/SubgraphVaultClient.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/base/VaultClient.protocol-filter.test.ts +179 -0
- package/src/__tests__/base/VaultClient.test.ts +4 -3
- package/src/base/VaultClient.ts +520 -83
- package/src/utils/SubgraphVaultClient.ts +12 -1
|
@@ -125,6 +125,11 @@ export interface VaultFilter {
|
|
|
125
125
|
isActive?: boolean;
|
|
126
126
|
beaconName?: string;
|
|
127
127
|
}
|
|
128
|
+
export interface ApiVaultFilter {
|
|
129
|
+
chainId?: number;
|
|
130
|
+
isActive?: boolean;
|
|
131
|
+
beaconName?: string;
|
|
132
|
+
}
|
|
128
133
|
export interface TokenFilter {
|
|
129
134
|
chainId?: number;
|
|
130
135
|
symbol?: string;
|
|
@@ -269,8 +274,16 @@ export declare class VaultClient extends SubgraphClient {
|
|
|
269
274
|
* @param subgraphStudioKey - Optional subgraph studio key for protocol data fetching
|
|
270
275
|
*/
|
|
271
276
|
constructor(publicClient: PublicClient, walletClient: WalletClient, environment: 'production' | 'development', version?: 'v1', subgraphStudioKey?: string);
|
|
277
|
+
private normalizeProtocolValue;
|
|
278
|
+
private resolveProtocolEnum;
|
|
279
|
+
private getProtocolBeaconNames;
|
|
280
|
+
private getPrimaryProtocolBeaconName;
|
|
281
|
+
private buildApiVaultFilter;
|
|
282
|
+
private vaultMatchesProtocolFilter;
|
|
283
|
+
private applyProtocolFilter;
|
|
272
284
|
/**
|
|
273
285
|
* Gets vaults with pagination support
|
|
286
|
+
* Fetches ALL data from both API (database) and subgraph in parallel, merges without duplicates, then paginates
|
|
274
287
|
* @param filter - Optional filter criteria
|
|
275
288
|
* @param first - Number of items to fetch (default: 50)
|
|
276
289
|
* @param after - Cursor for pagination (null for first page)
|
|
@@ -306,7 +319,36 @@ export declare class VaultClient extends SubgraphClient {
|
|
|
306
319
|
*/
|
|
307
320
|
getVaults(filter?: VaultFilter, first?: number, after?: string | null): Promise<SteerResponse<VaultsConnection>>;
|
|
308
321
|
/**
|
|
309
|
-
*
|
|
322
|
+
* Fetches ALL vaults from API (database) by auto-paginating
|
|
323
|
+
* @private
|
|
324
|
+
*/
|
|
325
|
+
private getAllVaultsFromApi;
|
|
326
|
+
/**
|
|
327
|
+
* Fetches vaults from API (database) with pagination
|
|
328
|
+
* @private
|
|
329
|
+
*/
|
|
330
|
+
private getVaultsFromApi;
|
|
331
|
+
/**
|
|
332
|
+
* Merges vault results from API and subgraph, removing duplicates
|
|
333
|
+
* Prioritizes API data when duplicates are found
|
|
334
|
+
* Generates consistent cursors for the merged dataset
|
|
335
|
+
* @private
|
|
336
|
+
*/
|
|
337
|
+
private mergeVaultResults;
|
|
338
|
+
/**
|
|
339
|
+
* Applies pagination to vault results
|
|
340
|
+
* @private
|
|
341
|
+
*/
|
|
342
|
+
private paginateVaults;
|
|
343
|
+
/**
|
|
344
|
+
* Fetches ALL vaults from subgraph (no pagination)
|
|
345
|
+
* @param filter - Optional filter criteria
|
|
346
|
+
* @returns Promise resolving to all vaults data from subgraph
|
|
347
|
+
* @private
|
|
348
|
+
*/
|
|
349
|
+
private getAllVaultsFromSubgraph;
|
|
350
|
+
/**
|
|
351
|
+
* Fallback method to fetch vaults from subgraph with pagination
|
|
310
352
|
* @param filter - Optional filter criteria
|
|
311
353
|
* @param first - Number of items to fetch (default: 50)
|
|
312
354
|
* @param after - Cursor for pagination (null for first page)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VaultClient.d.ts","sourceRoot":"","sources":["../../../src/base/VaultClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"VaultClient.d.ts","sourceRoot":"","sources":["../../../src/base/VaultClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubgraphVaultClient.d.ts","sourceRoot":"","sources":["../../../src/utils/SubgraphVaultClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG7E,OAAO,EAIL,8BAA8B,EAC9B,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAiK1B;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAC4C;IAE3E;;OAEG;IACH,OAAO,CAAC,iCAAiC;IA8CzC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkC7B;;OAEG;IACU,wBAAwB,CACnC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,8BAA8B,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"SubgraphVaultClient.d.ts","sourceRoot":"","sources":["../../../src/utils/SubgraphVaultClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG7E,OAAO,EAIL,8BAA8B,EAC9B,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAiK1B;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAC4C;IAE3E;;OAEG;IACH,OAAO,CAAC,iCAAiC;IA8CzC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAkC7B;;OAEG;IACU,wBAAwB,CACnC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,8BAA8B,EAAE,CAAC;IA6F5C;;OAEG;IACI,2BAA2B,CAChC,MAAM,EAAE,8BAA8B,EAAE,EACxC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,YAAK,EAClB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,gBAAgB;CA8BpB"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import type { PublicClient, WalletClient } from 'viem';
|
|
2
|
+
import { VaultClient } from '../../base/VaultClient.js';
|
|
3
|
+
import { ChainId } from '../../const/chain.js';
|
|
4
|
+
|
|
5
|
+
type ApiVaultEdge = {
|
|
6
|
+
cursor: string;
|
|
7
|
+
node: {
|
|
8
|
+
id: string;
|
|
9
|
+
chainId: number;
|
|
10
|
+
vaultAddress: string;
|
|
11
|
+
protocol: string;
|
|
12
|
+
beaconName: string;
|
|
13
|
+
protocolBaseType: string;
|
|
14
|
+
name: string;
|
|
15
|
+
feeApr?: number | null;
|
|
16
|
+
stakingApr?: number | null;
|
|
17
|
+
merklApr?: number | null;
|
|
18
|
+
pool?: {
|
|
19
|
+
id?: string;
|
|
20
|
+
poolAddress?: string;
|
|
21
|
+
feeTier?: string;
|
|
22
|
+
};
|
|
23
|
+
token0?: {
|
|
24
|
+
id?: string;
|
|
25
|
+
symbol?: string;
|
|
26
|
+
name?: string;
|
|
27
|
+
decimals?: number;
|
|
28
|
+
address?: string;
|
|
29
|
+
chainId?: number;
|
|
30
|
+
};
|
|
31
|
+
token1?: {
|
|
32
|
+
id?: string;
|
|
33
|
+
symbol?: string;
|
|
34
|
+
name?: string;
|
|
35
|
+
decimals?: number;
|
|
36
|
+
address?: string;
|
|
37
|
+
chainId?: number;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const buildApiVaultEdge = (
|
|
43
|
+
id: string,
|
|
44
|
+
protocol: string,
|
|
45
|
+
beaconName: string = `MultiPosition${protocol}`
|
|
46
|
+
): ApiVaultEdge => ({
|
|
47
|
+
cursor: id,
|
|
48
|
+
node: {
|
|
49
|
+
id,
|
|
50
|
+
chainId: ChainId.Polygon,
|
|
51
|
+
vaultAddress: `0x${id.padEnd(40, '0').slice(0, 40)}`,
|
|
52
|
+
protocol,
|
|
53
|
+
beaconName,
|
|
54
|
+
protocolBaseType: protocol,
|
|
55
|
+
name: `${protocol} vault`,
|
|
56
|
+
pool: {
|
|
57
|
+
id: `pool-${id}`,
|
|
58
|
+
poolAddress: `pool-${id}`,
|
|
59
|
+
feeTier: '3000',
|
|
60
|
+
},
|
|
61
|
+
token0: {
|
|
62
|
+
id: 'token0',
|
|
63
|
+
symbol: 'USDC',
|
|
64
|
+
name: 'USD Coin',
|
|
65
|
+
decimals: 6,
|
|
66
|
+
address: '0x0000000000000000000000000000000000000001',
|
|
67
|
+
chainId: ChainId.Polygon,
|
|
68
|
+
},
|
|
69
|
+
token1: {
|
|
70
|
+
id: 'token1',
|
|
71
|
+
symbol: 'WETH',
|
|
72
|
+
name: 'Wrapped Ether',
|
|
73
|
+
decimals: 18,
|
|
74
|
+
address: '0x0000000000000000000000000000000000000002',
|
|
75
|
+
chainId: ChainId.Polygon,
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
const buildApiVaultsResponse = (
|
|
81
|
+
edges: ApiVaultEdge[],
|
|
82
|
+
hasNextPage: boolean,
|
|
83
|
+
endCursor: string | null,
|
|
84
|
+
totalCount: number = edges.length
|
|
85
|
+
) => ({
|
|
86
|
+
status: 200,
|
|
87
|
+
data: {
|
|
88
|
+
vaults: {
|
|
89
|
+
edges,
|
|
90
|
+
pageInfo: {
|
|
91
|
+
hasNextPage,
|
|
92
|
+
endCursor,
|
|
93
|
+
},
|
|
94
|
+
totalCount,
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
describe('VaultClient protocol filtering', () => {
|
|
100
|
+
let vaultClient: VaultClient;
|
|
101
|
+
let vaultsMock: jest.Mock;
|
|
102
|
+
|
|
103
|
+
beforeEach(() => {
|
|
104
|
+
vaultClient = new VaultClient(
|
|
105
|
+
{} as PublicClient,
|
|
106
|
+
{} as WalletClient,
|
|
107
|
+
'production'
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
vaultsMock = jest.fn();
|
|
111
|
+
(vaultClient as unknown as { apiClient: { vaults: jest.Mock } }).apiClient = {
|
|
112
|
+
vaults: vaultsMock,
|
|
113
|
+
};
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
it('filters getVaults results by protocol even when API returns mixed protocols', async () => {
|
|
117
|
+
vaultsMock.mockResolvedValue(
|
|
118
|
+
buildApiVaultsResponse(
|
|
119
|
+
[
|
|
120
|
+
buildApiVaultEdge('vault-sushi', 'Sushi', 'MultiPositionSushi'),
|
|
121
|
+
buildApiVaultEdge('vault-uni', 'Uniswap', 'MultiPositionUniswapV3'),
|
|
122
|
+
],
|
|
123
|
+
false,
|
|
124
|
+
null
|
|
125
|
+
)
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
const response = await vaultClient.getVaults({
|
|
129
|
+
chainId: ChainId.Polygon,
|
|
130
|
+
protocol: 'sushi',
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
expect(response.success).toBe(true);
|
|
134
|
+
expect(response.status).toBe(200);
|
|
135
|
+
expect(response.data?.edges).toHaveLength(1);
|
|
136
|
+
expect(response.data?.edges[0]?.node.id).toBe('vault-sushi');
|
|
137
|
+
expect(response.data?.edges[0]?.node.protocol).toBe('Sushi');
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
it('filters all pages in getAllVaults by protocol', async () => {
|
|
141
|
+
vaultsMock
|
|
142
|
+
.mockResolvedValueOnce(
|
|
143
|
+
buildApiVaultsResponse(
|
|
144
|
+
[
|
|
145
|
+
buildApiVaultEdge('vault-uni-1', 'Uniswap', 'MultiPositionUniswapV3'),
|
|
146
|
+
buildApiVaultEdge('vault-sushi-1', 'Sushi', 'MultiPositionSushi'),
|
|
147
|
+
],
|
|
148
|
+
true,
|
|
149
|
+
'cursor-1',
|
|
150
|
+
4
|
|
151
|
+
)
|
|
152
|
+
)
|
|
153
|
+
.mockResolvedValueOnce(
|
|
154
|
+
buildApiVaultsResponse(
|
|
155
|
+
[
|
|
156
|
+
buildApiVaultEdge('vault-thena-1', 'Thena', 'MultiPositionThena'),
|
|
157
|
+
buildApiVaultEdge('vault-sushi-2', 'Sushi', 'MultiPositionSushiManaged'),
|
|
158
|
+
],
|
|
159
|
+
false,
|
|
160
|
+
'cursor-2',
|
|
161
|
+
4
|
|
162
|
+
)
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
const response = await vaultClient.getAllVaults(
|
|
166
|
+
{
|
|
167
|
+
chainId: ChainId.Polygon,
|
|
168
|
+
protocol: 'Sushi',
|
|
169
|
+
},
|
|
170
|
+
2
|
|
171
|
+
);
|
|
172
|
+
|
|
173
|
+
expect(response.success).toBe(true);
|
|
174
|
+
expect(response.status).toBe(200);
|
|
175
|
+
expect(response.data).toHaveLength(2);
|
|
176
|
+
expect(response.data?.map(vault => vault.id)).toEqual(['vault-sushi-1', 'vault-sushi-2']);
|
|
177
|
+
expect(response.data?.every(vault => vault.protocol === 'Sushi')).toBe(true);
|
|
178
|
+
});
|
|
179
|
+
});
|
|
@@ -3,6 +3,7 @@ import { privateKeyToAccount } from 'viem/accounts';
|
|
|
3
3
|
import { avalanche, foundry, polygon, ronin } from 'viem/chains';
|
|
4
4
|
import { VaultClient } from '../../base/VaultClient.js';
|
|
5
5
|
import { SteerClient } from '../../client.js';
|
|
6
|
+
import { Protocol } from '../../const/index.js';
|
|
6
7
|
|
|
7
8
|
describe('VaultClient', () => {
|
|
8
9
|
let client: VaultClient;
|
|
@@ -427,8 +428,8 @@ describe('VaultClient', () => {
|
|
|
427
428
|
});
|
|
428
429
|
});
|
|
429
430
|
|
|
430
|
-
it('should fetch all vaults with chainId filter successfully', async () => {
|
|
431
|
-
const filter = { chainId:
|
|
431
|
+
it.only('should fetch all vaults with chainId filter successfully', async () => {
|
|
432
|
+
const filter = { chainId: 1, protocol: Protocol.Sushi }; // Polygon chainId
|
|
432
433
|
const response = await realSteerClient.vaults.getAllVaults(filter);
|
|
433
434
|
|
|
434
435
|
expect(response.success).toBe(true);
|
|
@@ -635,7 +636,7 @@ describe('VaultClient', () => {
|
|
|
635
636
|
}
|
|
636
637
|
}, 30000);
|
|
637
638
|
|
|
638
|
-
it
|
|
639
|
+
it('should calculate corresponding token amount for real vault - zeroForOne true', async () => {
|
|
639
640
|
// Test with a known vault on Polygon
|
|
640
641
|
const testVault = '0x616ae107237ce398bf32f08fd6048dd904ed8efb' as `0x${string}`;
|
|
641
642
|
const token0Amount = BigInt('2222322000000'); // 1 token0
|