@steerprotocol/sdk 0.1.4 → 1.1.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.
Files changed (49) hide show
  1. package/dist/cjs/base/SmartRewardClient.js +55 -0
  2. package/dist/cjs/base/SmartRewardClient.js.map +1 -0
  3. package/dist/cjs/base/SmartRewards.js +508 -0
  4. package/dist/cjs/base/SmartRewards.js.map +1 -0
  5. package/dist/cjs/base/SubgraphClient.js.map +1 -1
  6. package/dist/cjs/base/VaultClient.js +87 -0
  7. package/dist/cjs/base/VaultClient.js.map +1 -1
  8. package/dist/cjs/client.js +67 -1
  9. package/dist/cjs/client.js.map +1 -1
  10. package/dist/cjs/const/abis/UniswapPool.js +5 -0
  11. package/dist/cjs/const/abis/UniswapPool.js.map +1 -0
  12. package/dist/cjs/const/api.js +28 -0
  13. package/dist/cjs/const/api.js.map +1 -0
  14. package/dist/cjs/index.js +67 -0
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/esm/base/SmartRewardClient.js +51 -0
  17. package/dist/esm/base/SmartRewardClient.js.map +1 -0
  18. package/dist/esm/base/SmartRewards.js +504 -0
  19. package/dist/esm/base/SmartRewards.js.map +1 -0
  20. package/dist/esm/base/SubgraphClient.js.map +1 -1
  21. package/dist/esm/base/VaultClient.js +87 -0
  22. package/dist/esm/base/VaultClient.js.map +1 -1
  23. package/dist/esm/client.js +67 -1
  24. package/dist/esm/client.js.map +1 -1
  25. package/dist/esm/const/abis/UniswapPool.js +2 -0
  26. package/dist/esm/const/abis/UniswapPool.js.map +1 -0
  27. package/dist/esm/const/api.js +24 -0
  28. package/dist/esm/const/api.js.map +1 -0
  29. package/dist/esm/index.js +67 -0
  30. package/dist/esm/index.js.map +1 -1
  31. package/dist/types/base/SmartRewardClient.d.ts +46 -0
  32. package/dist/types/base/SmartRewardClient.d.ts.map +1 -0
  33. package/dist/types/base/SmartRewards.d.ts +291 -0
  34. package/dist/types/base/SmartRewards.d.ts.map +1 -0
  35. package/dist/types/base/SubgraphClient.d.ts +1 -1
  36. package/dist/types/base/SubgraphClient.d.ts.map +1 -1
  37. package/dist/types/base/VaultClient.d.ts +2 -0
  38. package/dist/types/base/VaultClient.d.ts.map +1 -1
  39. package/dist/types/client.d.ts +55 -0
  40. package/dist/types/client.d.ts.map +1 -1
  41. package/dist/types/const/abis/UniswapPool.d.ts +36 -0
  42. package/dist/types/const/abis/UniswapPool.d.ts.map +1 -0
  43. package/dist/types/const/api.d.ts +17 -0
  44. package/dist/types/const/api.d.ts.map +1 -0
  45. package/dist/types/index.d.ts +67 -0
  46. package/dist/types/index.d.ts.map +1 -1
  47. package/dist/types/types.d.ts +2 -1
  48. package/dist/types/types.d.ts.map +1 -1
  49. package/package.json +23 -3
@@ -0,0 +1,504 @@
1
+ import { subgraphs } from '../const/subgraph';
2
+ import { formatUnits } from 'viem';
3
+ export class SmartRewards {
4
+ constructor(client, publicClient, walletClient) {
5
+ this.client = client;
6
+ this.publicClient = publicClient;
7
+ this.walletClient = walletClient;
8
+ }
9
+ async getCampaigns(chainId) {
10
+ const campaigns = await this.client.campaigns({
11
+ filter: {
12
+ chainId,
13
+ },
14
+ });
15
+ return {
16
+ data: (campaigns.data?.campaigns.edges.map((edge) => ({
17
+ ...edge.node,
18
+ vaults: edge.node.vaults?.map(vault => ({
19
+ ...vault,
20
+ beaconName: vault.beaconName || '',
21
+ name: vault.name || '',
22
+ protocol: vault.protocol || '',
23
+ protocolBaseType: vault.protocolBaseType || '',
24
+ targetProtocol: vault.targetProtocol || ''
25
+ })) || []
26
+ })) || []),
27
+ status: campaigns.status,
28
+ success: true,
29
+ };
30
+ }
31
+ /**
32
+ * Retrieves campaigns associated with a specific pool address
33
+ * @param poolAddress - The address of the pool to get campaigns for
34
+ * @param chainId - Chain ID where the pool exists
35
+ * @returns Promise resolving to an array of campaigns associated with the pool
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * // Get campaigns for a pool on a specific chain
40
+ * const campaigns = await smartRewards.campaignsByPool('0x...', 1);
41
+ * ```
42
+ */
43
+ async campaignsByPool(poolAddress, chainId) {
44
+ try {
45
+ const campaigns = await this.client.campaignsByPool({
46
+ pool: poolAddress,
47
+ chainId
48
+ });
49
+ return {
50
+ data: (campaigns.data?.campaignsByPool?.map(campaign => campaign ? {
51
+ ...campaign,
52
+ vaults: campaign.vaults?.map(vault => vault ? {
53
+ ...vault,
54
+ beaconName: vault.beaconName || '',
55
+ name: vault.name || '',
56
+ protocol: vault.protocol || '',
57
+ protocolBaseType: vault.protocolBaseType || '',
58
+ targetProtocol: vault.targetProtocol || ''
59
+ } : null).filter((v) => v !== null) || []
60
+ } : null).filter((c) => c !== null) || []),
61
+ status: campaigns.status,
62
+ success: true
63
+ };
64
+ }
65
+ catch (error) {
66
+ return {
67
+ data: null,
68
+ status: 500,
69
+ success: false,
70
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
71
+ };
72
+ }
73
+ }
74
+ /**
75
+ * Retrieves claim proofs for a user that can be used to claim rewards
76
+ * @param user - Address of the user to get proofs for
77
+ * @param chainId - Chain ID where the claims exist
78
+ * @param campaignId - Optional campaign ID to filter claims
79
+ * @returns Promise resolving to claim proof data with pagination support
80
+ */
81
+ async getClaimProofs(user, chainId, campaignId) {
82
+ try {
83
+ const response = await this.client.claimProofs({
84
+ user,
85
+ filter: {
86
+ chainId,
87
+ campaignId
88
+ }
89
+ });
90
+ if (!response.data?.claimProofs) {
91
+ return {
92
+ data: null,
93
+ status: response.status,
94
+ success: true
95
+ };
96
+ }
97
+ const transformedResponse = {
98
+ totalCount: response.data.claimProofs.totalCount,
99
+ pageInfo: {
100
+ hasNextPage: response.data.claimProofs.pageInfo.hasNextPage,
101
+ endCursor: response.data.claimProofs.pageInfo.endCursor || undefined
102
+ },
103
+ edges: response.data.claimProofs.edges.map(edge => ({
104
+ cursor: edge.cursor,
105
+ node: {
106
+ ...edge.node,
107
+ proof: edge.node.proof?.filter((p) => p !== null) || []
108
+ }
109
+ }))
110
+ };
111
+ return {
112
+ data: transformedResponse,
113
+ status: response.status,
114
+ success: true
115
+ };
116
+ }
117
+ catch (error) {
118
+ return {
119
+ data: null,
120
+ status: 500,
121
+ success: false,
122
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
123
+ };
124
+ }
125
+ }
126
+ /**
127
+ * Retrieves historical claim data for a specific pool
128
+ * @param chainId - Chain ID where the pool exists
129
+ * @param pool - Address or identifier of the pool
130
+ * @param user - Optional user address to filter claims
131
+ * @returns Promise resolving to paginated claim history data
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * // Get all claims for a pool
136
+ * const allClaims = await smartRewards.getClaimRewardsByPool(1, poolAddress);
137
+ *
138
+ * // Get claims for a specific user in a pool
139
+ * const userClaims = await smartRewards.getClaimRewardsByPool(1, poolAddress, userAddress);
140
+ * ```
141
+ */
142
+ async getClaimRewardsByPool(chainId, pool, user) {
143
+ try {
144
+ const response = await this.client.claimRewards({
145
+ poolId: pool,
146
+ chainId,
147
+ filter: user ? { user } : undefined
148
+ });
149
+ if (!response.data?.claimRewards) {
150
+ return {
151
+ data: null,
152
+ status: response.status,
153
+ success: true
154
+ };
155
+ }
156
+ const transformedResponse = {
157
+ totalCount: response.data.claimRewards.totalCount,
158
+ pageInfo: {
159
+ hasNextPage: response.data.claimRewards.pageInfo.hasNextPage,
160
+ endCursor: response.data.claimRewards.pageInfo.endCursor
161
+ },
162
+ edges: response.data.claimRewards.edges.map(edge => ({
163
+ cursor: edge.cursor,
164
+ node: {
165
+ ...edge.node,
166
+ timestamp: Number(edge.node.timestamp)
167
+ }
168
+ }))
169
+ };
170
+ return {
171
+ data: transformedResponse,
172
+ status: response.status,
173
+ success: true
174
+ };
175
+ }
176
+ catch (error) {
177
+ return {
178
+ data: null,
179
+ status: 500,
180
+ success: false,
181
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
182
+ };
183
+ }
184
+ }
185
+ /**
186
+ * Gets a comprehensive summary of a user's reward status
187
+ * @param user - Address of the user
188
+ * @param chainId - Chain ID to check rewards on
189
+ * @param campaignId - Optional campaign ID to filter rewards
190
+ * @param decimals - Number of decimals for formatting (default: 18)
191
+ * @returns Promise resolving to reward summary with both native and formatted values
192
+ *
193
+ * @example
194
+ * ```typescript
195
+ * const summary = await smartRewards.getRewardSummary(userAddress, chainId);
196
+ * console.log('Total earned:', summary.data.totalEarned.formatted);
197
+ * console.log('Available to claim:', summary.data.claimable.formatted);
198
+ * ```
199
+ */
200
+ async getRewardSummary(user, chainId, campaignId, decimals = 18) {
201
+ try {
202
+ // Get claimable rewards
203
+ const claimProofs = await this.getClaimProofs(user, chainId, campaignId);
204
+ const claimableAmount = claimProofs.data?.edges.reduce((sum, edge) => sum + BigInt(edge.node.amount.split('.')[0]), 0n) || 0n;
205
+ // Get claimed rewards
206
+ const claimedRewards = await this.getClaimRewardsByPool(chainId, campaignId?.toString() || '', user);
207
+ const claimedAmount = claimedRewards.data?.edges.reduce((sum, edge) => sum + BigInt(edge.node.amount.split('.')[0]), 0n) || 0n;
208
+ // Calculate totals
209
+ const totalEarned = claimableAmount + claimedAmount;
210
+ const summary = {
211
+ totalEarned: {
212
+ native: totalEarned,
213
+ formatted: formatUnits(totalEarned, decimals)
214
+ },
215
+ totalClaimed: {
216
+ native: claimedAmount,
217
+ formatted: formatUnits(claimedAmount, decimals)
218
+ },
219
+ claimable: {
220
+ native: claimableAmount,
221
+ formatted: formatUnits(claimableAmount, decimals)
222
+ }
223
+ };
224
+ return {
225
+ data: summary,
226
+ status: 200,
227
+ success: true
228
+ };
229
+ }
230
+ catch (error) {
231
+ return {
232
+ data: null,
233
+ status: 500,
234
+ success: false,
235
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
236
+ };
237
+ }
238
+ }
239
+ async getSmartRewarderContracts() {
240
+ try {
241
+ const response = await this.client.smartRewarderContracts();
242
+ return {
243
+ data: response.data?.smartRewarderContracts || [],
244
+ status: response.status,
245
+ success: true
246
+ };
247
+ }
248
+ catch (error) {
249
+ return {
250
+ data: null,
251
+ status: 500,
252
+ success: false,
253
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
254
+ };
255
+ }
256
+ }
257
+ /**
258
+ * Claims rewards from the smart rewarder contract
259
+ * @param params - Parameters required for claiming rewards
260
+ * @returns Promise resolving to transaction hash if successful
261
+ *
262
+ * @remarks
263
+ * This method handles the low-level interaction with the smart contract.
264
+ * For a higher-level interface, consider using {@link claimCampaignRewards} instead.
265
+ *
266
+ * @example
267
+ * ```typescript
268
+ * // Get claim proofs
269
+ * const claimProofs = await smartRewards.getClaimProofs(userAddress, chainId, campaignId);
270
+ *
271
+ * // Get smart rewarder contract
272
+ * const rewarders = await smartRewards.getSmartRewarderContracts();
273
+ * const rewarder = rewarders.data?.find(r => r.chainId === chainId);
274
+ *
275
+ * if (claimProofs.data && rewarder) {
276
+ * // Prepare claim data
277
+ * const claimData = smartRewards.prepareClaimData(claimProofs.data);
278
+ * claimData.rewarderAddress = rewarder.address as Address;
279
+ *
280
+ * // Claim rewards
281
+ * const tx = await smartRewards.claimReward(claimData);
282
+ * }
283
+ * ```
284
+ *
285
+ * @throws Will throw an error if no wallet account is found
286
+ * @throws Will throw an error if contract simulation fails
287
+ */
288
+ async claimReward(params) {
289
+ try {
290
+ const account = await this.walletClient.getAddresses();
291
+ if (!account[0])
292
+ throw new Error('No account found');
293
+ const { request } = await this.publicClient.simulateContract({
294
+ address: params.rewarderAddress,
295
+ abi: [{
296
+ type: 'function',
297
+ inputs: [
298
+ { name: 'users', internalType: 'address[]', type: 'address[]' },
299
+ { name: 'campaignIds', internalType: 'uint256[]', type: 'uint256[]' },
300
+ { name: 'amounts', internalType: 'uint256[]', type: 'uint256[]' },
301
+ { name: 'proofs', internalType: 'bytes32[][]', type: 'bytes32[][]' }
302
+ ],
303
+ name: 'claim',
304
+ outputs: [],
305
+ stateMutability: 'nonpayable'
306
+ }],
307
+ functionName: 'claim',
308
+ args: [
309
+ params.users,
310
+ params.campaignIds,
311
+ params.amounts,
312
+ params.proofs
313
+ ],
314
+ account: account[0]
315
+ });
316
+ const hash = await this.walletClient.writeContract(request);
317
+ return {
318
+ data: hash,
319
+ status: 200,
320
+ success: true
321
+ };
322
+ }
323
+ catch (error) {
324
+ return {
325
+ data: null,
326
+ status: 500,
327
+ success: false,
328
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
329
+ };
330
+ }
331
+ }
332
+ /**
333
+ * Helper function to prepare claim data from claim proofs
334
+ * @param proofs - The claim proofs response from getClaimProofs
335
+ * @returns ClaimRewardParams object ready for use with claimReward
336
+ *
337
+ * @remarks
338
+ * This helper function transforms the claim proofs into the format required by the smart contract.
339
+ * Note that the returned object's rewarderAddress is empty and must be set before using with claimReward.
340
+ *
341
+ * @example
342
+ * ```typescript
343
+ * // Get claim proofs and rewarder contract
344
+ * const proofs = await smartRewards.getClaimProofs(userAddress, chainId);
345
+ * const rewarders = await smartRewards.getSmartRewarderContracts();
346
+ * const rewarder = rewarders.data?.find(r => r.chainId === chainId);
347
+ *
348
+ * if (proofs.data && rewarder) {
349
+ * // Prepare the claim data
350
+ * const claimData = smartRewards.prepareClaimData(proofs.data);
351
+ *
352
+ * // Set the rewarder address (required)
353
+ * claimData.rewarderAddress = rewarder.address as Address;
354
+ *
355
+ * // Now the data is ready for claiming
356
+ * const tx = await smartRewards.claimReward(claimData);
357
+ * }
358
+ * ```
359
+ */
360
+ prepareClaimData(proofs) {
361
+ return {
362
+ users: proofs.edges.map(edge => edge.node.user),
363
+ campaignIds: proofs.edges.map(edge => BigInt(edge.node.campaignId)),
364
+ amounts: proofs.edges.map(edge => BigInt(edge.node.amount.split('.')[0])),
365
+ proofs: proofs.edges.map(edge => edge.node.proof),
366
+ rewarderAddress: '' // This needs to be set by the caller
367
+ };
368
+ }
369
+ /**
370
+ * Convenience function to handle the entire claim process
371
+ * @param userAddress The address of the user claiming rewards
372
+ * @param chainId The chain ID where the campaign exists
373
+ * @param campaignId Optional campaign ID to filter claims
374
+ * @returns Transaction hash if successful, or error details if failed
375
+ */
376
+ async claimCampaignRewards(userAddress, chainId, campaignId) {
377
+ try {
378
+ // Get claim proofs
379
+ const claimProofsResponse = await this.getClaimProofs(userAddress, chainId, campaignId);
380
+ if (!claimProofsResponse.data || claimProofsResponse.data.edges.length === 0) {
381
+ return {
382
+ data: null,
383
+ status: 400,
384
+ success: false,
385
+ error: 'No claim proofs found'
386
+ };
387
+ }
388
+ // Get smart rewarder contract
389
+ const rewarderResponse = await this.getSmartRewarderContracts();
390
+ const rewarder = rewarderResponse.data?.find(r => r.chainId === chainId);
391
+ if (!rewarder) {
392
+ return {
393
+ data: null,
394
+ status: 400,
395
+ success: false,
396
+ error: `No smart rewarder contract found for chain ${chainId}`
397
+ };
398
+ }
399
+ // Prepare claim data
400
+ const claimData = this.prepareClaimData(claimProofsResponse.data);
401
+ claimData.rewarderAddress = rewarder.address;
402
+ // Execute claim
403
+ return await this.claimReward(claimData);
404
+ }
405
+ catch (error) {
406
+ return {
407
+ data: null,
408
+ status: 500,
409
+ success: false,
410
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
411
+ };
412
+ }
413
+ }
414
+ /**
415
+ * Prepares the claim rewards campaign object with all necessary data for contract interaction
416
+ * @param userAddress The address of the user claiming rewards
417
+ * @param chainId The chain ID where the campaign exists
418
+ * @param campaignId Optional campaign ID to filter claims
419
+ * @returns Promise resolving to an object containing all necessary data for claiming rewards
420
+ *
421
+ * @example
422
+ * ```typescript
423
+ * // Get the prepared claim data
424
+ * const claimData = await smartRewards.prepareClaimRewardsCampaign(userAddress, chainId, campaignId);
425
+ *
426
+ * if (claimData.success) {
427
+ * // Use the data with your own contract interaction methods
428
+ * const { address, abi, functionName, args } = claimData.data;
429
+ * // Execute the contract call using your preferred method
430
+ * }
431
+ * ```
432
+ */
433
+ async prepareClaimRewardsCampaign(userAddress, chainId, campaignId) {
434
+ try {
435
+ // Get claim proofs
436
+ const claimProofsResponse = await this.getClaimProofs(userAddress, chainId, campaignId);
437
+ if (!claimProofsResponse.data || claimProofsResponse.data.edges.length === 0) {
438
+ return {
439
+ data: null,
440
+ status: 400,
441
+ success: false,
442
+ error: 'No claim proofs found'
443
+ };
444
+ }
445
+ // Get smart rewarder contract
446
+ const rewarderResponse = await this.getSmartRewarderContracts();
447
+ const rewarder = rewarderResponse.data?.find(r => r.chainId === chainId);
448
+ if (!rewarder) {
449
+ return {
450
+ data: null,
451
+ status: 400,
452
+ success: false,
453
+ error: `No smart rewarder contract found for chain ${chainId}`
454
+ };
455
+ }
456
+ // Prepare claim data
457
+ const claimData = this.prepareClaimData(claimProofsResponse.data);
458
+ // Prepare the complete contract interaction data
459
+ return {
460
+ data: {
461
+ address: rewarder.address,
462
+ abi: [{
463
+ type: 'function',
464
+ inputs: [
465
+ { name: 'users', internalType: 'address[]', type: 'address[]' },
466
+ { name: 'campaignIds', internalType: 'uint256[]', type: 'uint256[]' },
467
+ { name: 'amounts', internalType: 'uint256[]', type: 'uint256[]' },
468
+ { name: 'proofs', internalType: 'bytes32[][]', type: 'bytes32[][]' }
469
+ ],
470
+ name: 'claim',
471
+ outputs: [],
472
+ stateMutability: 'nonpayable'
473
+ }],
474
+ functionName: 'claim',
475
+ args: [
476
+ claimData.users,
477
+ claimData.campaignIds,
478
+ claimData.amounts,
479
+ claimData.proofs
480
+ ]
481
+ },
482
+ status: 200,
483
+ success: true
484
+ };
485
+ }
486
+ catch (error) {
487
+ return {
488
+ data: null,
489
+ status: 500,
490
+ success: false,
491
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
492
+ };
493
+ }
494
+ }
495
+ /**
496
+ * Checks if a chain is supported by checking if it has a subgraph URL
497
+ * @param chainId The chain ID to check
498
+ * @returns boolean indicating if the chain is supported
499
+ */
500
+ supportsChain(chainId) {
501
+ return Object.keys(subgraphs).includes(chainId.toString());
502
+ }
503
+ }
504
+ //# sourceMappingURL=SmartRewards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SmartRewards.js","sourceRoot":"","sources":["../../../src/base/SmartRewards.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SubgraphClient.js","sourceRoot":"","sources":["../../../src/base/SubgraphClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,OAAgB,cAAc;IAGlC,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,oBAAoB,CAClC,KAAa,EACb,SAA+B;QAE/B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QAE5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;gBACxC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK;oBACL,SAAS;iBACV,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAErC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAS;gBACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,IAAI,EAAE,IAAS;gBACf,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;aACzE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACO,cAAc,CAAC,OAAe;QACtC,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,OAAe;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF"}
1
+ {"version":3,"file":"SubgraphClient.js","sourceRoot":"","sources":["../../../src/base/SubgraphClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,MAAM,OAAgB,cAAc;IAGlC,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,oBAAoB,CAClC,KAAa,EACb,SAAmC;QAEnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QAE5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;gBACxC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK;oBACL,SAAS;iBACV,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAErC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAS;gBACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,IAAI,EAAE,IAAS;gBACf,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;aACzE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACO,cAAc,CAAC,OAAe;QACtC,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,OAAe;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF"}
@@ -1,5 +1,6 @@
1
1
  import { SubgraphClient } from './SubgraphClient';
2
2
  import { abis } from '../const/deployments/abis';
3
+ import { UniswapV3PoolABI } from '../const/abis/UniswapPool';
3
4
  const VAULT_ABI = abis.QuickSwapUniv3MultiPositionLiquidityManager;
4
5
  const PERIPHERY_ABI = abis.SteerPeriphery;
5
6
  export class VaultClient extends SubgraphClient {
@@ -81,6 +82,70 @@ export class VaultClient extends SubgraphClient {
81
82
  };
82
83
  }
83
84
  }
85
+ async getDepositRatio(vaultAddress) {
86
+ try {
87
+ // Get vault details to check balances and decimals
88
+ const vaultDetails = await this.publicClient.readContract({
89
+ address: vaultAddress,
90
+ abi: PERIPHERY_ABI,
91
+ functionName: 'vaultDetailsByAddress',
92
+ args: [vaultAddress]
93
+ });
94
+ const token0Balance = vaultDetails.token0Balance;
95
+ const token1Balance = vaultDetails.token1Balance;
96
+ const token0Decimals = vaultDetails.token0Decimals;
97
+ const token1Decimals = vaultDetails.token1Decimals;
98
+ // Case 1: No liquidity in the vault
99
+ if (token0Balance === 0n && token1Balance === 0n) {
100
+ // Get the pool contract to fetch current price
101
+ const pool = await this.pool(vaultAddress);
102
+ if (!pool.data)
103
+ throw new Error('Failed to retrieve pool for ratio calculation');
104
+ // Get current sqrtPriceX96
105
+ const [sqrtPriceX96] = await this.publicClient.readContract({
106
+ address: pool.data,
107
+ abi: UniswapV3PoolABI,
108
+ functionName: 'slot0'
109
+ });
110
+ // Calculate price = (sqrtPriceX96^2) / 2^192
111
+ const price = (sqrtPriceX96 * sqrtPriceX96) / (2n ** 192n);
112
+ // Adjust for decimal differences
113
+ const decimalAdjustment = 10n ** BigInt(token1Decimals - token0Decimals);
114
+ const nativeTokenRatio = price / decimalAdjustment;
115
+ return {
116
+ data: nativeTokenRatio,
117
+ status: 200,
118
+ success: true
119
+ };
120
+ }
121
+ // Case 2: Vault has liquidity
122
+ // If token1Balance is 0, return token0Balance
123
+ if (token1Balance === 0n) {
124
+ return {
125
+ data: token0Balance,
126
+ status: 200,
127
+ success: true
128
+ };
129
+ }
130
+ // Calculate ratio = token0Balance / token1Balance
131
+ // Adjust for decimal precision
132
+ const decimalAdjustment = 10n ** BigInt(token1Decimals - token0Decimals);
133
+ const ratio = (token0Balance * decimalAdjustment) / token1Balance;
134
+ return {
135
+ data: ratio,
136
+ status: 200,
137
+ success: true
138
+ };
139
+ }
140
+ catch (error) {
141
+ return {
142
+ data: null,
143
+ status: 500,
144
+ success: false,
145
+ error: error instanceof Error ? error.message : 'Unknown error occurred'
146
+ };
147
+ }
148
+ }
84
149
  /**
85
150
  * Withdraws tokens from a vault
86
151
  * @param params The withdrawal parameters
@@ -308,5 +373,27 @@ export class VaultClient extends SubgraphClient {
308
373
  };
309
374
  }
310
375
  }
376
+ async pool(vaultAddress) {
377
+ try {
378
+ const pool = await this.publicClient.readContract({
379
+ address: vaultAddress,
380
+ abi: VAULT_ABI,
381
+ functionName: 'pool',
382
+ });
383
+ return {
384
+ data: pool,
385
+ status: 200,
386
+ success: true,
387
+ };
388
+ }
389
+ catch (error) {
390
+ return {
391
+ data: null,
392
+ status: 500,
393
+ success: false,
394
+ error: error instanceof Error ? error.message : 'Unknown error occurred',
395
+ };
396
+ }
397
+ }
311
398
  }
312
399
  //# sourceMappingURL=VaultClient.js.map