@steerprotocol/sdk 1.3.0 → 1.4.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/README.md +54 -0
- package/dist/cjs/base/VaultClient.js +57 -118
- package/dist/cjs/base/VaultClient.js.map +1 -1
- package/dist/cjs/base/vault/deposit/index.js +484 -0
- package/dist/cjs/base/vault/deposit/index.js.map +1 -0
- package/dist/cjs/base/vault/deposit/types.js +3 -0
- package/dist/cjs/base/vault/deposit/types.js.map +1 -0
- package/dist/cjs/base/vault/utils.js +432 -0
- package/dist/cjs/base/vault/utils.js.map +1 -0
- package/dist/cjs/base/vault/withdraw/index.js +155 -0
- package/dist/cjs/base/vault/withdraw/index.js.map +1 -0
- package/dist/cjs/base/vault/withdraw/types.js +3 -0
- package/dist/cjs/base/vault/withdraw/types.js.map +1 -0
- package/dist/cjs/const/chain.js +96 -0
- package/dist/cjs/const/chain.js.map +1 -0
- package/dist/cjs/const/network.js +801 -0
- package/dist/cjs/const/network.js.map +1 -0
- package/dist/cjs/const/protocol.js +55 -0
- package/dist/cjs/const/protocol.js.map +1 -0
- package/dist/esm/base/VaultClient.js +57 -118
- package/dist/esm/base/VaultClient.js.map +1 -1
- package/dist/esm/base/vault/deposit/index.js +480 -0
- package/dist/esm/base/vault/deposit/index.js.map +1 -0
- package/dist/esm/base/vault/deposit/types.js +2 -0
- package/dist/esm/base/vault/deposit/types.js.map +1 -0
- package/dist/esm/base/vault/utils.js +425 -0
- package/dist/esm/base/vault/utils.js.map +1 -0
- package/dist/esm/base/vault/withdraw/index.js +151 -0
- package/dist/esm/base/vault/withdraw/index.js.map +1 -0
- package/dist/esm/base/vault/withdraw/types.js +2 -0
- package/dist/esm/base/vault/withdraw/types.js.map +1 -0
- package/dist/esm/const/chain.js +93 -0
- package/dist/esm/const/chain.js.map +1 -0
- package/dist/esm/const/network.js +797 -0
- package/dist/esm/const/network.js.map +1 -0
- package/dist/esm/const/protocol.js +47 -0
- package/dist/esm/const/protocol.js.map +1 -0
- package/dist/types/base/VaultClient.d.ts +81 -16
- package/dist/types/base/VaultClient.d.ts.map +1 -1
- package/dist/types/base/vault/deposit/index.d.ts +74 -0
- package/dist/types/base/vault/deposit/index.d.ts.map +1 -0
- package/dist/types/base/vault/deposit/types.d.ts +42 -0
- package/dist/types/base/vault/deposit/types.d.ts.map +1 -0
- package/dist/types/base/vault/utils.d.ts +26 -0
- package/dist/types/base/vault/utils.d.ts.map +1 -0
- package/dist/types/base/vault/withdraw/index.d.ts +45 -0
- package/dist/types/base/vault/withdraw/index.d.ts.map +1 -0
- package/dist/types/base/vault/withdraw/types.d.ts +13 -0
- package/dist/types/base/vault/withdraw/types.d.ts.map +1 -0
- package/dist/types/const/chain.d.ts +88 -0
- package/dist/types/const/chain.d.ts.map +1 -0
- package/dist/types/const/network.d.ts +26 -0
- package/dist/types/const/network.d.ts.map +1 -0
- package/dist/types/const/protocol.d.ts +12 -0
- package/dist/types/const/protocol.d.ts.map +1 -0
- package/dist/types/types.d.ts +101 -1
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +14 -13
package/README.md
CHANGED
|
@@ -36,6 +36,60 @@ const steerClient = new SteerClient({
|
|
|
36
36
|
const response = await steerClient.getData<YourDataType>('endpoint');
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
+
## Staking Client
|
|
40
|
+
|
|
41
|
+
The StakingClient provides functionality for interacting with Steer Finance staking pools. It supports both single and dual reward staking pools.
|
|
42
|
+
|
|
43
|
+
### Features
|
|
44
|
+
|
|
45
|
+
- Fetch available staking pools
|
|
46
|
+
- Stake and withdraw tokens
|
|
47
|
+
- Claim rewards
|
|
48
|
+
- Check earned rewards and balances
|
|
49
|
+
- Calculate APR for staking pools
|
|
50
|
+
- Support for both single and dual reward pools
|
|
51
|
+
|
|
52
|
+
### Example Usage
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
// Initialize the staking client
|
|
56
|
+
const stakingClient = steerClient.staking;
|
|
57
|
+
|
|
58
|
+
// Get all staking pools
|
|
59
|
+
const pools = await stakingClient.getStakingPools();
|
|
60
|
+
|
|
61
|
+
// Get pools for a specific chain
|
|
62
|
+
const polygonPools = await stakingClient.getStakingPools(137); // Polygon chain ID
|
|
63
|
+
|
|
64
|
+
// Stake tokens
|
|
65
|
+
await stakingClient.stake({
|
|
66
|
+
stakingPool: '0x...', // staking pool address
|
|
67
|
+
amount: 1000000000000000000n // amount in wei
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// Check earned rewards
|
|
71
|
+
const earned = await stakingClient.earned('0x...', '0x...'); // pool address, account address
|
|
72
|
+
console.log('Earned rewards:', earned.data);
|
|
73
|
+
|
|
74
|
+
// Calculate APR
|
|
75
|
+
const apr = stakingClient.calculateAPR(
|
|
76
|
+
pool,
|
|
77
|
+
rewardTokenPriceUSD,
|
|
78
|
+
totalStakedUSD
|
|
79
|
+
);
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Available Methods
|
|
83
|
+
|
|
84
|
+
- `getStakingPools(chainId?: number, protocol?: string)`: Fetch available staking pools
|
|
85
|
+
- `stake(params: StakeParams)`: Stake tokens in a pool
|
|
86
|
+
- `withdraw(params: WithdrawParams)`: Withdraw tokens from a pool
|
|
87
|
+
- `getReward(params: GetRewardParams)`: Claim rewards
|
|
88
|
+
- `earned(stakingPool: Address, account: Address)`: Get earned rewards
|
|
89
|
+
- `totalSupply(stakingPool: Address)`: Get total staked tokens
|
|
90
|
+
- `balanceOf(stakingPool: Address, account: Address)`: Get staked balance
|
|
91
|
+
- `calculateAPR(pool: StakingPool, rewardTokenPriceUSD: number, totalStakedUSD: number)`: Calculate current pool APR
|
|
92
|
+
|
|
39
93
|
## Requirements
|
|
40
94
|
|
|
41
95
|
- Node.js >= 18.0.0
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.VaultClient = void 0;
|
|
4
|
-
const SubgraphClient_1 = require("./SubgraphClient");
|
|
5
4
|
const abis_1 = require("../const/deployments/abis");
|
|
6
|
-
const
|
|
5
|
+
const SubgraphClient_1 = require("./SubgraphClient");
|
|
6
|
+
const deposit_1 = require("./vault/deposit");
|
|
7
|
+
const withdraw_1 = require("./vault/withdraw");
|
|
7
8
|
const VAULT_ABI = abis_1.abis.QuickSwapUniv3MultiPositionLiquidityManager;
|
|
8
|
-
const PERIPHERY_ABI = abis_1.abis.SteerPeriphery;
|
|
9
9
|
class VaultClient extends SubgraphClient_1.SubgraphClient {
|
|
10
10
|
constructor(client) {
|
|
11
11
|
super(client);
|
|
12
12
|
this.publicClient = client;
|
|
13
13
|
this.walletClient = client;
|
|
14
|
+
this.depositClient = new deposit_1.VaultDepositClient(client, client);
|
|
15
|
+
this.withdrawClient = new withdraw_1.VaultWithdrawClient(client, client);
|
|
14
16
|
}
|
|
15
17
|
/**
|
|
16
18
|
* Gets the latest vaults from the subgraph
|
|
@@ -48,94 +50,30 @@ class VaultClient extends SubgraphClient_1.SubgraphClient {
|
|
|
48
50
|
* @param params The deposit parameters
|
|
49
51
|
*/
|
|
50
52
|
async deposit(params) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
address: params.vaultAddress,
|
|
60
|
-
abi: PERIPHERY_ABI,
|
|
61
|
-
functionName: 'deposit',
|
|
62
|
-
args: [
|
|
63
|
-
params.vaultAddress,
|
|
64
|
-
params.amount0Desired,
|
|
65
|
-
params.amount1Desired,
|
|
66
|
-
amount0Min,
|
|
67
|
-
amount1Min,
|
|
68
|
-
params.to ?? account[0]
|
|
69
|
-
],
|
|
70
|
-
account: account[0],
|
|
71
|
-
});
|
|
72
|
-
const hash = await this.walletClient.writeContract(request);
|
|
73
|
-
return {
|
|
74
|
-
data: hash,
|
|
75
|
-
status: 200,
|
|
76
|
-
success: true,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
catch (error) {
|
|
80
|
-
return {
|
|
81
|
-
data: null,
|
|
82
|
-
status: 500,
|
|
83
|
-
success: false,
|
|
84
|
-
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
85
|
-
};
|
|
86
|
-
}
|
|
53
|
+
return this.depositClient.deposit(params);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Prepares the transaction data for depositing tokens into a vault without executing it
|
|
57
|
+
* @param params The deposit parameters
|
|
58
|
+
*/
|
|
59
|
+
async prepareDepositTx(params) {
|
|
60
|
+
return this.depositClient.prepareDepositTx(params);
|
|
87
61
|
}
|
|
88
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Gets the deposit ratio for a vault
|
|
64
|
+
* @param vaultAddress The vault address
|
|
65
|
+
*/
|
|
66
|
+
async getDepositRatio(vaultAddress, zeroForOne) {
|
|
89
67
|
try {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
abi: PERIPHERY_ABI,
|
|
94
|
-
functionName: 'vaultDetailsByAddress',
|
|
95
|
-
args: [vaultAddress]
|
|
96
|
-
});
|
|
97
|
-
const token0Balance = vaultDetails.token0Balance;
|
|
98
|
-
const token1Balance = vaultDetails.token1Balance;
|
|
99
|
-
const token0Decimals = vaultDetails.token0Decimals;
|
|
100
|
-
const token1Decimals = vaultDetails.token1Decimals;
|
|
101
|
-
// Case 1: No liquidity in the vault
|
|
102
|
-
if (token0Balance === 0n && token1Balance === 0n) {
|
|
103
|
-
// Get the pool contract to fetch current price
|
|
104
|
-
const pool = await this.pool(vaultAddress);
|
|
105
|
-
if (!pool.data)
|
|
106
|
-
throw new Error('Failed to retrieve pool for ratio calculation');
|
|
107
|
-
// Get current sqrtPriceX96
|
|
108
|
-
const [sqrtPriceX96] = await this.publicClient.readContract({
|
|
109
|
-
address: pool.data,
|
|
110
|
-
abi: UniswapPool_1.UniswapV3PoolABI,
|
|
111
|
-
functionName: 'slot0'
|
|
112
|
-
});
|
|
113
|
-
// Calculate price = (sqrtPriceX96^2) / 2^192
|
|
114
|
-
const price = (sqrtPriceX96 * sqrtPriceX96) / (2n ** 192n);
|
|
115
|
-
// Adjust for decimal differences
|
|
116
|
-
const decimalAdjustment = 10n ** BigInt(token1Decimals - token0Decimals);
|
|
117
|
-
const nativeTokenRatio = price / decimalAdjustment;
|
|
118
|
-
return {
|
|
119
|
-
data: nativeTokenRatio,
|
|
120
|
-
status: 200,
|
|
121
|
-
success: true
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
// Case 2: Vault has liquidity
|
|
125
|
-
// If token1Balance is 0, return token0Balance
|
|
126
|
-
if (token1Balance === 0n) {
|
|
127
|
-
return {
|
|
128
|
-
data: token0Balance,
|
|
129
|
-
status: 200,
|
|
130
|
-
success: true
|
|
131
|
-
};
|
|
68
|
+
const ratioResponse = await this.depositClient.getDepositRatio(vaultAddress, zeroForOne);
|
|
69
|
+
if (!ratioResponse.success || !ratioResponse.data) {
|
|
70
|
+
throw new Error(ratioResponse.error || 'Failed to get deposit ratio');
|
|
132
71
|
}
|
|
133
|
-
// Calculate ratio = token0Balance / token1Balance
|
|
134
|
-
// Adjust for decimal precision
|
|
135
|
-
const decimalAdjustment = 10n ** BigInt(token1Decimals - token0Decimals);
|
|
136
|
-
const ratio = (token0Balance * decimalAdjustment) / token1Balance;
|
|
137
72
|
return {
|
|
138
|
-
data:
|
|
73
|
+
data: {
|
|
74
|
+
details: ratioResponse.data.vaultDetails,
|
|
75
|
+
ratio: ratioResponse.data.ratio,
|
|
76
|
+
},
|
|
139
77
|
status: 200,
|
|
140
78
|
success: true
|
|
141
79
|
};
|
|
@@ -154,37 +92,22 @@ class VaultClient extends SubgraphClient_1.SubgraphClient {
|
|
|
154
92
|
* @param params The withdrawal parameters
|
|
155
93
|
*/
|
|
156
94
|
async withdraw(params) {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
const hash = await this.walletClient.writeContract(request);
|
|
174
|
-
return {
|
|
175
|
-
data: hash,
|
|
176
|
-
status: 200,
|
|
177
|
-
success: true,
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
catch (error) {
|
|
181
|
-
return {
|
|
182
|
-
data: null,
|
|
183
|
-
status: 500,
|
|
184
|
-
success: false,
|
|
185
|
-
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
186
|
-
};
|
|
187
|
-
}
|
|
95
|
+
return this.withdrawClient.withdraw(params);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Prepares the transaction data for withdrawing tokens from a vault without executing it
|
|
99
|
+
* @param params The withdrawal parameters
|
|
100
|
+
*/
|
|
101
|
+
async prepareWithdrawTx(params) {
|
|
102
|
+
return this.withdrawClient.prepareWithdrawTx(params);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Calculates the amount of tokens that would be received for a given amount of LP tokens
|
|
106
|
+
* @param vaultAddress The vault address
|
|
107
|
+
* @param lpToken The amount of LP tokens to calculate for
|
|
108
|
+
*/
|
|
109
|
+
async getTokensFromLp(vaultAddress, lpToken) {
|
|
110
|
+
return this.withdrawClient.getTokensFromLp(vaultAddress, lpToken);
|
|
188
111
|
}
|
|
189
112
|
/**
|
|
190
113
|
* Approves spending of tokens for a vault
|
|
@@ -398,6 +321,22 @@ class VaultClient extends SubgraphClient_1.SubgraphClient {
|
|
|
398
321
|
};
|
|
399
322
|
}
|
|
400
323
|
}
|
|
324
|
+
/**
|
|
325
|
+
* Gets a pool instance for a vault
|
|
326
|
+
* @param params The pool instance parameters
|
|
327
|
+
*/
|
|
328
|
+
async getPoolInstance(params) {
|
|
329
|
+
return this.depositClient.getPoolInstance(params);
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Gets the corresponding token amount based on the provided token amount and ratio
|
|
333
|
+
* @param vaultAddress The vault address
|
|
334
|
+
* @param amount The amount of token to calculate the corresponding amount for
|
|
335
|
+
* @param zeroForOne If true, calculates token1 amount for given token0, if false calculates token0 amount for given token1
|
|
336
|
+
*/
|
|
337
|
+
async getCorrespondingTokenAmount(vaultAddress, amount, zeroForOne) {
|
|
338
|
+
return this.depositClient.getCorrespondingTokenAmount(vaultAddress, amount, zeroForOne);
|
|
339
|
+
}
|
|
401
340
|
}
|
|
402
341
|
exports.VaultClient = VaultClient;
|
|
403
342
|
//# sourceMappingURL=VaultClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VaultClient.js","sourceRoot":"","sources":["../../../src/base/VaultClient.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"VaultClient.js","sourceRoot":"","sources":["../../../src/base/VaultClient.ts"],"names":[],"mappings":"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"}
|