@gauntlet-xyz/sdk 2.5.0 → 3.1.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 +121 -7
- package/dist/api/activity.d.ts +4 -2
- package/dist/api/activity.d.ts.map +1 -1
- package/dist/api/activityRows.d.ts +11 -0
- package/dist/api/activityRows.d.ts.map +1 -0
- package/dist/api/caip.d.ts +1 -1
- package/dist/api/caip.d.ts.map +1 -1
- package/dist/api/client.d.ts +43 -5
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/decimal.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 +570 -7
- package/dist/api/generated.d.ts.map +1 -1
- package/dist/api/http.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 +47 -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 +8 -5
- package/dist/attribution/index.d.ts.map +1 -1
- package/dist/chunk-JJOLVL5V.js +546 -0
- package/dist/chunk-JJOLVL5V.js.map +7 -0
- package/dist/chunk-JRSNLXFY.js +2009 -0
- package/dist/chunk-JRSNLXFY.js.map +7 -0
- package/dist/chunk-MEKISE2T.js +367 -0
- package/dist/chunk-MEKISE2T.js.map +7 -0
- package/dist/chunk-YQXTLIJA.js +4477 -0
- package/dist/chunk-YQXTLIJA.js.map +7 -0
- package/dist/cjs/api/activity.d.ts +72 -0
- package/dist/cjs/api/activity.d.ts.map +1 -0
- package/dist/cjs/api/activity.js +138 -0
- package/dist/cjs/api/activity.js.map +7 -0
- package/dist/cjs/api/activityRows.d.ts +11 -0
- package/dist/cjs/api/activityRows.d.ts.map +1 -0
- package/dist/cjs/api/activityRows.js +139 -0
- package/dist/cjs/api/activityRows.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 +61 -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 +199 -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 +61 -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 +65 -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 +144 -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 +28 -0
- package/dist/cjs/attribution/index.d.ts.map +1 -0
- package/dist/cjs/attribution/index.js +70 -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 +500 -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 +85 -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 +234 -0
- package/dist/cjs/evm/aeraContracts.js.map +7 -0
- package/dist/cjs/evm/deposit.d.ts +51 -0
- package/dist/cjs/evm/deposit.d.ts.map +1 -0
- package/dist/cjs/evm/deposit.js +142 -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 +97 -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 +71 -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 +69 -0
- package/dist/cjs/evm/userCurrentBalance.d.ts.map +1 -0
- package/dist/cjs/evm/userCurrentBalance.js +268 -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 +75 -0
- package/dist/cjs/evm/withdraw.d.ts.map +1 -0
- package/dist/cjs/evm/withdraw.js +174 -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 +257 -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 +4 -1
- package/dist/errors.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 -3
- package/dist/evm/adapters/types.d.ts.map +1 -1
- package/dist/evm/aeraContracts/priceAndFeeCalculator.d.ts +1 -1
- package/dist/evm/aeraContracts/priceAndFeeCalculator.d.ts.map +1 -1
- 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 +25 -4
- package/dist/evm/aeraContracts/v2.d.ts.map +1 -1
- package/dist/evm/aeraContracts.d.ts +2 -2
- package/dist/evm/aeraContracts.d.ts.map +1 -1
- package/dist/evm/deposit.d.ts +7 -4
- 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 -25
- package/dist/evm/index.d.ts.map +1 -1
- package/dist/evm/index.js +86 -12
- package/dist/evm/index.js.map +7 -1
- package/dist/evm/tokenModes.d.ts +2 -2
- package/dist/evm/tokenModes.d.ts.map +1 -1
- package/dist/evm/userCurrentBalance.d.ts +21 -3
- 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 +5 -3
- package/dist/evm/withdraw.d.ts.map +1 -1
- package/dist/evm/withdrawQuote.d.ts +14 -6
- package/dist/evm/withdrawQuote.d.ts.map +1 -1
- package/dist/index.d.ts +30 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +137 -14
- 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 +22 -395
- package/package.json +43 -9
- package/src/api/activity.ts +18 -15
- package/src/api/activityRows.ts +143 -0
- package/src/api/caip.ts +3 -1
- package/src/api/client.ts +105 -6
- package/src/api/decimal.ts +1 -0
- package/src/api/generated.ts +570 -7
- package/src/api/http.ts +1 -0
- package/src/api/index.ts +8 -0
- package/src/api/positionHistory.ts +20 -5
- package/src/attribution/index.ts +6 -2
- package/src/client.ts +4 -1
- package/src/constants.ts +2 -0
- package/src/errors.ts +7 -0
- package/src/evm/adapters/aera.ts +40 -19
- package/src/evm/adapters/types.ts +3 -0
- package/src/evm/aeraContracts/v2.ts +124 -16
- package/src/evm/aeraContracts.ts +29 -14
- package/src/evm/deposit.ts +61 -18
- package/src/evm/depositQuote.ts +138 -0
- package/src/evm/depositReceiverApproval.ts +14 -9
- package/src/evm/index.ts +10 -1
- package/src/evm/userCurrentBalance.ts +155 -60
- package/src/evm/vaults.ts +0 -7
- package/src/evm/withdraw.ts +20 -1
- package/src/evm/withdrawQuote.ts +126 -51
- package/src/index.ts +11 -2
- 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 -119
- 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 -134
- 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 -141
- 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 -295
- package/dist/evm/abis/provisionerV2.js.map +0 -1
- package/dist/evm/adapters/aera.js +0 -280
- 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 -174
- package/dist/evm/aeraContracts/priceAndFeeCalculator.js.map +0 -1
- package/dist/evm/aeraContracts/readOptions.js +0 -4
- package/dist/evm/aeraContracts/readOptions.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 -273
- package/dist/evm/aeraContracts/v2.js.map +0 -1
- package/dist/evm/aeraContracts.js +0 -195
- 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/tokenModes.js +0 -34
- package/dist/evm/tokenModes.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 -177
- package/dist/evm/withdraw.js.map +0 -1
- package/dist/evm/withdrawQuote.js +0 -164
- package/dist/evm/withdrawQuote.js.map +0 -1
package/src/evm/vaults.ts
CHANGED
|
@@ -8,16 +8,9 @@ export enum VaultId {
|
|
|
8
8
|
EthUsdcPrime = 'ethUsdcPrime',
|
|
9
9
|
AeraUsdAlpha = 'gtusda',
|
|
10
10
|
EthUsdcPrimeV2 = 'ethUsdcPrimeV2',
|
|
11
|
-
AeraUsdAlphaStaging = 'stgusda',
|
|
12
|
-
AeraUsdAlphaDev = 'devusda',
|
|
13
|
-
AeraUsdAlphaDevDeux = 'devusda2',
|
|
14
11
|
AeraLeveredFalconX = 'gpaafalconx',
|
|
15
|
-
AeraLeveredFalconXStaging = 'pytstg',
|
|
16
12
|
AeraSyrupUsdc = 'gpsyrupusdc',
|
|
17
|
-
AeraSyrupUsdcStaging = 'syruppytstg',
|
|
18
13
|
AeraBtcYield = 'gtbtc',
|
|
19
|
-
AeraBtcYieldStaging = 'gtbtcstaging',
|
|
20
|
-
AeraLeveredUsccStaging = 'gtusccstg',
|
|
21
14
|
AeraLeveredUscc = 'gtuscc',
|
|
22
15
|
AeraLend = 'gtlend',
|
|
23
16
|
AeraKastEth = 'kasteth',
|
package/src/evm/withdraw.ts
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
AccountRequiredError,
|
|
10
10
|
VaultNotFoundError,
|
|
11
11
|
UnsupportedAssetError,
|
|
12
|
+
UnsupportedFeatureError,
|
|
12
13
|
InvalidSlippageBPSError,
|
|
13
14
|
InvalidWithdrawParamsError,
|
|
14
15
|
} from '../errors';
|
|
@@ -49,6 +50,8 @@ export type EvmWithdrawParams = {
|
|
|
49
50
|
* Supplying bounds implies `depositMode: 'sync'`; explicit async requests are rejected.
|
|
50
51
|
*/
|
|
51
52
|
syncWithdrawQuote?: SyncWithdrawQuoteBounds;
|
|
53
|
+
/** Limit a sync withdrawal to the shares reviewed before a rate change. */
|
|
54
|
+
maxShares?: bigint;
|
|
52
55
|
} & (
|
|
53
56
|
| { shares: bigint; amount?: never; entireAmount?: never }
|
|
54
57
|
| { amount: bigint; shares?: never; entireAmount?: never }
|
|
@@ -56,6 +59,15 @@ export type EvmWithdrawParams = {
|
|
|
56
59
|
);
|
|
57
60
|
|
|
58
61
|
function validateWithdrawParams(params: EvmWithdrawParams) {
|
|
62
|
+
if (params.entireAmount !== undefined && typeof params.entireAmount !== 'boolean') {
|
|
63
|
+
throw new InvalidWithdrawParamsError();
|
|
64
|
+
}
|
|
65
|
+
if (
|
|
66
|
+
(params.amount !== undefined && params.amount < 0n) ||
|
|
67
|
+
(params.shares !== undefined && params.shares < 0n)
|
|
68
|
+
) {
|
|
69
|
+
throw new InvalidWithdrawParamsError();
|
|
70
|
+
}
|
|
59
71
|
const modes = [
|
|
60
72
|
'amount' in params && params.amount != null,
|
|
61
73
|
'shares' in params && params.shares != null,
|
|
@@ -171,6 +183,7 @@ export async function getWithdrawTx(
|
|
|
171
183
|
client: GauntletClient,
|
|
172
184
|
params: EvmWithdrawParams
|
|
173
185
|
): Promise<PreparedTx[]> {
|
|
186
|
+
params = structuredClone(params);
|
|
174
187
|
validateWithdrawParams(params);
|
|
175
188
|
|
|
176
189
|
if (
|
|
@@ -196,6 +209,9 @@ export async function getWithdrawTx(
|
|
|
196
209
|
}
|
|
197
210
|
|
|
198
211
|
const { vault, protocol } = resolved;
|
|
212
|
+
if (params.maxShares !== undefined && protocol !== 'aera') {
|
|
213
|
+
throw new UnsupportedFeatureError('maxShares requires an Aera sync withdrawal');
|
|
214
|
+
}
|
|
199
215
|
|
|
200
216
|
const token =
|
|
201
217
|
vault.supplyToken.length > 1
|
|
@@ -267,6 +283,7 @@ export async function getWithdrawTx(
|
|
|
267
283
|
maxPriceAge: params.maxPriceAge,
|
|
268
284
|
aeraRuntime,
|
|
269
285
|
syncWithdrawQuote: params.syncWithdrawQuote,
|
|
286
|
+
maxShares: params.maxShares,
|
|
270
287
|
...('shares' in params && params.shares != null ? { shares: params.shares } : {}),
|
|
271
288
|
...('amount' in params && params.amount != null ? { amount: params.amount } : {}),
|
|
272
289
|
...('entireAmount' in params && params.entireAmount ? { entireAmount: true as const } : {}),
|
|
@@ -274,5 +291,7 @@ export async function getWithdrawTx(
|
|
|
274
291
|
|
|
275
292
|
const steps = await adapter.buildWithdraw(withdrawParams as AdapterWithdrawParams);
|
|
276
293
|
|
|
277
|
-
return await Promise.all(
|
|
294
|
+
return await Promise.all(
|
|
295
|
+
steps.map((step) => encodeTransactionWithAttribution(client, step, chainId))
|
|
296
|
+
);
|
|
278
297
|
}
|
package/src/evm/withdrawQuote.ts
CHANGED
|
@@ -24,8 +24,10 @@ import {
|
|
|
24
24
|
convertTokenToNumeraire,
|
|
25
25
|
} from './aeraContracts/priceAndFeeCalculator';
|
|
26
26
|
import {
|
|
27
|
+
getKnownSyncRedeemLiquidityTokens,
|
|
27
28
|
getSyncRedeemEpochState,
|
|
28
29
|
getSyncRedeemRate,
|
|
30
|
+
getSyncRedeemRateContext,
|
|
29
31
|
getSyncRedeemTokenOut,
|
|
30
32
|
getSyncWithdrawUnitsIn,
|
|
31
33
|
getUserUnitsRefundableUntil,
|
|
@@ -33,7 +35,7 @@ import {
|
|
|
33
35
|
} from './aeraContracts/v2';
|
|
34
36
|
import { resolveOperationMode } from './operationMode';
|
|
35
37
|
|
|
36
|
-
/** Epoch
|
|
38
|
+
/** Epoch-cap accounting plus any liquid-token balance known to the caller. */
|
|
37
39
|
export interface SyncWithdrawCapacity {
|
|
38
40
|
/** Effective epoch cap (min of relative and absolute), in numeraire. */
|
|
39
41
|
epochCapNumeraire: bigint;
|
|
@@ -43,6 +45,8 @@ export interface SyncWithdrawCapacity {
|
|
|
43
45
|
remainingNumeraire: bigint;
|
|
44
46
|
/** Remaining capacity expressed in the withdraw token. */
|
|
45
47
|
remainingTokens: bigint;
|
|
48
|
+
/** Vault token balance when no pull-funds calldata is configured; otherwise unknown. */
|
|
49
|
+
knownLiquidityTokens?: bigint;
|
|
46
50
|
/** This redemption's size in numeraire (matches the on-chain epoch accounting). */
|
|
47
51
|
requestNumeraire: bigint;
|
|
48
52
|
/** True when this redemption alone exceeds remaining epoch capacity (the tx would revert). */
|
|
@@ -77,6 +81,8 @@ interface SyncWithdrawQuoteDetails {
|
|
|
77
81
|
tokensOut: bigint;
|
|
78
82
|
/** Lower bound on tokens received after slippage (equals `tokensOut` for `'withdraw'`). */
|
|
79
83
|
minTokensOut: bigint;
|
|
84
|
+
/** Largest exact-token withdrawal that fits `shares`; only set for `'redeem'` quotes. */
|
|
85
|
+
shareSafeTokensOut?: bigint;
|
|
80
86
|
/** Live multiplier breakdown (base, dynamic premium, effective), in bps. */
|
|
81
87
|
rate: SyncRedeemRate;
|
|
82
88
|
capacity: SyncWithdrawCapacity;
|
|
@@ -112,12 +118,15 @@ export type SyncWithdrawQuote =
|
|
|
112
118
|
| (SyncWithdrawQuoteDetails & { kind: 'redeem' })
|
|
113
119
|
| (SyncWithdrawQuoteDetails & { kind: 'withdraw' });
|
|
114
120
|
|
|
115
|
-
type
|
|
121
|
+
export type SyncWithdrawRateParams = {
|
|
116
122
|
vaultId: string;
|
|
117
123
|
/** EVM chain ID. Defaults to the vault's primary chain (Base for current multichain vaults). */
|
|
118
124
|
chainId?: number;
|
|
119
125
|
/** Required for multiasset vaults. */
|
|
120
126
|
assetSymbol?: string;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
type SyncWithdrawQuoteBaseParams = SyncWithdrawRateParams & {
|
|
121
130
|
/** Optional for explicit amount/shares quotes; required for full-position quotes. */
|
|
122
131
|
account?: Address;
|
|
123
132
|
/**
|
|
@@ -150,47 +159,25 @@ function validateSyncWithdrawQuoteParams(params: SyncWithdrawQuoteParams) {
|
|
|
150
159
|
}
|
|
151
160
|
}
|
|
152
161
|
|
|
153
|
-
|
|
154
|
-
* Builds a live quote for an instant (sync) withdraw without sending a transaction.
|
|
155
|
-
*
|
|
156
|
-
* Surfaces everything the on-chain `redeem`/`withdraw` would apply or check but that a plain
|
|
157
|
-
* transaction build does not pre-validate: the effective rate (including the price-age dynamic
|
|
158
|
-
* premium), slippage bounds, the global per-epoch redeem capacity, and whether the caller's units
|
|
159
|
-
* are still locked from a recent sync deposit.
|
|
160
|
-
*
|
|
161
|
-
* @throws {VaultNotFoundError} If the vault ID is not found.
|
|
162
|
-
* @throws {UnsupportedAssetError} If the asset symbol is not accepted by the vault.
|
|
163
|
-
* @throws {UnsupportedFeatureError} If the vault is not an Aera V2 deployment.
|
|
164
|
-
* @throws {UnsupportedDepositModeError} If sync redeem is not enabled for the token.
|
|
165
|
-
* @throws {StalePriceError} If the oracle price is too stale for an instant redeem.
|
|
166
|
-
*/
|
|
167
|
-
export async function getSyncWithdrawQuote(
|
|
162
|
+
async function resolveSyncWithdrawContext(
|
|
168
163
|
client: GauntletClient,
|
|
169
|
-
params:
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
if (
|
|
174
|
-
params.slippageBps !== undefined &&
|
|
175
|
-
(!Number.isInteger(params.slippageBps) ||
|
|
176
|
-
params.slippageBps < 0 ||
|
|
177
|
-
params.slippageBps > Number(MAX_BPS))
|
|
178
|
-
) {
|
|
179
|
-
throw new InvalidSlippageBPSError(params.slippageBps);
|
|
180
|
-
}
|
|
181
|
-
const slippageBps = params.slippageBps ?? DEFAULT_BPS;
|
|
182
|
-
|
|
164
|
+
params: SyncWithdrawRateParams,
|
|
165
|
+
readKind: 'quote' | 'rate'
|
|
166
|
+
) {
|
|
183
167
|
const resolved = await resolveVault(client, params.vaultId, params.chainId);
|
|
184
168
|
if (!resolved) throw new VaultNotFoundError(params.vaultId);
|
|
185
169
|
|
|
186
170
|
const { vault, protocol } = resolved;
|
|
187
171
|
if (protocol !== 'aera') {
|
|
188
|
-
throw new UnsupportedFeatureError(
|
|
172
|
+
throw new UnsupportedFeatureError(
|
|
173
|
+
readKind === 'quote'
|
|
174
|
+
? 'Sync withdraw quote is only available for Aera vaults'
|
|
175
|
+
: 'Sync withdraw rate is only available for Aera vaults'
|
|
176
|
+
);
|
|
189
177
|
}
|
|
190
178
|
|
|
191
179
|
const chainId = params.chainId ?? vault.chainId;
|
|
192
180
|
const publicClient = client.getPublicClient(chainId);
|
|
193
|
-
|
|
194
181
|
const token =
|
|
195
182
|
vault.supplyToken.length > 1
|
|
196
183
|
? vault.supplyToken.find((tInfo) => tInfo.symbol === params.assetSymbol)
|
|
@@ -201,33 +188,101 @@ export async function getSyncWithdrawQuote(
|
|
|
201
188
|
|
|
202
189
|
const quoteBlock = await publicClient.getBlock();
|
|
203
190
|
if (quoteBlock.number === null) {
|
|
204
|
-
throw new UnsupportedFeatureError(
|
|
191
|
+
throw new UnsupportedFeatureError(
|
|
192
|
+
readKind === 'quote'
|
|
193
|
+
? 'Aera: sync withdraw quote requires a numbered block'
|
|
194
|
+
: 'Aera: sync withdraw rate requires a numbered block'
|
|
195
|
+
);
|
|
205
196
|
}
|
|
206
|
-
const
|
|
197
|
+
const readContext = {
|
|
207
198
|
blockNumber: quoteBlock.number,
|
|
208
199
|
blockTimestamp: BigInt(quoteBlock.timestamp),
|
|
209
200
|
};
|
|
210
201
|
|
|
211
|
-
const runtime = await resolveAeraRuntimeContracts(publicClient, vault,
|
|
202
|
+
const runtime = await resolveAeraRuntimeContracts(publicClient, vault, readContext);
|
|
212
203
|
requireAeraSyncRedeemRuntime(runtime);
|
|
213
204
|
|
|
214
205
|
const support = await resolveAeraTokenModeSupport(
|
|
215
206
|
publicClient,
|
|
216
207
|
runtime,
|
|
217
208
|
token.address,
|
|
218
|
-
|
|
209
|
+
readContext
|
|
219
210
|
);
|
|
220
211
|
resolveOperationMode(params.vaultId, 'sync', {
|
|
221
212
|
async: support.asyncRedeem,
|
|
222
213
|
sync: support.syncRedeem,
|
|
223
214
|
});
|
|
224
215
|
|
|
216
|
+
return { publicClient, vault, token, runtime, chainId, readContext };
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/** Reads the live instant-withdraw fee rate without requiring a withdrawal amount or account. */
|
|
220
|
+
export async function getSyncWithdrawRate(
|
|
221
|
+
client: GauntletClient,
|
|
222
|
+
params: SyncWithdrawRateParams
|
|
223
|
+
): Promise<SyncRedeemRate> {
|
|
224
|
+
const { publicClient, vault, token, runtime, readContext } = await resolveSyncWithdrawContext(
|
|
225
|
+
client,
|
|
226
|
+
params,
|
|
227
|
+
'rate'
|
|
228
|
+
);
|
|
229
|
+
|
|
230
|
+
return getSyncRedeemRate(
|
|
231
|
+
publicClient,
|
|
232
|
+
runtime.provisioner.address,
|
|
233
|
+
vault.vaultAddress,
|
|
234
|
+
token.address,
|
|
235
|
+
runtime.feeCalculator.address,
|
|
236
|
+
readContext
|
|
237
|
+
);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Builds a live quote for an instant (sync) withdraw without sending a transaction.
|
|
242
|
+
*
|
|
243
|
+
* Surfaces everything the on-chain `redeem`/`withdraw` would apply or check but that a plain
|
|
244
|
+
* transaction build does not pre-validate: the effective rate (including the price-age dynamic
|
|
245
|
+
* premium), slippage bounds, the global per-epoch redeem capacity, any known vault-balance limit,
|
|
246
|
+
* and whether the caller's units are still locked from a recent sync deposit.
|
|
247
|
+
*
|
|
248
|
+
* @throws {VaultNotFoundError} If the vault ID is not found.
|
|
249
|
+
* @throws {UnsupportedAssetError} If the asset symbol is not accepted by the vault.
|
|
250
|
+
* @throws {UnsupportedFeatureError} If the vault is not an Aera V2 deployment.
|
|
251
|
+
* @throws {UnsupportedDepositModeError} If sync redeem is not enabled for the token.
|
|
252
|
+
* @throws {StalePriceError} If the oracle price is too stale for an instant redeem.
|
|
253
|
+
*/
|
|
254
|
+
export async function getSyncWithdrawQuote(
|
|
255
|
+
client: GauntletClient,
|
|
256
|
+
params: SyncWithdrawQuoteParams
|
|
257
|
+
): Promise<SyncWithdrawQuote> {
|
|
258
|
+
params = structuredClone(params);
|
|
259
|
+
validateSyncWithdrawQuoteParams(params);
|
|
260
|
+
|
|
261
|
+
if (
|
|
262
|
+
params.slippageBps !== undefined &&
|
|
263
|
+
(!Number.isInteger(params.slippageBps) ||
|
|
264
|
+
params.slippageBps < 0 ||
|
|
265
|
+
params.slippageBps > Number(MAX_BPS))
|
|
266
|
+
) {
|
|
267
|
+
throw new InvalidSlippageBPSError(params.slippageBps);
|
|
268
|
+
}
|
|
269
|
+
const slippageBps = params.slippageBps ?? DEFAULT_BPS;
|
|
270
|
+
|
|
271
|
+
const {
|
|
272
|
+
publicClient,
|
|
273
|
+
vault,
|
|
274
|
+
token,
|
|
275
|
+
runtime,
|
|
276
|
+
chainId,
|
|
277
|
+
readContext: quoteReadContext,
|
|
278
|
+
} = await resolveSyncWithdrawContext(client, params, 'quote');
|
|
279
|
+
|
|
225
280
|
const provisioner = runtime.provisioner.address;
|
|
226
281
|
const feeCalculator = runtime.feeCalculator.address;
|
|
227
282
|
const feeVersion = runtime.feeCalculator.version;
|
|
228
283
|
const vaultAddress = vault.vaultAddress;
|
|
229
284
|
|
|
230
|
-
const rate = await
|
|
285
|
+
const { rate, hasPullFundsSubmitData } = await getSyncRedeemRateContext(
|
|
231
286
|
publicClient,
|
|
232
287
|
provisioner,
|
|
233
288
|
vaultAddress,
|
|
@@ -242,6 +297,7 @@ export async function getSyncWithdrawQuote(
|
|
|
242
297
|
let minTokensOut: bigint;
|
|
243
298
|
let maxUnitsIn: bigint;
|
|
244
299
|
let request: SyncWithdrawQuoteRequest;
|
|
300
|
+
let shareSafeTokensOut: bigint | undefined;
|
|
245
301
|
|
|
246
302
|
if ('amount' in params && params.amount != null) {
|
|
247
303
|
// Exact token out: shares burned is the estimate, bounded above by slippage.
|
|
@@ -283,23 +339,34 @@ export async function getSyncWithdrawQuote(
|
|
|
283
339
|
throw new InvalidWithdrawParamsError();
|
|
284
340
|
}
|
|
285
341
|
requireNonZeroSyncWithdrawBound(shares, 'unitsIn');
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
342
|
+
const getTokensOut = (unitsIn: bigint) =>
|
|
343
|
+
getSyncRedeemTokenOut(
|
|
344
|
+
publicClient,
|
|
345
|
+
provisioner,
|
|
346
|
+
feeCalculator,
|
|
347
|
+
feeVersion,
|
|
348
|
+
vaultAddress,
|
|
349
|
+
token.address,
|
|
350
|
+
unitsIn,
|
|
351
|
+
rate.effectiveMultiplierBps,
|
|
352
|
+
quoteReadContext
|
|
353
|
+
);
|
|
354
|
+
// A capacity-limited Max is submitted as an exact-token withdraw. Reserve slippage headroom so
|
|
355
|
+
// its maximum share cost cannot exceed the user's share balance.
|
|
356
|
+
const shareSafeUnitsIn = (shares * MAX_BPS) / (MAX_BPS + BigInt(slippageBps));
|
|
357
|
+
const tokensOutPromise = getTokensOut(shares);
|
|
358
|
+
const shareSafeTokensOutPromise =
|
|
359
|
+
shareSafeUnitsIn === shares ? tokensOutPromise : getTokensOut(shareSafeUnitsIn);
|
|
360
|
+
[tokensOut, shareSafeTokensOut] = await Promise.all([
|
|
361
|
+
tokensOutPromise,
|
|
362
|
+
shareSafeTokensOutPromise,
|
|
363
|
+
]);
|
|
297
364
|
minTokensOut = applySlippageDown(tokensOut, slippageBps);
|
|
298
365
|
requireNonZeroSyncWithdrawBound(minTokensOut, 'minTokensOut');
|
|
299
366
|
maxUnitsIn = shares;
|
|
300
367
|
}
|
|
301
368
|
|
|
302
|
-
const [epoch, requestNumeraire, unitsLockedUntil] = await Promise.all([
|
|
369
|
+
const [epoch, requestNumeraire, unitsLockedUntil, knownLiquidityTokens] = await Promise.all([
|
|
303
370
|
getSyncRedeemEpochState(publicClient, provisioner, quoteReadContext),
|
|
304
371
|
convertTokenToNumeraire(
|
|
305
372
|
publicClient,
|
|
@@ -313,6 +380,13 @@ export async function getSyncWithdrawQuote(
|
|
|
313
380
|
params.account
|
|
314
381
|
? getUserUnitsRefundableUntil(publicClient, provisioner, params.account, quoteReadContext)
|
|
315
382
|
: Promise.resolve(undefined),
|
|
383
|
+
getKnownSyncRedeemLiquidityTokens(
|
|
384
|
+
publicClient,
|
|
385
|
+
vaultAddress,
|
|
386
|
+
token.address,
|
|
387
|
+
hasPullFundsSubmitData,
|
|
388
|
+
quoteReadContext
|
|
389
|
+
),
|
|
316
390
|
]);
|
|
317
391
|
|
|
318
392
|
const remainingNumeraire =
|
|
@@ -328,18 +402,19 @@ export async function getSyncWithdrawQuote(
|
|
|
328
402
|
remainingNumeraire,
|
|
329
403
|
quoteReadContext
|
|
330
404
|
);
|
|
331
|
-
|
|
332
405
|
const quoteDetails: SyncWithdrawQuoteDetails = {
|
|
333
406
|
shares,
|
|
334
407
|
maxUnitsIn,
|
|
335
408
|
tokensOut,
|
|
336
409
|
minTokensOut,
|
|
410
|
+
shareSafeTokensOut,
|
|
337
411
|
rate,
|
|
338
412
|
capacity: {
|
|
339
413
|
epochCapNumeraire: epoch.epochCapNumeraire,
|
|
340
414
|
epochRedeemedNumeraire: epoch.epochRedeemedNumeraire,
|
|
341
415
|
remainingNumeraire,
|
|
342
416
|
remainingTokens,
|
|
417
|
+
knownLiquidityTokens,
|
|
343
418
|
requestNumeraire,
|
|
344
419
|
exceedsCapacity: requestNumeraire > remainingNumeraire,
|
|
345
420
|
},
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { GauntletClient, AttributionMode } from './client';
|
|
1
|
+
export { GauntletClient, AttributionMode, bundledVaultManifest } from './client';
|
|
2
2
|
export type { GauntletClientConfig } from './client';
|
|
3
3
|
export { ContractVersion } from './evm/types';
|
|
4
4
|
|
|
@@ -15,8 +15,9 @@ export type { VaultFilter } from './evm/vaults';
|
|
|
15
15
|
|
|
16
16
|
export { getDepositTx } from './evm/deposit';
|
|
17
17
|
export { getDepositReceiverApprovalTx } from './evm/depositReceiverApproval';
|
|
18
|
+
export { getSyncDepositQuote, getSyncDepositRate } from './evm/depositQuote';
|
|
18
19
|
export { getWithdrawTx } from './evm/withdraw';
|
|
19
|
-
export { getSyncWithdrawQuote } from './evm/withdrawQuote';
|
|
20
|
+
export { getSyncWithdrawQuote, getSyncWithdrawRate } from './evm/withdrawQuote';
|
|
20
21
|
export { getAeraTokenModeSupport } from './evm/tokenModes';
|
|
21
22
|
export { getUserCurrentBalance } from './evm/userCurrentBalance';
|
|
22
23
|
export { getVaults, VaultId } from './evm/vaults';
|
|
@@ -34,6 +35,12 @@ export {
|
|
|
34
35
|
|
|
35
36
|
export type { EvmDepositParams } from './evm/deposit';
|
|
36
37
|
export type { EvmDepositReceiverApprovalParams } from './evm/depositReceiverApproval';
|
|
38
|
+
export type {
|
|
39
|
+
SyncDepositQuote,
|
|
40
|
+
SyncDepositQuoteParams,
|
|
41
|
+
SyncDepositRate,
|
|
42
|
+
SyncDepositRateParams,
|
|
43
|
+
} from './evm/depositQuote';
|
|
37
44
|
export type { EvmWithdrawParams } from './evm/withdraw';
|
|
38
45
|
export type {
|
|
39
46
|
SyncWithdrawQuote,
|
|
@@ -42,6 +49,7 @@ export type {
|
|
|
42
49
|
SyncWithdrawQuoteContext,
|
|
43
50
|
SyncWithdrawQuoteRequest,
|
|
44
51
|
SyncWithdrawQuoteBounds,
|
|
52
|
+
SyncWithdrawRateParams,
|
|
45
53
|
} from './evm/withdrawQuote';
|
|
46
54
|
export type { AeraTokenModeSupportParams } from './evm/tokenModes';
|
|
47
55
|
export type { SyncRedeemRate } from './evm/aeraContracts/v2';
|
|
@@ -63,6 +71,7 @@ export {
|
|
|
63
71
|
UnsupportedProtocolError,
|
|
64
72
|
UnsupportedFeatureError,
|
|
65
73
|
InvalidWithdrawParamsError,
|
|
74
|
+
InvalidSyncDepositBoundError,
|
|
66
75
|
InvalidSyncWithdrawBoundError,
|
|
67
76
|
InvalidSlippageBPSError,
|
|
68
77
|
UnimplementedFeatureError,
|
package/dist/api/activity.js
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import { GauntletSDKError } from '../errors';
|
|
2
|
-
import { decimalToBigInt, sharesToBigInt } from './decimal';
|
|
3
|
-
import { SettlementTimeoutError } from './errors';
|
|
4
|
-
const PENDING_TYPES = new Set(['deposit_pending', 'withdraw_pending']);
|
|
5
|
-
const REFUNDED_TYPES = new Set(['deposit_refunded', 'withdraw_refunded']);
|
|
6
|
-
function flowKind(rowType) {
|
|
7
|
-
if (rowType.startsWith('deposit'))
|
|
8
|
-
return 'deposit';
|
|
9
|
-
if (rowType.startsWith('withdraw'))
|
|
10
|
-
return 'withdraw';
|
|
11
|
-
if (rowType === 'transfer_in' || rowType === 'transfer_out')
|
|
12
|
-
return rowType;
|
|
13
|
-
throw new GauntletSDKError(`Unknown activity row type "${rowType}"`);
|
|
14
|
-
}
|
|
15
|
-
function abs(value) {
|
|
16
|
-
return value < 0n ? -value : value;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Comparison scale for asset amounts. The API emits human-unit decimal strings
|
|
20
|
-
* with at most `token.decimals` fractional digits, so 18 digits is exact for
|
|
21
|
-
* every supported asset.
|
|
22
|
-
*/
|
|
23
|
-
const ASSET_SCALE = 18;
|
|
24
|
-
function toAssetAmount(rows) {
|
|
25
|
-
// Per the API contract, at most one row of an async lifecycle carries the
|
|
26
|
-
// asset movement (the other legs are "0"), so the max magnitude is the
|
|
27
|
-
// flow's amount. For refunded flows this surfaces the requested amount
|
|
28
|
-
// instead of the useless net of zero.
|
|
29
|
-
let best = rows[0];
|
|
30
|
-
let bestMagnitude = abs(decimalToBigInt(best.assets_delta.native, ASSET_SCALE));
|
|
31
|
-
for (const row of rows.slice(1)) {
|
|
32
|
-
const magnitude = abs(decimalToBigInt(row.assets_delta.native, ASSET_SCALE));
|
|
33
|
-
if (magnitude > bestMagnitude) {
|
|
34
|
-
best = row;
|
|
35
|
-
bestMagnitude = magnitude;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
const token = best.assets_delta.token ?? rows.find((r) => r.assets_delta.token)?.assets_delta.token ?? null;
|
|
39
|
-
const decimal = best.assets_delta.native.replace(/^-/, '');
|
|
40
|
-
const raw = token?.decimals != null ? decimalToBigInt(decimal, token.decimals) : null;
|
|
41
|
-
return { decimal, raw, token };
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Pure stitcher: folds raw activity rows into `ActivityFlow`s. Rows may be in
|
|
45
|
-
* any order and may span multiple vaults; async lifecycles are paired by
|
|
46
|
-
* `request_hash`. Flows are returned newest-first (by the flow's latest row).
|
|
47
|
-
*/
|
|
48
|
-
export function stitchActivityFlows(rows) {
|
|
49
|
-
const groups = new Map();
|
|
50
|
-
for (const [index, row] of rows.entries()) {
|
|
51
|
-
// Rows without a request_hash are standalone sync flows: each one is its
|
|
52
|
-
// own group, so two same-type events in one transaction (e.g. a multicall
|
|
53
|
-
// doing two deposits) stay two flows.
|
|
54
|
-
const key = row.request_hash ?? `row:${index}`;
|
|
55
|
-
const group = groups.get(key);
|
|
56
|
-
if (group)
|
|
57
|
-
group.push(row);
|
|
58
|
-
else
|
|
59
|
-
groups.set(key, [row]);
|
|
60
|
-
}
|
|
61
|
-
const flows = [];
|
|
62
|
-
for (const group of groups.values()) {
|
|
63
|
-
group.sort((a, b) => a.block_timestamp - b.block_timestamp);
|
|
64
|
-
const pendingRow = group.find((r) => PENDING_TYPES.has(r.type)) ?? null;
|
|
65
|
-
const terminalRow = group.find((r) => !PENDING_TYPES.has(r.type)) ?? null;
|
|
66
|
-
const isAsync = group.some((r) => r.request_hash != null);
|
|
67
|
-
let status;
|
|
68
|
-
if (!terminalRow)
|
|
69
|
-
status = 'pending';
|
|
70
|
-
else if (REFUNDED_TYPES.has(terminalRow.type))
|
|
71
|
-
status = 'refunded';
|
|
72
|
-
else
|
|
73
|
-
status = 'settled';
|
|
74
|
-
let sharesMagnitude = 0n;
|
|
75
|
-
for (const row of group) {
|
|
76
|
-
const shares = abs(sharesToBigInt(row.shares_delta));
|
|
77
|
-
if (shares > sharesMagnitude)
|
|
78
|
-
sharesMagnitude = shares;
|
|
79
|
-
}
|
|
80
|
-
flows.push({
|
|
81
|
-
kind: flowKind((terminalRow ?? pendingRow ?? group[0]).type),
|
|
82
|
-
status,
|
|
83
|
-
vaultId: group[0].vault_id,
|
|
84
|
-
requestHash: group[0].request_hash ?? null,
|
|
85
|
-
requestedAt: pendingRow
|
|
86
|
-
? new Date(pendingRow.block_timestamp * 1000)
|
|
87
|
-
: isAsync
|
|
88
|
-
? null
|
|
89
|
-
: new Date(group[0].block_timestamp * 1000),
|
|
90
|
-
settledAt: terminalRow ? new Date(terminalRow.block_timestamp * 1000) : null,
|
|
91
|
-
assets: toAssetAmount(group),
|
|
92
|
-
shares: sharesMagnitude,
|
|
93
|
-
txHashes: [...new Set(group.map((r) => r.tx_hash))],
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
return flows.sort((a, b) => {
|
|
97
|
-
const aAt = (a.settledAt ?? a.requestedAt)?.getTime() ?? 0;
|
|
98
|
-
const bAt = (b.settledAt ?? b.requestedAt)?.getTime() ?? 0;
|
|
99
|
-
return bAt - aAt;
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Fetches the wallet's activity log and stitches it into lifecycle-aware
|
|
104
|
-
* flows — the replacement for scanning vault event logs over RPC.
|
|
105
|
-
*
|
|
106
|
-
* ```ts
|
|
107
|
-
* const flows = await getActivityFlows(client.api, wallet);
|
|
108
|
-
* const open = flows.filter((f) => f.status === 'pending');
|
|
109
|
-
* ```
|
|
110
|
-
*/
|
|
111
|
-
export async function getActivityFlows(api, walletAddress, options = {}) {
|
|
112
|
-
const maxRows = options.maxRows ?? 1000;
|
|
113
|
-
const rows = [];
|
|
114
|
-
for await (const row of api.activityRows(walletAddress, {
|
|
115
|
-
vaultId: options.vaultId,
|
|
116
|
-
// The API caps page size at 1000; request maxRows per page so the common
|
|
117
|
-
// case is a single round trip instead of ten default-100 pages.
|
|
118
|
-
limit: options.limit ?? Math.min(maxRows, 1000),
|
|
119
|
-
order: 'desc',
|
|
120
|
-
})) {
|
|
121
|
-
rows.push(row);
|
|
122
|
-
if (rows.length >= maxRows)
|
|
123
|
-
break;
|
|
124
|
-
}
|
|
125
|
-
const flows = stitchActivityFlows(rows);
|
|
126
|
-
if (rows.length >= maxRows) {
|
|
127
|
-
// The window cut may have split an async lifecycle, keeping a terminal
|
|
128
|
-
// row whose request leg (the one carrying the amount) fell outside the
|
|
129
|
-
// window. Drop those flows rather than reporting zeroed amounts.
|
|
130
|
-
return flows.filter((f) => f.requestHash === null || f.requestedAt !== null);
|
|
131
|
-
}
|
|
132
|
-
return flows;
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Polls the activity log until the Aera async request identified by
|
|
136
|
-
* `requestHash` reaches a terminal state, and returns the settled or refunded
|
|
137
|
-
* flow. Use after submitting a `requestDeposit` / `requestRedeem` transaction.
|
|
138
|
-
*/
|
|
139
|
-
export async function waitForRequestSettlement(api, walletAddress, requestHash, options = {}) {
|
|
140
|
-
const pollIntervalMs = options.pollIntervalMs ?? 5000;
|
|
141
|
-
const timeoutMs = options.timeoutMs ?? 600000;
|
|
142
|
-
const deadline = Date.now() + timeoutMs;
|
|
143
|
-
for (;;) {
|
|
144
|
-
const flows = await getActivityFlows(api, walletAddress, { vaultId: options.vaultId });
|
|
145
|
-
const flow = flows.find((f) => f.requestHash === requestHash);
|
|
146
|
-
if (flow && flow.status !== 'pending')
|
|
147
|
-
return flow;
|
|
148
|
-
if (Date.now() + pollIntervalMs > deadline) {
|
|
149
|
-
throw new SettlementTimeoutError(requestHash, timeoutMs);
|
|
150
|
-
}
|
|
151
|
-
await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
//# sourceMappingURL=activity.js.map
|
package/dist/api/activity.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/api/activity.ts"],"names":[],"mappings":"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"}
|
package/dist/api/caip.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { VaultNotFoundError } from '../errors';
|
|
2
|
-
import { resolveVault } from '../evm/vaults';
|
|
3
|
-
import { InvalidCaipIdError } from './errors';
|
|
4
|
-
export function parseApiVaultId(id) {
|
|
5
|
-
const match = /^(?:eip155:)?(\d+):(0x[0-9a-fA-F]{40})$/.exec(id);
|
|
6
|
-
if (!match)
|
|
7
|
-
throw new InvalidCaipIdError(id);
|
|
8
|
-
return { chainId: Number(match[1]), address: match[2].toLowerCase() };
|
|
9
|
-
}
|
|
10
|
-
export function formatApiVaultId(chainId, address) {
|
|
11
|
-
return `${chainId}:${address.toLowerCase()}`;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Resolves a manifest vault id (e.g. `VaultId.AeraUsdAlpha` / `'gtusda'`) to
|
|
15
|
-
* the Gaia API's CAIP-10 id for the vault's deployment on `chainId`.
|
|
16
|
-
*
|
|
17
|
-
* Deployment resolution is `resolveVault` — the same rules tx-building uses:
|
|
18
|
-
* single-deployment vaults resolve directly (a mismatched explicit `chainId`
|
|
19
|
-
* throws `ChainMismatchError`), multi-chain vaults default to Base when
|
|
20
|
-
* `chainId` is omitted.
|
|
21
|
-
*/
|
|
22
|
-
export async function apiVaultIdFromVaultId(client, vaultId, chainId) {
|
|
23
|
-
const resolved = await resolveVault(client, vaultId, chainId);
|
|
24
|
-
if (!resolved)
|
|
25
|
-
throw new VaultNotFoundError(vaultId, chainId);
|
|
26
|
-
return formatApiVaultId(resolved.vault.chainId, resolved.vault.vaultAddress);
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Resolves a Gaia API CAIP-10 vault id back to the manifest vault id, or
|
|
30
|
-
* `undefined` when the vault is not in the bundled manifest (the API indexes
|
|
31
|
-
* more vaults than the manifest lists).
|
|
32
|
-
*/
|
|
33
|
-
export async function vaultIdFromApiVaultId(client, apiVaultId) {
|
|
34
|
-
const { chainId, address } = parseApiVaultId(apiVaultId);
|
|
35
|
-
const manifest = await client.manifest;
|
|
36
|
-
return manifest.vaults.find((v) => v.deployments.some((d) => d.chain === 'evm' && d.chainId === chainId && d.vaultAddress.toLowerCase() === address))?.vaultId;
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=caip.js.map
|
package/dist/api/caip.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"caip.js","sourceRoot":"","sources":["../../src/api/caip.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAY9C,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,MAAM,KAAK,GAAG,yCAAyC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,OAAe;IAC/D,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;AAC/C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAsB,EACtB,OAAe,EACf,OAAgB;IAEhB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,OAAO,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAsB,EACtB,UAAkB;IAElB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;IACvC,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAChC,CAAC,CAAC,WAAW,CAAC,IAAI,CAChB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,OAAO,CAC9F,CACF,EAAE,OAAO,CAAC;AACb,CAAC"}
|