@switchxfi/alm-sdk 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.
- package/README.md +138 -0
- package/dist/index.d.mts +325 -0
- package/dist/index.d.ts +325 -0
- package/dist/index.js +12036 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +11968 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +91 -0
package/README.md
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# SwitchX ALM SDK
|
|
2
|
+
This SDK provides utilities for interacting with SwitchX ALM vaults, designed to simplify integration into your project.
|
|
3
|
+
|
|
4
|
+
## π¦ Installation
|
|
5
|
+
Using npm:
|
|
6
|
+
```bash
|
|
7
|
+
npm install @switchxfi/alm-sdk
|
|
8
|
+
```
|
|
9
|
+
or yarn:
|
|
10
|
+
```bash
|
|
11
|
+
yarn add @switchxfi/alm-sdk
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## π Vault GET Methods
|
|
15
|
+
|
|
16
|
+
- `getVaultsByPool`
|
|
17
|
+
|
|
18
|
+
Get a list of vault addresses associated with a specific pool
|
|
19
|
+
```ts
|
|
20
|
+
const vaultAddresses: string[] = await getVaultsByPool(poolAddress, chainId);
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
- `getTotalAmounts`
|
|
24
|
+
|
|
25
|
+
Returns the total number of both tokens stored in the vault
|
|
26
|
+
```ts
|
|
27
|
+
const [totalAmount0, totalAmount1] = await getTotalAmounts(
|
|
28
|
+
vaultAddress,
|
|
29
|
+
provider,
|
|
30
|
+
true,
|
|
31
|
+
token0.decimals,
|
|
32
|
+
token1.decimals
|
|
33
|
+
);
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
- `getTotalSupply`
|
|
37
|
+
|
|
38
|
+
Returns the total number of vault shares
|
|
39
|
+
```ts
|
|
40
|
+
const totalSupply = await getTotalSupply(vaultAddress, provider)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## π€ User Data in Vaults
|
|
44
|
+
|
|
45
|
+
- `getUserAmounts`
|
|
46
|
+
|
|
47
|
+
Returns the user's token balances and share count in the vault. If the `raw` flag is set, values are returned as BigNumbers
|
|
48
|
+
```ts
|
|
49
|
+
const [userAmount0, userAmount1, shares] = await getUserAmounts(
|
|
50
|
+
account,
|
|
51
|
+
vaultAddress,
|
|
52
|
+
provider,
|
|
53
|
+
token0.decimals,
|
|
54
|
+
token1.decimals,
|
|
55
|
+
true
|
|
56
|
+
);
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
- `calculateUserDepositTokenPNL`
|
|
60
|
+
|
|
61
|
+
Calculates the userβs PNL and ROI in terms of the deposit token
|
|
62
|
+
```ts
|
|
63
|
+
const { pnl, roi } = await calculateUserDepositTokenPNL(
|
|
64
|
+
account,
|
|
65
|
+
vaultAddress,
|
|
66
|
+
userAmount0.toString(),
|
|
67
|
+
userAmount1.toString(),
|
|
68
|
+
token0.decimals,
|
|
69
|
+
token1.decimals,
|
|
70
|
+
provider
|
|
71
|
+
);
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## π Transactions
|
|
75
|
+
|
|
76
|
+
- `approveDepositToken`
|
|
77
|
+
|
|
78
|
+
Approves a token for deposit. Must be called before using the `deposit()` method. The amount can be a string or number in major units.
|
|
79
|
+
```ts
|
|
80
|
+
const tx = await approveDepositToken(
|
|
81
|
+
accountAddress,
|
|
82
|
+
0, // token idx can be 0 or 1
|
|
83
|
+
vaultAddress,
|
|
84
|
+
provider,
|
|
85
|
+
amount // (optional)
|
|
86
|
+
);
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
- `deposit` / `depositNativeToken`
|
|
90
|
+
|
|
91
|
+
Performs a deposit into the vault. The `amount0` and `amount1` parameters represent the amounts of each token in major units.
|
|
92
|
+
```ts
|
|
93
|
+
if (useNativeToken) {
|
|
94
|
+
const tx = await depositNativeToken(
|
|
95
|
+
account,
|
|
96
|
+
vault.allowTokenA ? amount : "0",
|
|
97
|
+
vault.allowTokenB ? amount : "0",
|
|
98
|
+
vaultAddress,
|
|
99
|
+
provider
|
|
100
|
+
);
|
|
101
|
+
} else {
|
|
102
|
+
const tx = await deposit(
|
|
103
|
+
account,
|
|
104
|
+
vault.allowTokenA ? amount : "0",
|
|
105
|
+
vault.allowTokenB ? amount : "0",
|
|
106
|
+
vaultAddress,
|
|
107
|
+
provider
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
- `withdraw` / `withdrawNativeToken`
|
|
113
|
+
|
|
114
|
+
Withdraws a specified number of shares from the vault, returning both underlying tokens to the user. The share amount should be a string or number in major units.
|
|
115
|
+
```ts
|
|
116
|
+
const percentMultiplier = 1; // 100%
|
|
117
|
+
const shareToWithdraw = Number(userShare) * percentMultiplier;
|
|
118
|
+
const slippage = 1 // 1%
|
|
119
|
+
|
|
120
|
+
if (useNativeToken) {
|
|
121
|
+
const tx = await withdrawNativeToken(
|
|
122
|
+
account,
|
|
123
|
+
shareToWithdraw,
|
|
124
|
+
vaultAddress,
|
|
125
|
+
provider,
|
|
126
|
+
slippage
|
|
127
|
+
);
|
|
128
|
+
} else {
|
|
129
|
+
const tx = await withdrawWithSlippage(
|
|
130
|
+
account,
|
|
131
|
+
shareToWithdraw,
|
|
132
|
+
vaultAddress,
|
|
133
|
+
provider,
|
|
134
|
+
slippage
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
import { Provider, JsonRpcProvider, Web3Provider } from '@ethersproject/providers';
|
|
2
|
+
import { BigNumber, Overrides as Overrides$1, ContractTransaction as ContractTransaction$1 } from 'ethers';
|
|
3
|
+
import { Signer } from '@ethersproject/abstract-signer';
|
|
4
|
+
import { Overrides, ContractTransaction } from '@ethersproject/contracts';
|
|
5
|
+
import { BigNumber as BigNumber$1 } from '@ethersproject/bignumber';
|
|
6
|
+
|
|
7
|
+
type SignerOrProvider = Signer | Provider;
|
|
8
|
+
declare enum SupportedChainId {
|
|
9
|
+
Base = 8453,
|
|
10
|
+
PulseChain = 369,
|
|
11
|
+
BaseSepolia = 84532
|
|
12
|
+
}
|
|
13
|
+
declare const algebraVaultDecimals = 18;
|
|
14
|
+
type TotalAmountsBN = [BigNumber, BigNumber] & {
|
|
15
|
+
total0: BigNumber;
|
|
16
|
+
total1: BigNumber;
|
|
17
|
+
};
|
|
18
|
+
type UserAmountsBN = [BigNumber, BigNumber, BigNumber];
|
|
19
|
+
type TotalAmounts = [string, string, string] & {
|
|
20
|
+
total0: string;
|
|
21
|
+
total1: string;
|
|
22
|
+
};
|
|
23
|
+
type UserAmounts = [string, string, string];
|
|
24
|
+
type UserAmountsInVault = {
|
|
25
|
+
poolAddress: string;
|
|
26
|
+
vaultAddress: string;
|
|
27
|
+
userAmounts: UserAmounts;
|
|
28
|
+
};
|
|
29
|
+
type UserAmountsInVaultBN = {
|
|
30
|
+
poolAddress: string;
|
|
31
|
+
vaultAddress: string;
|
|
32
|
+
userAmounts: UserAmountsBN;
|
|
33
|
+
};
|
|
34
|
+
interface AlgebraVault {
|
|
35
|
+
id: string;
|
|
36
|
+
tokenA: string;
|
|
37
|
+
tokenB: string;
|
|
38
|
+
allowTokenA: boolean;
|
|
39
|
+
allowTokenB: boolean;
|
|
40
|
+
holdersCount?: string;
|
|
41
|
+
fee?: string;
|
|
42
|
+
}
|
|
43
|
+
type VaultShares = {
|
|
44
|
+
vault: {
|
|
45
|
+
id: string;
|
|
46
|
+
tokenA: string;
|
|
47
|
+
tokenB: string;
|
|
48
|
+
pool: string;
|
|
49
|
+
};
|
|
50
|
+
vaultShareBalance: string;
|
|
51
|
+
vaultShareStaked: string;
|
|
52
|
+
};
|
|
53
|
+
type UserBalances = {
|
|
54
|
+
vaultShares: VaultShares[];
|
|
55
|
+
};
|
|
56
|
+
interface VaultState {
|
|
57
|
+
totalAmount0: string;
|
|
58
|
+
totalAmount1: string;
|
|
59
|
+
createdAtTimestamp: string;
|
|
60
|
+
vault: string;
|
|
61
|
+
sqrtPrice: string;
|
|
62
|
+
totalSupply: string;
|
|
63
|
+
}
|
|
64
|
+
interface Fees extends VaultState {
|
|
65
|
+
feeAmount0: string;
|
|
66
|
+
feeAmount1: string;
|
|
67
|
+
totalAmount0: string;
|
|
68
|
+
totalAmount1: string;
|
|
69
|
+
createdAtTimestamp: string;
|
|
70
|
+
vault: string;
|
|
71
|
+
sqrtPrice: string;
|
|
72
|
+
totalSupply: string;
|
|
73
|
+
}
|
|
74
|
+
interface VaultTransactionEvent extends VaultState {
|
|
75
|
+
amount0: string;
|
|
76
|
+
amount1: string;
|
|
77
|
+
totalAmount0: string;
|
|
78
|
+
totalAmount1: string;
|
|
79
|
+
totalAmount0BeforeEvent: string;
|
|
80
|
+
totalAmount1BeforeEvent: string;
|
|
81
|
+
createdAtTimestamp: string;
|
|
82
|
+
vault: string;
|
|
83
|
+
sqrtPrice: string;
|
|
84
|
+
totalSupply: string;
|
|
85
|
+
shares: string;
|
|
86
|
+
}
|
|
87
|
+
type FeesInfo = {
|
|
88
|
+
timePeriod: number;
|
|
89
|
+
feeAmount0: string;
|
|
90
|
+
feeAmount1: string;
|
|
91
|
+
pctAPR: number;
|
|
92
|
+
};
|
|
93
|
+
type DepositTokenRatio = {
|
|
94
|
+
atTimestamp: string;
|
|
95
|
+
percent: number;
|
|
96
|
+
};
|
|
97
|
+
type AverageDepositTokenRatio = {
|
|
98
|
+
timePeriod: number;
|
|
99
|
+
percent: number;
|
|
100
|
+
};
|
|
101
|
+
type VaultApr = {
|
|
102
|
+
timeInterval: number;
|
|
103
|
+
apr: number | null;
|
|
104
|
+
};
|
|
105
|
+
type FeeAprData = {
|
|
106
|
+
feeApr_1d: number | null;
|
|
107
|
+
feeApr_3d: number | null;
|
|
108
|
+
feeApr_7d: number | null;
|
|
109
|
+
feeApr_30d: number | null;
|
|
110
|
+
};
|
|
111
|
+
type PriceChange = {
|
|
112
|
+
timeInterval: number;
|
|
113
|
+
priceChange: number | null;
|
|
114
|
+
};
|
|
115
|
+
type UserBalanceInVault = {
|
|
116
|
+
vaultAddress: string;
|
|
117
|
+
poolAddress: string;
|
|
118
|
+
shares: string;
|
|
119
|
+
stakedShares: string;
|
|
120
|
+
};
|
|
121
|
+
type UserBalanceInVaultBN = {
|
|
122
|
+
vaultAddress: string;
|
|
123
|
+
poolAddress: string;
|
|
124
|
+
shares: BigNumber;
|
|
125
|
+
stakedShares: BigNumber;
|
|
126
|
+
};
|
|
127
|
+
type VaultMetrics = {
|
|
128
|
+
timeInterval: number;
|
|
129
|
+
lpPriceChange: number | null;
|
|
130
|
+
lpApr: number | null;
|
|
131
|
+
avgDtr: number;
|
|
132
|
+
feeApr: number;
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
declare function getTotalAmounts(vaultAddress: string, jsonProvider: JsonRpcProvider, raw: false, token0Decimals: number, token1Decimals: number): Promise<TotalAmounts>;
|
|
136
|
+
declare function getTotalAmounts(vaultAddress: string, jsonProvider: JsonRpcProvider, raw: true, token0Decimals: number, token1Decimals: number): Promise<TotalAmountsBN>;
|
|
137
|
+
declare function getTotalSupply(vaultAddress: string, jsonProvider: JsonRpcProvider): Promise<string>;
|
|
138
|
+
declare function getTotalSupply(vaultAddress: string, jsonProvider: JsonRpcProvider, raw: true): Promise<BigNumber>;
|
|
139
|
+
|
|
140
|
+
declare function getUserBalance(accountAddress: string, vaultAddress: string, jsonProvider: JsonRpcProvider): Promise<string>;
|
|
141
|
+
declare function getUserBalance(accountAddress: string, vaultAddress: string, jsonProvider: JsonRpcProvider, raw: true): Promise<BigNumber>;
|
|
142
|
+
declare function sendUserBalancesQueryRequest(url: string, accountAddress: string, query: string): Promise<VaultShares[]>;
|
|
143
|
+
declare function getAllUserBalances(accountAddress: string, jsonProvider: JsonRpcProvider): Promise<UserBalanceInVault[]>;
|
|
144
|
+
declare function getAllUserBalances(accountAddress: string, jsonProvider: JsonRpcProvider, raw: true): Promise<UserBalanceInVaultBN[]>;
|
|
145
|
+
declare function getUserAmounts(accountAddress: string, vaultAddress: string, jsonProvider: JsonRpcProvider, token0Decimals: number, token1Decimals: number, raw: false): Promise<UserAmounts>;
|
|
146
|
+
declare function getUserAmounts(accountAddress: string, vaultAddress: string, jsonProvider: JsonRpcProvider, token0Decimals: number, token1Decimals: number, raw: true): Promise<UserAmountsBN>;
|
|
147
|
+
declare function getAllUserAmounts(accountAddress: string, jsonProvider: Web3Provider): Promise<UserAmountsInVault[]>;
|
|
148
|
+
declare function getAllUserAmounts(accountAddress: string, jsonProvider: Web3Provider, raw: true): Promise<UserAmountsInVaultBN[]>;
|
|
149
|
+
|
|
150
|
+
declare function isTokenAllowed(tokenIdx: 0 | 1, vaultAddress: string, jsonProvider: JsonRpcProvider): Promise<boolean>;
|
|
151
|
+
declare function isDepositTokenApproved(accountAddress: string, tokenIdx: 0 | 1, amount: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider): Promise<boolean>;
|
|
152
|
+
declare function approveDepositToken(accountAddress: string, tokenIdx: 0 | 1, vaultAddress: string, jsonProvider: JsonRpcProvider, amount?: string | number | BigNumber, overrides?: Overrides): Promise<ContractTransaction>;
|
|
153
|
+
declare function _getMaxDepositAmount(tokenIdx: 0 | 1, vaultAddress: string, jsonProvider: JsonRpcProvider): Promise<BigNumber>;
|
|
154
|
+
declare function getMaxDepositAmount(tokenIdx: 0 | 1, vaultAddress: string, jsonProvider: JsonRpcProvider): Promise<BigNumber>;
|
|
155
|
+
declare function deposit(accountAddress: string, amount0: string | number | BigNumber, amount1: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider, percentSlippage?: number, overrides?: Overrides): Promise<ContractTransaction>;
|
|
156
|
+
declare function depositNativeToken(accountAddress: string, amount0: string | number | BigNumber, amount1: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider, percentSlippage?: number, overrides?: Overrides): Promise<ContractTransaction>;
|
|
157
|
+
|
|
158
|
+
declare function approveVaultToken(accountAddress: string, vaultAddress: string, jsonProvider: JsonRpcProvider, shares?: string | number | BigNumber, overrides?: Overrides): Promise<ContractTransaction>;
|
|
159
|
+
declare function isVaultTokenApproved(accountAddress: string, shares: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider): Promise<boolean>;
|
|
160
|
+
declare function withdraw(accountAddress: string, shares: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider, overrides?: Overrides): Promise<ContractTransaction>;
|
|
161
|
+
declare function withdrawWithSlippage(accountAddress: string, shares: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider, percentSlippage?: number, overrides?: Overrides): Promise<ContractTransaction>;
|
|
162
|
+
declare function withdrawNativeToken(accountAddress: string, shares: string | number | BigNumber, vaultAddress: string, jsonProvider: JsonRpcProvider, percentSlippage?: number, overrides?: Overrides): Promise<ContractTransaction>;
|
|
163
|
+
|
|
164
|
+
interface VaultQueryData {
|
|
165
|
+
almVault: AlgebraVault;
|
|
166
|
+
}
|
|
167
|
+
interface VaultWithPoolQueryData extends VaultQueryData {
|
|
168
|
+
pool: string;
|
|
169
|
+
}
|
|
170
|
+
interface VaultsByTokensQueryData {
|
|
171
|
+
almVaults: AlgebraVault[];
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
declare function getAlgebraVaultInfo(chainId: SupportedChainId, vaultAddress: string, jsonProvider?: JsonRpcProvider): Promise<AlgebraVault>;
|
|
175
|
+
interface ExtendedAlgebraVault extends AlgebraVault {
|
|
176
|
+
apr: number;
|
|
177
|
+
amount0: bigint;
|
|
178
|
+
amount1: bigint;
|
|
179
|
+
}
|
|
180
|
+
declare function getExtendedAlgebraVault(vaultAddress: string, chainId: SupportedChainId, jsonProvider: JsonRpcProvider, token0Decimals: number, token1Decimals: number): Promise<ExtendedAlgebraVault>;
|
|
181
|
+
declare function getVaultsByTokens(chainId: SupportedChainId, depositTokenAddress: string, pairedTokenAddress: string): Promise<VaultsByTokensQueryData['almVaults']>;
|
|
182
|
+
declare function getVaultsByPool(poolAddress: string, chainId: SupportedChainId): Promise<string[]>;
|
|
183
|
+
declare function getAllVaults(chainId: SupportedChainId): Promise<VaultWithPoolQueryData[]>;
|
|
184
|
+
declare function validateVaultData(vaultAddress: string, jsonProvider: JsonRpcProvider): Promise<{
|
|
185
|
+
chainId: SupportedChainId;
|
|
186
|
+
vault: AlgebraVault;
|
|
187
|
+
}>;
|
|
188
|
+
declare function getChainByProvider(jsonProvider: JsonRpcProvider): Promise<{
|
|
189
|
+
chainId: SupportedChainId;
|
|
190
|
+
}>;
|
|
191
|
+
|
|
192
|
+
declare function getTotalAmountsAtFeeCollectionEvent(objFees: VaultState, isVaultInverted: boolean, token0Decimals: number, token1Decimals: number): [number, number];
|
|
193
|
+
declare function getFeesAmountInBaseTokens(objFees: Fees, isVaultInverted: boolean, token0Decimals: number, token1Decimals: number): number;
|
|
194
|
+
declare function getTotalFeesAmountInBaseTokens(feesDataset: Fees[], t0decimals: number, t1decimals: number, isInverted: boolean): number;
|
|
195
|
+
declare function getFeesCollected(vaultAddress: string, jsonProvider: JsonRpcProvider, days?: number): Promise<TotalAmounts>;
|
|
196
|
+
declare function getFeesCollected(vaultAddress: string, jsonProvider: JsonRpcProvider, raw: true, days?: number): Promise<TotalAmountsBN>;
|
|
197
|
+
declare function getFeesCollectedInfo(vaultAddress: string, jsonProvider: JsonRpcProvider, forDays?: number[]): Promise<FeesInfo[]>;
|
|
198
|
+
interface UserFees {
|
|
199
|
+
totalUserFees0: BigNumber$1;
|
|
200
|
+
totalUserFees1: BigNumber$1;
|
|
201
|
+
sinceTimestamp: number | null;
|
|
202
|
+
}
|
|
203
|
+
declare function getUserFeesCollected(accountAddress: string, vaultAddress: string, jsonProvider: JsonRpcProvider): Promise<UserFees>;
|
|
204
|
+
|
|
205
|
+
declare function getAmountsInDepositToken(sqrtPrice: BigNumber$1, amount0: BigNumber$1, amount1: BigNumber$1, token0Decimals: number, token1Decimals: number, depositToken: 0 | 1): BigNumber$1;
|
|
206
|
+
declare function getDtrAtTransactionEvent(objTransactionEvent: VaultTransactionEvent, isVaultInverted: boolean, token0Decimals: number, token1Decimals: number, beforeEvent?: boolean): DepositTokenRatio;
|
|
207
|
+
declare function getDtrAtFeeCollectionEvent(objFeeCollectionEvent: VaultState, isVaultInverted: boolean, token0Decimals: number, token1Decimals: number): DepositTokenRatio;
|
|
208
|
+
declare function getAllDtrsForTimeInterval(vaultAddress: string, jsonProvider: JsonRpcProvider, timeInterval: number): Promise<DepositTokenRatio[]>;
|
|
209
|
+
declare function getAverageDtr(allDtrs: DepositTokenRatio[]): number;
|
|
210
|
+
declare function getAverageDepositTokenRatios(vaultAddress: string, jsonProvider: JsonRpcProvider, timeIntervals?: number[]): Promise<AverageDepositTokenRatio[]>;
|
|
211
|
+
|
|
212
|
+
declare function getLpPriceAt(vaultEvents: VaultState[], daysAgo: number, isVaultInverted: boolean, token0decimals: number, token1decimals: number): PriceChange | null;
|
|
213
|
+
declare function getLpApr(vaultAddress: string, jsonProvider: JsonRpcProvider, vault: AlgebraVault, token0Decimals: number, token1Decimals: number): Promise<{
|
|
214
|
+
aprs: (VaultApr | null)[];
|
|
215
|
+
vault: AlgebraVault;
|
|
216
|
+
tvl: number;
|
|
217
|
+
totalAmounts: TotalAmountsBN;
|
|
218
|
+
}>;
|
|
219
|
+
declare function getLpPriceChange(vaultAddress: string, jsonProvider: JsonRpcProvider, timeIntervals?: number[]): Promise<(PriceChange | null)[]>;
|
|
220
|
+
|
|
221
|
+
declare function getVaultMetrics(vaultAddress: string, jsonProvider: JsonRpcProvider, timeIntervals?: number[]): Promise<(VaultMetrics | null)[]>;
|
|
222
|
+
|
|
223
|
+
type VaultEvent = {
|
|
224
|
+
atTimestamp: string;
|
|
225
|
+
dtr: number;
|
|
226
|
+
tvl: number;
|
|
227
|
+
feeAmount: number;
|
|
228
|
+
lpPrice: number;
|
|
229
|
+
poolPrice: number;
|
|
230
|
+
};
|
|
231
|
+
declare function getTvlAtTransactionEvent(objTransactionEvent: VaultTransactionEvent, vault: AlgebraVault, token0decimals: number, token1decimals: number): number;
|
|
232
|
+
declare function getTvlAtFeeCollectionEvent(objFeeCollectionEvent: VaultState, vault: AlgebraVault, token0decimals: number, token1decimals: number): number;
|
|
233
|
+
declare function getVaultEventsForTimeInterval(vaultAddress: string, jsonProvider: JsonRpcProvider, timeInterval: number): Promise<VaultEvent[]>;
|
|
234
|
+
|
|
235
|
+
type VaultPositionsInfo = {
|
|
236
|
+
currentTick: number;
|
|
237
|
+
currentPrice: number;
|
|
238
|
+
positions: {
|
|
239
|
+
tickLower: number;
|
|
240
|
+
tickUpper: number;
|
|
241
|
+
priceLower: number;
|
|
242
|
+
priceUpper: number;
|
|
243
|
+
liquidity: string;
|
|
244
|
+
amountToken0: string;
|
|
245
|
+
amountToken1: string;
|
|
246
|
+
positionTvl: number;
|
|
247
|
+
}[];
|
|
248
|
+
};
|
|
249
|
+
declare function getVaultPositions(vaultAddress: string, jsonProvider: JsonRpcProvider, decimals0?: number, decimals1?: number): Promise<VaultPositionsInfo>;
|
|
250
|
+
type VaultRanges = {
|
|
251
|
+
baseLower: number;
|
|
252
|
+
baseUpper: number;
|
|
253
|
+
limitLower: number;
|
|
254
|
+
limitUpper: number;
|
|
255
|
+
};
|
|
256
|
+
declare function getVaultRanges(vaultAddress: string, jsonProvider: JsonRpcProvider): Promise<VaultRanges>;
|
|
257
|
+
type VaultRangePercents = {
|
|
258
|
+
currentTick: number;
|
|
259
|
+
currentPrice: number;
|
|
260
|
+
base?: {
|
|
261
|
+
tickLower: number;
|
|
262
|
+
tickUpper: number;
|
|
263
|
+
priceLower: number;
|
|
264
|
+
priceUpper: number;
|
|
265
|
+
widthPct: number;
|
|
266
|
+
widthPctTick: number;
|
|
267
|
+
distancePct: [number, number];
|
|
268
|
+
edgeGapTicks: number;
|
|
269
|
+
edgeGapPctOfSpacing: number;
|
|
270
|
+
side: 'above' | 'below';
|
|
271
|
+
inRange: boolean;
|
|
272
|
+
};
|
|
273
|
+
limit?: {
|
|
274
|
+
tickLower: number;
|
|
275
|
+
tickUpper: number;
|
|
276
|
+
priceLower: number;
|
|
277
|
+
priceUpper: number;
|
|
278
|
+
widthPct: number;
|
|
279
|
+
widthPctTick: number;
|
|
280
|
+
distancePct: [number, number];
|
|
281
|
+
edgeGapTicks: number;
|
|
282
|
+
edgeGapPctOfSpacing: number;
|
|
283
|
+
side: 'above' | 'below';
|
|
284
|
+
inRange: boolean;
|
|
285
|
+
};
|
|
286
|
+
};
|
|
287
|
+
declare function getVaultRangePercents(vaultAddress: string, jsonProvider: JsonRpcProvider, decimals0?: number, decimals1?: number): Promise<VaultRangePercents>;
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Get fee APR values for a vault from a V2 subgraph
|
|
291
|
+
* @param vaultAddress The address of the vault
|
|
292
|
+
* @param jsonProvider A JsonRpcProvider
|
|
293
|
+
* @param dex The DEX identifier
|
|
294
|
+
* @returns Fee APR data for different time periods or null if data not available
|
|
295
|
+
*/
|
|
296
|
+
declare function getFeeAprs(vaultAddress: string, jsonProvider: JsonRpcProvider): Promise<FeeAprData | null>;
|
|
297
|
+
|
|
298
|
+
declare function stake(accountAddress: string, vaultAddress: string, jsonProvider: JsonRpcProvider, shares: string | number | BigNumber, overrides?: Overrides$1): Promise<ContractTransaction$1>;
|
|
299
|
+
declare function unstake(accountAddress: string, vaultAddress: string, jsonProvider: JsonRpcProvider, shares: string | number | BigNumber, overrides?: Overrides$1): Promise<ContractTransaction$1>;
|
|
300
|
+
declare function harvest(accountAddress: string, vaultAddress: string, jsonProvider: JsonRpcProvider, overrides?: Overrides$1): Promise<ContractTransaction$1>;
|
|
301
|
+
declare function addRewardTokenToDistributor(accountAddress: string, vaultAddress: string, rewardToken: string, jsonProvider: JsonRpcProvider, overrides?: Overrides$1): Promise<ContractTransaction$1>;
|
|
302
|
+
declare function getTokenRewardAddresses(vaultAddress: string, jsonProvider: JsonRpcProvider): Promise<string[]>;
|
|
303
|
+
|
|
304
|
+
declare function getUserAmountsStaked(accountAddress: string, vaultAddress: string, jsonProvider: JsonRpcProvider, token0Decimals: number, token1Decimals: number, raw: false): Promise<UserAmounts>;
|
|
305
|
+
declare function getUserAmountsStaked(accountAddress: string, vaultAddress: string, jsonProvider: JsonRpcProvider, token0Decimals: number, token1Decimals: number, raw: true): Promise<UserAmountsBN>;
|
|
306
|
+
declare function getUserFarmingRewards(accountAddress: string, vaultAddress: string, jsonProvider: JsonRpcProvider): Promise<Map<string, BigNumber>>;
|
|
307
|
+
|
|
308
|
+
declare const VAULT_DEPOSIT_GUARD: Record<SupportedChainId, string>;
|
|
309
|
+
|
|
310
|
+
interface UserPnl {
|
|
311
|
+
totalDepositAmountBN: BigNumber;
|
|
312
|
+
totalWithdrawAmountBN: BigNumber;
|
|
313
|
+
pnlBN: BigNumber;
|
|
314
|
+
pnl: string;
|
|
315
|
+
roi: number;
|
|
316
|
+
}
|
|
317
|
+
/** calculates the PNL/ROI of a user in price of the deposit token */
|
|
318
|
+
declare function calculateUserDepositTokenPNL(accountAddress: string, vaultAddress: string, currentAmount0: string, currentAmount1: string, decimals0: number, decimals1: number, jsonProvider: JsonRpcProvider): Promise<UserPnl>;
|
|
319
|
+
|
|
320
|
+
declare function getUserDeposits(accountAddress: string, vaultAddress: string, chainId: SupportedChainId): Promise<VaultTransactionEvent[]>;
|
|
321
|
+
declare function getUserWithdraws(accountAddress: string, vaultAddress: string, chainId: SupportedChainId): Promise<VaultTransactionEvent[]>;
|
|
322
|
+
|
|
323
|
+
declare function getFarmingRewardsDistributorAddress(vaultAddress: string, jsonProvider: JsonRpcProvider): Promise<string>;
|
|
324
|
+
|
|
325
|
+
export { type AlgebraVault, type AverageDepositTokenRatio, type DepositTokenRatio, type ExtendedAlgebraVault, type FeeAprData, type Fees, type FeesInfo, type PriceChange, type SignerOrProvider, SupportedChainId, type TotalAmounts, type TotalAmountsBN, type UserAmounts, type UserAmountsBN, type UserAmountsInVault, type UserAmountsInVaultBN, type UserBalanceInVault, type UserBalanceInVaultBN, type UserBalances, VAULT_DEPOSIT_GUARD, type VaultApr, type VaultEvent, type VaultMetrics, type VaultPositionsInfo, type VaultRangePercents, type VaultRanges, type VaultShares, type VaultState, type VaultTransactionEvent, _getMaxDepositAmount, addRewardTokenToDistributor, algebraVaultDecimals, approveDepositToken, approveVaultToken, calculateUserDepositTokenPNL, deposit, depositNativeToken, getAlgebraVaultInfo, getAllDtrsForTimeInterval, getAllUserAmounts, getAllUserBalances, getAllVaults, getAmountsInDepositToken, getAverageDepositTokenRatios, getAverageDtr, getChainByProvider, getDtrAtFeeCollectionEvent, getDtrAtTransactionEvent, getExtendedAlgebraVault, getFarmingRewardsDistributorAddress, getFeeAprs, getFeesAmountInBaseTokens, getFeesCollected, getFeesCollectedInfo, getLpApr, getLpPriceAt, getLpPriceChange, getMaxDepositAmount, getTokenRewardAddresses, getTotalAmounts, getTotalAmountsAtFeeCollectionEvent, getTotalFeesAmountInBaseTokens, getTotalSupply, getTvlAtFeeCollectionEvent, getTvlAtTransactionEvent, getUserAmounts, getUserAmountsStaked, getUserBalance, getUserDeposits, getUserFarmingRewards, getUserFeesCollected, getUserWithdraws, getVaultEventsForTimeInterval, getVaultMetrics, getVaultPositions, getVaultRangePercents, getVaultRanges, getVaultsByPool, getVaultsByTokens, harvest, isDepositTokenApproved, isTokenAllowed, isVaultTokenApproved, sendUserBalancesQueryRequest, stake, unstake, validateVaultData, withdraw, withdrawNativeToken, withdrawWithSlippage };
|