@gauntlet-xyz/sdk 2.3.0 → 3.0.1
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 +135 -0
- package/dist/api/activity.d.ts +1 -1
- package/dist/api/activity.d.ts.map +1 -1
- package/dist/api/caip.d.ts +1 -1
- package/dist/api/caip.d.ts.map +1 -1
- package/dist/api/client.d.ts +65 -6
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/errors.d.ts +1 -1
- package/dist/api/errors.d.ts.map +1 -1
- package/dist/api/generated.d.ts +621 -14
- package/dist/api/generated.d.ts.map +1 -1
- package/dist/api/index.d.ts +13 -13
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +48 -8
- package/dist/api/index.js.map +7 -1
- package/dist/api/positionHistory.d.ts +1 -1
- package/dist/api/positionHistory.d.ts.map +1 -1
- package/dist/attribution/index.d.ts +3 -3
- package/dist/attribution/index.d.ts.map +1 -1
- package/dist/chunk-7TA2OJUK.js +4364 -0
- package/dist/chunk-7TA2OJUK.js.map +7 -0
- package/dist/chunk-HC2BS7MK.js +439 -0
- package/dist/chunk-HC2BS7MK.js.map +7 -0
- package/dist/chunk-S2TTA45N.js +2009 -0
- package/dist/chunk-S2TTA45N.js.map +7 -0
- package/dist/chunk-STIV2CC4.js +57 -0
- package/dist/chunk-STIV2CC4.js.map +7 -0
- package/dist/chunk-SU6JAKIA.js +283 -0
- package/dist/chunk-SU6JAKIA.js.map +7 -0
- package/dist/cjs/api/activity.d.ts +70 -0
- package/dist/cjs/api/activity.d.ts.map +1 -0
- package/dist/cjs/api/activity.js +136 -0
- package/dist/cjs/api/activity.js.map +7 -0
- package/dist/cjs/api/caip.d.ts +29 -0
- package/dist/cjs/api/caip.d.ts.map +1 -0
- package/dist/cjs/api/caip.js +59 -0
- package/dist/cjs/api/caip.js.map +7 -0
- package/dist/cjs/api/client.d.ts +173 -0
- package/dist/cjs/api/client.d.ts.map +1 -0
- package/dist/cjs/api/client.js +171 -0
- package/dist/cjs/api/client.js.map +7 -0
- package/dist/cjs/api/decimal.d.ts +21 -0
- package/dist/cjs/api/decimal.d.ts.map +1 -0
- package/dist/cjs/api/decimal.js +60 -0
- package/dist/cjs/api/decimal.js.map +7 -0
- package/dist/cjs/api/errors.d.ts +32 -0
- package/dist/cjs/api/errors.d.ts.map +1 -0
- package/dist/cjs/api/errors.js +80 -0
- package/dist/cjs/api/errors.js.map +7 -0
- package/dist/cjs/api/generated.d.ts +2068 -0
- package/dist/cjs/api/generated.d.ts.map +1 -0
- package/dist/cjs/api/generated.js +17 -0
- package/dist/cjs/api/generated.js.map +7 -0
- package/dist/cjs/api/http.d.ts +16 -0
- package/dist/cjs/api/http.d.ts.map +1 -0
- package/dist/cjs/api/http.js +64 -0
- package/dist/cjs/api/http.js.map +7 -0
- package/dist/cjs/api/index.d.ts +14 -0
- package/dist/cjs/api/index.d.ts.map +1 -0
- package/dist/cjs/api/index.js +73 -0
- package/dist/cjs/api/index.js.map +7 -0
- package/dist/cjs/api/positionHistory.d.ts +44 -0
- package/dist/cjs/api/positionHistory.d.ts.map +1 -0
- package/dist/cjs/api/positionHistory.js +131 -0
- package/dist/cjs/api/positionHistory.js.map +7 -0
- package/dist/cjs/attribution/erc8021.d.ts +9 -0
- package/dist/cjs/attribution/erc8021.d.ts.map +1 -0
- package/dist/cjs/attribution/erc8021.js +37 -0
- package/dist/cjs/attribution/erc8021.js.map +7 -0
- package/dist/cjs/attribution/index.d.ts +25 -0
- package/dist/cjs/attribution/index.d.ts.map +1 -0
- package/dist/cjs/attribution/index.js +68 -0
- package/dist/cjs/attribution/index.js.map +7 -0
- package/dist/cjs/client.d.ts +72 -0
- package/dist/cjs/client.d.ts.map +1 -0
- package/dist/cjs/client.js +80 -0
- package/dist/cjs/client.js.map +7 -0
- package/dist/cjs/constants.d.ts +16 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +83 -0
- package/dist/cjs/constants.js.map +7 -0
- package/dist/cjs/errors.d.ts +85 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +210 -0
- package/dist/cjs/errors.js.map +7 -0
- package/dist/cjs/evm/abis/erc20.d.ts +41 -0
- package/dist/cjs/evm/abis/erc20.d.ts.map +1 -0
- package/dist/cjs/evm/abis/erc20.js +57 -0
- package/dist/cjs/evm/abis/erc20.js.map +7 -0
- package/dist/cjs/evm/abis/erc4626.d.ts +105 -0
- package/dist/cjs/evm/abis/erc4626.d.ts.map +1 -0
- package/dist/cjs/evm/abis/erc4626.js +97 -0
- package/dist/cjs/evm/abis/erc4626.js.map +7 -0
- package/dist/cjs/evm/abis/multiDepositorVault.d.ts +1048 -0
- package/dist/cjs/evm/abis/multiDepositorVault.d.ts.map +1 -0
- package/dist/cjs/evm/abis/multiDepositorVault.js +614 -0
- package/dist/cjs/evm/abis/multiDepositorVault.js.map +7 -0
- package/dist/cjs/evm/abis/priceAndFeeCalculator.d.ts +910 -0
- package/dist/cjs/evm/abis/priceAndFeeCalculator.d.ts.map +1 -0
- package/dist/cjs/evm/abis/priceAndFeeCalculator.js +517 -0
- package/dist/cjs/evm/abis/priceAndFeeCalculator.js.map +7 -0
- package/dist/cjs/evm/abis/priceAndFeeCalculatorV2.d.ts +277 -0
- package/dist/cjs/evm/abis/priceAndFeeCalculatorV2.d.ts.map +1 -0
- package/dist/cjs/evm/abis/priceAndFeeCalculatorV2.js +166 -0
- package/dist/cjs/evm/abis/priceAndFeeCalculatorV2.js.map +7 -0
- package/dist/cjs/evm/abis/provisioner.d.ts +4984 -0
- package/dist/cjs/evm/abis/provisioner.d.ts.map +1 -0
- package/dist/cjs/evm/abis/provisioner.js +2785 -0
- package/dist/cjs/evm/abis/provisioner.js.map +7 -0
- package/dist/cjs/evm/abis/provisionerV2.d.ts +740 -0
- package/dist/cjs/evm/abis/provisionerV2.d.ts.map +1 -0
- package/dist/cjs/evm/abis/provisionerV2.js +320 -0
- package/dist/cjs/evm/abis/provisionerV2.js.map +7 -0
- package/dist/cjs/evm/adapters/aera.d.ts +6 -0
- package/dist/cjs/evm/adapters/aera.d.ts.map +1 -0
- package/dist/cjs/evm/adapters/aera.js +491 -0
- package/dist/cjs/evm/adapters/aera.js.map +7 -0
- package/dist/cjs/evm/adapters/index.d.ts +3 -0
- package/dist/cjs/evm/adapters/index.d.ts.map +1 -0
- package/dist/cjs/evm/adapters/index.js +41 -0
- package/dist/cjs/evm/adapters/index.js.map +7 -0
- package/dist/cjs/evm/adapters/morpho.d.ts +3 -0
- package/dist/cjs/evm/adapters/morpho.d.ts.map +1 -0
- package/dist/cjs/evm/adapters/morpho.js +103 -0
- package/dist/cjs/evm/adapters/morpho.js.map +7 -0
- package/dist/cjs/evm/adapters/types.d.ts +84 -0
- package/dist/cjs/evm/adapters/types.d.ts.map +1 -0
- package/dist/cjs/evm/adapters/types.js +17 -0
- package/dist/cjs/evm/adapters/types.js.map +7 -0
- package/dist/cjs/evm/aeraContracts/priceAndFeeCalculator.d.ts +46 -0
- package/dist/cjs/evm/aeraContracts/priceAndFeeCalculator.d.ts.map +1 -0
- package/dist/cjs/evm/aeraContracts/priceAndFeeCalculator.js +223 -0
- package/dist/cjs/evm/aeraContracts/priceAndFeeCalculator.js.map +7 -0
- package/dist/cjs/evm/aeraContracts/readOptions.d.ts +8 -0
- package/dist/cjs/evm/aeraContracts/readOptions.d.ts.map +1 -0
- package/dist/cjs/evm/aeraContracts/readOptions.js +31 -0
- package/dist/cjs/evm/aeraContracts/readOptions.js.map +7 -0
- package/dist/cjs/evm/aeraContracts/v1.d.ts +2317 -0
- package/dist/cjs/evm/aeraContracts/v1.d.ts.map +1 -0
- package/dist/cjs/evm/aeraContracts/v1.js +120 -0
- package/dist/cjs/evm/aeraContracts/v1.js.map +7 -0
- package/dist/cjs/evm/aeraContracts/v2.d.ts +4538 -0
- package/dist/cjs/evm/aeraContracts/v2.d.ts.map +1 -0
- package/dist/cjs/evm/aeraContracts/v2.js +449 -0
- package/dist/cjs/evm/aeraContracts/v2.js.map +7 -0
- package/dist/cjs/evm/aeraContracts.d.ts +33 -0
- package/dist/cjs/evm/aeraContracts.d.ts.map +1 -0
- package/dist/cjs/evm/aeraContracts.js +224 -0
- package/dist/cjs/evm/aeraContracts.js.map +7 -0
- package/dist/cjs/evm/deposit.d.ts +50 -0
- package/dist/cjs/evm/deposit.d.ts.map +1 -0
- package/dist/cjs/evm/deposit.js +112 -0
- package/dist/cjs/evm/deposit.js.map +7 -0
- package/dist/cjs/evm/depositQuote.d.ts +32 -0
- package/dist/cjs/evm/depositQuote.d.ts.map +1 -0
- package/dist/cjs/evm/depositQuote.js +96 -0
- package/dist/cjs/evm/depositQuote.js.map +7 -0
- package/dist/cjs/evm/depositReceiverApproval.d.ts +17 -0
- package/dist/cjs/evm/depositReceiverApproval.d.ts.map +1 -0
- package/dist/cjs/evm/depositReceiverApproval.js +66 -0
- package/dist/cjs/evm/depositReceiverApproval.js.map +7 -0
- package/dist/cjs/evm/index.d.ts +28 -0
- package/dist/cjs/evm/index.d.ts.map +1 -0
- package/dist/cjs/evm/index.js +116 -0
- package/dist/cjs/evm/index.js.map +7 -0
- package/dist/cjs/evm/operationMode.d.ts +9 -0
- package/dist/cjs/evm/operationMode.d.ts.map +1 -0
- package/dist/cjs/evm/operationMode.js +65 -0
- package/dist/cjs/evm/operationMode.js.map +7 -0
- package/dist/cjs/evm/tokenModes.d.ts +22 -0
- package/dist/cjs/evm/tokenModes.d.ts.map +1 -0
- package/dist/cjs/evm/tokenModes.js +47 -0
- package/dist/cjs/evm/tokenModes.js.map +7 -0
- package/dist/cjs/evm/types.d.ts +34 -0
- package/dist/cjs/evm/types.d.ts.map +1 -0
- package/dist/cjs/evm/types.js +32 -0
- package/dist/cjs/evm/types.js.map +7 -0
- package/dist/cjs/evm/userCurrentBalance.d.ts +55 -0
- package/dist/cjs/evm/userCurrentBalance.d.ts.map +1 -0
- package/dist/cjs/evm/userCurrentBalance.js +225 -0
- package/dist/cjs/evm/userCurrentBalance.js.map +7 -0
- package/dist/cjs/evm/vaults.d.ts +44 -0
- package/dist/cjs/evm/vaults.d.ts.map +1 -0
- package/dist/cjs/evm/vaults.js +78 -0
- package/dist/cjs/evm/vaults.js.map +7 -0
- package/dist/cjs/evm/withdraw.d.ts +73 -0
- package/dist/cjs/evm/withdraw.d.ts.map +1 -0
- package/dist/cjs/evm/withdraw.js +161 -0
- package/dist/cjs/evm/withdraw.js.map +7 -0
- package/dist/cjs/evm/withdrawQuote.d.ts +135 -0
- package/dist/cjs/evm/withdrawQuote.d.ts.map +1 -0
- package/dist/cjs/evm/withdrawQuote.js +256 -0
- package/dist/cjs/evm/withdrawQuote.js.map +7 -0
- package/dist/cjs/index.d.ts +31 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +128 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/privy/index.d.ts +52 -0
- package/dist/cjs/privy/index.d.ts.map +1 -0
- package/dist/cjs/privy/index.js +57 -0
- package/dist/cjs/privy/index.js.map +7 -0
- package/dist/client.d.ts +4 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/errors.d.ts +15 -1
- package/dist/errors.d.ts.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/provisionerV2.d.ts +56 -0
- package/dist/evm/abis/provisionerV2.d.ts.map +1 -1
- package/dist/evm/adapters/aera.d.ts +1 -1
- package/dist/evm/adapters/aera.d.ts.map +1 -1
- package/dist/evm/adapters/index.d.ts +1 -1
- package/dist/evm/adapters/index.d.ts.map +1 -1
- package/dist/evm/adapters/morpho.d.ts +1 -1
- package/dist/evm/adapters/morpho.d.ts.map +1 -1
- package/dist/evm/adapters/types.d.ts +6 -2
- package/dist/evm/adapters/types.d.ts.map +1 -1
- package/dist/evm/aeraContracts/priceAndFeeCalculator.d.ts +11 -6
- package/dist/evm/aeraContracts/priceAndFeeCalculator.d.ts.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/v1.d.ts +2 -2
- package/dist/evm/aeraContracts/v1.d.ts.map +1 -1
- package/dist/evm/aeraContracts/v2.d.ts +396 -4
- package/dist/evm/aeraContracts/v2.d.ts.map +1 -1
- package/dist/evm/aeraContracts.d.ts +11 -5
- package/dist/evm/aeraContracts.d.ts.map +1 -1
- package/dist/evm/deposit.d.ts +4 -2
- package/dist/evm/deposit.d.ts.map +1 -1
- package/dist/evm/depositQuote.d.ts +32 -0
- package/dist/evm/depositQuote.d.ts.map +1 -0
- package/dist/evm/depositReceiverApproval.d.ts +2 -2
- package/dist/evm/depositReceiverApproval.d.ts.map +1 -1
- package/dist/evm/index.d.ts +27 -17
- package/dist/evm/index.d.ts.map +1 -1
- package/dist/evm/index.js +88 -9
- package/dist/evm/index.js.map +7 -1
- package/dist/evm/tokenModes.d.ts +22 -0
- package/dist/evm/tokenModes.d.ts.map +1 -0
- package/dist/evm/userCurrentBalance.d.ts +6 -2
- package/dist/evm/userCurrentBalance.d.ts.map +1 -1
- package/dist/evm/vaults.d.ts +2 -9
- package/dist/evm/vaults.d.ts.map +1 -1
- package/dist/evm/withdraw.d.ts +10 -2
- package/dist/evm/withdraw.d.ts.map +1 -1
- package/dist/evm/withdrawQuote.d.ts +135 -0
- package/dist/evm/withdrawQuote.d.ts.map +1 -0
- package/dist/index.d.ts +30 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +139 -12
- package/dist/index.js.map +7 -1
- package/dist/manifest/vaults.json +1958 -0
- package/dist/privy/index.d.ts +1 -1
- package/dist/privy/index.d.ts.map +1 -1
- package/dist/privy/index.js +39 -48
- package/dist/privy/index.js.map +7 -1
- package/manifest/vaults.json +45 -460
- package/package.json +43 -9
- package/src/api/client.ts +104 -7
- package/src/api/generated.ts +621 -14
- package/src/api/index.ts +13 -0
- package/src/client.ts +4 -1
- package/src/constants.ts +2 -0
- package/src/errors.ts +39 -2
- package/src/evm/abis/priceAndFeeCalculatorV2.ts +22 -0
- package/src/evm/abis/provisionerV2.ts +33 -0
- package/src/evm/adapters/aera.ts +64 -34
- package/src/evm/adapters/types.ts +4 -0
- package/src/evm/aeraContracts/priceAndFeeCalculator.ts +72 -5
- package/src/evm/aeraContracts/readOptions.ts +3 -0
- package/src/evm/aeraContracts/v2.ts +273 -41
- package/src/evm/aeraContracts.ts +81 -8
- package/src/evm/deposit.ts +21 -8
- package/src/evm/depositQuote.ts +137 -0
- package/src/evm/index.ts +41 -0
- package/src/evm/tokenModes.ts +54 -0
- package/src/evm/userCurrentBalance.ts +12 -1
- package/src/evm/vaults.ts +0 -7
- package/src/evm/withdraw.ts +131 -7
- package/src/evm/withdrawQuote.ts +434 -0
- package/src/index.ts +26 -1
- package/dist/api/activity.js +0 -154
- package/dist/api/activity.js.map +0 -1
- package/dist/api/caip.js +0 -38
- package/dist/api/caip.js.map +0 -1
- package/dist/api/client.js +0 -109
- package/dist/api/client.js.map +0 -1
- package/dist/api/decimal.js +0 -44
- package/dist/api/decimal.js.map +0 -1
- package/dist/api/errors.js +0 -41
- package/dist/api/errors.js.map +0 -1
- package/dist/api/generated.js +0 -6
- package/dist/api/generated.js.map +0 -1
- package/dist/api/http.js +0 -39
- package/dist/api/http.js.map +0 -1
- package/dist/api/positionHistory.js +0 -126
- package/dist/api/positionHistory.js.map +0 -1
- package/dist/attribution/erc8021.js +0 -17
- package/dist/attribution/erc8021.js.map +0 -1
- package/dist/attribution/index.js +0 -45
- package/dist/attribution/index.js.map +0 -1
- package/dist/client.js +0 -72
- package/dist/client.js.map +0 -1
- package/dist/constants.js +0 -28
- package/dist/constants.js.map +0 -1
- package/dist/errors.js +0 -115
- package/dist/errors.js.map +0 -1
- package/dist/evm/abis/erc20.js +0 -30
- package/dist/evm/abis/erc20.js.map +0 -1
- package/dist/evm/abis/erc4626.js +0 -70
- package/dist/evm/abis/erc4626.js.map +0 -1
- package/dist/evm/abis/multiDepositorVault.js +0 -587
- package/dist/evm/abis/multiDepositorVault.js.map +0 -1
- package/dist/evm/abis/priceAndFeeCalculator.js +0 -490
- package/dist/evm/abis/priceAndFeeCalculator.js.map +0 -1
- package/dist/evm/abis/priceAndFeeCalculatorV2.js +0 -119
- package/dist/evm/abis/priceAndFeeCalculatorV2.js.map +0 -1
- package/dist/evm/abis/provisioner.js +0 -2768
- package/dist/evm/abis/provisioner.js.map +0 -1
- package/dist/evm/abis/provisionerV2.js +0 -262
- package/dist/evm/abis/provisionerV2.js.map +0 -1
- package/dist/evm/adapters/aera.js +0 -249
- package/dist/evm/adapters/aera.js.map +0 -1
- package/dist/evm/adapters/index.js +0 -14
- package/dist/evm/adapters/index.js.map +0 -1
- package/dist/evm/adapters/morpho.js +0 -79
- package/dist/evm/adapters/morpho.js.map +0 -1
- package/dist/evm/adapters/types.js +0 -2
- package/dist/evm/adapters/types.js.map +0 -1
- package/dist/evm/aeraContracts/priceAndFeeCalculator.js +0 -140
- package/dist/evm/aeraContracts/priceAndFeeCalculator.js.map +0 -1
- package/dist/evm/aeraContracts/v1.js +0 -59
- package/dist/evm/aeraContracts/v1.js.map +0 -1
- package/dist/evm/aeraContracts/v2.js +0 -217
- package/dist/evm/aeraContracts/v2.js.map +0 -1
- package/dist/evm/aeraContracts.js +0 -134
- package/dist/evm/aeraContracts.js.map +0 -1
- package/dist/evm/deposit.js +0 -109
- package/dist/evm/deposit.js.map +0 -1
- package/dist/evm/depositReceiverApproval.js +0 -32
- package/dist/evm/depositReceiverApproval.js.map +0 -1
- package/dist/evm/operationMode.js +0 -41
- package/dist/evm/operationMode.js.map +0 -1
- package/dist/evm/types.js +0 -5
- package/dist/evm/types.js.map +0 -1
- package/dist/evm/userCurrentBalance.js +0 -211
- package/dist/evm/userCurrentBalance.js.map +0 -1
- package/dist/evm/vaults.js +0 -75
- package/dist/evm/vaults.js.map +0 -1
- package/dist/evm/withdraw.js +0 -97
- package/dist/evm/withdraw.js.map +0 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/evm/withdraw.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Address } from 'viem';\nimport type { GauntletClient } from '../client';\nimport type { AdapterWithdrawParams } from './adapters/types';\nimport type { SyncWithdrawQuoteBounds } from './withdrawQuote';\nimport { getAdapter } from './adapters';\nimport { encodeTransactionWithAttribution, PreparedTx } from '../attribution';\nimport {\n AccountMismatchError,\n AccountRequiredError,\n VaultNotFoundError,\n UnsupportedAssetError,\n InvalidSlippageBPSError,\n InvalidWithdrawParamsError,\n} from '../errors';\nimport {\n requireAeraSyncRedeemRuntime,\n resolveAeraRuntimeContracts,\n resolveAeraTokenModeSupport,\n type AeraRuntimeContracts,\n} from './aeraContracts';\nimport { resolveVault } from './vaults';\nimport { DEFAULT_BPS, MAX_BPS } from '../constants';\nimport {\n parseOperationMode,\n resolveOperationMode,\n resolveSyncOnlyOperationMode,\n type OperationMode,\n} from './operationMode';\nimport { ContractVersion } from './types';\n\nexport type EvmWithdrawParams = {\n vaultId: string;\n // Required for multichain vaults, will default to base\n chainId?: number;\n // Required for multiasset vaults, not utilized yet\n assetSymbol?: string;\n /** Request async (queued) or sync withdraw. Availability is read from live vault configuration. */\n depositMode?: string;\n // So a developer is able to specify a separate receiver than the tx sender\n receiver?: Address;\n /** Slippage tolerance in basis points (e.g. 100 = 1%). Defaults to 100. */\n slippageBps?: number;\n /** Solver tip passed to async Aera provisioner requests. Defaults to 0. */\n solverTip?: bigint;\n /** Maximum price age passed to async Aera provisioner requests. Defaults to 10 days. */\n maxPriceAge?: bigint;\n /**\n * Current sync quote bounds to pin instant withdraw transaction construction.\n * Supplying bounds implies `depositMode: 'sync'`; explicit async requests are rejected.\n */\n syncWithdrawQuote?: SyncWithdrawQuoteBounds;\n} & (\n | { shares: bigint; amount?: never; entireAmount?: never }\n | { amount: bigint; shares?: never; entireAmount?: never }\n | { account?: Address; entireAmount: true; shares?: never; amount?: never }\n);\n\nfunction validateWithdrawParams(params: EvmWithdrawParams) {\n const modes = [\n 'amount' in params && params.amount != null,\n 'shares' in params && params.shares != null,\n 'entireAmount' in params && params.entireAmount === true,\n ].filter(Boolean).length;\n\n if (modes !== 1) throw new InvalidWithdrawParamsError();\n}\n\nfunction sameAddress(left: Address, right: Address): boolean {\n return left.toLowerCase() === right.toLowerCase();\n}\n\nfunction validateSyncWithdrawQuote({\n params,\n account,\n chainId,\n slippageBps,\n tokenAddress,\n}: {\n params: EvmWithdrawParams;\n account: Address;\n chainId: number;\n slippageBps: number;\n tokenAddress: Address;\n}) {\n const quote = params.syncWithdrawQuote;\n if (quote === undefined) return;\n\n const { context } = quote;\n if (\n context.vaultId !== params.vaultId ||\n context.chainId !== chainId ||\n !sameAddress(context.tokenAddress, tokenAddress) ||\n context.slippageBps !== slippageBps\n ) {\n throw new InvalidWithdrawParamsError();\n }\n\n if (context.account !== undefined && !sameAddress(context.account, account)) {\n throw new InvalidWithdrawParamsError();\n }\n\n switch (context.request.mode) {\n case 'amount':\n if (\n quote.kind !== 'withdraw' ||\n !('amount' in params && params.amount != null) ||\n context.request.amount !== params.amount ||\n quote.tokensOut !== params.amount\n ) {\n throw new InvalidWithdrawParamsError();\n }\n return;\n case 'shares':\n if (\n quote.kind !== 'redeem' ||\n !('shares' in params && params.shares != null) ||\n context.request.shares !== params.shares ||\n quote.shares !== params.shares\n ) {\n throw new InvalidWithdrawParamsError();\n }\n return;\n case 'entireAmount':\n if (\n quote.kind !== 'redeem' ||\n !('entireAmount' in params && params.entireAmount) ||\n !sameAddress(context.request.account, account)\n ) {\n throw new InvalidWithdrawParamsError();\n }\n return;\n }\n}\n\n/**\n * Builds the ordered list of EVM transactions required to withdraw from a Gauntlet vault.\n *\n * Specify the withdrawal amount as one of: `shares` (vault units), `amount` (underlying\n * token amount), or `entireAmount: true` (full balance). Returns an ERC-20 approval\n * (only when needed for async redeem) followed by the withdraw or async redeem request,\n * each returned as a `PreparedTx` ready to be signed and sent.\n *\n * @param client - A configured `GauntletClient` instance with an EVM public client and wallet.\n * @param params - Withdrawal parameters including the vault identifier and exactly one of\n * `shares`, `amount`, or `entireAmount`, plus optional chain, asset symbol, deposit mode,\n * and receiver address.\n * @returns Ordered array of prepared transactions to execute in sequence.\n *\n * @throws {VaultNotFoundError} If the vault ID is not found in the manifest.\n * @throws {AccountRequiredError} If no wallet account is set on the client.\n * @throws {UnsupportedDepositModeError} If the requested withdrawal mode is not supported.\n * @throws {UnsupportedAssetError} If the specified asset symbol is not accepted by the vault.\n *\n * @example\n * ```ts\n * // Withdraw by token amount\n * const txs = await getWithdrawTx(client, {\n * vaultId: 'baseUsdcPrime',\n * amount: 50_000_000n, // 50 USDC (6 decimals)\n * });\n *\n * // Withdraw entire balance\n * const txs = await getWithdrawTx(client, {\n * vaultId: 'baseUsdcPrime',\n * entireAmount: true,\n * account: walletAddress,\n * });\n * ```\n */\nexport async function getWithdrawTx(\n client: GauntletClient,\n params: EvmWithdrawParams\n): Promise<PreparedTx[]> {\n validateWithdrawParams(params);\n\n if (\n params.slippageBps !== undefined &&\n (!Number.isInteger(params.slippageBps) ||\n params.slippageBps < 0 ||\n params.slippageBps > Number(MAX_BPS))\n ) {\n throw new InvalidSlippageBPSError(params.slippageBps);\n }\n\n const resolved = await resolveVault(client, params.vaultId, params.chainId);\n if (!resolved) throw new VaultNotFoundError(params.vaultId);\n\n const chainId = params.chainId ?? resolved.vault.chainId;\n\n const account = client.wallet?.account?.address;\n if (!account) throw new AccountRequiredError();\n if ('entireAmount' in params && params.entireAmount && params.account !== undefined) {\n if (!sameAddress(params.account, account)) {\n throw new AccountMismatchError(account, params.account);\n }\n }\n\n const { vault, protocol } = resolved;\n\n const token =\n vault.supplyToken.length > 1\n ? vault.supplyToken.find((tInfo) => tInfo.symbol === params.assetSymbol)\n : vault.supplyToken[0];\n\n if (token === undefined) {\n throw new UnsupportedAssetError(params.assetSymbol ?? 'unknown', params.vaultId);\n }\n\n const adapter = getAdapter(protocol);\n const publicClient = client.getPublicClient(chainId);\n const requestedWithdrawMode = parseOperationMode(params.vaultId, params.depositMode);\n const slippageBps =\n params.slippageBps ?? params.syncWithdrawQuote?.context.slippageBps ?? DEFAULT_BPS;\n let modifiedDepositMode: OperationMode;\n let aeraRuntime: AeraRuntimeContracts | undefined;\n\n if (params.syncWithdrawQuote !== undefined) {\n if (protocol !== 'aera' || requestedWithdrawMode === 'async') {\n throw new InvalidWithdrawParamsError();\n }\n\n validateSyncWithdrawQuote({\n params,\n account,\n chainId,\n slippageBps,\n tokenAddress: token.address,\n });\n }\n\n if (protocol === 'aera') {\n aeraRuntime = await resolveAeraRuntimeContracts(publicClient, vault);\n if (\n aeraRuntime.provisioner.version === ContractVersion.V2 &&\n (requestedWithdrawMode === 'sync' || params.syncWithdrawQuote !== undefined)\n ) {\n requireAeraSyncRedeemRuntime(aeraRuntime);\n }\n const tokenModeSupport = await resolveAeraTokenModeSupport(\n publicClient,\n aeraRuntime,\n token.address,\n { includeSyncModes: requestedWithdrawMode !== 'async' }\n );\n modifiedDepositMode = resolveOperationMode(\n params.vaultId,\n params.syncWithdrawQuote !== undefined ? 'sync' : requestedWithdrawMode,\n {\n async: tokenModeSupport.asyncRedeem,\n sync: tokenModeSupport.syncRedeem,\n }\n );\n if (modifiedDepositMode === 'sync') requireAeraSyncRedeemRuntime(aeraRuntime);\n } else {\n modifiedDepositMode = resolveSyncOnlyOperationMode(params.vaultId, requestedWithdrawMode);\n }\n\n const withdrawParams = {\n vault,\n receiver: params.receiver ?? account,\n account,\n async: modifiedDepositMode === 'async',\n asset: token,\n publicClient,\n slippageBps,\n solverTip: params.solverTip,\n maxPriceAge: params.maxPriceAge,\n aeraRuntime,\n syncWithdrawQuote: params.syncWithdrawQuote,\n ...('shares' in params && params.shares != null ? { shares: params.shares } : {}),\n ...('amount' in params && params.amount != null ? { amount: params.amount } : {}),\n ...('entireAmount' in params && params.entireAmount ? { entireAmount: true as const } : {}),\n };\n\n const steps = await adapter.buildWithdraw(withdrawParams as AdapterWithdrawParams);\n\n return await Promise.all(steps.map((step) => encodeTransactionWithAttribution(client, step)));\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import type { Address } from 'viem';
|
|
2
|
+
import type { GauntletClient } from "../client.js";
|
|
3
|
+
import { type SyncRedeemRate } from "./aeraContracts/v2.js";
|
|
4
|
+
/** Epoch-cap accounting plus any liquid-token balance known to the caller. */
|
|
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
|
+
/** Vault token balance when no pull-funds calldata is configured; otherwise unknown. */
|
|
15
|
+
knownLiquidityTokens?: bigint;
|
|
16
|
+
/** This redemption's size in numeraire (matches the on-chain epoch accounting). */
|
|
17
|
+
requestNumeraire: bigint;
|
|
18
|
+
/** True when this redemption alone exceeds remaining epoch capacity (the tx would revert). */
|
|
19
|
+
exceedsCapacity: boolean;
|
|
20
|
+
}
|
|
21
|
+
export type SyncWithdrawQuoteRequest = {
|
|
22
|
+
mode: 'amount';
|
|
23
|
+
amount: bigint;
|
|
24
|
+
} | {
|
|
25
|
+
mode: 'shares';
|
|
26
|
+
shares: bigint;
|
|
27
|
+
} | {
|
|
28
|
+
mode: 'entireAmount';
|
|
29
|
+
account: Address;
|
|
30
|
+
};
|
|
31
|
+
export interface SyncWithdrawQuoteContext {
|
|
32
|
+
vaultId: string;
|
|
33
|
+
chainId: number;
|
|
34
|
+
tokenAddress: Address;
|
|
35
|
+
/** Account used for balance and lock reads when the quote is account-scoped. */
|
|
36
|
+
account?: Address;
|
|
37
|
+
/** Slippage tolerance used to derive `minTokensOut` or `maxUnitsIn`. */
|
|
38
|
+
slippageBps: number;
|
|
39
|
+
/** Block snapshot used for all quote reads. */
|
|
40
|
+
blockNumber: bigint;
|
|
41
|
+
/** Exact sizing request that produced this quote. */
|
|
42
|
+
request: SyncWithdrawQuoteRequest;
|
|
43
|
+
}
|
|
44
|
+
interface SyncWithdrawQuoteDetails {
|
|
45
|
+
/** Vault units (shares) burned: exact for `'redeem'`, estimated for `'withdraw'`. */
|
|
46
|
+
shares: bigint;
|
|
47
|
+
/** Upper bound on shares burned after slippage (equals `shares` for `'redeem'`). */
|
|
48
|
+
maxUnitsIn: bigint;
|
|
49
|
+
/** Tokens received: exact (requested) for `'withdraw'`, estimated for `'redeem'`. */
|
|
50
|
+
tokensOut: bigint;
|
|
51
|
+
/** Lower bound on tokens received after slippage (equals `tokensOut` for `'withdraw'`). */
|
|
52
|
+
minTokensOut: bigint;
|
|
53
|
+
/** Largest exact-token withdrawal that fits `shares`; only set for `'redeem'` quotes. */
|
|
54
|
+
shareSafeTokensOut?: bigint;
|
|
55
|
+
/** Live multiplier breakdown (base, dynamic premium, effective), in bps. */
|
|
56
|
+
rate: SyncRedeemRate;
|
|
57
|
+
capacity: SyncWithdrawCapacity;
|
|
58
|
+
/** Timestamp until which the account's units are locked; undefined when no account was quoted. */
|
|
59
|
+
unitsLockedUntil?: bigint;
|
|
60
|
+
/** Context that must match any transaction build using these quote bounds. */
|
|
61
|
+
context: SyncWithdrawQuoteContext;
|
|
62
|
+
}
|
|
63
|
+
/** Bounds consumed by one of the two on-chain sync withdraw entry points. */
|
|
64
|
+
export type SyncWithdrawQuoteBounds = {
|
|
65
|
+
kind: 'redeem';
|
|
66
|
+
shares: bigint;
|
|
67
|
+
minTokensOut: bigint;
|
|
68
|
+
context: SyncWithdrawQuoteContext;
|
|
69
|
+
} | {
|
|
70
|
+
kind: 'withdraw';
|
|
71
|
+
tokensOut: bigint;
|
|
72
|
+
maxUnitsIn: bigint;
|
|
73
|
+
context: SyncWithdrawQuoteContext;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* A live quote for an instant (sync) withdraw.
|
|
77
|
+
*
|
|
78
|
+
* `kind` distinguishes the two on-chain entry points:
|
|
79
|
+
* - `'redeem'`: exact shares burned, estimated tokens out (used for by-shares / entire-balance exits)
|
|
80
|
+
* - `'withdraw'`: exact tokens out, estimated shares burned (used for by-token-amount exits)
|
|
81
|
+
*/
|
|
82
|
+
export type SyncWithdrawQuote = (SyncWithdrawQuoteDetails & {
|
|
83
|
+
kind: 'redeem';
|
|
84
|
+
}) | (SyncWithdrawQuoteDetails & {
|
|
85
|
+
kind: 'withdraw';
|
|
86
|
+
});
|
|
87
|
+
export type SyncWithdrawRateParams = {
|
|
88
|
+
vaultId: string;
|
|
89
|
+
/** EVM chain ID. Defaults to the vault's primary chain (Base for current multichain vaults). */
|
|
90
|
+
chainId?: number;
|
|
91
|
+
/** Required for multiasset vaults. */
|
|
92
|
+
assetSymbol?: string;
|
|
93
|
+
};
|
|
94
|
+
type SyncWithdrawQuoteBaseParams = SyncWithdrawRateParams & {
|
|
95
|
+
/** Optional for explicit amount/shares quotes; required for full-position quotes. */
|
|
96
|
+
account?: Address;
|
|
97
|
+
/**
|
|
98
|
+
* Slippage tolerance in basis points (e.g. 100 = 1%). Defaults to 100.
|
|
99
|
+
* A value of 10000 is invalid for share-sized quotes because it makes `minTokensOut` zero.
|
|
100
|
+
*/
|
|
101
|
+
slippageBps?: number;
|
|
102
|
+
};
|
|
103
|
+
export type SyncWithdrawQuoteParams = (SyncWithdrawQuoteBaseParams & {
|
|
104
|
+
shares: bigint;
|
|
105
|
+
amount?: never;
|
|
106
|
+
entireAmount?: never;
|
|
107
|
+
}) | (SyncWithdrawQuoteBaseParams & {
|
|
108
|
+
amount: bigint;
|
|
109
|
+
shares?: never;
|
|
110
|
+
entireAmount?: never;
|
|
111
|
+
}) | (SyncWithdrawQuoteBaseParams & {
|
|
112
|
+
account: Address;
|
|
113
|
+
entireAmount: true;
|
|
114
|
+
shares?: never;
|
|
115
|
+
amount?: never;
|
|
116
|
+
});
|
|
117
|
+
/** Reads the live instant-withdraw fee rate without requiring a withdrawal amount or account. */
|
|
118
|
+
export declare function getSyncWithdrawRate(client: GauntletClient, params: SyncWithdrawRateParams): Promise<SyncRedeemRate>;
|
|
119
|
+
/**
|
|
120
|
+
* Builds a live quote for an instant (sync) withdraw without sending a transaction.
|
|
121
|
+
*
|
|
122
|
+
* Surfaces everything the on-chain `redeem`/`withdraw` would apply or check but that a plain
|
|
123
|
+
* transaction build does not pre-validate: the effective rate (including the price-age dynamic
|
|
124
|
+
* premium), slippage bounds, the global per-epoch redeem capacity, any known vault-balance limit,
|
|
125
|
+
* and whether the caller's units are still locked from a recent sync deposit.
|
|
126
|
+
*
|
|
127
|
+
* @throws {VaultNotFoundError} If the vault ID is not found.
|
|
128
|
+
* @throws {UnsupportedAssetError} If the asset symbol is not accepted by the vault.
|
|
129
|
+
* @throws {UnsupportedFeatureError} If the vault is not an Aera V2 deployment.
|
|
130
|
+
* @throws {UnsupportedDepositModeError} If sync redeem is not enabled for the token.
|
|
131
|
+
* @throws {StalePriceError} If the oracle price is too stale for an instant redeem.
|
|
132
|
+
*/
|
|
133
|
+
export declare function getSyncWithdrawQuote(client: GauntletClient, params: SyncWithdrawQuoteParams): Promise<SyncWithdrawQuote>;
|
|
134
|
+
export {};
|
|
135
|
+
//# 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,256 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var withdrawQuote_exports = {};
|
|
20
|
+
__export(withdrawQuote_exports, {
|
|
21
|
+
getSyncWithdrawQuote: () => getSyncWithdrawQuote,
|
|
22
|
+
getSyncWithdrawRate: () => getSyncWithdrawRate
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(withdrawQuote_exports);
|
|
25
|
+
var import_errors = require("../errors");
|
|
26
|
+
var import_constants = require("../constants");
|
|
27
|
+
var import_vaults = require("./vaults");
|
|
28
|
+
var import_aeraContracts = require("./aeraContracts");
|
|
29
|
+
var import_multiDepositorVault = require("./abis/multiDepositorVault");
|
|
30
|
+
var import_priceAndFeeCalculator = require("./aeraContracts/priceAndFeeCalculator");
|
|
31
|
+
var import_v2 = require("./aeraContracts/v2");
|
|
32
|
+
var import_operationMode = require("./operationMode");
|
|
33
|
+
function validateSyncWithdrawQuoteParams(params) {
|
|
34
|
+
const modes = [
|
|
35
|
+
"amount" in params && params.amount != null,
|
|
36
|
+
"shares" in params && params.shares != null,
|
|
37
|
+
"entireAmount" in params && params.entireAmount === true
|
|
38
|
+
].filter(Boolean).length;
|
|
39
|
+
if (modes !== 1) throw new import_errors.InvalidWithdrawParamsError();
|
|
40
|
+
if ("entireAmount" in params && params.entireAmount === true && !params.account) {
|
|
41
|
+
throw new import_errors.AccountRequiredError();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async function resolveSyncWithdrawContext(client, params, readKind) {
|
|
45
|
+
const resolved = await (0, import_vaults.resolveVault)(client, params.vaultId, params.chainId);
|
|
46
|
+
if (!resolved) throw new import_errors.VaultNotFoundError(params.vaultId);
|
|
47
|
+
const { vault, protocol } = resolved;
|
|
48
|
+
if (protocol !== "aera") {
|
|
49
|
+
throw new import_errors.UnsupportedFeatureError(
|
|
50
|
+
readKind === "quote" ? "Sync withdraw quote is only available for Aera vaults" : "Sync withdraw rate is only available for Aera vaults"
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
const chainId = params.chainId ?? vault.chainId;
|
|
54
|
+
const publicClient = client.getPublicClient(chainId);
|
|
55
|
+
const token = vault.supplyToken.length > 1 ? vault.supplyToken.find((tInfo) => tInfo.symbol === params.assetSymbol) : vault.supplyToken[0];
|
|
56
|
+
if (token === void 0) {
|
|
57
|
+
throw new import_errors.UnsupportedAssetError(params.assetSymbol ?? "unknown", params.vaultId);
|
|
58
|
+
}
|
|
59
|
+
const quoteBlock = await publicClient.getBlock();
|
|
60
|
+
if (quoteBlock.number === null) {
|
|
61
|
+
throw new import_errors.UnsupportedFeatureError(
|
|
62
|
+
readKind === "quote" ? "Aera: sync withdraw quote requires a numbered block" : "Aera: sync withdraw rate requires a numbered block"
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
const readContext = {
|
|
66
|
+
blockNumber: quoteBlock.number,
|
|
67
|
+
blockTimestamp: BigInt(quoteBlock.timestamp)
|
|
68
|
+
};
|
|
69
|
+
const runtime = await (0, import_aeraContracts.resolveAeraRuntimeContracts)(publicClient, vault, readContext);
|
|
70
|
+
(0, import_aeraContracts.requireAeraSyncRedeemRuntime)(runtime);
|
|
71
|
+
const support = await (0, import_aeraContracts.resolveAeraTokenModeSupport)(
|
|
72
|
+
publicClient,
|
|
73
|
+
runtime,
|
|
74
|
+
token.address,
|
|
75
|
+
readContext
|
|
76
|
+
);
|
|
77
|
+
(0, import_operationMode.resolveOperationMode)(params.vaultId, "sync", {
|
|
78
|
+
async: support.asyncRedeem,
|
|
79
|
+
sync: support.syncRedeem
|
|
80
|
+
});
|
|
81
|
+
return { publicClient, vault, token, runtime, chainId, readContext };
|
|
82
|
+
}
|
|
83
|
+
async function getSyncWithdrawRate(client, params) {
|
|
84
|
+
const { publicClient, vault, token, runtime, readContext } = await resolveSyncWithdrawContext(
|
|
85
|
+
client,
|
|
86
|
+
params,
|
|
87
|
+
"rate"
|
|
88
|
+
);
|
|
89
|
+
return (0, import_v2.getSyncRedeemRate)(
|
|
90
|
+
publicClient,
|
|
91
|
+
runtime.provisioner.address,
|
|
92
|
+
vault.vaultAddress,
|
|
93
|
+
token.address,
|
|
94
|
+
runtime.feeCalculator.address,
|
|
95
|
+
readContext
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
async function getSyncWithdrawQuote(client, params) {
|
|
99
|
+
validateSyncWithdrawQuoteParams(params);
|
|
100
|
+
if (params.slippageBps !== void 0 && (!Number.isInteger(params.slippageBps) || params.slippageBps < 0 || params.slippageBps > Number(import_constants.MAX_BPS))) {
|
|
101
|
+
throw new import_errors.InvalidSlippageBPSError(params.slippageBps);
|
|
102
|
+
}
|
|
103
|
+
const slippageBps = params.slippageBps ?? import_constants.DEFAULT_BPS;
|
|
104
|
+
const {
|
|
105
|
+
publicClient,
|
|
106
|
+
vault,
|
|
107
|
+
token,
|
|
108
|
+
runtime,
|
|
109
|
+
chainId,
|
|
110
|
+
readContext: quoteReadContext
|
|
111
|
+
} = await resolveSyncWithdrawContext(client, params, "quote");
|
|
112
|
+
const provisioner = runtime.provisioner.address;
|
|
113
|
+
const feeCalculator = runtime.feeCalculator.address;
|
|
114
|
+
const feeVersion = runtime.feeCalculator.version;
|
|
115
|
+
const vaultAddress = vault.vaultAddress;
|
|
116
|
+
const { rate, hasPullFundsSubmitData } = await (0, import_v2.getSyncRedeemRateContext)(
|
|
117
|
+
publicClient,
|
|
118
|
+
provisioner,
|
|
119
|
+
vaultAddress,
|
|
120
|
+
token.address,
|
|
121
|
+
feeCalculator,
|
|
122
|
+
quoteReadContext
|
|
123
|
+
);
|
|
124
|
+
let kind;
|
|
125
|
+
let shares;
|
|
126
|
+
let tokensOut;
|
|
127
|
+
let minTokensOut;
|
|
128
|
+
let maxUnitsIn;
|
|
129
|
+
let request;
|
|
130
|
+
let shareSafeTokensOut;
|
|
131
|
+
if ("amount" in params && params.amount != null) {
|
|
132
|
+
kind = "withdraw";
|
|
133
|
+
request = { mode: "amount", amount: params.amount };
|
|
134
|
+
tokensOut = params.amount;
|
|
135
|
+
(0, import_errors.requireNonZeroSyncWithdrawBound)(tokensOut, "tokensOut");
|
|
136
|
+
minTokensOut = params.amount;
|
|
137
|
+
shares = await (0, import_v2.getSyncWithdrawUnitsIn)(
|
|
138
|
+
publicClient,
|
|
139
|
+
provisioner,
|
|
140
|
+
feeCalculator,
|
|
141
|
+
feeVersion,
|
|
142
|
+
vaultAddress,
|
|
143
|
+
token.address,
|
|
144
|
+
params.amount,
|
|
145
|
+
rate.effectiveMultiplierBps,
|
|
146
|
+
quoteReadContext
|
|
147
|
+
);
|
|
148
|
+
maxUnitsIn = (0, import_aeraContracts.applySlippageUp)(shares, slippageBps);
|
|
149
|
+
(0, import_errors.requireNonZeroSyncWithdrawBound)(maxUnitsIn, "maxUnitsIn");
|
|
150
|
+
} else {
|
|
151
|
+
kind = "redeem";
|
|
152
|
+
if ("entireAmount" in params && params.entireAmount) {
|
|
153
|
+
if (!params.account) throw new import_errors.AccountRequiredError();
|
|
154
|
+
request = { mode: "entireAmount", account: params.account };
|
|
155
|
+
shares = await publicClient.readContract({
|
|
156
|
+
address: vaultAddress,
|
|
157
|
+
abi: import_multiDepositorVault.multiDepositorVaultAbi,
|
|
158
|
+
functionName: "balanceOf",
|
|
159
|
+
args: [params.account],
|
|
160
|
+
blockNumber: quoteReadContext.blockNumber
|
|
161
|
+
});
|
|
162
|
+
} else if ("shares" in params && params.shares != null) {
|
|
163
|
+
request = { mode: "shares", shares: params.shares };
|
|
164
|
+
shares = params.shares;
|
|
165
|
+
} else {
|
|
166
|
+
throw new import_errors.InvalidWithdrawParamsError();
|
|
167
|
+
}
|
|
168
|
+
(0, import_errors.requireNonZeroSyncWithdrawBound)(shares, "unitsIn");
|
|
169
|
+
const getTokensOut = (unitsIn) => (0, import_v2.getSyncRedeemTokenOut)(
|
|
170
|
+
publicClient,
|
|
171
|
+
provisioner,
|
|
172
|
+
feeCalculator,
|
|
173
|
+
feeVersion,
|
|
174
|
+
vaultAddress,
|
|
175
|
+
token.address,
|
|
176
|
+
unitsIn,
|
|
177
|
+
rate.effectiveMultiplierBps,
|
|
178
|
+
quoteReadContext
|
|
179
|
+
);
|
|
180
|
+
const shareSafeUnitsIn = shares * import_constants.MAX_BPS / (import_constants.MAX_BPS + BigInt(slippageBps));
|
|
181
|
+
const tokensOutPromise = getTokensOut(shares);
|
|
182
|
+
const shareSafeTokensOutPromise = shareSafeUnitsIn === shares ? tokensOutPromise : getTokensOut(shareSafeUnitsIn);
|
|
183
|
+
[tokensOut, shareSafeTokensOut] = await Promise.all([
|
|
184
|
+
tokensOutPromise,
|
|
185
|
+
shareSafeTokensOutPromise
|
|
186
|
+
]);
|
|
187
|
+
minTokensOut = (0, import_aeraContracts.applySlippageDown)(tokensOut, slippageBps);
|
|
188
|
+
(0, import_errors.requireNonZeroSyncWithdrawBound)(minTokensOut, "minTokensOut");
|
|
189
|
+
maxUnitsIn = shares;
|
|
190
|
+
}
|
|
191
|
+
const [epoch, requestNumeraire, unitsLockedUntil, knownLiquidityTokens] = await Promise.all([
|
|
192
|
+
(0, import_v2.getSyncRedeemEpochState)(publicClient, provisioner, quoteReadContext),
|
|
193
|
+
(0, import_priceAndFeeCalculator.convertTokenToNumeraire)(
|
|
194
|
+
publicClient,
|
|
195
|
+
feeCalculator,
|
|
196
|
+
feeVersion,
|
|
197
|
+
vaultAddress,
|
|
198
|
+
token.address,
|
|
199
|
+
tokensOut,
|
|
200
|
+
quoteReadContext
|
|
201
|
+
),
|
|
202
|
+
params.account ? (0, import_v2.getUserUnitsRefundableUntil)(publicClient, provisioner, params.account, quoteReadContext) : Promise.resolve(void 0),
|
|
203
|
+
(0, import_v2.getKnownSyncRedeemLiquidityTokens)(
|
|
204
|
+
publicClient,
|
|
205
|
+
vaultAddress,
|
|
206
|
+
token.address,
|
|
207
|
+
hasPullFundsSubmitData,
|
|
208
|
+
quoteReadContext
|
|
209
|
+
)
|
|
210
|
+
]);
|
|
211
|
+
const remainingNumeraire = epoch.epochCapNumeraire > epoch.epochRedeemedNumeraire ? epoch.epochCapNumeraire - epoch.epochRedeemedNumeraire : 0n;
|
|
212
|
+
const remainingTokens = await (0, import_priceAndFeeCalculator.convertNumeraireToToken)(
|
|
213
|
+
publicClient,
|
|
214
|
+
feeCalculator,
|
|
215
|
+
feeVersion,
|
|
216
|
+
vaultAddress,
|
|
217
|
+
token.address,
|
|
218
|
+
remainingNumeraire,
|
|
219
|
+
quoteReadContext
|
|
220
|
+
);
|
|
221
|
+
const quoteDetails = {
|
|
222
|
+
shares,
|
|
223
|
+
maxUnitsIn,
|
|
224
|
+
tokensOut,
|
|
225
|
+
minTokensOut,
|
|
226
|
+
shareSafeTokensOut,
|
|
227
|
+
rate,
|
|
228
|
+
capacity: {
|
|
229
|
+
epochCapNumeraire: epoch.epochCapNumeraire,
|
|
230
|
+
epochRedeemedNumeraire: epoch.epochRedeemedNumeraire,
|
|
231
|
+
remainingNumeraire,
|
|
232
|
+
remainingTokens,
|
|
233
|
+
knownLiquidityTokens,
|
|
234
|
+
requestNumeraire,
|
|
235
|
+
exceedsCapacity: requestNumeraire > remainingNumeraire
|
|
236
|
+
},
|
|
237
|
+
unitsLockedUntil,
|
|
238
|
+
context: {
|
|
239
|
+
vaultId: params.vaultId,
|
|
240
|
+
chainId,
|
|
241
|
+
tokenAddress: token.address,
|
|
242
|
+
...params.account ? { account: params.account } : {},
|
|
243
|
+
slippageBps,
|
|
244
|
+
blockNumber: quoteReadContext.blockNumber,
|
|
245
|
+
request
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
if (kind === "redeem") return { kind, ...quoteDetails };
|
|
249
|
+
return { kind, ...quoteDetails };
|
|
250
|
+
}
|
|
251
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
252
|
+
0 && (module.exports = {
|
|
253
|
+
getSyncWithdrawQuote,
|
|
254
|
+
getSyncWithdrawRate
|
|
255
|
+
});
|
|
256
|
+
//# sourceMappingURL=withdrawQuote.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/evm/withdrawQuote.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Address } from 'viem';\nimport type { GauntletClient } from '../client';\nimport {\n AccountRequiredError,\n InvalidSlippageBPSError,\n InvalidWithdrawParamsError,\n requireNonZeroSyncWithdrawBound,\n UnsupportedAssetError,\n UnsupportedFeatureError,\n VaultNotFoundError,\n} from '../errors';\nimport { DEFAULT_BPS, MAX_BPS } from '../constants';\nimport { resolveVault } from './vaults';\nimport {\n applySlippageDown,\n applySlippageUp,\n requireAeraSyncRedeemRuntime,\n resolveAeraRuntimeContracts,\n resolveAeraTokenModeSupport,\n} from './aeraContracts';\nimport { multiDepositorVaultAbi } from './abis/multiDepositorVault';\nimport {\n convertNumeraireToToken,\n convertTokenToNumeraire,\n} from './aeraContracts/priceAndFeeCalculator';\nimport {\n getKnownSyncRedeemLiquidityTokens,\n getSyncRedeemEpochState,\n getSyncRedeemRate,\n getSyncRedeemRateContext,\n getSyncRedeemTokenOut,\n getSyncWithdrawUnitsIn,\n getUserUnitsRefundableUntil,\n type SyncRedeemRate,\n} from './aeraContracts/v2';\nimport { resolveOperationMode } from './operationMode';\n\n/** Epoch-cap accounting plus any liquid-token balance known to the caller. */\nexport interface SyncWithdrawCapacity {\n /** Effective epoch cap (min of relative and absolute), in numeraire. */\n epochCapNumeraire: bigint;\n /** Numeraire already redeemed globally in the current epoch. */\n epochRedeemedNumeraire: bigint;\n /** Remaining global sync redeem capacity this epoch, in numeraire. */\n remainingNumeraire: bigint;\n /** Remaining capacity expressed in the withdraw token. */\n remainingTokens: bigint;\n /** Vault token balance when no pull-funds calldata is configured; otherwise unknown. */\n knownLiquidityTokens?: bigint;\n /** This redemption's size in numeraire (matches the on-chain epoch accounting). */\n requestNumeraire: bigint;\n /** True when this redemption alone exceeds remaining epoch capacity (the tx would revert). */\n exceedsCapacity: boolean;\n}\n\nexport type SyncWithdrawQuoteRequest =\n | { mode: 'amount'; amount: bigint }\n | { mode: 'shares'; shares: bigint }\n | { mode: 'entireAmount'; account: Address };\n\nexport interface SyncWithdrawQuoteContext {\n vaultId: string;\n chainId: number;\n tokenAddress: Address;\n /** Account used for balance and lock reads when the quote is account-scoped. */\n account?: Address;\n /** Slippage tolerance used to derive `minTokensOut` or `maxUnitsIn`. */\n slippageBps: number;\n /** Block snapshot used for all quote reads. */\n blockNumber: bigint;\n /** Exact sizing request that produced this quote. */\n request: SyncWithdrawQuoteRequest;\n}\n\ninterface SyncWithdrawQuoteDetails {\n /** Vault units (shares) burned: exact for `'redeem'`, estimated for `'withdraw'`. */\n shares: bigint;\n /** Upper bound on shares burned after slippage (equals `shares` for `'redeem'`). */\n maxUnitsIn: bigint;\n /** Tokens received: exact (requested) for `'withdraw'`, estimated for `'redeem'`. */\n tokensOut: bigint;\n /** Lower bound on tokens received after slippage (equals `tokensOut` for `'withdraw'`). */\n minTokensOut: bigint;\n /** Largest exact-token withdrawal that fits `shares`; only set for `'redeem'` quotes. */\n shareSafeTokensOut?: bigint;\n /** Live multiplier breakdown (base, dynamic premium, effective), in bps. */\n rate: SyncRedeemRate;\n capacity: SyncWithdrawCapacity;\n /** Timestamp until which the account's units are locked; undefined when no account was quoted. */\n unitsLockedUntil?: bigint;\n /** Context that must match any transaction build using these quote bounds. */\n context: SyncWithdrawQuoteContext;\n}\n\n/** Bounds consumed by one of the two on-chain sync withdraw entry points. */\nexport type SyncWithdrawQuoteBounds =\n | {\n kind: 'redeem';\n shares: bigint;\n minTokensOut: bigint;\n context: SyncWithdrawQuoteContext;\n }\n | {\n kind: 'withdraw';\n tokensOut: bigint;\n maxUnitsIn: bigint;\n context: SyncWithdrawQuoteContext;\n };\n\n/**\n * A live quote for an instant (sync) withdraw.\n *\n * `kind` distinguishes the two on-chain entry points:\n * - `'redeem'`: exact shares burned, estimated tokens out (used for by-shares / entire-balance exits)\n * - `'withdraw'`: exact tokens out, estimated shares burned (used for by-token-amount exits)\n */\nexport type SyncWithdrawQuote =\n | (SyncWithdrawQuoteDetails & { kind: 'redeem' })\n | (SyncWithdrawQuoteDetails & { kind: 'withdraw' });\n\nexport type SyncWithdrawRateParams = {\n vaultId: string;\n /** EVM chain ID. Defaults to the vault's primary chain (Base for current multichain vaults). */\n chainId?: number;\n /** Required for multiasset vaults. */\n assetSymbol?: string;\n};\n\ntype SyncWithdrawQuoteBaseParams = SyncWithdrawRateParams & {\n /** Optional for explicit amount/shares quotes; required for full-position quotes. */\n account?: Address;\n /**\n * Slippage tolerance in basis points (e.g. 100 = 1%). Defaults to 100.\n * A value of 10000 is invalid for share-sized quotes because it makes `minTokensOut` zero.\n */\n slippageBps?: number;\n};\n\nexport type SyncWithdrawQuoteParams =\n | (SyncWithdrawQuoteBaseParams & { shares: bigint; amount?: never; entireAmount?: never })\n | (SyncWithdrawQuoteBaseParams & { amount: bigint; shares?: never; entireAmount?: never })\n | (SyncWithdrawQuoteBaseParams & {\n account: Address;\n entireAmount: true;\n shares?: never;\n amount?: never;\n });\n\nfunction validateSyncWithdrawQuoteParams(params: SyncWithdrawQuoteParams) {\n const modes = [\n 'amount' in params && params.amount != null,\n 'shares' in params && params.shares != null,\n 'entireAmount' in params && params.entireAmount === true,\n ].filter(Boolean).length;\n\n if (modes !== 1) throw new InvalidWithdrawParamsError();\n if ('entireAmount' in params && params.entireAmount === true && !params.account) {\n throw new AccountRequiredError();\n }\n}\n\nasync function resolveSyncWithdrawContext(\n client: GauntletClient,\n params: SyncWithdrawRateParams,\n readKind: 'quote' | 'rate'\n) {\n const resolved = await resolveVault(client, params.vaultId, params.chainId);\n if (!resolved) throw new VaultNotFoundError(params.vaultId);\n\n const { vault, protocol } = resolved;\n if (protocol !== 'aera') {\n throw new UnsupportedFeatureError(\n readKind === 'quote'\n ? 'Sync withdraw quote is only available for Aera vaults'\n : 'Sync withdraw rate is only available for Aera vaults'\n );\n }\n\n const chainId = params.chainId ?? vault.chainId;\n const publicClient = client.getPublicClient(chainId);\n const token =\n vault.supplyToken.length > 1\n ? vault.supplyToken.find((tInfo) => tInfo.symbol === params.assetSymbol)\n : vault.supplyToken[0];\n if (token === undefined) {\n throw new UnsupportedAssetError(params.assetSymbol ?? 'unknown', params.vaultId);\n }\n\n const quoteBlock = await publicClient.getBlock();\n if (quoteBlock.number === null) {\n throw new UnsupportedFeatureError(\n readKind === 'quote'\n ? 'Aera: sync withdraw quote requires a numbered block'\n : 'Aera: sync withdraw rate requires a numbered block'\n );\n }\n const readContext = {\n blockNumber: quoteBlock.number,\n blockTimestamp: BigInt(quoteBlock.timestamp),\n };\n\n const runtime = await resolveAeraRuntimeContracts(publicClient, vault, readContext);\n requireAeraSyncRedeemRuntime(runtime);\n\n const support = await resolveAeraTokenModeSupport(\n publicClient,\n runtime,\n token.address,\n readContext\n );\n resolveOperationMode(params.vaultId, 'sync', {\n async: support.asyncRedeem,\n sync: support.syncRedeem,\n });\n\n return { publicClient, vault, token, runtime, chainId, readContext };\n}\n\n/** Reads the live instant-withdraw fee rate without requiring a withdrawal amount or account. */\nexport async function getSyncWithdrawRate(\n client: GauntletClient,\n params: SyncWithdrawRateParams\n): Promise<SyncRedeemRate> {\n const { publicClient, vault, token, runtime, readContext } = await resolveSyncWithdrawContext(\n client,\n params,\n 'rate'\n );\n\n return getSyncRedeemRate(\n publicClient,\n runtime.provisioner.address,\n vault.vaultAddress,\n token.address,\n runtime.feeCalculator.address,\n readContext\n );\n}\n\n/**\n * Builds a live quote for an instant (sync) withdraw without sending a transaction.\n *\n * Surfaces everything the on-chain `redeem`/`withdraw` would apply or check but that a plain\n * transaction build does not pre-validate: the effective rate (including the price-age dynamic\n * premium), slippage bounds, the global per-epoch redeem capacity, any known vault-balance limit,\n * and whether the caller's units are still locked from a recent sync deposit.\n *\n * @throws {VaultNotFoundError} If the vault ID is not found.\n * @throws {UnsupportedAssetError} If the asset symbol is not accepted by the vault.\n * @throws {UnsupportedFeatureError} If the vault is not an Aera V2 deployment.\n * @throws {UnsupportedDepositModeError} If sync redeem is not enabled for the token.\n * @throws {StalePriceError} If the oracle price is too stale for an instant redeem.\n */\nexport async function getSyncWithdrawQuote(\n client: GauntletClient,\n params: SyncWithdrawQuoteParams\n): Promise<SyncWithdrawQuote> {\n validateSyncWithdrawQuoteParams(params);\n\n if (\n params.slippageBps !== undefined &&\n (!Number.isInteger(params.slippageBps) ||\n params.slippageBps < 0 ||\n params.slippageBps > Number(MAX_BPS))\n ) {\n throw new InvalidSlippageBPSError(params.slippageBps);\n }\n const slippageBps = params.slippageBps ?? DEFAULT_BPS;\n\n const {\n publicClient,\n vault,\n token,\n runtime,\n chainId,\n readContext: quoteReadContext,\n } = await resolveSyncWithdrawContext(client, params, 'quote');\n\n const provisioner = runtime.provisioner.address;\n const feeCalculator = runtime.feeCalculator.address;\n const feeVersion = runtime.feeCalculator.version;\n const vaultAddress = vault.vaultAddress;\n\n const { rate, hasPullFundsSubmitData } = await getSyncRedeemRateContext(\n publicClient,\n provisioner,\n vaultAddress,\n token.address,\n feeCalculator,\n quoteReadContext\n );\n\n let kind: SyncWithdrawQuote['kind'];\n let shares: bigint;\n let tokensOut: bigint;\n let minTokensOut: bigint;\n let maxUnitsIn: bigint;\n let request: SyncWithdrawQuoteRequest;\n let shareSafeTokensOut: bigint | undefined;\n\n if ('amount' in params && params.amount != null) {\n // Exact token out: shares burned is the estimate, bounded above by slippage.\n kind = 'withdraw';\n request = { mode: 'amount', amount: params.amount };\n tokensOut = params.amount;\n requireNonZeroSyncWithdrawBound(tokensOut, 'tokensOut');\n minTokensOut = params.amount;\n shares = await getSyncWithdrawUnitsIn(\n publicClient,\n provisioner,\n feeCalculator,\n feeVersion,\n vaultAddress,\n token.address,\n params.amount,\n rate.effectiveMultiplierBps,\n quoteReadContext\n );\n maxUnitsIn = applySlippageUp(shares, slippageBps);\n requireNonZeroSyncWithdrawBound(maxUnitsIn, 'maxUnitsIn');\n } else {\n // Exact shares in: tokens out is the estimate, bounded below by slippage.\n kind = 'redeem';\n if ('entireAmount' in params && params.entireAmount) {\n if (!params.account) throw new AccountRequiredError();\n request = { mode: 'entireAmount', account: params.account };\n shares = await publicClient.readContract({\n address: vaultAddress,\n abi: multiDepositorVaultAbi,\n functionName: 'balanceOf',\n args: [params.account],\n blockNumber: quoteReadContext.blockNumber,\n });\n } else if ('shares' in params && params.shares != null) {\n request = { mode: 'shares', shares: params.shares };\n shares = params.shares;\n } else {\n throw new InvalidWithdrawParamsError();\n }\n requireNonZeroSyncWithdrawBound(shares, 'unitsIn');\n const getTokensOut = (unitsIn: bigint) =>\n getSyncRedeemTokenOut(\n publicClient,\n provisioner,\n feeCalculator,\n feeVersion,\n vaultAddress,\n token.address,\n unitsIn,\n rate.effectiveMultiplierBps,\n quoteReadContext\n );\n // A capacity-limited Max is submitted as an exact-token withdraw. Reserve slippage headroom so\n // its maximum share cost cannot exceed the user's share balance.\n const shareSafeUnitsIn = (shares * MAX_BPS) / (MAX_BPS + BigInt(slippageBps));\n const tokensOutPromise = getTokensOut(shares);\n const shareSafeTokensOutPromise =\n shareSafeUnitsIn === shares ? tokensOutPromise : getTokensOut(shareSafeUnitsIn);\n [tokensOut, shareSafeTokensOut] = await Promise.all([\n tokensOutPromise,\n shareSafeTokensOutPromise,\n ]);\n minTokensOut = applySlippageDown(tokensOut, slippageBps);\n requireNonZeroSyncWithdrawBound(minTokensOut, 'minTokensOut');\n maxUnitsIn = shares;\n }\n\n const [epoch, requestNumeraire, unitsLockedUntil, knownLiquidityTokens] = await Promise.all([\n getSyncRedeemEpochState(publicClient, provisioner, quoteReadContext),\n convertTokenToNumeraire(\n publicClient,\n feeCalculator,\n feeVersion,\n vaultAddress,\n token.address,\n tokensOut,\n quoteReadContext\n ),\n params.account\n ? getUserUnitsRefundableUntil(publicClient, provisioner, params.account, quoteReadContext)\n : Promise.resolve(undefined),\n getKnownSyncRedeemLiquidityTokens(\n publicClient,\n vaultAddress,\n token.address,\n hasPullFundsSubmitData,\n quoteReadContext\n ),\n ]);\n\n const remainingNumeraire =\n epoch.epochCapNumeraire > epoch.epochRedeemedNumeraire\n ? epoch.epochCapNumeraire - epoch.epochRedeemedNumeraire\n : 0n;\n const remainingTokens = await convertNumeraireToToken(\n publicClient,\n feeCalculator,\n feeVersion,\n vaultAddress,\n token.address,\n remainingNumeraire,\n quoteReadContext\n );\n const quoteDetails: SyncWithdrawQuoteDetails = {\n shares,\n maxUnitsIn,\n tokensOut,\n minTokensOut,\n shareSafeTokensOut,\n rate,\n capacity: {\n epochCapNumeraire: epoch.epochCapNumeraire,\n epochRedeemedNumeraire: epoch.epochRedeemedNumeraire,\n remainingNumeraire,\n remainingTokens,\n knownLiquidityTokens,\n requestNumeraire,\n exceedsCapacity: requestNumeraire > remainingNumeraire,\n },\n unitsLockedUntil,\n context: {\n vaultId: params.vaultId,\n chainId,\n tokenAddress: token.address,\n ...(params.account ? { account: params.account } : {}),\n slippageBps,\n blockNumber: quoteReadContext.blockNumber,\n request,\n },\n };\n\n if (kind === 'redeem') return { kind, ...quoteDetails };\n return { kind, ...quoteDetails };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export { GauntletClient, AttributionMode, bundledVaultManifest } from "./client.js";
|
|
2
|
+
export type { GauntletClientConfig } from "./client.js";
|
|
3
|
+
export { ContractVersion } from "./evm/types.js";
|
|
4
|
+
export * from "./api/index.js";
|
|
5
|
+
export type { VaultInfo, VaultDeployment, EvmVaultDeployment, TokenInfo, VaultManifest, } from "./evm/types.js";
|
|
6
|
+
export type { VaultFilter } from "./evm/vaults.js";
|
|
7
|
+
export { getDepositTx } from "./evm/deposit.js";
|
|
8
|
+
export { getDepositReceiverApprovalTx } from "./evm/depositReceiverApproval.js";
|
|
9
|
+
export { getSyncDepositQuote, getSyncDepositRate } from "./evm/depositQuote.js";
|
|
10
|
+
export { getWithdrawTx } from "./evm/withdraw.js";
|
|
11
|
+
export { getSyncWithdrawQuote, getSyncWithdrawRate } from "./evm/withdrawQuote.js";
|
|
12
|
+
export { getAeraTokenModeSupport } from "./evm/tokenModes.js";
|
|
13
|
+
export { getUserCurrentBalance } from "./evm/userCurrentBalance.js";
|
|
14
|
+
export { getVaults, VaultId } from "./evm/vaults.js";
|
|
15
|
+
export { resolveAeraRuntimeContracts, resolveContractVersion } from "./evm/aeraContracts.js";
|
|
16
|
+
export { Rounding, convertTokenToUnits, convertTokenToUnitsIfActive, convertUnitsToToken, convertUnitsToTokenIfActive, getAnchorTimestamp, getVaultState, isVaultPaused, } from "./evm/aeraContracts/priceAndFeeCalculator.js";
|
|
17
|
+
export type { EvmDepositParams } from "./evm/deposit.js";
|
|
18
|
+
export type { EvmDepositReceiverApprovalParams } from "./evm/depositReceiverApproval.js";
|
|
19
|
+
export type { SyncDepositQuote, SyncDepositQuoteParams, SyncDepositRate, SyncDepositRateParams, } from "./evm/depositQuote.js";
|
|
20
|
+
export type { EvmWithdrawParams } from "./evm/withdraw.js";
|
|
21
|
+
export type { SyncWithdrawQuote, SyncWithdrawQuoteParams, SyncWithdrawCapacity, SyncWithdrawQuoteContext, SyncWithdrawQuoteRequest, SyncWithdrawQuoteBounds, SyncWithdrawRateParams, } from "./evm/withdrawQuote.js";
|
|
22
|
+
export type { AeraTokenModeSupportParams } from "./evm/tokenModes.js";
|
|
23
|
+
export type { SyncRedeemRate } from "./evm/aeraContracts/v2.js";
|
|
24
|
+
export type { EvmTxStep } from "./evm/adapters/types.js";
|
|
25
|
+
export type { UserCurrentBalanceParams, UserCurrentBalance } from "./evm/userCurrentBalance.js";
|
|
26
|
+
export type { PreparedTx } from "./attribution/index.js";
|
|
27
|
+
export type { AeraRuntimeContracts, AeraTokenModeSupport } from "./evm/aeraContracts.js";
|
|
28
|
+
export type { NormalizedVaultPriceState } from "./evm/aeraContracts/priceAndFeeCalculator.js";
|
|
29
|
+
export { GauntletSDKError, VaultNotFoundError, UnsupportedAssetError, ChainMismatchError, UnsupportedDepositModeError, RpcNotConfiguredError, AccountMismatchError, AccountRequiredError, UnsupportedProtocolError, UnsupportedFeatureError, InvalidWithdrawParamsError, InvalidSyncDepositBoundError, InvalidSyncWithdrawBoundError, InvalidSlippageBPSError, UnimplementedFeatureError, UnitConversionError, StalePriceError, InvalidSolverTipError, } from "./errors.js";
|
|
30
|
+
export type { SyncWithdrawBound } from "./errors.js";
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,oBAAiB;AACjF,YAAY,EAAE,oBAAoB,EAAE,oBAAiB;AACrD,OAAO,EAAE,eAAe,EAAE,uBAAoB;AAE9C,+BAAsB;AAEtB,YAAY,EACV,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,aAAa,GACd,uBAAoB;AACrB,YAAY,EAAE,WAAW,EAAE,wBAAqB;AAEhD,OAAO,EAAE,YAAY,EAAE,yBAAsB;AAC7C,OAAO,EAAE,4BAA4B,EAAE,yCAAsC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,8BAA2B;AAC7E,OAAO,EAAE,aAAa,EAAE,0BAAuB;AAC/C,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,+BAA4B;AAChF,OAAO,EAAE,uBAAuB,EAAE,4BAAyB;AAC3D,OAAO,EAAE,qBAAqB,EAAE,oCAAiC;AACjE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,wBAAqB;AAClD,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,+BAA4B;AAC1F,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAClB,aAAa,EACb,aAAa,GACd,qDAAkD;AAEnD,YAAY,EAAE,gBAAgB,EAAE,yBAAsB;AACtD,YAAY,EAAE,gCAAgC,EAAE,yCAAsC;AACtF,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,qBAAqB,GACtB,8BAA2B;AAC5B,YAAY,EAAE,iBAAiB,EAAE,0BAAuB;AACxD,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,GACvB,+BAA4B;AAC7B,YAAY,EAAE,0BAA0B,EAAE,4BAAyB;AACnE,YAAY,EAAE,cAAc,EAAE,kCAA+B;AAC7D,YAAY,EAAE,SAAS,EAAE,gCAA6B;AACtD,YAAY,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,oCAAiC;AAC7F,YAAY,EAAE,UAAU,EAAE,+BAAsB;AAChD,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,+BAA4B;AACtF,YAAY,EAAE,yBAAyB,EAAE,qDAAkD;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,4BAA4B,EAC5B,6BAA6B,EAC7B,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,EACnB,eAAe,EACf,qBAAqB,GACtB,oBAAiB;AAClB,YAAY,EAAE,iBAAiB,EAAE,oBAAiB"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var index_exports = {};
|
|
21
|
+
__export(index_exports, {
|
|
22
|
+
AccountMismatchError: () => import_errors.AccountMismatchError,
|
|
23
|
+
AccountRequiredError: () => import_errors.AccountRequiredError,
|
|
24
|
+
AttributionMode: () => import_client.AttributionMode,
|
|
25
|
+
ChainMismatchError: () => import_errors.ChainMismatchError,
|
|
26
|
+
ContractVersion: () => import_types.ContractVersion,
|
|
27
|
+
GauntletClient: () => import_client.GauntletClient,
|
|
28
|
+
GauntletSDKError: () => import_errors.GauntletSDKError,
|
|
29
|
+
InvalidSlippageBPSError: () => import_errors.InvalidSlippageBPSError,
|
|
30
|
+
InvalidSolverTipError: () => import_errors.InvalidSolverTipError,
|
|
31
|
+
InvalidSyncDepositBoundError: () => import_errors.InvalidSyncDepositBoundError,
|
|
32
|
+
InvalidSyncWithdrawBoundError: () => import_errors.InvalidSyncWithdrawBoundError,
|
|
33
|
+
InvalidWithdrawParamsError: () => import_errors.InvalidWithdrawParamsError,
|
|
34
|
+
Rounding: () => import_priceAndFeeCalculator.Rounding,
|
|
35
|
+
RpcNotConfiguredError: () => import_errors.RpcNotConfiguredError,
|
|
36
|
+
StalePriceError: () => import_errors.StalePriceError,
|
|
37
|
+
UnimplementedFeatureError: () => import_errors.UnimplementedFeatureError,
|
|
38
|
+
UnitConversionError: () => import_errors.UnitConversionError,
|
|
39
|
+
UnsupportedAssetError: () => import_errors.UnsupportedAssetError,
|
|
40
|
+
UnsupportedDepositModeError: () => import_errors.UnsupportedDepositModeError,
|
|
41
|
+
UnsupportedFeatureError: () => import_errors.UnsupportedFeatureError,
|
|
42
|
+
UnsupportedProtocolError: () => import_errors.UnsupportedProtocolError,
|
|
43
|
+
VaultId: () => import_vaults.VaultId,
|
|
44
|
+
VaultNotFoundError: () => import_errors.VaultNotFoundError,
|
|
45
|
+
bundledVaultManifest: () => import_client.bundledVaultManifest,
|
|
46
|
+
convertTokenToUnits: () => import_priceAndFeeCalculator.convertTokenToUnits,
|
|
47
|
+
convertTokenToUnitsIfActive: () => import_priceAndFeeCalculator.convertTokenToUnitsIfActive,
|
|
48
|
+
convertUnitsToToken: () => import_priceAndFeeCalculator.convertUnitsToToken,
|
|
49
|
+
convertUnitsToTokenIfActive: () => import_priceAndFeeCalculator.convertUnitsToTokenIfActive,
|
|
50
|
+
getAeraTokenModeSupport: () => import_tokenModes.getAeraTokenModeSupport,
|
|
51
|
+
getAnchorTimestamp: () => import_priceAndFeeCalculator.getAnchorTimestamp,
|
|
52
|
+
getDepositReceiverApprovalTx: () => import_depositReceiverApproval.getDepositReceiverApprovalTx,
|
|
53
|
+
getDepositTx: () => import_deposit.getDepositTx,
|
|
54
|
+
getSyncDepositQuote: () => import_depositQuote.getSyncDepositQuote,
|
|
55
|
+
getSyncDepositRate: () => import_depositQuote.getSyncDepositRate,
|
|
56
|
+
getSyncWithdrawQuote: () => import_withdrawQuote.getSyncWithdrawQuote,
|
|
57
|
+
getSyncWithdrawRate: () => import_withdrawQuote.getSyncWithdrawRate,
|
|
58
|
+
getUserCurrentBalance: () => import_userCurrentBalance.getUserCurrentBalance,
|
|
59
|
+
getVaultState: () => import_priceAndFeeCalculator.getVaultState,
|
|
60
|
+
getVaults: () => import_vaults.getVaults,
|
|
61
|
+
getWithdrawTx: () => import_withdraw.getWithdrawTx,
|
|
62
|
+
isVaultPaused: () => import_priceAndFeeCalculator.isVaultPaused,
|
|
63
|
+
resolveAeraRuntimeContracts: () => import_aeraContracts.resolveAeraRuntimeContracts,
|
|
64
|
+
resolveContractVersion: () => import_aeraContracts.resolveContractVersion
|
|
65
|
+
});
|
|
66
|
+
module.exports = __toCommonJS(index_exports);
|
|
67
|
+
var import_client = require("./client");
|
|
68
|
+
var import_types = require("./evm/types");
|
|
69
|
+
__reExport(index_exports, require("./api"), module.exports);
|
|
70
|
+
var import_deposit = require("./evm/deposit");
|
|
71
|
+
var import_depositReceiverApproval = require("./evm/depositReceiverApproval");
|
|
72
|
+
var import_depositQuote = require("./evm/depositQuote");
|
|
73
|
+
var import_withdraw = require("./evm/withdraw");
|
|
74
|
+
var import_withdrawQuote = require("./evm/withdrawQuote");
|
|
75
|
+
var import_tokenModes = require("./evm/tokenModes");
|
|
76
|
+
var import_userCurrentBalance = require("./evm/userCurrentBalance");
|
|
77
|
+
var import_vaults = require("./evm/vaults");
|
|
78
|
+
var import_aeraContracts = require("./evm/aeraContracts");
|
|
79
|
+
var import_priceAndFeeCalculator = require("./evm/aeraContracts/priceAndFeeCalculator");
|
|
80
|
+
var import_errors = require("./errors");
|
|
81
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
82
|
+
0 && (module.exports = {
|
|
83
|
+
AccountMismatchError,
|
|
84
|
+
AccountRequiredError,
|
|
85
|
+
AttributionMode,
|
|
86
|
+
ChainMismatchError,
|
|
87
|
+
ContractVersion,
|
|
88
|
+
GauntletClient,
|
|
89
|
+
GauntletSDKError,
|
|
90
|
+
InvalidSlippageBPSError,
|
|
91
|
+
InvalidSolverTipError,
|
|
92
|
+
InvalidSyncDepositBoundError,
|
|
93
|
+
InvalidSyncWithdrawBoundError,
|
|
94
|
+
InvalidWithdrawParamsError,
|
|
95
|
+
Rounding,
|
|
96
|
+
RpcNotConfiguredError,
|
|
97
|
+
StalePriceError,
|
|
98
|
+
UnimplementedFeatureError,
|
|
99
|
+
UnitConversionError,
|
|
100
|
+
UnsupportedAssetError,
|
|
101
|
+
UnsupportedDepositModeError,
|
|
102
|
+
UnsupportedFeatureError,
|
|
103
|
+
UnsupportedProtocolError,
|
|
104
|
+
VaultId,
|
|
105
|
+
VaultNotFoundError,
|
|
106
|
+
bundledVaultManifest,
|
|
107
|
+
convertTokenToUnits,
|
|
108
|
+
convertTokenToUnitsIfActive,
|
|
109
|
+
convertUnitsToToken,
|
|
110
|
+
convertUnitsToTokenIfActive,
|
|
111
|
+
getAeraTokenModeSupport,
|
|
112
|
+
getAnchorTimestamp,
|
|
113
|
+
getDepositReceiverApprovalTx,
|
|
114
|
+
getDepositTx,
|
|
115
|
+
getSyncDepositQuote,
|
|
116
|
+
getSyncDepositRate,
|
|
117
|
+
getSyncWithdrawQuote,
|
|
118
|
+
getSyncWithdrawRate,
|
|
119
|
+
getUserCurrentBalance,
|
|
120
|
+
getVaultState,
|
|
121
|
+
getVaults,
|
|
122
|
+
getWithdrawTx,
|
|
123
|
+
isVaultPaused,
|
|
124
|
+
resolveAeraRuntimeContracts,
|
|
125
|
+
resolveContractVersion,
|
|
126
|
+
...require("./api")
|
|
127
|
+
});
|
|
128
|
+
//# sourceMappingURL=index.js.map
|