@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
|
@@ -0,0 +1,144 @@
|
|
|
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 positionHistory_exports = {};
|
|
20
|
+
__export(positionHistory_exports, {
|
|
21
|
+
buildPositionHistory: () => buildPositionHistory,
|
|
22
|
+
getPositionHistory: () => getPositionHistory
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(positionHistory_exports);
|
|
25
|
+
var import_activityRows = require("./activityRows");
|
|
26
|
+
var import_errors = require("../errors");
|
|
27
|
+
var import_decimal = require("./decimal");
|
|
28
|
+
const ASSET_SCALE = 18;
|
|
29
|
+
function buildPositionHistory(rows) {
|
|
30
|
+
if (rows.length === 0) {
|
|
31
|
+
throw new import_errors.GauntletSDKError("Cannot build position history from zero activity rows");
|
|
32
|
+
}
|
|
33
|
+
const vaultIds = new Set(rows.map((r) => r.vault_id));
|
|
34
|
+
if (vaultIds.size > 1) {
|
|
35
|
+
throw new import_errors.GauntletSDKError(
|
|
36
|
+
`Position history requires rows from a single vault; got ${[...vaultIds].join(", ")}`
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
const ordered = (0, import_activityRows.orderActivityRows)(rows);
|
|
40
|
+
(0, import_activityRows.activityLifecycles)(ordered);
|
|
41
|
+
const tokenRow = ordered.find((r) => r.assets_delta.token) ?? ordered[0];
|
|
42
|
+
const token = tokenRow.assets_delta.token ?? null;
|
|
43
|
+
for (const row of ordered) (0, import_activityRows.requireSameToken)(tokenRow, row);
|
|
44
|
+
let sharesBalance = 0n;
|
|
45
|
+
let pendingDepositAssets = 0n;
|
|
46
|
+
let pendingRedeemShares = 0n;
|
|
47
|
+
let netAssetsIn = 0n;
|
|
48
|
+
const pendingDepositByHash = /* @__PURE__ */ new Map();
|
|
49
|
+
const pendingRedeemByHash = /* @__PURE__ */ new Map();
|
|
50
|
+
const points = [];
|
|
51
|
+
for (const row of ordered) {
|
|
52
|
+
const sharesDelta = (0, import_decimal.sharesToBigInt)(row.shares_delta);
|
|
53
|
+
const assetsDelta = (0, import_decimal.decimalToBigInt)(row.assets_delta.native, ASSET_SCALE);
|
|
54
|
+
sharesBalance += sharesDelta;
|
|
55
|
+
switch (row.type) {
|
|
56
|
+
case "deposit":
|
|
57
|
+
if (row.request_hash != null) {
|
|
58
|
+
const requested = pendingDepositByHash.get(row.request_hash);
|
|
59
|
+
if (requested === void 0) {
|
|
60
|
+
throw new import_errors.GauntletSDKError(
|
|
61
|
+
`Deposit settlement ${row.tx_hash} references request_hash "${row.request_hash}" with no matching deposit_pending row`
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
pendingDepositByHash.delete(row.request_hash);
|
|
65
|
+
pendingDepositAssets -= requested;
|
|
66
|
+
netAssetsIn += requested;
|
|
67
|
+
} else {
|
|
68
|
+
netAssetsIn += assetsDelta;
|
|
69
|
+
}
|
|
70
|
+
break;
|
|
71
|
+
case "deposit_pending":
|
|
72
|
+
pendingDepositAssets += assetsDelta;
|
|
73
|
+
if (row.request_hash != null) pendingDepositByHash.set(row.request_hash, assetsDelta);
|
|
74
|
+
break;
|
|
75
|
+
case "deposit_refunded":
|
|
76
|
+
if (row.request_hash == null || pendingDepositByHash.get(row.request_hash) !== -assetsDelta) {
|
|
77
|
+
throw new import_errors.GauntletSDKError("The deposit refund does not match its escrow");
|
|
78
|
+
}
|
|
79
|
+
pendingDepositAssets += assetsDelta;
|
|
80
|
+
pendingDepositByHash.delete(row.request_hash);
|
|
81
|
+
break;
|
|
82
|
+
case "withdraw":
|
|
83
|
+
netAssetsIn += assetsDelta;
|
|
84
|
+
if (row.request_hash != null) {
|
|
85
|
+
const escrowed = pendingRedeemByHash.get(row.request_hash);
|
|
86
|
+
if (escrowed === void 0) {
|
|
87
|
+
throw new import_errors.GauntletSDKError(
|
|
88
|
+
`Withdraw settlement ${row.tx_hash} references request_hash "${row.request_hash}" with no matching withdraw_pending row`
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
pendingRedeemByHash.delete(row.request_hash);
|
|
92
|
+
pendingRedeemShares -= escrowed;
|
|
93
|
+
}
|
|
94
|
+
break;
|
|
95
|
+
case "withdraw_pending": {
|
|
96
|
+
const escrowed = -sharesDelta;
|
|
97
|
+
pendingRedeemShares += escrowed;
|
|
98
|
+
if (row.request_hash != null) pendingRedeemByHash.set(row.request_hash, escrowed);
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
case "withdraw_refunded":
|
|
102
|
+
if (row.request_hash == null || pendingRedeemByHash.get(row.request_hash) !== sharesDelta) {
|
|
103
|
+
throw new import_errors.GauntletSDKError("The withdrawal refund does not match its escrow");
|
|
104
|
+
}
|
|
105
|
+
pendingRedeemShares -= sharesDelta;
|
|
106
|
+
pendingRedeemByHash.delete(row.request_hash);
|
|
107
|
+
break;
|
|
108
|
+
case "transfer_in":
|
|
109
|
+
case "transfer_out":
|
|
110
|
+
break;
|
|
111
|
+
default:
|
|
112
|
+
throw new import_errors.GauntletSDKError(`Unknown activity row type "${row.type}"`);
|
|
113
|
+
}
|
|
114
|
+
if (sharesBalance < 0n || pendingDepositAssets < 0n || pendingRedeemShares < 0n) {
|
|
115
|
+
throw new import_errors.GauntletSDKError("The activity history produces a negative position balance");
|
|
116
|
+
}
|
|
117
|
+
points.push({
|
|
118
|
+
timestamp: new Date(row.block_timestamp * 1e3),
|
|
119
|
+
txHash: row.tx_hash,
|
|
120
|
+
type: row.type,
|
|
121
|
+
sharesDelta,
|
|
122
|
+
assetsDelta: row.assets_delta.native,
|
|
123
|
+
sharesBalance,
|
|
124
|
+
pendingDepositAssets: (0, import_decimal.bigIntToDecimal)(pendingDepositAssets, ASSET_SCALE),
|
|
125
|
+
pendingRedeemShares,
|
|
126
|
+
netAssetsIn: (0, import_decimal.bigIntToDecimal)(netAssetsIn, ASSET_SCALE)
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
return { vaultId: ordered[0].vault_id, token, points };
|
|
130
|
+
}
|
|
131
|
+
async function getPositionHistory(api, walletAddress, vaultId) {
|
|
132
|
+
const rows = [];
|
|
133
|
+
for await (const row of api.activityRows(walletAddress, { vaultId, order: "asc", limit: 1e3 })) {
|
|
134
|
+
rows.push(row);
|
|
135
|
+
}
|
|
136
|
+
if (rows.length === 0) return { vaultId, token: null, points: [] };
|
|
137
|
+
return buildPositionHistory(rows);
|
|
138
|
+
}
|
|
139
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
140
|
+
0 && (module.exports = {
|
|
141
|
+
buildPositionHistory,
|
|
142
|
+
getPositionHistory
|
|
143
|
+
});
|
|
144
|
+
//# sourceMappingURL=positionHistory.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/api/positionHistory.ts"],
|
|
4
|
+
"sourcesContent": ["import { activityLifecycles, orderActivityRows, requireSameToken } from './activityRows';\nimport { GauntletSDKError } from '../errors';\nimport type { GauntletApi, TokenRef, UserActivity } from './client';\nimport { bigIntToDecimal, decimalToBigInt, sharesToBigInt } from './decimal';\n\n/**\n * Internal accounting scale for asset amounts. The API emits human-unit\n * decimal strings with at most `token.decimals` fractional digits, so 18\n * digits is exact for every supported asset; a token with more than 18\n * decimals would throw `DecimalPrecisionError` rather than lose precision.\n */\nconst ASSET_SCALE = 18;\n\n/** The wallet's reconstructed position state immediately after one activity row. */\nexport interface PositionHistoryPoint {\n timestamp: Date;\n txHash: string;\n type: UserActivity['type'];\n /** Signed share movement of this row, 18-decimal base units. */\n sharesDelta: bigint;\n /** Signed asset movement of this row (deposit-ledger convention), human decimal string. */\n assetsDelta: string;\n /** Shares held by the wallet after this row (escrowed redeem shares excluded). */\n sharesBalance: bigint;\n /** Assets escrowed at the Provisioner awaiting share mint, human decimal string. */\n pendingDepositAssets: string;\n /** Shares escrowed at the Provisioner awaiting asset return, 18-decimal base units. */\n pendingRedeemShares: bigint;\n /** Cumulative settled deposits minus settled withdrawals, human decimal string. */\n netAssetsIn: string;\n}\n\nexport interface PositionHistory {\n /** CAIP-10 vault id the history belongs to. */\n vaultId: string;\n /** The vault's asset token, when the indexer reports it on any row. */\n token: TokenRef | null;\n /** Chronological (oldest-first) position states, one per activity row. */\n points: PositionHistoryPoint[];\n}\n\n/**\n * Pure builder: replays a single vault's activity rows (any order) into a\n * chronological position timeline \u2014 running share balance, escrowed pending\n * amounts, and cumulative net asset flows.\n *\n * Async lifecycles are paired via `request_hash` so settled deposits count\n * the requested asset amount and terminal rows release the matching escrow.\n */\nexport function buildPositionHistory(rows: UserActivity[]): PositionHistory {\n if (rows.length === 0) {\n throw new GauntletSDKError('Cannot build position history from zero activity rows');\n }\n const vaultIds = new Set(rows.map((r) => r.vault_id));\n if (vaultIds.size > 1) {\n throw new GauntletSDKError(\n `Position history requires rows from a single vault; got ${[...vaultIds].join(', ')}`\n );\n }\n\n const ordered = orderActivityRows(rows);\n activityLifecycles(ordered);\n const tokenRow = ordered.find((r) => r.assets_delta.token) ?? ordered[0];\n const token = tokenRow.assets_delta.token ?? null;\n for (const row of ordered) requireSameToken(tokenRow, row);\n\n let sharesBalance = 0n;\n let pendingDepositAssets = 0n;\n let pendingRedeemShares = 0n;\n let netAssetsIn = 0n;\n const pendingDepositByHash = new Map<string, bigint>();\n const pendingRedeemByHash = new Map<string, bigint>();\n\n const points: PositionHistoryPoint[] = [];\n for (const row of ordered) {\n const sharesDelta = sharesToBigInt(row.shares_delta);\n const assetsDelta = decimalToBigInt(row.assets_delta.native, ASSET_SCALE);\n sharesBalance += sharesDelta;\n\n switch (row.type) {\n case 'deposit':\n if (row.request_hash != null) {\n // Async terminal solve: assets moved at request time; release escrow.\n const requested = pendingDepositByHash.get(row.request_hash);\n if (requested === undefined) {\n throw new GauntletSDKError(\n `Deposit settlement ${row.tx_hash} references request_hash \"${row.request_hash}\" with no matching deposit_pending row`\n );\n }\n pendingDepositByHash.delete(row.request_hash);\n pendingDepositAssets -= requested;\n netAssetsIn += requested;\n } else {\n netAssetsIn += assetsDelta;\n }\n break;\n case 'deposit_pending':\n pendingDepositAssets += assetsDelta;\n if (row.request_hash != null) pendingDepositByHash.set(row.request_hash, assetsDelta);\n break;\n case 'deposit_refunded':\n if (\n row.request_hash == null ||\n pendingDepositByHash.get(row.request_hash) !== -assetsDelta\n ) {\n throw new GauntletSDKError('The deposit refund does not match its escrow');\n }\n pendingDepositAssets += assetsDelta;\n pendingDepositByHash.delete(row.request_hash);\n break;\n case 'withdraw':\n // Sync withdraws and async terminal solves both carry the asset\n // payout as a negative delta on this row.\n netAssetsIn += assetsDelta;\n if (row.request_hash != null) {\n const escrowed = pendingRedeemByHash.get(row.request_hash);\n if (escrowed === undefined) {\n throw new GauntletSDKError(\n `Withdraw settlement ${row.tx_hash} references request_hash \"${row.request_hash}\" with no matching withdraw_pending row`\n );\n }\n pendingRedeemByHash.delete(row.request_hash);\n pendingRedeemShares -= escrowed;\n }\n break;\n case 'withdraw_pending': {\n const escrowed = -sharesDelta;\n pendingRedeemShares += escrowed;\n if (row.request_hash != null) pendingRedeemByHash.set(row.request_hash, escrowed);\n break;\n }\n case 'withdraw_refunded':\n if (row.request_hash == null || pendingRedeemByHash.get(row.request_hash) !== sharesDelta) {\n throw new GauntletSDKError('The withdrawal refund does not match its escrow');\n }\n pendingRedeemShares -= sharesDelta;\n pendingRedeemByHash.delete(row.request_hash);\n break;\n case 'transfer_in':\n case 'transfer_out':\n break;\n default:\n throw new GauntletSDKError(`Unknown activity row type \"${row.type}\"`);\n }\n\n if (sharesBalance < 0n || pendingDepositAssets < 0n || pendingRedeemShares < 0n) {\n throw new GauntletSDKError('The activity history produces a negative position balance');\n }\n points.push({\n timestamp: new Date(row.block_timestamp * 1000),\n txHash: row.tx_hash,\n type: row.type,\n sharesDelta,\n assetsDelta: row.assets_delta.native,\n sharesBalance,\n pendingDepositAssets: bigIntToDecimal(pendingDepositAssets, ASSET_SCALE),\n pendingRedeemShares,\n netAssetsIn: bigIntToDecimal(netAssetsIn, ASSET_SCALE),\n });\n }\n\n return { vaultId: ordered[0].vault_id, token, points };\n}\n\n/**\n * Fetches a wallet's complete activity for one vault and replays it into a\n * position timeline. `vaultId` is the CAIP-10 id; use `apiVaultIdFromVaultId`\n * to convert a manifest vault id. A wallet that has never touched the vault\n * gets an empty timeline, not an error.\n */\nexport async function getPositionHistory(\n api: GauntletApi,\n walletAddress: string,\n vaultId: string\n): Promise<PositionHistory> {\n const rows: UserActivity[] = [];\n for await (const row of api.activityRows(walletAddress, { vaultId, order: 'asc', limit: 1000 })) {\n rows.push(row);\n }\n if (rows.length === 0) return { vaultId, token: null, points: [] };\n return buildPositionHistory(rows);\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAwE;AACxE,oBAAiC;AAEjC,qBAAiE;AAQjE,MAAM,cAAc;AAsCb,SAAS,qBAAqB,MAAuC;AAC1E,MAAI,KAAK,WAAW,GAAG;AACrB,UAAM,IAAI,+BAAiB,uDAAuD;AAAA,EACpF;AACA,QAAM,WAAW,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC;AACpD,MAAI,SAAS,OAAO,GAAG;AACrB,UAAM,IAAI;AAAA,MACR,2DAA2D,CAAC,GAAG,QAAQ,EAAE,KAAK,IAAI,CAAC;AAAA,IACrF;AAAA,EACF;AAEA,QAAM,cAAU,uCAAkB,IAAI;AACtC,8CAAmB,OAAO;AAC1B,QAAM,WAAW,QAAQ,KAAK,CAAC,MAAM,EAAE,aAAa,KAAK,KAAK,QAAQ,CAAC;AACvE,QAAM,QAAQ,SAAS,aAAa,SAAS;AAC7C,aAAW,OAAO,QAAS,2CAAiB,UAAU,GAAG;AAEzD,MAAI,gBAAgB;AACpB,MAAI,uBAAuB;AAC3B,MAAI,sBAAsB;AAC1B,MAAI,cAAc;AAClB,QAAM,uBAAuB,oBAAI,IAAoB;AACrD,QAAM,sBAAsB,oBAAI,IAAoB;AAEpD,QAAM,SAAiC,CAAC;AACxC,aAAW,OAAO,SAAS;AACzB,UAAM,kBAAc,+BAAe,IAAI,YAAY;AACnD,UAAM,kBAAc,gCAAgB,IAAI,aAAa,QAAQ,WAAW;AACxE,qBAAiB;AAEjB,YAAQ,IAAI,MAAM;AAAA,MAChB,KAAK;AACH,YAAI,IAAI,gBAAgB,MAAM;AAE5B,gBAAM,YAAY,qBAAqB,IAAI,IAAI,YAAY;AAC3D,cAAI,cAAc,QAAW;AAC3B,kBAAM,IAAI;AAAA,cACR,sBAAsB,IAAI,OAAO,6BAA6B,IAAI,YAAY;AAAA,YAChF;AAAA,UACF;AACA,+BAAqB,OAAO,IAAI,YAAY;AAC5C,kCAAwB;AACxB,yBAAe;AAAA,QACjB,OAAO;AACL,yBAAe;AAAA,QACjB;AACA;AAAA,MACF,KAAK;AACH,gCAAwB;AACxB,YAAI,IAAI,gBAAgB,KAAM,sBAAqB,IAAI,IAAI,cAAc,WAAW;AACpF;AAAA,MACF,KAAK;AACH,YACE,IAAI,gBAAgB,QACpB,qBAAqB,IAAI,IAAI,YAAY,MAAM,CAAC,aAChD;AACA,gBAAM,IAAI,+BAAiB,8CAA8C;AAAA,QAC3E;AACA,gCAAwB;AACxB,6BAAqB,OAAO,IAAI,YAAY;AAC5C;AAAA,MACF,KAAK;AAGH,uBAAe;AACf,YAAI,IAAI,gBAAgB,MAAM;AAC5B,gBAAM,WAAW,oBAAoB,IAAI,IAAI,YAAY;AACzD,cAAI,aAAa,QAAW;AAC1B,kBAAM,IAAI;AAAA,cACR,uBAAuB,IAAI,OAAO,6BAA6B,IAAI,YAAY;AAAA,YACjF;AAAA,UACF;AACA,8BAAoB,OAAO,IAAI,YAAY;AAC3C,iCAAuB;AAAA,QACzB;AACA;AAAA,MACF,KAAK,oBAAoB;AACvB,cAAM,WAAW,CAAC;AAClB,+BAAuB;AACvB,YAAI,IAAI,gBAAgB,KAAM,qBAAoB,IAAI,IAAI,cAAc,QAAQ;AAChF;AAAA,MACF;AAAA,MACA,KAAK;AACH,YAAI,IAAI,gBAAgB,QAAQ,oBAAoB,IAAI,IAAI,YAAY,MAAM,aAAa;AACzF,gBAAM,IAAI,+BAAiB,iDAAiD;AAAA,QAC9E;AACA,+BAAuB;AACvB,4BAAoB,OAAO,IAAI,YAAY;AAC3C;AAAA,MACF,KAAK;AAAA,MACL,KAAK;AACH;AAAA,MACF;AACE,cAAM,IAAI,+BAAiB,8BAA8B,IAAI,IAAI,GAAG;AAAA,IACxE;AAEA,QAAI,gBAAgB,MAAM,uBAAuB,MAAM,sBAAsB,IAAI;AAC/E,YAAM,IAAI,+BAAiB,2DAA2D;AAAA,IACxF;AACA,WAAO,KAAK;AAAA,MACV,WAAW,IAAI,KAAK,IAAI,kBAAkB,GAAI;AAAA,MAC9C,QAAQ,IAAI;AAAA,MACZ,MAAM,IAAI;AAAA,MACV;AAAA,MACA,aAAa,IAAI,aAAa;AAAA,MAC9B;AAAA,MACA,0BAAsB,gCAAgB,sBAAsB,WAAW;AAAA,MACvE;AAAA,MACA,iBAAa,gCAAgB,aAAa,WAAW;AAAA,IACvD,CAAC;AAAA,EACH;AAEA,SAAO,EAAE,SAAS,QAAQ,CAAC,EAAE,UAAU,OAAO,OAAO;AACvD;AAQA,eAAsB,mBACpB,KACA,eACA,SAC0B;AAC1B,QAAM,OAAuB,CAAC;AAC9B,mBAAiB,OAAO,IAAI,aAAa,eAAe,EAAE,SAAS,OAAO,OAAO,OAAO,IAAK,CAAC,GAAG;AAC/F,SAAK,KAAK,GAAG;AAAA,EACf;AACA,MAAI,KAAK,WAAW,EAAG,QAAO,EAAE,SAAS,OAAO,MAAM,QAAQ,CAAC,EAAE;AACjE,SAAO,qBAAqB,IAAI;AAClC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type Hex } from 'viem';
|
|
2
|
+
/**
|
|
3
|
+
* Encode an ERC-8021 builder code as a calldata suffix.
|
|
4
|
+
* Format: utf8-encoded builder code + codesLength (1 byte) + schemaId (1 byte) + ERC marker (16 bytes)
|
|
5
|
+
*
|
|
6
|
+
* @see https://eips.ethereum.org/EIPS/eip-8021
|
|
7
|
+
*/
|
|
8
|
+
export declare function encodeBuilderCode(builderCode: string): Hex;
|
|
9
|
+
//# sourceMappingURL=erc8021.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erc8021.d.ts","sourceRoot":"","sources":["../../../src/attribution/erc8021.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAMvC;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAK1D"}
|
|
@@ -0,0 +1,37 @@
|
|
|
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 erc8021_exports = {};
|
|
20
|
+
__export(erc8021_exports, {
|
|
21
|
+
encodeBuilderCode: () => encodeBuilderCode
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(erc8021_exports);
|
|
24
|
+
var import_viem = require("viem");
|
|
25
|
+
const ERC8021_MARKER = "80218021802180218021802180218021";
|
|
26
|
+
const ERC8021_SCHEMA_ID = "00";
|
|
27
|
+
function encodeBuilderCode(builderCode) {
|
|
28
|
+
const codeHex = (0, import_viem.toHex)(builderCode).slice(2);
|
|
29
|
+
const codeByteLen = codeHex.length / 2;
|
|
30
|
+
const codeLengthHex = codeByteLen.toString(16).padStart(2, "0");
|
|
31
|
+
return `0x${codeHex}${codeLengthHex}${ERC8021_SCHEMA_ID}${ERC8021_MARKER}`;
|
|
32
|
+
}
|
|
33
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
34
|
+
0 && (module.exports = {
|
|
35
|
+
encodeBuilderCode
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=erc8021.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/attribution/erc8021.ts"],
|
|
4
|
+
"sourcesContent": ["import { toHex, type Hex } from 'viem';\n\n// 16-byte ERC-8021 marker: \"8021\" repeated 8 times\nconst ERC8021_MARKER = '80218021802180218021802180218021' as const;\nconst ERC8021_SCHEMA_ID = '00' as const; // Schema 0: simple ASCII codes\n\n/**\n * Encode an ERC-8021 builder code as a calldata suffix.\n * Format: utf8-encoded builder code + codesLength (1 byte) + schemaId (1 byte) + ERC marker (16 bytes)\n *\n * @see https://eips.ethereum.org/EIPS/eip-8021\n */\nexport function encodeBuilderCode(builderCode: string): Hex {\n const codeHex = toHex(builderCode).slice(2); // UTF-8 hex without 0x prefix\n const codeByteLen = codeHex.length / 2;\n const codeLengthHex = codeByteLen.toString(16).padStart(2, '0');\n return `0x${codeHex}${codeLengthHex}${ERC8021_SCHEMA_ID}${ERC8021_MARKER}` as Hex;\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAgC;AAGhC,MAAM,iBAAiB;AACvB,MAAM,oBAAoB;AAQnB,SAAS,kBAAkB,aAA0B;AAC1D,QAAM,cAAU,mBAAM,WAAW,EAAE,MAAM,CAAC;AAC1C,QAAM,cAAc,QAAQ,SAAS;AACrC,QAAM,gBAAgB,YAAY,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC9D,SAAO,KAAK,OAAO,GAAG,aAAa,GAAG,iBAAiB,GAAG,cAAc;AAC1E;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Address, type Hex } from 'viem';
|
|
2
|
+
import { GauntletClient } from "../client.js";
|
|
3
|
+
import { TxStep } from "../evm/adapters/types.js";
|
|
4
|
+
export { encodeBuilderCode } from "./erc8021.js";
|
|
5
|
+
export type PreparedPayloadWithAttribution = {
|
|
6
|
+
type: string;
|
|
7
|
+
to: Address;
|
|
8
|
+
chainId: number;
|
|
9
|
+
data: Hex;
|
|
10
|
+
account?: Address;
|
|
11
|
+
};
|
|
12
|
+
export type PreparedTx = {
|
|
13
|
+
payload: PreparedPayloadWithAttribution;
|
|
14
|
+
tx: TxStep & {
|
|
15
|
+
chainId: number;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Build the full attribution suffix to append to transaction calldata.
|
|
20
|
+
*
|
|
21
|
+
* PUBLIC: ERC-8021 builder code only — `0x{codesLength}{builderCode utf8}{schemaId=0x00}{ercMarker}`, or `0x` if no builderCode.
|
|
22
|
+
* ENCODED: Requests a sourceId from the Gauntlet API with builder code as an arg and encodes that.
|
|
23
|
+
* PRIVATE: Generates a random salt and posts it to the Gauntlet API.
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildAttribution(client: GauntletClient): Promise<Hex>;
|
|
27
|
+
export declare function encodeTransactionWithAttribution(client: GauntletClient, transaction: TxStep, chainId: number): Promise<PreparedTx>;
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/attribution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAsB,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAE7D,OAAO,EAAmB,cAAc,EAAE,qBAAkB;AAE5D,OAAO,EAAE,MAAM,EAAE,iCAA8B;AAC/C,OAAO,EAAE,iBAAiB,EAAE,qBAAkB;AAE9C,MAAM,MAAM,8BAA8B,GAAG;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,8BAA8B,CAAC;IACxC,EAAE,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAClC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAS3E;AAED,wBAAsB,gCAAgC,CACpD,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC,CAsBrB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
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 attribution_exports = {};
|
|
20
|
+
__export(attribution_exports, {
|
|
21
|
+
buildAttribution: () => buildAttribution,
|
|
22
|
+
encodeBuilderCode: () => import_erc80212.encodeBuilderCode,
|
|
23
|
+
encodeTransactionWithAttribution: () => encodeTransactionWithAttribution
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(attribution_exports);
|
|
26
|
+
var import_viem = require("viem");
|
|
27
|
+
var import_erc8021 = require("./erc8021");
|
|
28
|
+
var import_client = require("../client");
|
|
29
|
+
var import_errors = require("../errors");
|
|
30
|
+
var import_erc80212 = require("./erc8021");
|
|
31
|
+
async function buildAttribution(client) {
|
|
32
|
+
switch (client.attributionMode) {
|
|
33
|
+
case import_client.AttributionMode.PUBLIC:
|
|
34
|
+
return client.builderCode ? (0, import_erc8021.encodeBuilderCode)(client.builderCode) : "0x";
|
|
35
|
+
case import_client.AttributionMode.ENCODED:
|
|
36
|
+
throw new import_errors.UnimplementedFeatureError("AttributionMode.ENCODED");
|
|
37
|
+
case import_client.AttributionMode.PRIVATE:
|
|
38
|
+
throw new import_errors.UnimplementedFeatureError("AttributionMode.PRIVATE");
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
async function encodeTransactionWithAttribution(client, transaction, chainId) {
|
|
42
|
+
const customAttribution = await buildAttribution(client);
|
|
43
|
+
const encodedTx = (0, import_viem.encodeFunctionData)({
|
|
44
|
+
abi: transaction.abi,
|
|
45
|
+
functionName: transaction.functionName,
|
|
46
|
+
args: transaction.args
|
|
47
|
+
});
|
|
48
|
+
const encodedTxWithAttribution = `${encodedTx}${customAttribution.replace("0x", "")}`;
|
|
49
|
+
return {
|
|
50
|
+
payload: {
|
|
51
|
+
type: transaction.type,
|
|
52
|
+
account: transaction.account,
|
|
53
|
+
to: transaction.address,
|
|
54
|
+
chainId,
|
|
55
|
+
data: encodedTxWithAttribution
|
|
56
|
+
},
|
|
57
|
+
tx: {
|
|
58
|
+
...transaction,
|
|
59
|
+
chainId,
|
|
60
|
+
attribution: customAttribution
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
65
|
+
0 && (module.exports = {
|
|
66
|
+
buildAttribution,
|
|
67
|
+
encodeBuilderCode,
|
|
68
|
+
encodeTransactionWithAttribution
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/attribution/index.ts"],
|
|
4
|
+
"sourcesContent": ["import { Address, encodeFunctionData, type Hex } from 'viem';\nimport { encodeBuilderCode } from './erc8021';\nimport { AttributionMode, GauntletClient } from '../client';\nimport { UnimplementedFeatureError } from '../errors';\nimport { TxStep } from '../evm/adapters/types';\nexport { encodeBuilderCode } from './erc8021';\n\nexport type PreparedPayloadWithAttribution = {\n type: string;\n to: Address;\n chainId: number;\n data: Hex;\n account?: Address;\n};\n\nexport type PreparedTx = {\n payload: PreparedPayloadWithAttribution;\n tx: TxStep & { chainId: number };\n};\n\n/**\n * Build the full attribution suffix to append to transaction calldata.\n *\n * PUBLIC: ERC-8021 builder code only \u2014 `0x{codesLength}{builderCode utf8}{schemaId=0x00}{ercMarker}`, or `0x` if no builderCode.\n * ENCODED: Requests a sourceId from the Gauntlet API with builder code as an arg and encodes that.\n * PRIVATE: Generates a random salt and posts it to the Gauntlet API.\n *\n */\nexport async function buildAttribution(client: GauntletClient): Promise<Hex> {\n switch (client.attributionMode) {\n case AttributionMode.PUBLIC:\n return client.builderCode ? encodeBuilderCode(client.builderCode) : '0x';\n case AttributionMode.ENCODED:\n throw new UnimplementedFeatureError('AttributionMode.ENCODED');\n case AttributionMode.PRIVATE:\n throw new UnimplementedFeatureError('AttributionMode.PRIVATE');\n }\n}\n\nexport async function encodeTransactionWithAttribution(\n client: GauntletClient,\n transaction: TxStep,\n chainId: number\n): Promise<PreparedTx> {\n const customAttribution = await buildAttribution(client);\n const encodedTx = encodeFunctionData({\n abi: transaction.abi,\n functionName: transaction.functionName,\n args: transaction.args,\n });\n const encodedTxWithAttribution = `${encodedTx}${customAttribution.replace('0x', '')}` as Hex;\n return {\n payload: {\n type: transaction.type,\n account: transaction.account,\n to: transaction.address,\n chainId,\n data: encodedTxWithAttribution,\n },\n tx: {\n ...transaction,\n chainId,\n attribution: customAttribution,\n },\n };\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAsD;AACtD,qBAAkC;AAClC,oBAAgD;AAChD,oBAA0C;AAE1C,IAAAA,kBAAkC;AAuBlC,eAAsB,iBAAiB,QAAsC;AAC3E,UAAQ,OAAO,iBAAiB;AAAA,IAC9B,KAAK,8BAAgB;AACnB,aAAO,OAAO,kBAAc,kCAAkB,OAAO,WAAW,IAAI;AAAA,IACtE,KAAK,8BAAgB;AACnB,YAAM,IAAI,wCAA0B,yBAAyB;AAAA,IAC/D,KAAK,8BAAgB;AACnB,YAAM,IAAI,wCAA0B,yBAAyB;AAAA,EACjE;AACF;AAEA,eAAsB,iCACpB,QACA,aACA,SACqB;AACrB,QAAM,oBAAoB,MAAM,iBAAiB,MAAM;AACvD,QAAM,gBAAY,gCAAmB;AAAA,IACnC,KAAK,YAAY;AAAA,IACjB,cAAc,YAAY;AAAA,IAC1B,MAAM,YAAY;AAAA,EACpB,CAAC;AACD,QAAM,2BAA2B,GAAG,SAAS,GAAG,kBAAkB,QAAQ,MAAM,EAAE,CAAC;AACnF,SAAO;AAAA,IACL,SAAS;AAAA,MACP,MAAM,YAAY;AAAA,MAClB,SAAS,YAAY;AAAA,MACrB,IAAI,YAAY;AAAA,MAChB;AAAA,MACA,MAAM;AAAA,IACR;AAAA,IACA,IAAI;AAAA,MACF,GAAG;AAAA,MACH;AAAA,MACA,aAAa;AAAA,IACf;AAAA,EACF;AACF;",
|
|
6
|
+
"names": ["import_erc8021"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { type PublicClient, type WalletClient } from 'viem';
|
|
2
|
+
import { GauntletApi } from "./api/client.js";
|
|
3
|
+
import type { VaultManifest } from "./evm/types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Controls how builder attribution is appended to transactions.
|
|
6
|
+
*
|
|
7
|
+
* - `PUBLIC` – attribution is sent as plain calldata (default).
|
|
8
|
+
* - `ENCODED` – attribution is encoded using ERC-8021 with a builder code fetched from the API.
|
|
9
|
+
* - `PRIVATE` – no attribution data is appended.
|
|
10
|
+
*/
|
|
11
|
+
export declare enum AttributionMode {
|
|
12
|
+
PUBLIC = "public",
|
|
13
|
+
ENCODED = "encoded",
|
|
14
|
+
PRIVATE = "private"
|
|
15
|
+
}
|
|
16
|
+
export type ChainId = string | number;
|
|
17
|
+
/** The static vault manifest bundled with this SDK release; the GauntletClient default. */
|
|
18
|
+
export declare const bundledVaultManifest: VaultManifest;
|
|
19
|
+
export interface GauntletClientConfig {
|
|
20
|
+
/** Gaia API key, sent as `x-api-key` on `client.api` requests. Anonymous access is rate-limited. */
|
|
21
|
+
apiKey?: string;
|
|
22
|
+
/** Override the Gaia API origin (e.g. a same-origin proxy route). Defaults to `https://api.gauntlet.xyz`. */
|
|
23
|
+
apiUrl?: string;
|
|
24
|
+
/** Map of chainId → PublicClient, e.g. { [base.id]: createPublicClient(...) } */
|
|
25
|
+
evmClients?: Record<ChainId, PublicClient>;
|
|
26
|
+
attributionMode?: AttributionMode;
|
|
27
|
+
builderCode?: string;
|
|
28
|
+
/** Viem WalletClient for signing transactions. */
|
|
29
|
+
wallet?: WalletClient;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Main entry point for the Gauntlet SDK.
|
|
33
|
+
*
|
|
34
|
+
* Holds configuration (RPC clients, wallet, attribution mode) and exposes helpers
|
|
35
|
+
* for reading the vault manifest. Pass an instance of this class to every SDK
|
|
36
|
+
* function (e.g. `getDepositTx`, `getWithdrawTx`, `getVaults`).
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* import { createPublicClient, createWalletClient, http } from 'viem';
|
|
41
|
+
* import { base } from 'viem/chains';
|
|
42
|
+
* import { GauntletClient, AttributionMode } from '@gauntlet-xyz/sdk';
|
|
43
|
+
*
|
|
44
|
+
* const wallet = createWalletClient({
|
|
45
|
+
* account: privateKeyToAccount('0x...'), // or other account source
|
|
46
|
+
* chain: base,
|
|
47
|
+
* transport: http()
|
|
48
|
+
* })
|
|
49
|
+
*
|
|
50
|
+
* const client = new GauntletClient({
|
|
51
|
+
* evmClients: { [base.id]: createPublicClient({ chain: base, transport: http() }) },
|
|
52
|
+
* wallet,
|
|
53
|
+
* attributionMode: AttributionMode.PUBLIC,
|
|
54
|
+
* });
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare class GauntletClient {
|
|
58
|
+
readonly apiKey?: string;
|
|
59
|
+
readonly builderCode?: string;
|
|
60
|
+
readonly attributionMode: AttributionMode;
|
|
61
|
+
readonly evmClients: Record<ChainId, PublicClient>;
|
|
62
|
+
readonly wallet?: WalletClient;
|
|
63
|
+
/** Typed client for the Gaia REST API (vaults, positions, activity, tvl, prices). */
|
|
64
|
+
readonly api: GauntletApi;
|
|
65
|
+
private _manifest;
|
|
66
|
+
constructor(config: GauntletClientConfig);
|
|
67
|
+
get manifest(): Promise<VaultManifest>;
|
|
68
|
+
setManifest(manifest: VaultManifest): void;
|
|
69
|
+
getPublicClient(chainId?: ChainId): PublicClient;
|
|
70
|
+
getSourceId(): Promise<string>;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,MAAM,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,wBAAqB;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAoB;AAGjD;;;;;;GAMG;AACH,oBAAY,eAAe;IACzB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtC,2FAA2F;AAC3F,eAAO,MAAM,oBAAoB,EAAsB,aAAa,CAAC;AAErE,MAAM,WAAW,oBAAoB;IACnC,oGAAoG;IACpG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6GAA6G;IAC7G,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC3C,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,cAAc;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACnD,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,qFAAqF;IACrF,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAE1B,OAAO,CAAC,SAAS,CAAuC;gBAE5C,MAAM,EAAE,oBAAoB;IASxC,IAAI,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC,CAErC;IAED,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI1C,eAAe,CAAC,OAAO,GAAE,OAAiB,GAAG,YAAY;IAQnD,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;CAGrC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var client_exports = {};
|
|
30
|
+
__export(client_exports, {
|
|
31
|
+
AttributionMode: () => AttributionMode,
|
|
32
|
+
GauntletClient: () => GauntletClient,
|
|
33
|
+
bundledVaultManifest: () => bundledVaultManifest
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(client_exports);
|
|
36
|
+
var import_vaults = __toESM(require("../manifest/vaults.json"), 1);
|
|
37
|
+
var import_client = require("./api/client");
|
|
38
|
+
var import_errors = require("./errors");
|
|
39
|
+
var import_chains = require("viem/chains");
|
|
40
|
+
var AttributionMode = /* @__PURE__ */ ((AttributionMode2) => {
|
|
41
|
+
AttributionMode2["PUBLIC"] = "public";
|
|
42
|
+
AttributionMode2["ENCODED"] = "encoded";
|
|
43
|
+
AttributionMode2["PRIVATE"] = "private";
|
|
44
|
+
return AttributionMode2;
|
|
45
|
+
})(AttributionMode || {});
|
|
46
|
+
const bundledVaultManifest = import_vaults.default;
|
|
47
|
+
class GauntletClient {
|
|
48
|
+
constructor(config) {
|
|
49
|
+
this._manifest = bundledVaultManifest;
|
|
50
|
+
this.apiKey = config.apiKey;
|
|
51
|
+
this.evmClients = config.evmClients ?? {};
|
|
52
|
+
this.attributionMode = config.attributionMode ?? "public" /* PUBLIC */;
|
|
53
|
+
this.builderCode = config.builderCode;
|
|
54
|
+
this.wallet = config.wallet;
|
|
55
|
+
this.api = new import_client.GauntletApi({ apiKey: config.apiKey, apiUrl: config.apiUrl });
|
|
56
|
+
}
|
|
57
|
+
get manifest() {
|
|
58
|
+
return Promise.resolve(this._manifest);
|
|
59
|
+
}
|
|
60
|
+
setManifest(manifest) {
|
|
61
|
+
this._manifest = manifest;
|
|
62
|
+
}
|
|
63
|
+
getPublicClient(chainId = import_chains.base.id) {
|
|
64
|
+
const client = this.evmClients[chainId];
|
|
65
|
+
if (!client) throw new import_errors.RpcNotConfiguredError(chainId);
|
|
66
|
+
return client;
|
|
67
|
+
}
|
|
68
|
+
// Will be used for encoded attribution
|
|
69
|
+
// Will use apiKey to get a builder ID from core api
|
|
70
|
+
async getSourceId() {
|
|
71
|
+
throw new import_errors.UnimplementedFeatureError("getSourceId");
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
75
|
+
0 && (module.exports = {
|
|
76
|
+
AttributionMode,
|
|
77
|
+
GauntletClient,
|
|
78
|
+
bundledVaultManifest
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/client.ts"],
|
|
4
|
+
"sourcesContent": ["import { type PublicClient, type WalletClient } from 'viem';\nimport bundledManifest from '../manifest/vaults.json';\nimport { GauntletApi } from './api/client';\nimport { RpcNotConfiguredError, UnimplementedFeatureError } from './errors';\nimport type { VaultManifest } from './evm/types';\nimport { base } from 'viem/chains';\n\n/**\n * Controls how builder attribution is appended to transactions.\n *\n * - `PUBLIC` \u2013 attribution is sent as plain calldata (default).\n * - `ENCODED` \u2013 attribution is encoded using ERC-8021 with a builder code fetched from the API.\n * - `PRIVATE` \u2013 no attribution data is appended.\n */\nexport enum AttributionMode {\n PUBLIC = 'public',\n ENCODED = 'encoded',\n PRIVATE = 'private',\n}\n\nexport type ChainId = string | number;\n\n/** The static vault manifest bundled with this SDK release; the GauntletClient default. */\nexport const bundledVaultManifest = bundledManifest as VaultManifest;\n\nexport interface GauntletClientConfig {\n /** Gaia API key, sent as `x-api-key` on `client.api` requests. Anonymous access is rate-limited. */\n apiKey?: string;\n /** Override the Gaia API origin (e.g. a same-origin proxy route). Defaults to `https://api.gauntlet.xyz`. */\n apiUrl?: string;\n /** Map of chainId \u2192 PublicClient, e.g. { [base.id]: createPublicClient(...) } */\n evmClients?: Record<ChainId, PublicClient>;\n attributionMode?: AttributionMode;\n builderCode?: string;\n /** Viem WalletClient for signing transactions. */\n wallet?: WalletClient;\n}\n\n/**\n * Main entry point for the Gauntlet SDK.\n *\n * Holds configuration (RPC clients, wallet, attribution mode) and exposes helpers\n * for reading the vault manifest. Pass an instance of this class to every SDK\n * function (e.g. `getDepositTx`, `getWithdrawTx`, `getVaults`).\n *\n * @example\n * ```ts\n * import { createPublicClient, createWalletClient, http } from 'viem';\n * import { base } from 'viem/chains';\n * import { GauntletClient, AttributionMode } from '@gauntlet-xyz/sdk';\n *\n * const wallet = createWalletClient({\n * account: privateKeyToAccount('0x...'), // or other account source\n * chain: base,\n * transport: http()\n * })\n *\n * const client = new GauntletClient({\n * evmClients: { [base.id]: createPublicClient({ chain: base, transport: http() }) },\n * wallet,\n * attributionMode: AttributionMode.PUBLIC,\n * });\n * ```\n */\nexport class GauntletClient {\n readonly apiKey?: string;\n readonly builderCode?: string;\n readonly attributionMode: AttributionMode;\n readonly evmClients: Record<ChainId, PublicClient>;\n readonly wallet?: WalletClient;\n /** Typed client for the Gaia REST API (vaults, positions, activity, tvl, prices). */\n readonly api: GauntletApi;\n\n private _manifest: VaultManifest = bundledVaultManifest;\n\n constructor(config: GauntletClientConfig) {\n this.apiKey = config.apiKey;\n this.evmClients = config.evmClients ?? {};\n this.attributionMode = config.attributionMode ?? AttributionMode.PUBLIC;\n this.builderCode = config.builderCode;\n this.wallet = config.wallet;\n this.api = new GauntletApi({ apiKey: config.apiKey, apiUrl: config.apiUrl });\n }\n\n get manifest(): Promise<VaultManifest> {\n return Promise.resolve(this._manifest);\n }\n\n setManifest(manifest: VaultManifest): void {\n this._manifest = manifest;\n }\n\n getPublicClient(chainId: ChainId = base.id): PublicClient {\n const client = this.evmClients[chainId];\n if (!client) throw new RpcNotConfiguredError(chainId);\n return client;\n }\n\n // Will be used for encoded attribution\n // Will use apiKey to get a builder ID from core api\n async getSourceId(): Promise<string> {\n throw new UnimplementedFeatureError('getSourceId');\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAA4B;AAC5B,oBAA4B;AAC5B,oBAAiE;AAEjE,oBAAqB;AASd,IAAK,kBAAL,kBAAKA,qBAAL;AACL,EAAAA,iBAAA,YAAS;AACT,EAAAA,iBAAA,aAAU;AACV,EAAAA,iBAAA,aAAU;AAHA,SAAAA;AAAA,GAAA;AASL,MAAM,uBAAuB,cAAAC;AAyC7B,MAAM,eAAe;AAAA,EAW1B,YAAY,QAA8B;AAF1C,SAAQ,YAA2B;AAGjC,SAAK,SAAS,OAAO;AACrB,SAAK,aAAa,OAAO,cAAc,CAAC;AACxC,SAAK,kBAAkB,OAAO,mBAAmB;AACjD,SAAK,cAAc,OAAO;AAC1B,SAAK,SAAS,OAAO;AACrB,SAAK,MAAM,IAAI,0BAAY,EAAE,QAAQ,OAAO,QAAQ,QAAQ,OAAO,OAAO,CAAC;AAAA,EAC7E;AAAA,EAEA,IAAI,WAAmC;AACrC,WAAO,QAAQ,QAAQ,KAAK,SAAS;AAAA,EACvC;AAAA,EAEA,YAAY,UAA+B;AACzC,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,gBAAgB,UAAmB,mBAAK,IAAkB;AACxD,UAAM,SAAS,KAAK,WAAW,OAAO;AACtC,QAAI,CAAC,OAAQ,OAAM,IAAI,oCAAsB,OAAO;AACpD,WAAO;AAAA,EACT;AAAA;AAAA;AAAA,EAIA,MAAM,cAA+B;AACnC,UAAM,IAAI,wCAA0B,aAAa;AAAA,EACnD;AACF;",
|
|
6
|
+
"names": ["AttributionMode", "bundledManifest"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const MAX_BPS = 10000n;
|
|
2
|
+
export declare const DEFAULT_BPS = 100;
|
|
3
|
+
export declare const SECOND = 1;
|
|
4
|
+
export declare const MINUTE: number;
|
|
5
|
+
export declare const HOUR: number;
|
|
6
|
+
export declare const DAY: number;
|
|
7
|
+
export declare const REQUEST_DEADLINE_BUFFER_DAYS = 3;
|
|
8
|
+
export declare const DEFAULT_MAX_PRICE_AGE_DAYS = 10;
|
|
9
|
+
export declare const DEFAULT_SOLVER_TIP = 0n;
|
|
10
|
+
export declare const DEFAULT_REQUEST_DEADLINE_BUFFER: number;
|
|
11
|
+
export declare const DEFAULT_MAX_PRICE_AGE: bigint;
|
|
12
|
+
export declare const CHAIN_NAMES: Record<number, string>;
|
|
13
|
+
export declare const BLOCKS_3_DAYS: Record<number, bigint>;
|
|
14
|
+
export declare const DEFAULT_BLOCKS_3_DAYS = 129600n;
|
|
15
|
+
export declare const LOG_PAGE_SIZE = 9999n;
|
|
16
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,SAAS,CAAC;AAC9B,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B,eAAO,MAAM,MAAM,IAAI,CAAC;AACxB,eAAO,MAAM,MAAM,QAAc,CAAC;AAClC,eAAO,MAAM,IAAI,QAAc,CAAC;AAChC,eAAO,MAAM,GAAG,QAAY,CAAC;AAE7B,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,+BAA+B,QAAqC,CAAC;AAClF,eAAO,MAAM,qBAAqB,QAA2C,CAAC;AAE9E,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM9C,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMhD,CAAC;AACF,eAAO,MAAM,qBAAqB,UAAW,CAAC;AAG9C,eAAO,MAAM,aAAa,QAAS,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
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 constants_exports = {};
|
|
20
|
+
__export(constants_exports, {
|
|
21
|
+
BLOCKS_3_DAYS: () => BLOCKS_3_DAYS,
|
|
22
|
+
CHAIN_NAMES: () => CHAIN_NAMES,
|
|
23
|
+
DAY: () => DAY,
|
|
24
|
+
DEFAULT_BLOCKS_3_DAYS: () => DEFAULT_BLOCKS_3_DAYS,
|
|
25
|
+
DEFAULT_BPS: () => DEFAULT_BPS,
|
|
26
|
+
DEFAULT_MAX_PRICE_AGE: () => DEFAULT_MAX_PRICE_AGE,
|
|
27
|
+
DEFAULT_MAX_PRICE_AGE_DAYS: () => DEFAULT_MAX_PRICE_AGE_DAYS,
|
|
28
|
+
DEFAULT_REQUEST_DEADLINE_BUFFER: () => DEFAULT_REQUEST_DEADLINE_BUFFER,
|
|
29
|
+
DEFAULT_SOLVER_TIP: () => DEFAULT_SOLVER_TIP,
|
|
30
|
+
HOUR: () => HOUR,
|
|
31
|
+
LOG_PAGE_SIZE: () => LOG_PAGE_SIZE,
|
|
32
|
+
MAX_BPS: () => MAX_BPS,
|
|
33
|
+
MINUTE: () => MINUTE,
|
|
34
|
+
REQUEST_DEADLINE_BUFFER_DAYS: () => REQUEST_DEADLINE_BUFFER_DAYS,
|
|
35
|
+
SECOND: () => SECOND
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(constants_exports);
|
|
38
|
+
const MAX_BPS = 10000n;
|
|
39
|
+
const DEFAULT_BPS = 100;
|
|
40
|
+
const SECOND = 1;
|
|
41
|
+
const MINUTE = SECOND * 60;
|
|
42
|
+
const HOUR = MINUTE * 60;
|
|
43
|
+
const DAY = HOUR * 24;
|
|
44
|
+
const REQUEST_DEADLINE_BUFFER_DAYS = 3;
|
|
45
|
+
const DEFAULT_MAX_PRICE_AGE_DAYS = 10;
|
|
46
|
+
const DEFAULT_SOLVER_TIP = 0n;
|
|
47
|
+
const DEFAULT_REQUEST_DEADLINE_BUFFER = DAY * REQUEST_DEADLINE_BUFFER_DAYS;
|
|
48
|
+
const DEFAULT_MAX_PRICE_AGE = BigInt(DAY * DEFAULT_MAX_PRICE_AGE_DAYS);
|
|
49
|
+
const CHAIN_NAMES = {
|
|
50
|
+
1: "ethereum",
|
|
51
|
+
8453: "base",
|
|
52
|
+
42161: "arbitrum",
|
|
53
|
+
10: "optimism",
|
|
54
|
+
5042: "arc"
|
|
55
|
+
};
|
|
56
|
+
const BLOCKS_3_DAYS = {
|
|
57
|
+
1: 21600n,
|
|
58
|
+
8453: 129600n,
|
|
59
|
+
42161: 1036800n,
|
|
60
|
+
10: 129600n,
|
|
61
|
+
5042: 518400n
|
|
62
|
+
};
|
|
63
|
+
const DEFAULT_BLOCKS_3_DAYS = 129600n;
|
|
64
|
+
const LOG_PAGE_SIZE = 9999n;
|
|
65
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
66
|
+
0 && (module.exports = {
|
|
67
|
+
BLOCKS_3_DAYS,
|
|
68
|
+
CHAIN_NAMES,
|
|
69
|
+
DAY,
|
|
70
|
+
DEFAULT_BLOCKS_3_DAYS,
|
|
71
|
+
DEFAULT_BPS,
|
|
72
|
+
DEFAULT_MAX_PRICE_AGE,
|
|
73
|
+
DEFAULT_MAX_PRICE_AGE_DAYS,
|
|
74
|
+
DEFAULT_REQUEST_DEADLINE_BUFFER,
|
|
75
|
+
DEFAULT_SOLVER_TIP,
|
|
76
|
+
HOUR,
|
|
77
|
+
LOG_PAGE_SIZE,
|
|
78
|
+
MAX_BPS,
|
|
79
|
+
MINUTE,
|
|
80
|
+
REQUEST_DEADLINE_BUFFER_DAYS,
|
|
81
|
+
SECOND
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/constants.ts"],
|
|
4
|
+
"sourcesContent": ["export const MAX_BPS = 10000n;\nexport const DEFAULT_BPS = 100;\n\nexport const SECOND = 1;\nexport const MINUTE = SECOND * 60;\nexport const HOUR = MINUTE * 60;\nexport const DAY = HOUR * 24;\n\nexport const REQUEST_DEADLINE_BUFFER_DAYS = 3;\nexport const DEFAULT_MAX_PRICE_AGE_DAYS = 10;\nexport const DEFAULT_SOLVER_TIP = 0n;\nexport const DEFAULT_REQUEST_DEADLINE_BUFFER = DAY * REQUEST_DEADLINE_BUFFER_DAYS;\nexport const DEFAULT_MAX_PRICE_AGE = BigInt(DAY * DEFAULT_MAX_PRICE_AGE_DAYS);\n\nexport const CHAIN_NAMES: Record<number, string> = {\n 1: 'ethereum',\n 8453: 'base',\n 42161: 'arbitrum',\n 10: 'optimism',\n 5042: 'arc',\n};\n\n// Approximate 3-day block lookback per chain based on avg block time.\nexport const BLOCKS_3_DAYS: Record<number, bigint> = {\n 1: 21_600n,\n 8453: 129_600n,\n 42161: 1_036_800n,\n 10: 129_600n,\n 5042: 518_400n,\n};\nexport const DEFAULT_BLOCKS_3_DAYS = 129_600n;\n\n// Many RPC providers cap eth_getLogs to 10,000 blocks per request.\nexport const LOG_PAGE_SIZE = 9_999n;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,UAAU;AAChB,MAAM,cAAc;AAEpB,MAAM,SAAS;AACf,MAAM,SAAS,SAAS;AACxB,MAAM,OAAO,SAAS;AACtB,MAAM,MAAM,OAAO;AAEnB,MAAM,+BAA+B;AACrC,MAAM,6BAA6B;AACnC,MAAM,qBAAqB;AAC3B,MAAM,kCAAkC,MAAM;AAC9C,MAAM,wBAAwB,OAAO,MAAM,0BAA0B;AAErE,MAAM,cAAsC;AAAA,EACjD,GAAG;AAAA,EACH,MAAM;AAAA,EACN,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,MAAM;AACR;AAGO,MAAM,gBAAwC;AAAA,EACnD,GAAG;AAAA,EACH,MAAM;AAAA,EACN,OAAO;AAAA,EACP,IAAI;AAAA,EACJ,MAAM;AACR;AACO,MAAM,wBAAwB;AAG9B,MAAM,gBAAgB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|