@gearbox-protocol/sdk 15.1.0-next.1 → 15.1.0-next.11
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/dist/cjs/abi/iExpirable.js +15 -0
- package/dist/cjs/common-utils/utils/apy/get-single-quota-borrow-rate.js +2 -0
- package/dist/cjs/common-utils/utils/creditAccount/calc-health-factor.js +24 -22
- package/dist/cjs/common-utils/utils/creditAccount/calc-quota-borrow-rate.js +2 -0
- package/dist/cjs/common-utils/utils/creditAccount/get-time-to-liquidation.js +8 -5
- package/dist/cjs/common-utils/utils/creditAccount/liquidation-price.js +21 -11
- package/dist/cjs/dev/AccountOpener.js +0 -1
- package/dist/cjs/dev/compareOpportunities.js +137 -0
- package/dist/cjs/dev/comparePositions.js +183 -0
- package/dist/cjs/dev/fieldDiff.js +241 -0
- package/dist/cjs/model/charts.js +147 -0
- package/dist/cjs/model/charts.schema.js +240 -0
- package/dist/cjs/model/index.js +35 -22
- package/dist/cjs/model/liquidations.schema.js +1 -1
- package/dist/cjs/model/notices.schema.js +25 -0
- package/dist/cjs/model/opportunities.schema.js +1 -1
- package/dist/cjs/model/positions.schema.js +48 -2
- package/dist/cjs/new-sdk/AbstractNamespace.js +34 -4
- package/dist/cjs/new-sdk/GearboxSDK.js +72 -3
- package/dist/cjs/new-sdk/execute/ExecuteApi.js +95 -0
- package/dist/cjs/new-sdk/execute/index.js +3 -0
- package/dist/cjs/new-sdk/index.js +7 -0
- package/dist/cjs/new-sdk/opportunities/OpportunitiesNamespace.js +29 -6
- package/dist/cjs/new-sdk/positions/PositionsNamespace.js +3 -6
- package/dist/cjs/new-sdk/simulate/SimulateApi.js +361 -0
- package/dist/cjs/new-sdk/simulate/index.js +4 -0
- package/dist/cjs/new-sdk/utils/index.js +0 -1
- package/dist/cjs/offchain/AbstractOffchainNamespace.js +10 -7
- package/dist/cjs/offchain/GearboxAPI.js +7 -0
- package/dist/cjs/offchain/index.js +3 -0
- package/dist/cjs/offchain/notices/OffchainNotices.js +27 -0
- package/dist/cjs/offchain/notices/index.js +3 -0
- package/dist/cjs/offchain/opportunities/OffchainOpportunities.js +4 -8
- package/dist/cjs/offchain/positions/OffchainPositions.js +12 -12
- package/dist/cjs/preview/preview/CreditAccountState.js +14 -1
- package/dist/cjs/preview/preview/buildDelayedPreview.js +16 -6
- package/dist/cjs/preview/preview/previewAdjustCreditAccount.js +9 -2
- package/dist/cjs/preview/preview/previewOpenCreditAccount.js +11 -3
- package/dist/cjs/preview/preview/previewOperation.js +1 -1
- package/dist/cjs/sdk/MultichainSDK.js +3 -4
- package/dist/cjs/sdk/OnchainSDK.js +42 -13
- package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +2 -8
- package/dist/cjs/sdk/accounts/credit-account-compressor/CreditAccountCompressor.js +2 -90
- package/dist/cjs/sdk/accounts/index.js +5 -2
- package/dist/cjs/sdk/accounts/intents/guards.js +114 -0
- package/dist/cjs/sdk/accounts/intents/index.js +216 -358
- package/dist/cjs/sdk/accounts/intents/math.js +56 -0
- package/dist/cjs/sdk/accounts/intents/open-strategy.js +133 -0
- package/dist/cjs/sdk/accounts/intents/operations.js +165 -0
- package/dist/cjs/sdk/accounts/intents/plan.js +373 -0
- package/dist/cjs/sdk/accounts/intents/realize.js +301 -0
- package/dist/cjs/sdk/accounts/intents/testing/delayed.js +50 -0
- package/dist/cjs/sdk/accounts/intents/testing/market.js +166 -0
- package/dist/cjs/sdk/accounts/intents/testing/sdk-mock.js +194 -35
- package/dist/cjs/sdk/accounts/intents/tests/add-collateral.fixtures.js +123 -0
- package/dist/cjs/sdk/accounts/intents/tests/adjust-leverage.fixtures.js +254 -0
- package/dist/cjs/sdk/accounts/intents/tests/deposit.fixtures.js +324 -0
- package/dist/cjs/sdk/accounts/intents/tests/finish-decrease-leverage.fixtures.js +242 -0
- package/dist/cjs/sdk/accounts/intents/tests/finish-withdraw.fixtures.js +383 -0
- package/dist/cjs/sdk/accounts/intents/tests/open-strategy.fixtures.js +133 -0
- package/dist/cjs/sdk/accounts/intents/tests/withdraw-asset.fixtures.js +131 -0
- package/dist/cjs/sdk/accounts/intents/tests/withdraw.fixtures.js +426 -0
- package/dist/cjs/sdk/accounts/intents/types.js +16 -0
- package/dist/cjs/sdk/accounts/intents/utils/adjust-state-to-snapshot.js +18 -0
- package/dist/cjs/sdk/accounts/intents/utils/credit-account-slice.js +45 -0
- package/dist/cjs/sdk/accounts/intents/utils/index.js +17 -8
- package/dist/cjs/sdk/accounts/intents/utils/ledger.js +94 -0
- package/dist/cjs/sdk/accounts/intents/utils/pick-token.js +72 -0
- package/dist/cjs/sdk/accounts/intents/utils/quotas-for-update.js +27 -0
- package/dist/cjs/sdk/accounts/intents/utils/router-path.js +86 -0
- package/dist/cjs/sdk/accounts/intents/view.js +38 -0
- package/dist/cjs/sdk/accounts/liquidations/LiquidationsService.js +0 -3
- package/dist/cjs/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.js +29 -18
- package/dist/cjs/sdk/base/BaseContract.js +1 -1
- package/dist/cjs/sdk/base/TokensMeta.js +78 -27
- package/dist/cjs/sdk/index.js +30 -7
- package/dist/cjs/sdk/market/MarketRegister.js +16 -7
- package/dist/cjs/sdk/market/ZapperRegister.js +56 -25
- package/dist/cjs/sdk/market/credit/CreditManagerV310Contract.js +1 -12
- package/dist/cjs/sdk/market/credit/CreditSuite.js +28 -9
- package/dist/cjs/sdk/market/credit/index.js +3 -0
- package/dist/cjs/sdk/market/credit/isStrategyCollateral.js +50 -0
- package/dist/cjs/sdk/market/index.js +17 -0
- package/dist/cjs/sdk/market/math.js +65 -45
- package/dist/cjs/sdk/market/oracle/PriceOracleBaseContract.js +10 -3
- package/dist/cjs/sdk/market/pool/PoolV310Contract.js +15 -1
- package/dist/cjs/sdk/market/rwa/RWARegistry.js +22 -0
- package/dist/cjs/sdk/opportunities/index.js +0 -13
- package/dist/cjs/sdk/options.js +1 -5
- package/dist/cjs/sdk/pools/PoolService.js +133 -4
- package/dist/cjs/sdk/pools/index.js +2 -0
- package/dist/cjs/sdk/positions/PositionsService.js +218 -1
- package/dist/cjs/sdk/positions/calcBorrowRate.js +43 -0
- package/dist/cjs/sdk/positions/calcHealthFactor.js +52 -0
- package/dist/cjs/sdk/positions/calcLiquidationPrice.js +23 -0
- package/dist/cjs/sdk/positions/calcLiquidationPriceForTarget.js +30 -0
- package/dist/cjs/sdk/positions/calcTimeToLiquidationMs.js +19 -0
- package/dist/cjs/sdk/positions/index.js +12 -1
- package/dist/cjs/sdk/positions/types.js +31 -0
- package/dist/cjs/sdk/utils/abi-decode.js +2 -2
- package/dist/cjs/sdk/utils/viem/executeMulticallBatches.js +32 -0
- package/dist/cjs/sdk/utils/viem/index.js +2 -0
- package/dist/esm/abi/iExpirable.js +14 -0
- package/dist/esm/common-utils/utils/apy/get-single-quota-borrow-rate.js +2 -0
- package/dist/esm/common-utils/utils/creditAccount/calc-health-factor.js +24 -22
- package/dist/esm/common-utils/utils/creditAccount/calc-quota-borrow-rate.js +2 -0
- package/dist/esm/common-utils/utils/creditAccount/get-time-to-liquidation.js +8 -5
- package/dist/esm/common-utils/utils/creditAccount/liquidation-price.js +21 -11
- package/dist/esm/dev/AccountOpener.js +0 -1
- package/dist/esm/dev/compareOpportunities.js +135 -0
- package/dist/esm/dev/comparePositions.js +181 -0
- package/dist/esm/dev/fieldDiff.js +224 -0
- package/dist/esm/model/charts.js +140 -0
- package/dist/esm/model/charts.schema.js +226 -0
- package/dist/esm/model/index.js +9 -7
- package/dist/esm/model/liquidations.schema.js +1 -1
- package/dist/esm/model/notices.schema.js +23 -0
- package/dist/esm/model/opportunities.schema.js +1 -1
- package/dist/esm/model/positions.schema.js +46 -4
- package/dist/esm/new-sdk/AbstractNamespace.js +34 -4
- package/dist/esm/new-sdk/GearboxSDK.js +72 -4
- package/dist/esm/new-sdk/execute/ExecuteApi.js +94 -0
- package/dist/esm/new-sdk/execute/index.js +2 -0
- package/dist/esm/new-sdk/index.js +6 -2
- package/dist/esm/new-sdk/opportunities/OpportunitiesNamespace.js +29 -6
- package/dist/esm/new-sdk/positions/PositionsNamespace.js +3 -6
- package/dist/esm/new-sdk/simulate/SimulateApi.js +360 -0
- package/dist/esm/new-sdk/simulate/index.js +3 -0
- package/dist/esm/new-sdk/utils/index.js +0 -1
- package/dist/esm/offchain/AbstractOffchainNamespace.js +10 -7
- package/dist/esm/offchain/GearboxAPI.js +7 -0
- package/dist/esm/offchain/index.js +3 -1
- package/dist/esm/offchain/notices/OffchainNotices.js +26 -0
- package/dist/esm/offchain/notices/index.js +2 -0
- package/dist/esm/offchain/opportunities/OffchainOpportunities.js +4 -8
- package/dist/esm/offchain/positions/OffchainPositions.js +12 -12
- package/dist/esm/preview/preview/CreditAccountState.js +14 -1
- package/dist/esm/preview/preview/buildDelayedPreview.js +16 -6
- package/dist/esm/preview/preview/previewAdjustCreditAccount.js +9 -2
- package/dist/esm/preview/preview/previewOpenCreditAccount.js +11 -3
- package/dist/esm/preview/preview/previewOperation.js +1 -1
- package/dist/esm/sdk/MultichainSDK.js +3 -4
- package/dist/esm/sdk/OnchainSDK.js +42 -13
- package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +2 -8
- package/dist/esm/sdk/accounts/credit-account-compressor/CreditAccountCompressor.js +2 -90
- package/dist/esm/sdk/accounts/index.js +3 -2
- package/dist/esm/sdk/accounts/intents/guards.js +108 -0
- package/dist/esm/sdk/accounts/intents/index.js +214 -358
- package/dist/esm/sdk/accounts/intents/math.js +51 -0
- package/dist/esm/sdk/accounts/intents/open-strategy.js +132 -0
- package/dist/esm/sdk/accounts/intents/operations.js +153 -0
- package/dist/esm/sdk/accounts/intents/plan.js +361 -0
- package/dist/esm/sdk/accounts/intents/realize.js +300 -0
- package/dist/esm/sdk/accounts/intents/testing/delayed.js +38 -0
- package/dist/esm/sdk/accounts/intents/testing/market.js +148 -0
- package/dist/esm/sdk/accounts/intents/testing/sdk-mock.js +194 -35
- package/dist/esm/sdk/accounts/intents/tests/add-collateral.fixtures.js +110 -0
- package/dist/esm/sdk/accounts/intents/tests/adjust-leverage.fixtures.js +234 -0
- package/dist/esm/sdk/accounts/intents/tests/deposit.fixtures.js +302 -0
- package/dist/esm/sdk/accounts/intents/tests/finish-decrease-leverage.fixtures.js +220 -0
- package/dist/esm/sdk/accounts/intents/tests/finish-withdraw.fixtures.js +355 -0
- package/dist/esm/sdk/accounts/intents/tests/open-strategy.fixtures.js +119 -0
- package/dist/esm/sdk/accounts/intents/tests/withdraw-asset.fixtures.js +117 -0
- package/dist/esm/sdk/accounts/intents/tests/withdraw.fixtures.js +402 -0
- package/dist/esm/sdk/accounts/intents/types.js +16 -1
- package/dist/esm/sdk/accounts/intents/utils/adjust-state-to-snapshot.js +17 -0
- package/dist/esm/sdk/accounts/intents/utils/credit-account-slice.js +43 -0
- package/dist/esm/sdk/accounts/intents/utils/index.js +9 -7
- package/dist/esm/sdk/accounts/intents/utils/ledger.js +93 -0
- package/dist/esm/sdk/accounts/intents/utils/pick-token.js +68 -0
- package/dist/esm/sdk/accounts/intents/utils/quotas-for-update.js +27 -1
- package/dist/esm/sdk/accounts/intents/utils/router-path.js +85 -0
- package/dist/esm/sdk/accounts/intents/view.js +37 -0
- package/dist/esm/sdk/accounts/liquidations/LiquidationsService.js +0 -3
- package/dist/esm/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.js +29 -18
- package/dist/esm/sdk/base/BaseContract.js +1 -1
- package/dist/esm/sdk/base/TokensMeta.js +78 -27
- package/dist/esm/sdk/index.js +13 -4
- package/dist/esm/sdk/market/MarketRegister.js +16 -7
- package/dist/esm/sdk/market/ZapperRegister.js +56 -25
- package/dist/esm/sdk/market/credit/CreditManagerV310Contract.js +2 -13
- package/dist/esm/sdk/market/credit/CreditSuite.js +29 -10
- package/dist/esm/sdk/market/credit/index.js +2 -1
- package/dist/esm/sdk/market/credit/isStrategyCollateral.js +48 -0
- package/dist/esm/sdk/market/index.js +3 -1
- package/dist/esm/sdk/market/math.js +60 -41
- package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +10 -3
- package/dist/esm/sdk/market/pool/PoolV310Contract.js +16 -2
- package/dist/esm/sdk/market/rwa/RWARegistry.js +22 -0
- package/dist/esm/sdk/opportunities/index.js +1 -2
- package/dist/esm/sdk/options.js +1 -5
- package/dist/esm/sdk/pools/PoolService.js +133 -6
- package/dist/esm/sdk/pools/index.js +2 -2
- package/dist/esm/sdk/positions/PositionsService.js +218 -1
- package/dist/esm/sdk/positions/calcBorrowRate.js +42 -0
- package/dist/esm/sdk/positions/calcHealthFactor.js +51 -0
- package/dist/esm/sdk/positions/calcLiquidationPrice.js +22 -0
- package/dist/esm/sdk/positions/calcLiquidationPriceForTarget.js +29 -0
- package/dist/esm/sdk/positions/calcTimeToLiquidationMs.js +18 -0
- package/dist/esm/sdk/positions/index.js +7 -2
- package/dist/esm/sdk/positions/types.js +31 -1
- package/dist/esm/sdk/utils/abi-decode.js +2 -2
- package/dist/esm/sdk/utils/viem/executeMulticallBatches.js +31 -0
- package/dist/esm/sdk/utils/viem/index.js +2 -1
- package/dist/types/abi/iExpirable.d.ts +14 -0
- package/dist/types/common-utils/utils/apy/get-single-quota-borrow-rate.d.ts +2 -0
- package/dist/types/common-utils/utils/creditAccount/calc-health-factor.d.ts +3 -0
- package/dist/types/common-utils/utils/creditAccount/calc-quota-borrow-rate.d.ts +2 -0
- package/dist/types/common-utils/utils/creditAccount/get-time-to-liquidation.d.ts +6 -1
- package/dist/types/common-utils/utils/creditAccount/liquidation-price.d.ts +3 -0
- package/dist/types/dev/compareOpportunities.d.ts +105 -0
- package/dist/types/dev/comparePositions.d.ts +149 -0
- package/dist/types/dev/fieldDiff.d.ts +167 -0
- package/dist/types/model/charts.d.ts +349 -0
- package/dist/types/model/charts.schema.d.ts +364 -0
- package/dist/types/model/index.d.ts +8 -6
- package/dist/types/model/notices.d.ts +29 -0
- package/dist/types/model/notices.schema.d.ts +23 -0
- package/dist/types/model/opportunities.d.ts +9 -9
- package/dist/types/model/positions.d.ts +133 -7
- package/dist/types/model/positions.schema.d.ts +128 -1
- package/dist/types/new-sdk/AbstractNamespace.d.ts +15 -2
- package/dist/types/new-sdk/GearboxSDK.d.ts +14 -2
- package/dist/types/new-sdk/execute/ExecuteApi.d.ts +108 -0
- package/dist/types/new-sdk/execute/index.d.ts +2 -0
- package/dist/types/new-sdk/index.d.ts +8 -4
- package/dist/types/new-sdk/opportunities/OpportunitiesNamespace.d.ts +19 -7
- package/dist/types/new-sdk/opportunities/types.d.ts +30 -9
- package/dist/types/new-sdk/positions/PositionsNamespace.d.ts +4 -5
- package/dist/types/new-sdk/positions/types.d.ts +9 -9
- package/dist/types/new-sdk/simulate/SimulateApi.d.ts +90 -0
- package/dist/types/new-sdk/simulate/index.d.ts +3 -0
- package/dist/types/new-sdk/simulate/types.d.ts +508 -0
- package/dist/types/new-sdk/types.d.ts +35 -1
- package/dist/types/new-sdk/utils/index.d.ts +1 -2
- package/dist/types/offchain/AbstractOffchainNamespace.d.ts +5 -21
- package/dist/types/offchain/GearboxAPI.d.ts +6 -0
- package/dist/types/offchain/index.d.ts +4 -2
- package/dist/types/offchain/notices/OffchainNotices.d.ts +19 -0
- package/dist/types/offchain/notices/index.d.ts +2 -0
- package/dist/types/offchain/opportunities/OffchainOpportunities.d.ts +8 -4
- package/dist/types/offchain/positions/OffchainPositions.d.ts +8 -6
- package/dist/types/preview/preview/CreditAccountState.d.ts +6 -0
- package/dist/types/preview/preview/buildDelayedPreview.d.ts +5 -1
- package/dist/types/preview/preview/types.d.ts +4 -2
- package/dist/types/sdk/MultichainSDK.d.ts +0 -5
- package/dist/types/sdk/OnchainSDK.d.ts +1 -5
- package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -7
- package/dist/types/sdk/accounts/credit-account-compressor/CreditAccountCompressor.d.ts +3 -12
- package/dist/types/sdk/accounts/credit-account-compressor/index.d.ts +2 -2
- package/dist/types/sdk/accounts/credit-account-compressor/types.d.ts +1 -19
- package/dist/types/sdk/accounts/index.d.ts +7 -5
- package/dist/types/sdk/accounts/intents/guards.d.ts +72 -0
- package/dist/types/sdk/accounts/intents/index.d.ts +130 -15
- package/dist/types/sdk/accounts/intents/math.d.ts +46 -0
- package/dist/types/sdk/accounts/intents/open-strategy.d.ts +64 -0
- package/dist/types/sdk/accounts/intents/operations.d.ts +215 -0
- package/dist/types/sdk/accounts/intents/plan.d.ts +189 -0
- package/dist/types/sdk/accounts/intents/realize.d.ts +35 -0
- package/dist/types/sdk/accounts/intents/testing/delayed.d.ts +50 -0
- package/dist/types/sdk/accounts/intents/testing/expect.d.ts +17 -21
- package/dist/types/sdk/accounts/intents/testing/market.d.ts +91 -0
- package/dist/types/sdk/accounts/intents/testing/sdk-mock.d.ts +64 -16
- package/dist/types/sdk/accounts/intents/tests/add-collateral.fixtures.d.ts +45 -0
- package/dist/types/sdk/accounts/intents/tests/adjust-leverage.fixtures.d.ts +56 -0
- package/dist/types/sdk/accounts/intents/tests/deposit.fixtures.d.ts +64 -0
- package/dist/types/sdk/accounts/intents/tests/finish-decrease-leverage.fixtures.d.ts +107 -0
- package/dist/types/sdk/accounts/intents/tests/finish-withdraw.fixtures.d.ts +136 -0
- package/dist/types/sdk/accounts/intents/tests/open-strategy.fixtures.d.ts +56 -0
- package/dist/types/sdk/accounts/intents/tests/withdraw-asset.fixtures.d.ts +60 -0
- package/dist/types/sdk/accounts/intents/tests/withdraw.fixtures.d.ts +79 -0
- package/dist/types/sdk/accounts/intents/types.d.ts +369 -43
- package/dist/types/sdk/accounts/intents/utils/adjust-state-to-snapshot.d.ts +13 -0
- package/dist/types/sdk/accounts/intents/utils/assemble-operation-calls.d.ts +1 -1
- package/dist/types/sdk/accounts/intents/utils/credit-account-slice.d.ts +29 -0
- package/dist/types/sdk/accounts/intents/utils/index.d.ts +7 -5
- package/dist/types/sdk/accounts/intents/utils/ledger.d.ts +41 -0
- package/dist/types/sdk/accounts/intents/utils/pick-token.d.ts +55 -0
- package/dist/types/sdk/accounts/intents/utils/quotas-for-update.d.ts +15 -4
- package/dist/types/sdk/accounts/intents/utils/router-path.d.ts +70 -0
- package/dist/types/sdk/accounts/intents/view.d.ts +15 -0
- package/dist/types/sdk/accounts/types.d.ts +17 -14
- package/dist/types/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.d.ts +6 -0
- package/dist/types/sdk/accounts/withdrawal-compressor/types.d.ts +18 -0
- package/dist/types/sdk/base/TokensMeta.d.ts +44 -1
- package/dist/types/sdk/base/index.d.ts +2 -2
- package/dist/types/sdk/base/token-types.d.ts +12 -1
- package/dist/types/sdk/index.d.ts +28 -19
- package/dist/types/sdk/market/MarketRegister.d.ts +7 -3
- package/dist/types/sdk/market/ZapperRegister.d.ts +20 -2
- package/dist/types/sdk/market/credit/CreditManagerV310Contract.d.ts +0 -4
- package/dist/types/sdk/market/credit/CreditSuite.d.ts +6 -3
- package/dist/types/sdk/market/credit/index.d.ts +2 -1
- package/dist/types/sdk/market/credit/isStrategyCollateral.d.ts +74 -0
- package/dist/types/sdk/market/credit/types.d.ts +2 -9
- package/dist/types/sdk/market/index.d.ts +4 -2
- package/dist/types/sdk/market/math.d.ts +46 -34
- package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +6 -2
- package/dist/types/sdk/market/oracle/types.d.ts +10 -2
- package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +5 -0
- package/dist/types/sdk/market/pool/types.d.ts +5 -0
- package/dist/types/sdk/market/rwa/RWARegistry.d.ts +13 -0
- package/dist/types/sdk/market/types.d.ts +5 -1
- package/dist/types/sdk/opportunities/index.d.ts +1 -2
- package/dist/types/sdk/options.d.ts +0 -1
- package/dist/types/sdk/pools/PoolService.d.ts +32 -2
- package/dist/types/sdk/pools/index.d.ts +3 -3
- package/dist/types/sdk/pools/types.d.ts +109 -4
- package/dist/types/sdk/positions/PositionsService.d.ts +33 -2
- package/dist/types/sdk/positions/calcBorrowRate.d.ts +40 -0
- package/dist/types/sdk/positions/calcHealthFactor.d.ts +55 -0
- package/dist/types/sdk/positions/calcLiquidationPrice.d.ts +12 -0
- package/dist/types/sdk/positions/calcLiquidationPriceForTarget.d.ts +43 -0
- package/dist/types/sdk/positions/calcTimeToLiquidationMs.d.ts +16 -0
- package/dist/types/sdk/positions/index.d.ts +7 -2
- package/dist/types/sdk/positions/types.d.ts +58 -1
- package/dist/types/sdk/types/state.d.ts +6 -0
- package/dist/types/sdk/utils/viem/executeMulticallBatches.d.ts +39 -0
- package/dist/types/sdk/utils/viem/index.d.ts +3 -2
- package/package.json +2 -1
- package/dist/cjs/model/history.js +0 -53
- package/dist/cjs/model/history.schema.js +0 -128
- package/dist/cjs/sdk/accounts/intents/intents/index.js +0 -14
- package/dist/cjs/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.fixtures.js +0 -121
- package/dist/cjs/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.js +0 -15
- package/dist/cjs/sdk/accounts/intents/intents/resume/close/close.fixtures.js +0 -108
- package/dist/cjs/sdk/accounts/intents/intents/resume/close/close.js +0 -51
- package/dist/cjs/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.fixtures.js +0 -130
- package/dist/cjs/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.js +0 -83
- package/dist/cjs/sdk/accounts/intents/intents/resume/deposit/deposit.fixtures.js +0 -117
- package/dist/cjs/sdk/accounts/intents/intents/resume/deposit/deposit.js +0 -15
- package/dist/cjs/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.fixtures.js +0 -95
- package/dist/cjs/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.js +0 -15
- package/dist/cjs/sdk/accounts/intents/intents/resume/index.js +0 -13
- package/dist/cjs/sdk/accounts/intents/intents/resume/withdraw/withdraw.fixtures.js +0 -138
- package/dist/cjs/sdk/accounts/intents/intents/resume/withdraw/withdraw.js +0 -161
- package/dist/cjs/sdk/accounts/intents/operations/add-collateral/index.js +0 -17
- package/dist/cjs/sdk/accounts/intents/operations/claim-delayed/index.js +0 -54
- package/dist/cjs/sdk/accounts/intents/operations/close-credit-account/index.js +0 -26
- package/dist/cjs/sdk/accounts/intents/operations/decrease-debt/index.js +0 -12
- package/dist/cjs/sdk/accounts/intents/operations/increase-debt/index.js +0 -12
- package/dist/cjs/sdk/accounts/intents/operations/index.js +0 -27
- package/dist/cjs/sdk/accounts/intents/operations/quota-update/index.js +0 -22
- package/dist/cjs/sdk/accounts/intents/operations/repay-credit-account/index.js +0 -22
- package/dist/cjs/sdk/accounts/intents/operations/start-delayed-withdrawal/index.js +0 -18
- package/dist/cjs/sdk/accounts/intents/operations/swap/index.js +0 -18
- package/dist/cjs/sdk/accounts/intents/operations/unwrap-rwa-collateral/index.js +0 -27
- package/dist/cjs/sdk/accounts/intents/operations/withdraw-collateral/index.js +0 -43
- package/dist/cjs/sdk/accounts/intents/operations/wrap-rwa-collateral/index.js +0 -27
- package/dist/cjs/sdk/accounts/intents/quoters/close.js +0 -58
- package/dist/cjs/sdk/accounts/intents/quoters/index.js +0 -7
- package/dist/cjs/sdk/accounts/intents/quoters/swap.js +0 -79
- package/dist/cjs/sdk/accounts/intents/testing/expect.js +0 -167
- package/dist/cjs/sdk/accounts/intents/testing/resume.js +0 -172
- package/dist/cjs/sdk/accounts/intents/utils/simulate-adjust-state.js +0 -39
- package/dist/cjs/sdk/accounts/intents/utils/simulate-assets.js +0 -69
- package/dist/cjs/sdk/accounts/intents/utils/with-quota-update.js +0 -13
- package/dist/esm/model/history.js +0 -49
- package/dist/esm/model/history.schema.js +0 -116
- package/dist/esm/sdk/accounts/intents/intents/index.js +0 -8
- package/dist/esm/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.fixtures.js +0 -107
- package/dist/esm/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.js +0 -14
- package/dist/esm/sdk/accounts/intents/intents/resume/close/close.fixtures.js +0 -94
- package/dist/esm/sdk/accounts/intents/intents/resume/close/close.js +0 -50
- package/dist/esm/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.fixtures.js +0 -114
- package/dist/esm/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.js +0 -82
- package/dist/esm/sdk/accounts/intents/intents/resume/deposit/deposit.fixtures.js +0 -110
- package/dist/esm/sdk/accounts/intents/intents/resume/deposit/deposit.js +0 -14
- package/dist/esm/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.fixtures.js +0 -88
- package/dist/esm/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.js +0 -14
- package/dist/esm/sdk/accounts/intents/intents/resume/index.js +0 -7
- package/dist/esm/sdk/accounts/intents/intents/resume/withdraw/withdraw.fixtures.js +0 -121
- package/dist/esm/sdk/accounts/intents/intents/resume/withdraw/withdraw.js +0 -160
- package/dist/esm/sdk/accounts/intents/operations/add-collateral/index.js +0 -16
- package/dist/esm/sdk/accounts/intents/operations/claim-delayed/index.js +0 -52
- package/dist/esm/sdk/accounts/intents/operations/close-credit-account/index.js +0 -25
- package/dist/esm/sdk/accounts/intents/operations/decrease-debt/index.js +0 -11
- package/dist/esm/sdk/accounts/intents/operations/increase-debt/index.js +0 -11
- package/dist/esm/sdk/accounts/intents/operations/index.js +0 -14
- package/dist/esm/sdk/accounts/intents/operations/quota-update/index.js +0 -21
- package/dist/esm/sdk/accounts/intents/operations/repay-credit-account/index.js +0 -21
- package/dist/esm/sdk/accounts/intents/operations/start-delayed-withdrawal/index.js +0 -17
- package/dist/esm/sdk/accounts/intents/operations/swap/index.js +0 -17
- package/dist/esm/sdk/accounts/intents/operations/unwrap-rwa-collateral/index.js +0 -26
- package/dist/esm/sdk/accounts/intents/operations/withdraw-collateral/index.js +0 -42
- package/dist/esm/sdk/accounts/intents/operations/wrap-rwa-collateral/index.js +0 -26
- package/dist/esm/sdk/accounts/intents/quoters/close.js +0 -56
- package/dist/esm/sdk/accounts/intents/quoters/index.js +0 -3
- package/dist/esm/sdk/accounts/intents/quoters/swap.js +0 -77
- package/dist/esm/sdk/accounts/intents/testing/expect.js +0 -162
- package/dist/esm/sdk/accounts/intents/testing/resume.js +0 -157
- package/dist/esm/sdk/accounts/intents/utils/simulate-adjust-state.js +0 -38
- package/dist/esm/sdk/accounts/intents/utils/simulate-assets.js +0 -68
- package/dist/esm/sdk/accounts/intents/utils/with-quota-update.js +0 -12
- package/dist/types/model/history.d.ts +0 -153
- package/dist/types/model/history.schema.d.ts +0 -95
- package/dist/types/new-sdk/utils/history.d.ts +0 -18
- package/dist/types/sdk/accounts/intents/intents/index.d.ts +0 -8
- package/dist/types/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.d.ts +0 -13
- package/dist/types/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.fixtures.d.ts +0 -38
- package/dist/types/sdk/accounts/intents/intents/resume/close/close.d.ts +0 -26
- package/dist/types/sdk/accounts/intents/intents/resume/close/close.fixtures.d.ts +0 -63
- package/dist/types/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.d.ts +0 -26
- package/dist/types/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.fixtures.d.ts +0 -86
- package/dist/types/sdk/accounts/intents/intents/resume/deposit/deposit.d.ts +0 -13
- package/dist/types/sdk/accounts/intents/intents/resume/deposit/deposit.fixtures.d.ts +0 -48
- package/dist/types/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.d.ts +0 -13
- package/dist/types/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.fixtures.d.ts +0 -46
- package/dist/types/sdk/accounts/intents/intents/resume/index.d.ts +0 -7
- package/dist/types/sdk/accounts/intents/intents/resume/withdraw/withdraw.d.ts +0 -33
- package/dist/types/sdk/accounts/intents/intents/resume/withdraw/withdraw.fixtures.d.ts +0 -68
- package/dist/types/sdk/accounts/intents/operations/add-collateral/index.d.ts +0 -23
- package/dist/types/sdk/accounts/intents/operations/claim-delayed/index.d.ts +0 -55
- package/dist/types/sdk/accounts/intents/operations/close-credit-account/index.d.ts +0 -22
- package/dist/types/sdk/accounts/intents/operations/decrease-debt/index.d.ts +0 -18
- package/dist/types/sdk/accounts/intents/operations/increase-debt/index.d.ts +0 -18
- package/dist/types/sdk/accounts/intents/operations/index.d.ts +0 -14
- package/dist/types/sdk/accounts/intents/operations/quota-update/index.d.ts +0 -24
- package/dist/types/sdk/accounts/intents/operations/repay-credit-account/index.d.ts +0 -31
- package/dist/types/sdk/accounts/intents/operations/start-delayed-withdrawal/index.d.ts +0 -23
- package/dist/types/sdk/accounts/intents/operations/swap/index.d.ts +0 -28
- package/dist/types/sdk/accounts/intents/operations/types.d.ts +0 -21
- package/dist/types/sdk/accounts/intents/operations/unwrap-rwa-collateral/index.d.ts +0 -30
- package/dist/types/sdk/accounts/intents/operations/withdraw-collateral/index.d.ts +0 -36
- package/dist/types/sdk/accounts/intents/operations/wrap-rwa-collateral/index.d.ts +0 -30
- package/dist/types/sdk/accounts/intents/quoters/close.d.ts +0 -43
- package/dist/types/sdk/accounts/intents/quoters/index.d.ts +0 -3
- package/dist/types/sdk/accounts/intents/quoters/swap.d.ts +0 -43
- package/dist/types/sdk/accounts/intents/testing/resume.d.ts +0 -84
- package/dist/types/sdk/accounts/intents/utils/simulate-adjust-state.d.ts +0 -19
- package/dist/types/sdk/accounts/intents/utils/simulate-assets.d.ts +0 -21
- package/dist/types/sdk/accounts/intents/utils/with-quota-update.d.ts +0 -16
- /package/dist/cjs/{new-sdk/utils/history.js → model/notices.js} +0 -0
- /package/dist/cjs/{sdk/accounts/intents/operations → new-sdk/simulate}/types.js +0 -0
- /package/dist/esm/{new-sdk/utils/history.js → model/notices.js} +0 -0
- /package/dist/esm/{sdk/accounts/intents/operations → new-sdk/simulate}/types.js +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/sdk/accounts/intents/utils/adjust-state-to-snapshot.ts
|
|
3
|
+
/**
|
|
4
|
+
* Maps an intents {@link OperationState} onto the {@link AccountSnapshot} that
|
|
5
|
+
* position-metric functions take. `accountDebt` is treated as total debt
|
|
6
|
+
* (principal plus accrued interest and fees).
|
|
7
|
+
**/
|
|
8
|
+
function adjustStateToSnapshot(creditManager, state) {
|
|
9
|
+
return {
|
|
10
|
+
creditManager,
|
|
11
|
+
assets: state.assets,
|
|
12
|
+
quotas: Object.values(state.quotas),
|
|
13
|
+
totalDebt: state.accountDebt,
|
|
14
|
+
totalValue: state.totalValue
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
exports.adjustStateToSnapshot = adjustStateToSnapshot;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_sdk_accounts_intents_utils_borrowed_amount_plus_interest_and_fees = require("./borrowed-amount-plus-interest-and-fees.js");
|
|
3
|
+
//#region src/sdk/accounts/intents/utils/credit-account-slice.ts
|
|
4
|
+
/**
|
|
5
|
+
* Narrows full account data down to the slice the intent engine operates on.
|
|
6
|
+
*
|
|
7
|
+
* `accountDebt` is the total repayable debt (principal + accrued interest +
|
|
8
|
+
* accrued fees) rather than the principal, because every debt-touching intent
|
|
9
|
+
* settles the full outstanding amount.
|
|
10
|
+
*
|
|
11
|
+
* Addresses are lowercased so that `eq` comparisons and `AddressMap` lookups
|
|
12
|
+
* behave consistently everywhere downstream.
|
|
13
|
+
*/
|
|
14
|
+
function toCreditAccountSlice(ca) {
|
|
15
|
+
return {
|
|
16
|
+
creditAccount: ca.creditAccount.toLowerCase(),
|
|
17
|
+
creditManager: ca.creditManager.toLowerCase(),
|
|
18
|
+
creditFacade: ca.creditFacade.toLowerCase(),
|
|
19
|
+
underlying: ca.underlying.toLowerCase(),
|
|
20
|
+
enabledTokensMask: ca.enabledTokensMask,
|
|
21
|
+
totalDebtUSD: ca.totalDebtUSD,
|
|
22
|
+
accountDebt: require_sdk_accounts_intents_utils_borrowed_amount_plus_interest_and_fees.calcBorrowedAmountPlusInterestAndFees(ca),
|
|
23
|
+
tokens: ca.tokens.map((t) => ({
|
|
24
|
+
...t,
|
|
25
|
+
token: t.token.toLowerCase()
|
|
26
|
+
}))
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Reads an account by address and narrows it to {@link CreditAccountSlice}.
|
|
31
|
+
*
|
|
32
|
+
* The shared read model's `StrategyPosition` carries neither `tokens` nor
|
|
33
|
+
* `enabledTokensMask` / `creditFacade` / `totalDebtUSD`, so simulating against
|
|
34
|
+
* an existing position costs one account read.
|
|
35
|
+
*
|
|
36
|
+
* @throws When the account is not found in the connected markets.
|
|
37
|
+
*/
|
|
38
|
+
async function fetchCreditAccountSlice(sdk, creditAccount) {
|
|
39
|
+
const data = await sdk.accounts.getCreditAccountData(creditAccount);
|
|
40
|
+
if (!data) throw new Error(`credit account not found: ${creditAccount}`);
|
|
41
|
+
return toCreditAccountSlice(data);
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
exports.fetchCreditAccountSlice = fetchCreditAccountSlice;
|
|
45
|
+
exports.toCreditAccountSlice = toCreditAccountSlice;
|
|
@@ -1,19 +1,28 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_sdk_accounts_intents_utils_assemble_operation_calls = require("./assemble-operation-calls.js");
|
|
3
|
-
const require_sdk_accounts_intents_utils_borrowed_amount_plus_interest_and_fees = require("./borrowed-amount-plus-interest-and-fees.js");
|
|
4
2
|
const require_sdk_accounts_intents_utils_common = require("./common.js");
|
|
5
3
|
const require_sdk_accounts_intents_utils_convert_amount = require("./convert-amount.js");
|
|
4
|
+
const require_sdk_accounts_intents_utils_pick_token = require("./pick-token.js");
|
|
5
|
+
const require_sdk_accounts_intents_utils_adjust_state_to_snapshot = require("./adjust-state-to-snapshot.js");
|
|
6
|
+
const require_sdk_accounts_intents_utils_assemble_operation_calls = require("./assemble-operation-calls.js");
|
|
7
|
+
const require_sdk_accounts_intents_utils_borrowed_amount_plus_interest_and_fees = require("./borrowed-amount-plus-interest-and-fees.js");
|
|
8
|
+
const require_sdk_accounts_intents_utils_credit_account_slice = require("./credit-account-slice.js");
|
|
9
|
+
const require_sdk_accounts_intents_utils_ledger = require("./ledger.js");
|
|
6
10
|
const require_sdk_accounts_intents_utils_quotas_for_update = require("./quotas-for-update.js");
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
11
|
+
const require_sdk_accounts_intents_utils_router_path = require("./router-path.js");
|
|
12
|
+
exports.OperationLedger = require_sdk_accounts_intents_utils_ledger.OperationLedger;
|
|
13
|
+
exports.adjustStateToSnapshot = require_sdk_accounts_intents_utils_adjust_state_to_snapshot.adjustStateToSnapshot;
|
|
10
14
|
exports.assembleOperationCalls = require_sdk_accounts_intents_utils_assemble_operation_calls.assembleOperationCalls;
|
|
11
15
|
exports.calcBorrowedAmountPlusInterestAndFees = require_sdk_accounts_intents_utils_borrowed_amount_plus_interest_and_fees.calcBorrowedAmountPlusInterestAndFees;
|
|
16
|
+
exports.clearedQuotas = require_sdk_accounts_intents_utils_quotas_for_update.clearedQuotas;
|
|
12
17
|
exports.convertAmount = require_sdk_accounts_intents_utils_convert_amount.convertAmount;
|
|
18
|
+
exports.createRouterPaths = require_sdk_accounts_intents_utils_router_path.createRouterPaths;
|
|
13
19
|
exports.eq = require_sdk_accounts_intents_utils_common.eq;
|
|
14
|
-
exports.
|
|
20
|
+
exports.fetchCreditAccountSlice = require_sdk_accounts_intents_utils_credit_account_slice.fetchCreditAccountSlice;
|
|
15
21
|
exports.getQuotasForUpdate = require_sdk_accounts_intents_utils_quotas_for_update.getQuotasForUpdate;
|
|
16
|
-
exports.
|
|
17
|
-
exports.
|
|
22
|
+
exports.isPhantomToken = require_sdk_accounts_intents_utils_pick_token.isPhantomToken;
|
|
23
|
+
exports.isRedemptionPhantomToken = require_sdk_accounts_intents_utils_pick_token.isRedemptionPhantomToken;
|
|
24
|
+
exports.pickFattestNonPhantomToken = require_sdk_accounts_intents_utils_pick_token.pickFattestNonPhantomToken;
|
|
25
|
+
exports.rankAccountTokens = require_sdk_accounts_intents_utils_pick_token.rankAccountTokens;
|
|
26
|
+
exports.toCreditAccountSlice = require_sdk_accounts_intents_utils_credit_account_slice.toCreditAccountSlice;
|
|
18
27
|
exports.toRouterCaSlice = require_sdk_accounts_intents_utils_common.toRouterCaSlice;
|
|
19
28
|
exports.toTargetDecimals = require_sdk_accounts_intents_utils_common.toTargetDecimals;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_sdk_utils_bigint_math = require("../../../utils/bigint-math.js");
|
|
3
|
+
//#region src/sdk/accounts/intents/utils/ledger.ts
|
|
4
|
+
/**
|
|
5
|
+
* Running account state, advanced one operation at a time.
|
|
6
|
+
*
|
|
7
|
+
* Exists because the amounts an operation is built from depend on the balances
|
|
8
|
+
* the previous ones left behind: a swap has to know how much of its input token
|
|
9
|
+
* is genuinely swap input, so the router does not sweep collateral that must
|
|
10
|
+
* stay put. Applying each op as it is built keeps that a single forward pass —
|
|
11
|
+
* a builder that re-simulated the chain from the start for every leg would be
|
|
12
|
+
* quadratic in the number of legs and easy to desynchronise.
|
|
13
|
+
*/
|
|
14
|
+
var OperationLedger = class {
|
|
15
|
+
#balances = /* @__PURE__ */ new Map();
|
|
16
|
+
#underlying;
|
|
17
|
+
#convert;
|
|
18
|
+
#debt;
|
|
19
|
+
constructor(args) {
|
|
20
|
+
this.#underlying = args.underlying;
|
|
21
|
+
this.#convert = args.convert;
|
|
22
|
+
this.#debt = args.debt;
|
|
23
|
+
for (const asset of args.initialAssets) {
|
|
24
|
+
const token = asset.token.toLowerCase();
|
|
25
|
+
this.#balances.set(token, (this.#balances.get(token) ?? 0n) + asset.balance);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
get debt() {
|
|
29
|
+
return this.#debt;
|
|
30
|
+
}
|
|
31
|
+
balanceOf(token) {
|
|
32
|
+
return this.#balances.get(token.toLowerCase()) ?? 0n;
|
|
33
|
+
}
|
|
34
|
+
applyAll(operations) {
|
|
35
|
+
for (const op of operations) this.apply(op);
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
snapshot() {
|
|
39
|
+
const assets = [...this.#balances.entries()].map(([token, balance]) => ({
|
|
40
|
+
token,
|
|
41
|
+
balance
|
|
42
|
+
}));
|
|
43
|
+
return {
|
|
44
|
+
assets,
|
|
45
|
+
totalValue: assets.reduce((acc, a) => acc + this.#convert(a.token, this.#underlying, a.balance), 0n),
|
|
46
|
+
debt: this.#debt
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** Advances the state by one operation; quota changes move no balance. */
|
|
50
|
+
apply(op) {
|
|
51
|
+
switch (op.type) {
|
|
52
|
+
case "changeQuota": break;
|
|
53
|
+
case "increaseDebt":
|
|
54
|
+
this.#debt += op.amount;
|
|
55
|
+
this.#add(this.#underlying, op.amount);
|
|
56
|
+
break;
|
|
57
|
+
case "decreaseDebt":
|
|
58
|
+
this.#debt = require_sdk_utils_bigint_math.BigIntMath.max(0n, this.#debt - op.amount);
|
|
59
|
+
this.#add(this.#underlying, -op.amount);
|
|
60
|
+
break;
|
|
61
|
+
case "addCollateral":
|
|
62
|
+
this.#add(op.token, op.amount);
|
|
63
|
+
break;
|
|
64
|
+
case "withdrawCollateral":
|
|
65
|
+
this.#add(op.token, -op.amount);
|
|
66
|
+
break;
|
|
67
|
+
case "swap":
|
|
68
|
+
for (const input of op.from) this.#add(input.token, -input.balance);
|
|
69
|
+
this.#add(op.tokenOut, op.amountOut);
|
|
70
|
+
break;
|
|
71
|
+
case "wrapRwaCollateral":
|
|
72
|
+
case "unwrapRwaCollateral":
|
|
73
|
+
this.#add(op.tokenIn, -op.amount);
|
|
74
|
+
this.#add(op.tokenOut, op.amountOut);
|
|
75
|
+
break;
|
|
76
|
+
case "startDelayedWithdrawal":
|
|
77
|
+
this.#add(op.token, -op.amountIn);
|
|
78
|
+
for (const out of op.outputs) this.#add(out.token, out.amount);
|
|
79
|
+
break;
|
|
80
|
+
case "claimDelayedWithdrawal":
|
|
81
|
+
this.#add(op.withdrawalPhantomToken, -op.withdrawalTokenSpent);
|
|
82
|
+
for (const out of op.outputs) this.#add(out.token, out.amount);
|
|
83
|
+
}
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
#add(token, delta) {
|
|
87
|
+
const key = token.toLowerCase();
|
|
88
|
+
const balance = (this.#balances.get(key) ?? 0n) + delta;
|
|
89
|
+
if (balance <= 0n) this.#balances.delete(key);
|
|
90
|
+
else this.#balances.set(key, balance);
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
//#endregion
|
|
94
|
+
exports.OperationLedger = OperationLedger;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_sdk_market_credit_isStrategyCollateral = require("../../../market/credit/isStrategyCollateral.js");
|
|
3
|
+
const require_sdk_accounts_intents_utils_common = require("./common.js");
|
|
4
|
+
const require_sdk_accounts_intents_utils_convert_amount = require("./convert-amount.js");
|
|
5
|
+
//#region src/sdk/accounts/intents/utils/pick-token.ts
|
|
6
|
+
/** Prefix marking every phantom-token contract type in the registry. */
|
|
7
|
+
const PHANTOM_TOKEN_PREFIX = "PHANTOM_TOKEN::";
|
|
8
|
+
/**
|
|
9
|
+
* Whether `token` is a phantom (a non-transferable position marker such as a
|
|
10
|
+
* pending delayed withdrawal).
|
|
11
|
+
*
|
|
12
|
+
* Reads `contractType` directly instead of going through
|
|
13
|
+
* `TokensMeta.isPhantomToken`, which throws when extended token data has not
|
|
14
|
+
* been loaded. Here an unknown token is simply treated as non-phantom.
|
|
15
|
+
*/
|
|
16
|
+
function isPhantomToken(sdk, token) {
|
|
17
|
+
return !!sdk.tokensMeta.get(token)?.contractType?.startsWith(PHANTOM_TOKEN_PREFIX);
|
|
18
|
+
}
|
|
19
|
+
const REDEMPTION_PHANTOM_TOKEN_TYPES = new Set(require_sdk_market_credit_isStrategyCollateral.NON_STRATEGY_PHANTOM_TOKEN_TYPES);
|
|
20
|
+
/**
|
|
21
|
+
* Whether `token` is the phantom of a redemption in flight, rather than one of
|
|
22
|
+
* the phantoms a position is simply held in (Convex, Infrared, staking
|
|
23
|
+
* rewards), which the router sells like any other balance.
|
|
24
|
+
*
|
|
25
|
+
* Only the former stands between an account and being emptied: it cannot be
|
|
26
|
+
* sold and it cannot leave until its claim has landed.
|
|
27
|
+
*/
|
|
28
|
+
function isRedemptionPhantomToken(sdk, token) {
|
|
29
|
+
const contractType = sdk.tokensMeta.get(token)?.contractType;
|
|
30
|
+
return !!contractType && REDEMPTION_PHANTOM_TOKEN_TYPES.has(contractType);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Account balances that can actually back an operation, richest first.
|
|
34
|
+
*
|
|
35
|
+
* Phantoms are dropped because a pending delayed withdrawal cannot be spent:
|
|
36
|
+
* it has to be claimed first, in a transaction of its own.
|
|
37
|
+
*/
|
|
38
|
+
function rankAccountTokens(args) {
|
|
39
|
+
const { creditAccount, sdk, exclude = [] } = args;
|
|
40
|
+
const convert = require_sdk_accounts_intents_utils_convert_amount.convertAmount(sdk, creditAccount.creditManager);
|
|
41
|
+
const candidates = [];
|
|
42
|
+
for (const t of creditAccount.tokens) {
|
|
43
|
+
if (t.balance <= 0n) continue;
|
|
44
|
+
if (exclude.some((e) => require_sdk_accounts_intents_utils_common.eq(e, t.token))) continue;
|
|
45
|
+
if (isPhantomToken(sdk, t.token)) continue;
|
|
46
|
+
candidates.push({
|
|
47
|
+
token: t.token,
|
|
48
|
+
balance: t.balance,
|
|
49
|
+
valueInUnderlying: convert(t.token, creditAccount.underlying, t.balance)
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
candidates.sort((a, b) => {
|
|
53
|
+
if (a.valueInUnderlying !== b.valueInUnderlying) return a.valueInUnderlying > b.valueInUnderlying ? -1 : 1;
|
|
54
|
+
return a.token < b.token ? -1 : a.token > b.token ? 1 : 0;
|
|
55
|
+
});
|
|
56
|
+
return candidates;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Default working token for flows that do not get one from the caller: the
|
|
60
|
+
* most valuable non-phantom balance on the account.
|
|
61
|
+
*
|
|
62
|
+
* Used for the source of a partial withdraw and the position leg of a leverage
|
|
63
|
+
* adjustment, both of which the caller may override explicitly.
|
|
64
|
+
*/
|
|
65
|
+
function pickFattestNonPhantomToken(args) {
|
|
66
|
+
return rankAccountTokens(args)[0];
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
exports.isPhantomToken = isPhantomToken;
|
|
70
|
+
exports.isRedemptionPhantomToken = isRedemptionPhantomToken;
|
|
71
|
+
exports.pickFattestNonPhantomToken = pickFattestNonPhantomToken;
|
|
72
|
+
exports.rankAccountTokens = rankAccountTokens;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_sdk_utils_mappers = require("../../../utils/mappers.js");
|
|
3
|
+
const require_sdk_constants_math = require("../../../constants/math.js");
|
|
3
4
|
const require_common_utils_utils_creditAccount_quota_utils = require("../../../../common-utils/utils/creditAccount/quota-utils.js");
|
|
4
5
|
//#region src/sdk/accounts/intents/utils/quotas-for-update.ts
|
|
5
6
|
function getQuotasForUpdate({ assetsBefore, assetsAfter, initialQuotas, quotaReserve = 0, liquidationThresholds: liquidationThresholdsMap, quotas: quotasMap, maxDebt, underlyingToken, convert }) {
|
|
@@ -52,6 +53,31 @@ function getQuotasForUpdate({ assetsBefore, assetsAfter, initialQuotas, quotaRes
|
|
|
52
53
|
});
|
|
53
54
|
return filterQuotaUpdates(quotaResult.desiredQuota, quotaResult.quotaIncrease, quotaResult.quotaDecrease, [...new Set([...spend, ...obtain].map((q) => q.token)).values()]);
|
|
54
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* The update that leaves the account holding no quota at all.
|
|
58
|
+
*
|
|
59
|
+
* Sits beside {@link getQuotasForUpdate} rather than inside it because the two
|
|
60
|
+
* answer different questions: that one sizes quotas to the balances an
|
|
61
|
+
* operation leaves behind, this one is asked for by a plan that ends the loan,
|
|
62
|
+
* where the right size is none whatever the balances are.
|
|
63
|
+
*
|
|
64
|
+
* `MIN_INT96` is the protocol's "reset" sentinel, which is how a decrease says
|
|
65
|
+
* "all of it" instead of naming an amount that interest may have moved.
|
|
66
|
+
*/
|
|
67
|
+
function clearedQuotas(initialQuotas) {
|
|
68
|
+
const quoted = initialQuotas.filter((q) => q.quota > 0n).map((q) => q.token.toLowerCase());
|
|
69
|
+
return {
|
|
70
|
+
desiredQuota: require_sdk_utils_mappers.TypedObjectUtils.fromEntries(quoted.map((token) => [token, {
|
|
71
|
+
token,
|
|
72
|
+
balance: 0n
|
|
73
|
+
}])),
|
|
74
|
+
quotaIncrease: [],
|
|
75
|
+
quotaDecrease: quoted.map((token) => ({
|
|
76
|
+
token,
|
|
77
|
+
balance: require_sdk_constants_math.MIN_INT96
|
|
78
|
+
}))
|
|
79
|
+
};
|
|
80
|
+
}
|
|
55
81
|
function collectQuotaChange(assetsBefore, assetsAfter) {
|
|
56
82
|
const before = new Map(assetsBefore.map((a) => [a.token, a.balance]));
|
|
57
83
|
const after = new Map(assetsAfter.map((a) => [a.token, a.balance]));
|
|
@@ -119,4 +145,5 @@ function constructAssetRecord(a) {
|
|
|
119
145
|
}, {});
|
|
120
146
|
}
|
|
121
147
|
//#endregion
|
|
148
|
+
exports.clearedQuotas = clearedQuotas;
|
|
122
149
|
exports.getQuotasForUpdate = getQuotasForUpdate;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_sdk_accounts_intents_utils_common = require("./common.js");
|
|
3
|
+
//#region src/sdk/accounts/intents/utils/router-path.ts
|
|
4
|
+
/**
|
|
5
|
+
* The engine's only door to the pathfinder.
|
|
6
|
+
*
|
|
7
|
+
* Deliberately not a quoter abstraction with an oracle-priced twin: paths are
|
|
8
|
+
* always resolved on-chain, because a preview whose swap amounts came from
|
|
9
|
+
* oracle prices could not produce the calldata that realises them.
|
|
10
|
+
*/
|
|
11
|
+
function createRouterPaths(args) {
|
|
12
|
+
const { sdk, creditAccount, slippage } = args;
|
|
13
|
+
const suite = sdk.marketRegister.findCreditManager(creditAccount.creditManager);
|
|
14
|
+
const cmSlice = {
|
|
15
|
+
address: suite.creditManager.address.toLowerCase(),
|
|
16
|
+
creditFacade: suite.creditFacade.address.toLowerCase(),
|
|
17
|
+
collateralTokens: suite.creditManager.collateralTokens.map((t) => t.toLowerCase())
|
|
18
|
+
};
|
|
19
|
+
const router = sdk.routerFor({ creditFacade: suite.creditFacade.address });
|
|
20
|
+
return {
|
|
21
|
+
async swap({ tokenIn, tokenOut, amount, keep = 0n }) {
|
|
22
|
+
if (amount <= 0n) return {
|
|
23
|
+
amount: 0n,
|
|
24
|
+
minAmount: 0n,
|
|
25
|
+
calls: []
|
|
26
|
+
};
|
|
27
|
+
if (keep < 0n) throw new Error(`swap: spending ${amount} of ${tokenIn} exceeds its balance`);
|
|
28
|
+
if (keep > 0n) {
|
|
29
|
+
const expectedBalances = [{
|
|
30
|
+
token: tokenIn,
|
|
31
|
+
balance: amount + keep
|
|
32
|
+
}];
|
|
33
|
+
return router.findManyToOnePath({
|
|
34
|
+
creditAccount: require_sdk_accounts_intents_utils_common.toRouterCaSlice(creditAccount, expectedBalances),
|
|
35
|
+
creditManager: cmSlice,
|
|
36
|
+
expectedBalances,
|
|
37
|
+
leftoverBalances: [{
|
|
38
|
+
token: tokenIn,
|
|
39
|
+
balance: keep
|
|
40
|
+
}],
|
|
41
|
+
target: tokenOut,
|
|
42
|
+
slippage
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return router.findOneTokenPath({
|
|
46
|
+
creditAccount: require_sdk_accounts_intents_utils_common.toRouterCaSlice(creditAccount, [{
|
|
47
|
+
token: tokenIn,
|
|
48
|
+
balance: amount
|
|
49
|
+
}]),
|
|
50
|
+
creditManager: cmSlice,
|
|
51
|
+
tokenIn,
|
|
52
|
+
tokenOut,
|
|
53
|
+
amount,
|
|
54
|
+
slippage
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
async closeAll({ balances }) {
|
|
58
|
+
const { amount, minAmount, calls } = await router.findBestClosePath({
|
|
59
|
+
creditAccount: require_sdk_accounts_intents_utils_common.toRouterCaSlice(creditAccount, balances),
|
|
60
|
+
creditManager: cmSlice,
|
|
61
|
+
balances: {
|
|
62
|
+
expectedBalances: balances,
|
|
63
|
+
leftoverBalances: [],
|
|
64
|
+
tokensToClaim: []
|
|
65
|
+
},
|
|
66
|
+
slippage
|
|
67
|
+
});
|
|
68
|
+
return {
|
|
69
|
+
amount,
|
|
70
|
+
minAmount,
|
|
71
|
+
calls: [...calls]
|
|
72
|
+
};
|
|
73
|
+
},
|
|
74
|
+
async openStrategy({ expectedBalances, leftoverBalances, target }) {
|
|
75
|
+
return router.findOpenStrategyPath({
|
|
76
|
+
creditManager: cmSlice,
|
|
77
|
+
expectedBalances,
|
|
78
|
+
leftoverBalances,
|
|
79
|
+
target,
|
|
80
|
+
slippage
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//#endregion
|
|
86
|
+
exports.createRouterPaths = createRouterPaths;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_sdk_accounts_intents_utils_common = require("./utils/common.js");
|
|
3
|
+
const require_sdk_accounts_intents_utils_convert_amount = require("./utils/convert-amount.js");
|
|
4
|
+
const require_sdk_accounts_intents_utils_pick_token = require("./utils/pick-token.js");
|
|
5
|
+
//#region src/sdk/accounts/intents/view.ts
|
|
6
|
+
/**
|
|
7
|
+
* The account as the planners see it: a handful of numbers in underlying units
|
|
8
|
+
* plus balance / price lookups. Read once per preview.
|
|
9
|
+
*
|
|
10
|
+
* TVL uses the RWA-aware conversion so an `rwa.asset` balance without a direct
|
|
11
|
+
* pool price still counts at its wrapped value instead of throwing.
|
|
12
|
+
*/
|
|
13
|
+
function accountView(creditAccount, sdk) {
|
|
14
|
+
const { underlying, creditManager } = creditAccount;
|
|
15
|
+
const price = require_sdk_accounts_intents_utils_convert_amount.convertAmount(sdk, creditManager);
|
|
16
|
+
const { creditFacade } = sdk.marketRegister.findCreditManager(creditManager);
|
|
17
|
+
let totalValue = 0n;
|
|
18
|
+
for (const t of creditAccount.tokens) totalValue += price(t.token, underlying, t.balance);
|
|
19
|
+
return {
|
|
20
|
+
underlying,
|
|
21
|
+
rwaAsset: sdk.tokensMeta.rwaUnderlyings.get(underlying)?.asset,
|
|
22
|
+
debt: creditAccount.accountDebt,
|
|
23
|
+
collateral: totalValue - creditAccount.accountDebt,
|
|
24
|
+
band: {
|
|
25
|
+
minDebt: creditFacade.minDebt,
|
|
26
|
+
maxDebt: creditFacade.maxDebt
|
|
27
|
+
},
|
|
28
|
+
balanceOf: (token) => creditAccount.tokens.find((t) => require_sdk_accounts_intents_utils_common.eq(t.token, token))?.balance ?? 0n,
|
|
29
|
+
price,
|
|
30
|
+
fattest: (exclude) => require_sdk_accounts_intents_utils_pick_token.pickFattestNonPhantomToken({
|
|
31
|
+
creditAccount,
|
|
32
|
+
sdk,
|
|
33
|
+
exclude
|
|
34
|
+
})?.token
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
exports.accountView = accountView;
|
|
@@ -33,7 +33,6 @@ var LiquidationsService = class extends require_sdk_base_SDKConstruct.SDKConstru
|
|
|
33
33
|
* Accounts whose collateral computation failed are excluded.
|
|
34
34
|
**/
|
|
35
35
|
async getLiquidatableAccounts(props) {
|
|
36
|
-
await this.sdk.withdrawalCompressor?.loadWithdrawableAssets(void 0, props?.blockNumber);
|
|
37
36
|
const unhealthy = await this.sdk.accounts.getCreditAccounts({
|
|
38
37
|
maxHealthFactor: require_sdk_constants_math.WAD - 1n,
|
|
39
38
|
includeZeroDebt: false
|
|
@@ -60,7 +59,6 @@ var LiquidationsService = class extends require_sdk_base_SDKConstruct.SDKConstru
|
|
|
60
59
|
const ca = await this.#getCreditAccountData(creditAccount, blockNumber);
|
|
61
60
|
const suite = this.sdk.marketRegister.findCreditManager(ca.creditManager);
|
|
62
61
|
const { priceOracle } = suite.market;
|
|
63
|
-
await this.sdk.withdrawalCompressor?.loadWithdrawableAssets(void 0, blockNumber);
|
|
64
62
|
const account = this.#buildAccount(ca, suite);
|
|
65
63
|
const data = await this.#getLiquidationData(ca, liquidator, ignoreReservePrices, blockNumber);
|
|
66
64
|
return {
|
|
@@ -97,7 +95,6 @@ var LiquidationsService = class extends require_sdk_base_SDKConstruct.SDKConstru
|
|
|
97
95
|
async getLiquidationPositions(props) {
|
|
98
96
|
const compressor = this.sdk.withdrawalCompressor;
|
|
99
97
|
if (!compressor) return [];
|
|
100
|
-
await compressor.loadWithdrawableAssets(void 0, props.blockNumber);
|
|
101
98
|
const phantomTokens = new require_sdk_utils_AddressSet.AddressSet(compressor.getWithdrawableAssets().map((a) => a.withdrawalPhantomToken));
|
|
102
99
|
const { claimable, pending } = await compressor.getExternalAccountCurrentWithdrawals({
|
|
103
100
|
account: props.liquidator,
|
|
@@ -4,8 +4,10 @@ require("../../constants/addresses.js");
|
|
|
4
4
|
require("../../constants/index.js");
|
|
5
5
|
const require_sdk_utils_hex = require("../../utils/hex.js");
|
|
6
6
|
require("../../utils/index.js");
|
|
7
|
+
const require_sdk_utils_viem_executeMulticallBatches = require("../../utils/viem/executeMulticallBatches.js");
|
|
7
8
|
const require_sdk_base_BaseContract = require("../../base/BaseContract.js");
|
|
8
9
|
require("../../base/index.js");
|
|
10
|
+
require("../../utils/viem/index.js");
|
|
9
11
|
const require_sdk_accounts_withdrawal_compressor_intent_codec = require("./intent-codec.js");
|
|
10
12
|
let viem = require("viem");
|
|
11
13
|
//#region src/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.ts
|
|
@@ -58,37 +60,46 @@ var AbstractWithdrawalCompressorContract = class extends require_sdk_base_BaseCo
|
|
|
58
60
|
**/
|
|
59
61
|
getWithdrawableAssets(...creditManagers) {
|
|
60
62
|
const cache = this.#withdrawableAssets;
|
|
61
|
-
if (!cache) throw new Error("withdrawable assets are not loaded,
|
|
63
|
+
if (!cache) throw new Error("withdrawable assets are not loaded, check if the sdk was properly attached or hydrated");
|
|
62
64
|
if (creditManagers.length === 0) return cache.values().flat();
|
|
63
65
|
return creditManagers.flatMap((cm) => cache.get(cm) ?? []);
|
|
64
66
|
}
|
|
65
67
|
/**
|
|
66
|
-
* {@inheritDoc IWithdrawalCompressorContract.
|
|
68
|
+
* {@inheritDoc IWithdrawalCompressorContract.getLoadWithdrawableAssetsMulticall}
|
|
67
69
|
**/
|
|
68
|
-
|
|
69
|
-
if (this.#withdrawableAssets && !force) return
|
|
70
|
+
getLoadWithdrawableAssetsMulticall(force) {
|
|
71
|
+
if (this.#withdrawableAssets && !force) return {
|
|
72
|
+
contracts: [],
|
|
73
|
+
onResults: () => {}
|
|
74
|
+
};
|
|
70
75
|
const cms = this.#sdk.marketRegister.creditManagers.map((cm) => cm.creditManager.address);
|
|
71
|
-
|
|
76
|
+
return {
|
|
72
77
|
contracts: cms.map((cm) => ({
|
|
73
78
|
address: this.address,
|
|
74
79
|
abi: this.abi,
|
|
75
80
|
functionName: "getWithdrawableAssets",
|
|
76
81
|
args: [cm]
|
|
77
82
|
})),
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
83
|
+
onResults: (resps) => {
|
|
84
|
+
const cache = new require_sdk_utils_AddressMap.AddressMap(void 0, MAP_LABEL);
|
|
85
|
+
for (let i = 0; i < resps.length; i++) {
|
|
86
|
+
const r = resps[i];
|
|
87
|
+
if (r.status !== "success") {
|
|
88
|
+
this.logger?.warn(`failed to get withdrawable assets of credit manager ${cms[i]}: ${r.error}`);
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
const assets = r.result;
|
|
92
|
+
if (assets.length > 0) cache.upsert(cms[i], assets.map((a) => toWithdrawableAsset(a, cms[i])));
|
|
93
|
+
}
|
|
94
|
+
this.#withdrawableAssets = cache;
|
|
88
95
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* {@inheritDoc IWithdrawalCompressorContract.loadWithdrawableAssets}
|
|
100
|
+
**/
|
|
101
|
+
async loadWithdrawableAssets(force, blockNumber) {
|
|
102
|
+
await require_sdk_utils_viem_executeMulticallBatches.executeMulticallBatches(this.client, [this.getLoadWithdrawableAssetsMulticall(force)], { blockNumber });
|
|
92
103
|
return this.getWithdrawableAssets();
|
|
93
104
|
}
|
|
94
105
|
/**
|
|
@@ -171,7 +171,7 @@ var BaseContract = class extends require_sdk_base_Construct.Construct {
|
|
|
171
171
|
name: decoded.functionName,
|
|
172
172
|
args: decoded.args
|
|
173
173
|
});
|
|
174
|
-
if (
|
|
174
|
+
if (abiItem?.type !== "function") return `Unknown function: ${decoded.functionName}`;
|
|
175
175
|
const params = this.stringifyFunctionParams(decoded).map((v, i) => `${abiItem.inputs[i].name}: ${v}`);
|
|
176
176
|
return `${this.name}.${decoded.functionName}({${params.join(", ")}})`;
|
|
177
177
|
}
|