@gauntlet-xyz/sdk 2.3.0 → 2.5.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 +52 -0
- package/dist/api/client.d.ts +22 -1
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +11 -1
- package/dist/api/client.js.map +1 -1
- package/dist/api/generated.d.ts +51 -7
- package/dist/api/generated.d.ts.map +1 -1
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js.map +1 -1
- package/dist/errors.d.ts +11 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +21 -2
- package/dist/errors.js.map +1 -1
- package/dist/evm/abis/priceAndFeeCalculatorV2.d.ts +44 -0
- package/dist/evm/abis/priceAndFeeCalculatorV2.d.ts.map +1 -1
- package/dist/evm/abis/priceAndFeeCalculatorV2.js +22 -0
- package/dist/evm/abis/priceAndFeeCalculatorV2.js.map +1 -1
- package/dist/evm/abis/provisionerV2.d.ts +56 -0
- package/dist/evm/abis/provisionerV2.d.ts.map +1 -1
- package/dist/evm/abis/provisionerV2.js +33 -0
- package/dist/evm/abis/provisionerV2.js.map +1 -1
- package/dist/evm/adapters/aera.d.ts.map +1 -1
- package/dist/evm/adapters/aera.js +41 -10
- package/dist/evm/adapters/aera.js.map +1 -1
- package/dist/evm/adapters/types.d.ts +2 -0
- package/dist/evm/adapters/types.d.ts.map +1 -1
- package/dist/evm/aeraContracts/priceAndFeeCalculator.d.ts +10 -5
- package/dist/evm/aeraContracts/priceAndFeeCalculator.d.ts.map +1 -1
- package/dist/evm/aeraContracts/priceAndFeeCalculator.js +39 -5
- package/dist/evm/aeraContracts/priceAndFeeCalculator.js.map +1 -1
- package/dist/evm/aeraContracts/readOptions.d.ts +8 -0
- package/dist/evm/aeraContracts/readOptions.d.ts.map +1 -0
- package/dist/evm/aeraContracts/readOptions.js +4 -0
- package/dist/evm/aeraContracts/readOptions.js.map +1 -0
- package/dist/evm/aeraContracts/v2.d.ts +373 -2
- package/dist/evm/aeraContracts/v2.d.ts.map +1 -1
- package/dist/evm/aeraContracts/v2.js +84 -28
- package/dist/evm/aeraContracts/v2.js.map +1 -1
- package/dist/evm/aeraContracts.d.ts +9 -3
- package/dist/evm/aeraContracts.d.ts.map +1 -1
- package/dist/evm/aeraContracts.js +69 -8
- package/dist/evm/aeraContracts.js.map +1 -1
- package/dist/evm/deposit.d.ts.map +1 -1
- package/dist/evm/deposit.js +1 -1
- package/dist/evm/deposit.js.map +1 -1
- package/dist/evm/index.d.ts +8 -0
- package/dist/evm/index.d.ts.map +1 -1
- package/dist/evm/index.js +3 -0
- package/dist/evm/index.js.map +1 -1
- package/dist/evm/tokenModes.d.ts +22 -0
- package/dist/evm/tokenModes.d.ts.map +1 -0
- package/dist/evm/tokenModes.js +34 -0
- package/dist/evm/tokenModes.js.map +1 -0
- package/dist/evm/withdraw.d.ts +8 -0
- package/dist/evm/withdraw.d.ts.map +1 -1
- package/dist/evm/withdraw.js +85 -5
- package/dist/evm/withdraw.js.map +1 -1
- package/dist/evm/withdrawQuote.d.ts +127 -0
- package/dist/evm/withdrawQuote.d.ts.map +1 -0
- package/dist/evm/withdrawQuote.js +164 -0
- package/dist/evm/withdrawQuote.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/manifest/vaults.json +112 -154
- package/package.json +1 -1
- package/src/api/client.ts +35 -2
- package/src/api/generated.ts +51 -7
- package/src/api/index.ts +5 -0
- package/src/errors.ts +32 -2
- package/src/evm/abis/priceAndFeeCalculatorV2.ts +22 -0
- package/src/evm/abis/provisionerV2.ts +33 -0
- package/src/evm/adapters/aera.ts +50 -23
- package/src/evm/adapters/types.ts +2 -0
- package/src/evm/aeraContracts/priceAndFeeCalculator.ts +72 -5
- package/src/evm/aeraContracts/readOptions.ts +3 -0
- package/src/evm/aeraContracts/v2.ts +158 -34
- package/src/evm/aeraContracts.ts +81 -8
- package/src/evm/deposit.ts +2 -1
- package/src/evm/index.ts +32 -0
- package/src/evm/tokenModes.ts +54 -0
- package/src/evm/withdraw.ts +131 -7
- package/src/evm/withdrawQuote.ts +360 -0
- package/src/index.ts +16 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withdraw.d.ts","sourceRoot":"","sources":["../../src/evm/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"withdraw.d.ts","sourceRoot":"","sources":["../../src/evm/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAoC,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAyB9E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAC;IAEhB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;CAC7C,GAAG,CACA;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,YAAY,CAAC,EAAE,KAAK,CAAA;CAAE,GACxD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,YAAY,CAAC,EAAE,KAAK,CAAA;CAAE,GACxD;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CAC5E,CAAC;AA+EF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,UAAU,EAAE,CAAC,CAyGvB"}
|
package/dist/evm/withdraw.js
CHANGED
|
@@ -1,10 +1,63 @@
|
|
|
1
1
|
import { getAdapter } from './adapters';
|
|
2
2
|
import { encodeTransactionWithAttribution } from '../attribution';
|
|
3
|
-
import { AccountRequiredError, VaultNotFoundError, UnsupportedAssetError, InvalidSlippageBPSError, } from '../errors';
|
|
4
|
-
import { resolveAeraRuntimeContracts, resolveAeraTokenModeSupport, } from './aeraContracts';
|
|
3
|
+
import { AccountMismatchError, AccountRequiredError, VaultNotFoundError, UnsupportedAssetError, InvalidSlippageBPSError, InvalidWithdrawParamsError, } from '../errors';
|
|
4
|
+
import { requireAeraSyncRedeemRuntime, resolveAeraRuntimeContracts, resolveAeraTokenModeSupport, } from './aeraContracts';
|
|
5
5
|
import { resolveVault } from './vaults';
|
|
6
6
|
import { DEFAULT_BPS, MAX_BPS } from '../constants';
|
|
7
7
|
import { parseOperationMode, resolveOperationMode, resolveSyncOnlyOperationMode, } from './operationMode';
|
|
8
|
+
import { ContractVersion } from './types';
|
|
9
|
+
function validateWithdrawParams(params) {
|
|
10
|
+
const modes = [
|
|
11
|
+
'amount' in params && params.amount != null,
|
|
12
|
+
'shares' in params && params.shares != null,
|
|
13
|
+
'entireAmount' in params && params.entireAmount === true,
|
|
14
|
+
].filter(Boolean).length;
|
|
15
|
+
if (modes !== 1)
|
|
16
|
+
throw new InvalidWithdrawParamsError();
|
|
17
|
+
}
|
|
18
|
+
function sameAddress(left, right) {
|
|
19
|
+
return left.toLowerCase() === right.toLowerCase();
|
|
20
|
+
}
|
|
21
|
+
function validateSyncWithdrawQuote({ params, account, chainId, slippageBps, tokenAddress, }) {
|
|
22
|
+
const quote = params.syncWithdrawQuote;
|
|
23
|
+
if (quote === undefined)
|
|
24
|
+
return;
|
|
25
|
+
const { context } = quote;
|
|
26
|
+
if (context.vaultId !== params.vaultId ||
|
|
27
|
+
context.chainId !== chainId ||
|
|
28
|
+
!sameAddress(context.tokenAddress, tokenAddress) ||
|
|
29
|
+
context.slippageBps !== slippageBps) {
|
|
30
|
+
throw new InvalidWithdrawParamsError();
|
|
31
|
+
}
|
|
32
|
+
if (context.account !== undefined && !sameAddress(context.account, account)) {
|
|
33
|
+
throw new InvalidWithdrawParamsError();
|
|
34
|
+
}
|
|
35
|
+
switch (context.request.mode) {
|
|
36
|
+
case 'amount':
|
|
37
|
+
if (quote.kind !== 'withdraw' ||
|
|
38
|
+
!('amount' in params && params.amount != null) ||
|
|
39
|
+
context.request.amount !== params.amount ||
|
|
40
|
+
quote.tokensOut !== params.amount) {
|
|
41
|
+
throw new InvalidWithdrawParamsError();
|
|
42
|
+
}
|
|
43
|
+
return;
|
|
44
|
+
case 'shares':
|
|
45
|
+
if (quote.kind !== 'redeem' ||
|
|
46
|
+
!('shares' in params && params.shares != null) ||
|
|
47
|
+
context.request.shares !== params.shares ||
|
|
48
|
+
quote.shares !== params.shares) {
|
|
49
|
+
throw new InvalidWithdrawParamsError();
|
|
50
|
+
}
|
|
51
|
+
return;
|
|
52
|
+
case 'entireAmount':
|
|
53
|
+
if (quote.kind !== 'redeem' ||
|
|
54
|
+
!('entireAmount' in params && params.entireAmount) ||
|
|
55
|
+
!sameAddress(context.request.account, account)) {
|
|
56
|
+
throw new InvalidWithdrawParamsError();
|
|
57
|
+
}
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
8
61
|
/**
|
|
9
62
|
* Builds the ordered list of EVM transactions required to withdraw from a Gauntlet vault.
|
|
10
63
|
*
|
|
@@ -36,10 +89,12 @@ import { parseOperationMode, resolveOperationMode, resolveSyncOnlyOperationMode,
|
|
|
36
89
|
* const txs = await getWithdrawTx(client, {
|
|
37
90
|
* vaultId: 'baseUsdcPrime',
|
|
38
91
|
* entireAmount: true,
|
|
92
|
+
* account: walletAddress,
|
|
39
93
|
* });
|
|
40
94
|
* ```
|
|
41
95
|
*/
|
|
42
96
|
export async function getWithdrawTx(client, params) {
|
|
97
|
+
validateWithdrawParams(params);
|
|
43
98
|
if (params.slippageBps !== undefined &&
|
|
44
99
|
(!Number.isInteger(params.slippageBps) ||
|
|
45
100
|
params.slippageBps < 0 ||
|
|
@@ -53,6 +108,11 @@ export async function getWithdrawTx(client, params) {
|
|
|
53
108
|
const account = client.wallet?.account?.address;
|
|
54
109
|
if (!account)
|
|
55
110
|
throw new AccountRequiredError();
|
|
111
|
+
if ('entireAmount' in params && params.entireAmount && params.account !== undefined) {
|
|
112
|
+
if (!sameAddress(params.account, account)) {
|
|
113
|
+
throw new AccountMismatchError(account, params.account);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
56
116
|
const { vault, protocol } = resolved;
|
|
57
117
|
const token = vault.supplyToken.length > 1
|
|
58
118
|
? vault.supplyToken.find((tInfo) => tInfo.symbol === params.assetSymbol)
|
|
@@ -63,15 +123,34 @@ export async function getWithdrawTx(client, params) {
|
|
|
63
123
|
const adapter = getAdapter(protocol);
|
|
64
124
|
const publicClient = client.getPublicClient(chainId);
|
|
65
125
|
const requestedWithdrawMode = parseOperationMode(params.vaultId, params.depositMode);
|
|
126
|
+
const slippageBps = params.slippageBps ?? params.syncWithdrawQuote?.context.slippageBps ?? DEFAULT_BPS;
|
|
66
127
|
let modifiedDepositMode;
|
|
67
128
|
let aeraRuntime;
|
|
129
|
+
if (params.syncWithdrawQuote !== undefined) {
|
|
130
|
+
if (protocol !== 'aera' || requestedWithdrawMode === 'async') {
|
|
131
|
+
throw new InvalidWithdrawParamsError();
|
|
132
|
+
}
|
|
133
|
+
validateSyncWithdrawQuote({
|
|
134
|
+
params,
|
|
135
|
+
account,
|
|
136
|
+
chainId,
|
|
137
|
+
slippageBps,
|
|
138
|
+
tokenAddress: token.address,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
68
141
|
if (protocol === 'aera') {
|
|
69
142
|
aeraRuntime = await resolveAeraRuntimeContracts(publicClient, vault);
|
|
70
|
-
|
|
71
|
-
|
|
143
|
+
if (aeraRuntime.provisioner.version === ContractVersion.V2 &&
|
|
144
|
+
(requestedWithdrawMode === 'sync' || params.syncWithdrawQuote !== undefined)) {
|
|
145
|
+
requireAeraSyncRedeemRuntime(aeraRuntime);
|
|
146
|
+
}
|
|
147
|
+
const tokenModeSupport = await resolveAeraTokenModeSupport(publicClient, aeraRuntime, token.address, { includeSyncModes: requestedWithdrawMode !== 'async' });
|
|
148
|
+
modifiedDepositMode = resolveOperationMode(params.vaultId, params.syncWithdrawQuote !== undefined ? 'sync' : requestedWithdrawMode, {
|
|
72
149
|
async: tokenModeSupport.asyncRedeem,
|
|
73
150
|
sync: tokenModeSupport.syncRedeem,
|
|
74
151
|
});
|
|
152
|
+
if (modifiedDepositMode === 'sync')
|
|
153
|
+
requireAeraSyncRedeemRuntime(aeraRuntime);
|
|
75
154
|
}
|
|
76
155
|
else {
|
|
77
156
|
modifiedDepositMode = resolveSyncOnlyOperationMode(params.vaultId, requestedWithdrawMode);
|
|
@@ -83,10 +162,11 @@ export async function getWithdrawTx(client, params) {
|
|
|
83
162
|
async: modifiedDepositMode === 'async',
|
|
84
163
|
asset: token,
|
|
85
164
|
publicClient,
|
|
86
|
-
slippageBps
|
|
165
|
+
slippageBps,
|
|
87
166
|
solverTip: params.solverTip,
|
|
88
167
|
maxPriceAge: params.maxPriceAge,
|
|
89
168
|
aeraRuntime,
|
|
169
|
+
syncWithdrawQuote: params.syncWithdrawQuote,
|
|
90
170
|
...('shares' in params && params.shares != null ? { shares: params.shares } : {}),
|
|
91
171
|
...('amount' in params && params.amount != null ? { amount: params.amount } : {}),
|
|
92
172
|
...('entireAmount' in params && params.entireAmount ? { entireAmount: true } : {}),
|
package/dist/evm/withdraw.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withdraw.js","sourceRoot":"","sources":["../../src/evm/withdraw.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"withdraw.js","sourceRoot":"","sources":["../../src/evm/withdraw.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { Address } from 'viem';
|
|
2
|
+
import type { GauntletClient } from '../client';
|
|
3
|
+
import { type SyncRedeemRate } from './aeraContracts/v2';
|
|
4
|
+
/** Epoch capacity accounting for the global sync redeem cap. */
|
|
5
|
+
export interface SyncWithdrawCapacity {
|
|
6
|
+
/** Effective epoch cap (min of relative and absolute), in numeraire. */
|
|
7
|
+
epochCapNumeraire: bigint;
|
|
8
|
+
/** Numeraire already redeemed globally in the current epoch. */
|
|
9
|
+
epochRedeemedNumeraire: bigint;
|
|
10
|
+
/** Remaining global sync redeem capacity this epoch, in numeraire. */
|
|
11
|
+
remainingNumeraire: bigint;
|
|
12
|
+
/** Remaining capacity expressed in the withdraw token. */
|
|
13
|
+
remainingTokens: bigint;
|
|
14
|
+
/** This redemption's size in numeraire (matches the on-chain epoch accounting). */
|
|
15
|
+
requestNumeraire: bigint;
|
|
16
|
+
/** True when this redemption alone exceeds remaining epoch capacity (the tx would revert). */
|
|
17
|
+
exceedsCapacity: boolean;
|
|
18
|
+
}
|
|
19
|
+
export type SyncWithdrawQuoteRequest = {
|
|
20
|
+
mode: 'amount';
|
|
21
|
+
amount: bigint;
|
|
22
|
+
} | {
|
|
23
|
+
mode: 'shares';
|
|
24
|
+
shares: bigint;
|
|
25
|
+
} | {
|
|
26
|
+
mode: 'entireAmount';
|
|
27
|
+
account: Address;
|
|
28
|
+
};
|
|
29
|
+
export interface SyncWithdrawQuoteContext {
|
|
30
|
+
vaultId: string;
|
|
31
|
+
chainId: number;
|
|
32
|
+
tokenAddress: Address;
|
|
33
|
+
/** Account used for balance and lock reads when the quote is account-scoped. */
|
|
34
|
+
account?: Address;
|
|
35
|
+
/** Slippage tolerance used to derive `minTokensOut` or `maxUnitsIn`. */
|
|
36
|
+
slippageBps: number;
|
|
37
|
+
/** Block snapshot used for all quote reads. */
|
|
38
|
+
blockNumber: bigint;
|
|
39
|
+
/** Exact sizing request that produced this quote. */
|
|
40
|
+
request: SyncWithdrawQuoteRequest;
|
|
41
|
+
}
|
|
42
|
+
interface SyncWithdrawQuoteDetails {
|
|
43
|
+
/** Vault units (shares) burned: exact for `'redeem'`, estimated for `'withdraw'`. */
|
|
44
|
+
shares: bigint;
|
|
45
|
+
/** Upper bound on shares burned after slippage (equals `shares` for `'redeem'`). */
|
|
46
|
+
maxUnitsIn: bigint;
|
|
47
|
+
/** Tokens received: exact (requested) for `'withdraw'`, estimated for `'redeem'`. */
|
|
48
|
+
tokensOut: bigint;
|
|
49
|
+
/** Lower bound on tokens received after slippage (equals `tokensOut` for `'withdraw'`). */
|
|
50
|
+
minTokensOut: bigint;
|
|
51
|
+
/** Live multiplier breakdown (base, dynamic premium, effective), in bps. */
|
|
52
|
+
rate: SyncRedeemRate;
|
|
53
|
+
capacity: SyncWithdrawCapacity;
|
|
54
|
+
/** Timestamp until which the account's units are locked; undefined when no account was quoted. */
|
|
55
|
+
unitsLockedUntil?: bigint;
|
|
56
|
+
/** Context that must match any transaction build using these quote bounds. */
|
|
57
|
+
context: SyncWithdrawQuoteContext;
|
|
58
|
+
}
|
|
59
|
+
/** Bounds consumed by one of the two on-chain sync withdraw entry points. */
|
|
60
|
+
export type SyncWithdrawQuoteBounds = {
|
|
61
|
+
kind: 'redeem';
|
|
62
|
+
shares: bigint;
|
|
63
|
+
minTokensOut: bigint;
|
|
64
|
+
context: SyncWithdrawQuoteContext;
|
|
65
|
+
} | {
|
|
66
|
+
kind: 'withdraw';
|
|
67
|
+
tokensOut: bigint;
|
|
68
|
+
maxUnitsIn: bigint;
|
|
69
|
+
context: SyncWithdrawQuoteContext;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* A live quote for an instant (sync) withdraw.
|
|
73
|
+
*
|
|
74
|
+
* `kind` distinguishes the two on-chain entry points:
|
|
75
|
+
* - `'redeem'`: exact shares burned, estimated tokens out (used for by-shares / entire-balance exits)
|
|
76
|
+
* - `'withdraw'`: exact tokens out, estimated shares burned (used for by-token-amount exits)
|
|
77
|
+
*/
|
|
78
|
+
export type SyncWithdrawQuote = (SyncWithdrawQuoteDetails & {
|
|
79
|
+
kind: 'redeem';
|
|
80
|
+
}) | (SyncWithdrawQuoteDetails & {
|
|
81
|
+
kind: 'withdraw';
|
|
82
|
+
});
|
|
83
|
+
type SyncWithdrawQuoteBaseParams = {
|
|
84
|
+
vaultId: string;
|
|
85
|
+
/** EVM chain ID. Defaults to the vault's primary chain (Base for current multichain vaults). */
|
|
86
|
+
chainId?: number;
|
|
87
|
+
/** Required for multiasset vaults. */
|
|
88
|
+
assetSymbol?: string;
|
|
89
|
+
/** Optional for explicit amount/shares quotes; required for full-position quotes. */
|
|
90
|
+
account?: Address;
|
|
91
|
+
/**
|
|
92
|
+
* Slippage tolerance in basis points (e.g. 100 = 1%). Defaults to 100.
|
|
93
|
+
* A value of 10000 is invalid for share-sized quotes because it makes `minTokensOut` zero.
|
|
94
|
+
*/
|
|
95
|
+
slippageBps?: number;
|
|
96
|
+
};
|
|
97
|
+
export type SyncWithdrawQuoteParams = (SyncWithdrawQuoteBaseParams & {
|
|
98
|
+
shares: bigint;
|
|
99
|
+
amount?: never;
|
|
100
|
+
entireAmount?: never;
|
|
101
|
+
}) | (SyncWithdrawQuoteBaseParams & {
|
|
102
|
+
amount: bigint;
|
|
103
|
+
shares?: never;
|
|
104
|
+
entireAmount?: never;
|
|
105
|
+
}) | (SyncWithdrawQuoteBaseParams & {
|
|
106
|
+
account: Address;
|
|
107
|
+
entireAmount: true;
|
|
108
|
+
shares?: never;
|
|
109
|
+
amount?: never;
|
|
110
|
+
});
|
|
111
|
+
/**
|
|
112
|
+
* Builds a live quote for an instant (sync) withdraw without sending a transaction.
|
|
113
|
+
*
|
|
114
|
+
* Surfaces everything the on-chain `redeem`/`withdraw` would apply or check but that a plain
|
|
115
|
+
* transaction build does not pre-validate: the effective rate (including the price-age dynamic
|
|
116
|
+
* premium), slippage bounds, the global per-epoch redeem capacity, and whether the caller's units
|
|
117
|
+
* are still locked from a recent sync deposit.
|
|
118
|
+
*
|
|
119
|
+
* @throws {VaultNotFoundError} If the vault ID is not found.
|
|
120
|
+
* @throws {UnsupportedAssetError} If the asset symbol is not accepted by the vault.
|
|
121
|
+
* @throws {UnsupportedFeatureError} If the vault is not an Aera V2 deployment.
|
|
122
|
+
* @throws {UnsupportedDepositModeError} If sync redeem is not enabled for the token.
|
|
123
|
+
* @throws {StalePriceError} If the oracle price is too stale for an instant redeem.
|
|
124
|
+
*/
|
|
125
|
+
export declare function getSyncWithdrawQuote(client: GauntletClient, params: SyncWithdrawQuoteParams): Promise<SyncWithdrawQuote>;
|
|
126
|
+
export {};
|
|
127
|
+
//# sourceMappingURL=withdrawQuote.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdrawQuote.d.ts","sourceRoot":"","sources":["../../src/evm/withdrawQuote.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { AccountRequiredError, InvalidSlippageBPSError, InvalidWithdrawParamsError, requireNonZeroSyncWithdrawBound, UnsupportedAssetError, UnsupportedFeatureError, VaultNotFoundError, } from '../errors';
|
|
2
|
+
import { DEFAULT_BPS, MAX_BPS } from '../constants';
|
|
3
|
+
import { resolveVault } from './vaults';
|
|
4
|
+
import { applySlippageDown, applySlippageUp, requireAeraSyncRedeemRuntime, resolveAeraRuntimeContracts, resolveAeraTokenModeSupport, } from './aeraContracts';
|
|
5
|
+
import { multiDepositorVaultAbi } from './abis/multiDepositorVault';
|
|
6
|
+
import { convertNumeraireToToken, convertTokenToNumeraire, } from './aeraContracts/priceAndFeeCalculator';
|
|
7
|
+
import { getSyncRedeemEpochState, getSyncRedeemRate, getSyncRedeemTokenOut, getSyncWithdrawUnitsIn, getUserUnitsRefundableUntil, } from './aeraContracts/v2';
|
|
8
|
+
import { resolveOperationMode } from './operationMode';
|
|
9
|
+
function validateSyncWithdrawQuoteParams(params) {
|
|
10
|
+
const modes = [
|
|
11
|
+
'amount' in params && params.amount != null,
|
|
12
|
+
'shares' in params && params.shares != null,
|
|
13
|
+
'entireAmount' in params && params.entireAmount === true,
|
|
14
|
+
].filter(Boolean).length;
|
|
15
|
+
if (modes !== 1)
|
|
16
|
+
throw new InvalidWithdrawParamsError();
|
|
17
|
+
if ('entireAmount' in params && params.entireAmount === true && !params.account) {
|
|
18
|
+
throw new AccountRequiredError();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Builds a live quote for an instant (sync) withdraw without sending a transaction.
|
|
23
|
+
*
|
|
24
|
+
* Surfaces everything the on-chain `redeem`/`withdraw` would apply or check but that a plain
|
|
25
|
+
* transaction build does not pre-validate: the effective rate (including the price-age dynamic
|
|
26
|
+
* premium), slippage bounds, the global per-epoch redeem capacity, and whether the caller's units
|
|
27
|
+
* are still locked from a recent sync deposit.
|
|
28
|
+
*
|
|
29
|
+
* @throws {VaultNotFoundError} If the vault ID is not found.
|
|
30
|
+
* @throws {UnsupportedAssetError} If the asset symbol is not accepted by the vault.
|
|
31
|
+
* @throws {UnsupportedFeatureError} If the vault is not an Aera V2 deployment.
|
|
32
|
+
* @throws {UnsupportedDepositModeError} If sync redeem is not enabled for the token.
|
|
33
|
+
* @throws {StalePriceError} If the oracle price is too stale for an instant redeem.
|
|
34
|
+
*/
|
|
35
|
+
export async function getSyncWithdrawQuote(client, params) {
|
|
36
|
+
validateSyncWithdrawQuoteParams(params);
|
|
37
|
+
if (params.slippageBps !== undefined &&
|
|
38
|
+
(!Number.isInteger(params.slippageBps) ||
|
|
39
|
+
params.slippageBps < 0 ||
|
|
40
|
+
params.slippageBps > Number(MAX_BPS))) {
|
|
41
|
+
throw new InvalidSlippageBPSError(params.slippageBps);
|
|
42
|
+
}
|
|
43
|
+
const slippageBps = params.slippageBps ?? DEFAULT_BPS;
|
|
44
|
+
const resolved = await resolveVault(client, params.vaultId, params.chainId);
|
|
45
|
+
if (!resolved)
|
|
46
|
+
throw new VaultNotFoundError(params.vaultId);
|
|
47
|
+
const { vault, protocol } = resolved;
|
|
48
|
+
if (protocol !== 'aera') {
|
|
49
|
+
throw new UnsupportedFeatureError('Sync withdraw quote is only available for Aera vaults');
|
|
50
|
+
}
|
|
51
|
+
const chainId = params.chainId ?? vault.chainId;
|
|
52
|
+
const publicClient = client.getPublicClient(chainId);
|
|
53
|
+
const token = vault.supplyToken.length > 1
|
|
54
|
+
? vault.supplyToken.find((tInfo) => tInfo.symbol === params.assetSymbol)
|
|
55
|
+
: vault.supplyToken[0];
|
|
56
|
+
if (token === undefined) {
|
|
57
|
+
throw new UnsupportedAssetError(params.assetSymbol ?? 'unknown', params.vaultId);
|
|
58
|
+
}
|
|
59
|
+
const quoteBlock = await publicClient.getBlock();
|
|
60
|
+
if (quoteBlock.number === null) {
|
|
61
|
+
throw new UnsupportedFeatureError('Aera: sync withdraw quote requires a numbered block');
|
|
62
|
+
}
|
|
63
|
+
const quoteReadContext = {
|
|
64
|
+
blockNumber: quoteBlock.number,
|
|
65
|
+
blockTimestamp: BigInt(quoteBlock.timestamp),
|
|
66
|
+
};
|
|
67
|
+
const runtime = await resolveAeraRuntimeContracts(publicClient, vault, quoteReadContext);
|
|
68
|
+
requireAeraSyncRedeemRuntime(runtime);
|
|
69
|
+
const support = await resolveAeraTokenModeSupport(publicClient, runtime, token.address, quoteReadContext);
|
|
70
|
+
resolveOperationMode(params.vaultId, 'sync', {
|
|
71
|
+
async: support.asyncRedeem,
|
|
72
|
+
sync: support.syncRedeem,
|
|
73
|
+
});
|
|
74
|
+
const provisioner = runtime.provisioner.address;
|
|
75
|
+
const feeCalculator = runtime.feeCalculator.address;
|
|
76
|
+
const feeVersion = runtime.feeCalculator.version;
|
|
77
|
+
const vaultAddress = vault.vaultAddress;
|
|
78
|
+
const rate = await getSyncRedeemRate(publicClient, provisioner, vaultAddress, token.address, feeCalculator, quoteReadContext);
|
|
79
|
+
let kind;
|
|
80
|
+
let shares;
|
|
81
|
+
let tokensOut;
|
|
82
|
+
let minTokensOut;
|
|
83
|
+
let maxUnitsIn;
|
|
84
|
+
let request;
|
|
85
|
+
if ('amount' in params && params.amount != null) {
|
|
86
|
+
// Exact token out: shares burned is the estimate, bounded above by slippage.
|
|
87
|
+
kind = 'withdraw';
|
|
88
|
+
request = { mode: 'amount', amount: params.amount };
|
|
89
|
+
tokensOut = params.amount;
|
|
90
|
+
requireNonZeroSyncWithdrawBound(tokensOut, 'tokensOut');
|
|
91
|
+
minTokensOut = params.amount;
|
|
92
|
+
shares = await getSyncWithdrawUnitsIn(publicClient, provisioner, feeCalculator, feeVersion, vaultAddress, token.address, params.amount, rate.effectiveMultiplierBps, quoteReadContext);
|
|
93
|
+
maxUnitsIn = applySlippageUp(shares, slippageBps);
|
|
94
|
+
requireNonZeroSyncWithdrawBound(maxUnitsIn, 'maxUnitsIn');
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
// Exact shares in: tokens out is the estimate, bounded below by slippage.
|
|
98
|
+
kind = 'redeem';
|
|
99
|
+
if ('entireAmount' in params && params.entireAmount) {
|
|
100
|
+
if (!params.account)
|
|
101
|
+
throw new AccountRequiredError();
|
|
102
|
+
request = { mode: 'entireAmount', account: params.account };
|
|
103
|
+
shares = await publicClient.readContract({
|
|
104
|
+
address: vaultAddress,
|
|
105
|
+
abi: multiDepositorVaultAbi,
|
|
106
|
+
functionName: 'balanceOf',
|
|
107
|
+
args: [params.account],
|
|
108
|
+
blockNumber: quoteReadContext.blockNumber,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
else if ('shares' in params && params.shares != null) {
|
|
112
|
+
request = { mode: 'shares', shares: params.shares };
|
|
113
|
+
shares = params.shares;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
throw new InvalidWithdrawParamsError();
|
|
117
|
+
}
|
|
118
|
+
requireNonZeroSyncWithdrawBound(shares, 'unitsIn');
|
|
119
|
+
tokensOut = await getSyncRedeemTokenOut(publicClient, provisioner, feeCalculator, feeVersion, vaultAddress, token.address, shares, rate.effectiveMultiplierBps, quoteReadContext);
|
|
120
|
+
minTokensOut = applySlippageDown(tokensOut, slippageBps);
|
|
121
|
+
requireNonZeroSyncWithdrawBound(minTokensOut, 'minTokensOut');
|
|
122
|
+
maxUnitsIn = shares;
|
|
123
|
+
}
|
|
124
|
+
const [epoch, requestNumeraire, unitsLockedUntil] = await Promise.all([
|
|
125
|
+
getSyncRedeemEpochState(publicClient, provisioner, quoteReadContext),
|
|
126
|
+
convertTokenToNumeraire(publicClient, feeCalculator, feeVersion, vaultAddress, token.address, tokensOut, quoteReadContext),
|
|
127
|
+
params.account
|
|
128
|
+
? getUserUnitsRefundableUntil(publicClient, provisioner, params.account, quoteReadContext)
|
|
129
|
+
: Promise.resolve(undefined),
|
|
130
|
+
]);
|
|
131
|
+
const remainingNumeraire = epoch.epochCapNumeraire > epoch.epochRedeemedNumeraire
|
|
132
|
+
? epoch.epochCapNumeraire - epoch.epochRedeemedNumeraire
|
|
133
|
+
: 0n;
|
|
134
|
+
const remainingTokens = await convertNumeraireToToken(publicClient, feeCalculator, feeVersion, vaultAddress, token.address, remainingNumeraire, quoteReadContext);
|
|
135
|
+
const quoteDetails = {
|
|
136
|
+
shares,
|
|
137
|
+
maxUnitsIn,
|
|
138
|
+
tokensOut,
|
|
139
|
+
minTokensOut,
|
|
140
|
+
rate,
|
|
141
|
+
capacity: {
|
|
142
|
+
epochCapNumeraire: epoch.epochCapNumeraire,
|
|
143
|
+
epochRedeemedNumeraire: epoch.epochRedeemedNumeraire,
|
|
144
|
+
remainingNumeraire,
|
|
145
|
+
remainingTokens,
|
|
146
|
+
requestNumeraire,
|
|
147
|
+
exceedsCapacity: requestNumeraire > remainingNumeraire,
|
|
148
|
+
},
|
|
149
|
+
unitsLockedUntil,
|
|
150
|
+
context: {
|
|
151
|
+
vaultId: params.vaultId,
|
|
152
|
+
chainId,
|
|
153
|
+
tokenAddress: token.address,
|
|
154
|
+
...(params.account ? { account: params.account } : {}),
|
|
155
|
+
slippageBps,
|
|
156
|
+
blockNumber: quoteReadContext.blockNumber,
|
|
157
|
+
request,
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
if (kind === 'redeem')
|
|
161
|
+
return { kind, ...quoteDetails };
|
|
162
|
+
return { kind, ...quoteDetails };
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=withdrawQuote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdrawQuote.js","sourceRoot":"","sources":["../../src/evm/withdrawQuote.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export type { VaultFilter } from './evm/vaults';
|
|
|
7
7
|
export { getDepositTx } from './evm/deposit';
|
|
8
8
|
export { getDepositReceiverApprovalTx } from './evm/depositReceiverApproval';
|
|
9
9
|
export { getWithdrawTx } from './evm/withdraw';
|
|
10
|
+
export { getSyncWithdrawQuote } from './evm/withdrawQuote';
|
|
11
|
+
export { getAeraTokenModeSupport } from './evm/tokenModes';
|
|
10
12
|
export { getUserCurrentBalance } from './evm/userCurrentBalance';
|
|
11
13
|
export { getVaults, VaultId } from './evm/vaults';
|
|
12
14
|
export { resolveAeraRuntimeContracts, resolveContractVersion } from './evm/aeraContracts';
|
|
@@ -14,10 +16,14 @@ export { Rounding, convertTokenToUnits, convertTokenToUnitsIfActive, convertUnit
|
|
|
14
16
|
export type { EvmDepositParams } from './evm/deposit';
|
|
15
17
|
export type { EvmDepositReceiverApprovalParams } from './evm/depositReceiverApproval';
|
|
16
18
|
export type { EvmWithdrawParams } from './evm/withdraw';
|
|
19
|
+
export type { SyncWithdrawQuote, SyncWithdrawQuoteParams, SyncWithdrawCapacity, SyncWithdrawQuoteContext, SyncWithdrawQuoteRequest, SyncWithdrawQuoteBounds, } from './evm/withdrawQuote';
|
|
20
|
+
export type { AeraTokenModeSupportParams } from './evm/tokenModes';
|
|
21
|
+
export type { SyncRedeemRate } from './evm/aeraContracts/v2';
|
|
17
22
|
export type { EvmTxStep } from './evm/adapters/types';
|
|
18
23
|
export type { UserCurrentBalanceParams, UserCurrentBalance } from './evm/userCurrentBalance';
|
|
19
24
|
export type { PreparedTx } from './attribution';
|
|
20
25
|
export type { AeraRuntimeContracts, AeraTokenModeSupport } from './evm/aeraContracts';
|
|
21
26
|
export type { NormalizedVaultPriceState } from './evm/aeraContracts/priceAndFeeCalculator';
|
|
22
|
-
export { GauntletSDKError, VaultNotFoundError, UnsupportedAssetError, ChainMismatchError, UnsupportedDepositModeError, RpcNotConfiguredError, AccountRequiredError, UnsupportedProtocolError, UnsupportedFeatureError, InvalidWithdrawParamsError, UnimplementedFeatureError, UnitConversionError, StalePriceError, InvalidSolverTipError, } from './errors';
|
|
27
|
+
export { GauntletSDKError, VaultNotFoundError, UnsupportedAssetError, ChainMismatchError, UnsupportedDepositModeError, RpcNotConfiguredError, AccountMismatchError, AccountRequiredError, UnsupportedProtocolError, UnsupportedFeatureError, InvalidWithdrawParamsError, InvalidSyncWithdrawBoundError, InvalidSlippageBPSError, UnimplementedFeatureError, UnitConversionError, StalePriceError, InvalidSolverTipError, } from './errors';
|
|
28
|
+
export type { SyncWithdrawBound } from './errors';
|
|
23
29
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,cAAc,OAAO,CAAC;AAEtB,YAAY,EACV,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAClB,aAAa,EACb,aAAa,GACd,MAAM,2CAA2C,CAAC;AAEnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,gCAAgC,EAAE,MAAM,+BAA+B,CAAC;AACtF,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACtF,YAAY,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAE3F,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GACtB,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,cAAc,OAAO,CAAC;AAEtB,YAAY,EACV,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,aAAa,GACd,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAClB,aAAa,EACb,aAAa,GACd,MAAM,2CAA2C,CAAC;AAEnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,gCAAgC,EAAE,MAAM,+BAA+B,CAAC;AACtF,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AACnE,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACtF,YAAY,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAE3F,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,EAC7B,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,YAAY,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,9 +4,11 @@ export * from './api';
|
|
|
4
4
|
export { getDepositTx } from './evm/deposit';
|
|
5
5
|
export { getDepositReceiverApprovalTx } from './evm/depositReceiverApproval';
|
|
6
6
|
export { getWithdrawTx } from './evm/withdraw';
|
|
7
|
+
export { getSyncWithdrawQuote } from './evm/withdrawQuote';
|
|
8
|
+
export { getAeraTokenModeSupport } from './evm/tokenModes';
|
|
7
9
|
export { getUserCurrentBalance } from './evm/userCurrentBalance';
|
|
8
10
|
export { getVaults, VaultId } from './evm/vaults';
|
|
9
11
|
export { resolveAeraRuntimeContracts, resolveContractVersion } from './evm/aeraContracts';
|
|
10
12
|
export { Rounding, convertTokenToUnits, convertTokenToUnitsIfActive, convertUnitsToToken, convertUnitsToTokenIfActive, getAnchorTimestamp, getVaultState, isVaultPaused, } from './evm/aeraContracts/priceAndFeeCalculator';
|
|
11
|
-
export { GauntletSDKError, VaultNotFoundError, UnsupportedAssetError, ChainMismatchError, UnsupportedDepositModeError, RpcNotConfiguredError, AccountRequiredError, UnsupportedProtocolError, UnsupportedFeatureError, InvalidWithdrawParamsError, UnimplementedFeatureError, UnitConversionError, StalePriceError, InvalidSolverTipError, } from './errors';
|
|
13
|
+
export { GauntletSDKError, VaultNotFoundError, UnsupportedAssetError, ChainMismatchError, UnsupportedDepositModeError, RpcNotConfiguredError, AccountMismatchError, AccountRequiredError, UnsupportedProtocolError, UnsupportedFeatureError, InvalidWithdrawParamsError, InvalidSyncWithdrawBoundError, InvalidSlippageBPSError, UnimplementedFeatureError, UnitConversionError, StalePriceError, InvalidSolverTipError, } from './errors';
|
|
12
14
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,cAAc,OAAO,CAAC;AAWtB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAClB,aAAa,EACb,aAAa,GACd,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,cAAc,OAAO,CAAC;AAWtB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAClB,aAAa,EACb,aAAa,GACd,MAAM,2CAA2C,CAAC;AAqBnD,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,6BAA6B,EAC7B,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GACtB,MAAM,UAAU,CAAC"}
|