@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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { chartBundleSchemaFor, chartQueryCodec } from "../model/charts.schema.js";
|
|
2
2
|
import { responseSchema } from "../model/response.schema.js";
|
|
3
3
|
import { OffchainInvalidJsonError } from "./errors/OffchainInvalidJsonError.js";
|
|
4
4
|
import { OffchainNotConfiguredError } from "./errors/OffchainNotConfiguredError.js";
|
|
@@ -64,14 +64,17 @@ var AbstractOffchainNamespace = class {
|
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
66
|
/**
|
|
67
|
-
* Reads
|
|
68
|
-
*
|
|
67
|
+
* Reads the charts of one subject: one series per metric named, onto the one
|
|
68
|
+
* grid that lets them be compared at an index.
|
|
69
69
|
**/
|
|
70
|
-
async
|
|
70
|
+
async readCharts(path, metrics, range) {
|
|
71
71
|
return this.get({
|
|
72
|
-
path
|
|
73
|
-
query:
|
|
74
|
-
|
|
72
|
+
path,
|
|
73
|
+
query: z.encode(chartQueryCodec, {
|
|
74
|
+
metrics,
|
|
75
|
+
range
|
|
76
|
+
}),
|
|
77
|
+
schema: chartBundleSchemaFor(metrics, range)
|
|
75
78
|
});
|
|
76
79
|
}
|
|
77
80
|
/**
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { OffchainNotices } from "./notices/OffchainNotices.js";
|
|
2
|
+
import "./notices/index.js";
|
|
1
3
|
import { OffchainOpportunities } from "./opportunities/OffchainOpportunities.js";
|
|
2
4
|
import "./opportunities/index.js";
|
|
3
5
|
import { OffchainPositions } from "./positions/OffchainPositions.js";
|
|
@@ -33,10 +35,15 @@ var GearboxAPI = class {
|
|
|
33
35
|
* Namespace for the positions a wallet holds.
|
|
34
36
|
**/
|
|
35
37
|
positions;
|
|
38
|
+
/**
|
|
39
|
+
* Namespace for the notices the backend attaches to entities.
|
|
40
|
+
**/
|
|
41
|
+
notices;
|
|
36
42
|
constructor(options) {
|
|
37
43
|
this.chainIds = [...options.chainIds];
|
|
38
44
|
this.opportunities = new OffchainOpportunities(options);
|
|
39
45
|
this.positions = new OffchainPositions(options);
|
|
46
|
+
this.notices = new OffchainNotices(options);
|
|
40
47
|
}
|
|
41
48
|
};
|
|
42
49
|
//#endregion
|
|
@@ -10,10 +10,12 @@ import { OffchainValidationError } from "./errors/OffchainValidationError.js";
|
|
|
10
10
|
import { readResponseBody } from "./errors/readResponseBody.js";
|
|
11
11
|
import "./errors/index.js";
|
|
12
12
|
import { AbstractOffchainNamespace } from "./AbstractOffchainNamespace.js";
|
|
13
|
+
import { OffchainNotices } from "./notices/OffchainNotices.js";
|
|
14
|
+
import "./notices/index.js";
|
|
13
15
|
import { OffchainOpportunities } from "./opportunities/OffchainOpportunities.js";
|
|
14
16
|
import "./opportunities/index.js";
|
|
15
17
|
import { OffchainPositions } from "./positions/OffchainPositions.js";
|
|
16
18
|
import "./positions/index.js";
|
|
17
19
|
import { GearboxAPI } from "./GearboxAPI.js";
|
|
18
20
|
import "./types.js";
|
|
19
|
-
export { AbstractOffchainNamespace, GearboxAPI, OffchainInvalidJsonError, OffchainNotConfiguredError, OffchainNotImplementedError, OffchainOpportunities, OffchainPositions, OffchainRequestFailedError, OffchainStatusError, OffchainTransportError, OffchainValidationError, backendMessage, errorCause, readResponseBody };
|
|
21
|
+
export { AbstractOffchainNamespace, GearboxAPI, OffchainInvalidJsonError, OffchainNotConfiguredError, OffchainNotImplementedError, OffchainNotices, OffchainOpportunities, OffchainPositions, OffchainRequestFailedError, OffchainStatusError, OffchainTransportError, OffchainValidationError, backendMessage, errorCause, readResponseBody };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { noticeSchema } from "../../model/notices.schema.js";
|
|
2
|
+
import { AbstractOffchainNamespace } from "../AbstractOffchainNamespace.js";
|
|
3
|
+
import { z } from "zod/v4";
|
|
4
|
+
//#region src/offchain/notices/OffchainNotices.ts
|
|
5
|
+
/**
|
|
6
|
+
* Backend counterpart of `sdk.notices`: banners the backend asks a consumer to
|
|
7
|
+
* show for one entity, see {@link Notice}.
|
|
8
|
+
**/
|
|
9
|
+
var OffchainNotices = class extends AbstractOffchainNamespace {
|
|
10
|
+
#root = "/v2/notices";
|
|
11
|
+
constructor(options) {
|
|
12
|
+
super("OffchainNotices", options);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The notices of one pool opportunity or one strategy position.
|
|
16
|
+
**/
|
|
17
|
+
async list(subject) {
|
|
18
|
+
const [kind, address] = subject.kind === "pool" ? ["pool", subject.pool] : ["strategy", subject.creditAccount];
|
|
19
|
+
return this.get({
|
|
20
|
+
path: `${this.#root}/${kind}/${subject.chainId}/${address}`,
|
|
21
|
+
schema: z.array(noticeSchema)
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
//#endregion
|
|
26
|
+
export { OffchainNotices };
|
|
@@ -43,14 +43,10 @@ var OffchainOpportunities = class extends AbstractOffchainNamespace {
|
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
46
|
+
* Charts of one opportunity: one series per metric, on a shared grid.
|
|
47
47
|
**/
|
|
48
|
-
async
|
|
49
|
-
return this.
|
|
50
|
-
path: `${this.#historyRoot(query.opportunity)}/history/${query.metric}`,
|
|
51
|
-
metric: query.metric,
|
|
52
|
-
range: query.range
|
|
53
|
-
});
|
|
48
|
+
async getCharts(key, metrics, range) {
|
|
49
|
+
return this.readCharts(`${this.#chartRoot(key)}/charts`, metrics, range);
|
|
54
50
|
}
|
|
55
51
|
#poolPath(key) {
|
|
56
52
|
return `${this.#root}/pools/${key.chainId}/${key.pool}`;
|
|
@@ -58,7 +54,7 @@ var OffchainOpportunities = class extends AbstractOffchainNamespace {
|
|
|
58
54
|
#strategyPath(key) {
|
|
59
55
|
return `${this.#root}/strategies/${key.chainId}/${key.creditManager}/${key.targetCollateral}`;
|
|
60
56
|
}
|
|
61
|
-
#
|
|
57
|
+
#chartRoot(key) {
|
|
62
58
|
return key.kind === "pool" ? this.#poolPath(key) : this.#strategyPath(key);
|
|
63
59
|
}
|
|
64
60
|
};
|
|
@@ -24,19 +24,19 @@ var OffchainPositions = class extends AbstractOffchainNamespace {
|
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* @returns An empty series until the backend client is implemented.
|
|
27
|
+
* Charts of one position: one series per metric, on a shared grid.
|
|
30
28
|
**/
|
|
31
|
-
async
|
|
32
|
-
return {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
29
|
+
async getCharts(key, metrics, range) {
|
|
30
|
+
return this.readCharts(`${this.#chartRoot(key)}/charts`, metrics, range);
|
|
31
|
+
}
|
|
32
|
+
#poolPath(key) {
|
|
33
|
+
return `${this.#root}/pool/${key.chainId}/${key.pool}/${key.wallet}`;
|
|
34
|
+
}
|
|
35
|
+
#strategyPath(key) {
|
|
36
|
+
return `${this.#root}/strategy/${key.chainId}/${key.creditAccount}`;
|
|
37
|
+
}
|
|
38
|
+
#chartRoot(key) {
|
|
39
|
+
return key.kind === "pool" ? this.#poolPath(key) : this.#strategyPath(key);
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
42
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AssetsMap } from "../../sdk/utils/AssetsMap.js";
|
|
2
|
-
import "../../sdk/constants/math.js";
|
|
2
|
+
import { DUST_THRESHOLD } from "../../sdk/constants/math.js";
|
|
3
3
|
import "../../sdk/index.js";
|
|
4
4
|
import { zeroAddress } from "viem";
|
|
5
5
|
//#region src/preview/preview/CreditAccountState.ts
|
|
@@ -78,6 +78,19 @@ var CreditAccountState = class CreditAccountState {
|
|
|
78
78
|
totalDebt: ca.debt + ca.accruedInterest + ca.accruedFees
|
|
79
79
|
});
|
|
80
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* Immutable snapshot of this projected state for `sdk.positions` metric
|
|
83
|
+
* methods: dust-filtered balances, all quotas, and {@link totalDebt}.
|
|
84
|
+
**/
|
|
85
|
+
toSnapshot(totalValue) {
|
|
86
|
+
return {
|
|
87
|
+
creditManager: this.creditManager,
|
|
88
|
+
assets: this.balances.toAssets(DUST_THRESHOLD),
|
|
89
|
+
quotas: this.quotas.toAssets(0n),
|
|
90
|
+
totalDebt: this.totalDebt,
|
|
91
|
+
totalValue
|
|
92
|
+
};
|
|
93
|
+
}
|
|
81
94
|
clone() {
|
|
82
95
|
return new CreditAccountState({
|
|
83
96
|
creditAccount: this.creditAccount,
|
|
@@ -25,8 +25,10 @@ import { isAddressEqual } from "viem";
|
|
|
25
25
|
* @param receivedToken - Token the `CLOSE_ACCOUNT` resume withdraws to the
|
|
26
26
|
* user: the unwrapped underlying (vault asset) for RWA markets, the
|
|
27
27
|
* underlying itself otherwise.
|
|
28
|
+
* @param sdk - Market data source for the position metrics of the resulting
|
|
29
|
+
* state; read synchronously, no network access.
|
|
28
30
|
*/
|
|
29
|
-
function buildDelayedPreview(afterInstant, before, detected, convert, receivedToken) {
|
|
31
|
+
function buildDelayedPreview(afterInstant, before, detected, convert, receivedToken, sdk) {
|
|
30
32
|
const { request, intent } = detected;
|
|
31
33
|
const post = afterInstant.clone();
|
|
32
34
|
const converter = makeSafeConverter(convert);
|
|
@@ -39,7 +41,7 @@ function buildDelayedPreview(afterInstant, before, detected, convert, receivedTo
|
|
|
39
41
|
break;
|
|
40
42
|
case "WITHDRAW_COLLATERAL": applyWithdrawCollateral(post, request, intent, converter, collateralWithdrawn);
|
|
41
43
|
}
|
|
42
|
-
return buildAdjustPreview(post, before, collateralWithdrawn, converter);
|
|
44
|
+
return buildAdjustPreview(post, before, collateralWithdrawn, converter, sdk);
|
|
43
45
|
}
|
|
44
46
|
function makeSafeConverter(convert) {
|
|
45
47
|
let error;
|
|
@@ -171,8 +173,11 @@ function buildClosePreview(post, converter, receivedToken) {
|
|
|
171
173
|
error: converter.error
|
|
172
174
|
};
|
|
173
175
|
}
|
|
174
|
-
function buildAdjustPreview(post, before, collateralWithdrawn, converter) {
|
|
176
|
+
function buildAdjustPreview(post, before, collateralWithdrawn, converter, sdk) {
|
|
175
177
|
const totalValue = totalValueInUnderlying(post, converter.convert, DUST_THRESHOLD);
|
|
178
|
+
const assets = post.balances.toAssets(DUST_THRESHOLD);
|
|
179
|
+
const quotas = post.quotas.toAssets(0n);
|
|
180
|
+
const snap = post.toSnapshot(totalValue);
|
|
176
181
|
return {
|
|
177
182
|
operation: "AdjustCreditAccount",
|
|
178
183
|
creditManager: post.creditManager,
|
|
@@ -182,11 +187,16 @@ function buildAdjustPreview(post, before, collateralWithdrawn, converter) {
|
|
|
182
187
|
totalValue,
|
|
183
188
|
debt: post.debt,
|
|
184
189
|
debtChange: post.debt - before.debt,
|
|
185
|
-
quotas
|
|
190
|
+
quotas,
|
|
186
191
|
quotasChange: post.quotas.difference(before.quotas).toAssets(),
|
|
187
|
-
assets
|
|
192
|
+
assets,
|
|
188
193
|
assetsChange: post.balances.difference(before.balances).toAssets(DUST_THRESHOLD),
|
|
189
|
-
error: converter.error
|
|
194
|
+
error: converter.error,
|
|
195
|
+
healthFactor: sdk.positions.healthFactor(snap),
|
|
196
|
+
overallApy: 0,
|
|
197
|
+
borrowRate: sdk.positions.borrowRate(snap),
|
|
198
|
+
timeToLiquidation: sdk.positions.timeToLiquidation(snap),
|
|
199
|
+
liquidationPrice: sdk.positions.liquidationPrice(snap)
|
|
190
200
|
};
|
|
191
201
|
}
|
|
192
202
|
//#endregion
|
|
@@ -21,6 +21,7 @@ async function previewAdjustCreditAccount(input, operation, options) {
|
|
|
21
21
|
const { assets: collateralAdded, error: unwrapError } = unwrapNativeCollateral(after.collateralAdded.toAssets(), value, sdk.addressProvider.getAddress(AP_WETH_TOKEN, 0));
|
|
22
22
|
error ??= unwrapError;
|
|
23
23
|
const assets = account.balances.toAssets(DUST_THRESHOLD);
|
|
24
|
+
const quotas = account.quotas.toAssets(0n);
|
|
24
25
|
const assetsChange = account.balances.difference(before.balances).toAssets(DUST_THRESHOLD);
|
|
25
26
|
const totalValue = assets.reduce((acc, { token, balance }) => {
|
|
26
27
|
try {
|
|
@@ -33,6 +34,7 @@ async function previewAdjustCreditAccount(input, operation, options) {
|
|
|
33
34
|
return acc;
|
|
34
35
|
}
|
|
35
36
|
}, 0n);
|
|
37
|
+
const snap = account.toSnapshot(totalValue);
|
|
36
38
|
return {
|
|
37
39
|
operation: "AdjustCreditAccount",
|
|
38
40
|
creditManager: operation.creditManager,
|
|
@@ -42,11 +44,16 @@ async function previewAdjustCreditAccount(input, operation, options) {
|
|
|
42
44
|
totalValue,
|
|
43
45
|
debt: account.debt,
|
|
44
46
|
debtChange: account.debt - before.debt,
|
|
45
|
-
quotas
|
|
47
|
+
quotas,
|
|
46
48
|
quotasChange: account.quotas.difference(before.quotas).toAssets(),
|
|
47
49
|
assets,
|
|
48
50
|
assetsChange,
|
|
49
|
-
error
|
|
51
|
+
error,
|
|
52
|
+
healthFactor: sdk.positions.healthFactor(snap),
|
|
53
|
+
overallApy: 0,
|
|
54
|
+
borrowRate: sdk.positions.borrowRate(snap),
|
|
55
|
+
timeToLiquidation: sdk.positions.timeToLiquidation(snap),
|
|
56
|
+
liquidationPrice: sdk.positions.liquidationPrice(snap)
|
|
50
57
|
};
|
|
51
58
|
}
|
|
52
59
|
//#endregion
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AP_WETH_TOKEN } from "../../sdk/constants/address-provider.js";
|
|
2
|
+
import { DUST_THRESHOLD } from "../../sdk/constants/math.js";
|
|
2
3
|
import "../../sdk/index.js";
|
|
3
4
|
import { ERROR_UNPRICEABLE_TOKEN } from "./types.js";
|
|
4
5
|
import { CreditAccountState } from "./CreditAccountState.js";
|
|
@@ -25,7 +26,9 @@ async function previewOpenCreditAccount(input, operation) {
|
|
|
25
26
|
});
|
|
26
27
|
const { assets: collateral, error: unwrapError } = unwrapNativeCollateral(state.collateralAdded.toAssets(), value, sdk.addressProvider.getAddress(AP_WETH_TOKEN, 0));
|
|
27
28
|
error ??= unwrapError ?? priceError;
|
|
28
|
-
const assets = account.balances.toAssets(
|
|
29
|
+
const assets = account.balances.toAssets(DUST_THRESHOLD);
|
|
30
|
+
const quotas = account.quotas.toAssets(0n);
|
|
31
|
+
const snap = account.toSnapshot(collateralValue + account.totalDebt);
|
|
29
32
|
return {
|
|
30
33
|
operation: operation.operation,
|
|
31
34
|
creditManager: operation.creditManager,
|
|
@@ -33,9 +36,14 @@ async function previewOpenCreditAccount(input, operation) {
|
|
|
33
36
|
collateral,
|
|
34
37
|
collateralValue,
|
|
35
38
|
debt: account.debt,
|
|
36
|
-
quotas
|
|
39
|
+
quotas,
|
|
37
40
|
assets,
|
|
38
|
-
error
|
|
41
|
+
error,
|
|
42
|
+
healthFactor: sdk.positions.healthFactor(snap),
|
|
43
|
+
overallApy: 0,
|
|
44
|
+
borrowRate: sdk.positions.borrowRate(snap),
|
|
45
|
+
timeToLiquidation: sdk.positions.timeToLiquidation(snap),
|
|
46
|
+
liquidationPrice: sdk.positions.liquidationPrice(snap)
|
|
39
47
|
};
|
|
40
48
|
}
|
|
41
49
|
/**
|
|
@@ -69,7 +69,7 @@ async function previewMulticallOperation(input, operation, options) {
|
|
|
69
69
|
creditManager: operation.creditManager,
|
|
70
70
|
intent: delayed.intent,
|
|
71
71
|
instantPreview,
|
|
72
|
-
delayedPreview: buildDelayedPreview(after.account, before, delayed, convert, receivedToken)
|
|
72
|
+
delayedPreview: buildDelayedPreview(after.account, before, delayed, convert, receivedToken, sdk)
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
75
|
//#endregion
|
|
@@ -68,7 +68,6 @@ var MultichainSDK = class {
|
|
|
68
68
|
const perChainOpts = options?.perChain?.[network] ?? {};
|
|
69
69
|
return sdk.attach({
|
|
70
70
|
...perChainOpts,
|
|
71
|
-
loadZappers: perChainOpts.loadZappers ?? options?.loadZappers,
|
|
72
71
|
redstone: {
|
|
73
72
|
...options?.redstone,
|
|
74
73
|
cache: this.#redstoneCache,
|
|
@@ -88,7 +87,7 @@ var MultichainSDK = class {
|
|
|
88
87
|
* state and `allowMissingChains` is not set.
|
|
89
88
|
*/
|
|
90
89
|
hydrate(state, options) {
|
|
91
|
-
if (state.version !==
|
|
90
|
+
if (state.version !== 2) throw new SdkStateVersionMismatchError(2, state.version);
|
|
92
91
|
if (options?.redstone) this.#redstoneCache = new PriceUpdatesCache({
|
|
93
92
|
ttl: options.redstone.cacheTTL ?? 225e3,
|
|
94
93
|
historical: !!options.redstone.historicTimestamp
|
|
@@ -168,7 +167,7 @@ var MultichainSDK = class {
|
|
|
168
167
|
**/
|
|
169
168
|
get state() {
|
|
170
169
|
return {
|
|
171
|
-
version:
|
|
170
|
+
version: 2,
|
|
172
171
|
chains: [...this.#chains.values()].map((sdk) => sdk.state)
|
|
173
172
|
};
|
|
174
173
|
}
|
|
@@ -178,7 +177,7 @@ var MultichainSDK = class {
|
|
|
178
177
|
*/
|
|
179
178
|
stateHuman(raw) {
|
|
180
179
|
return {
|
|
181
|
-
version:
|
|
180
|
+
version: 2,
|
|
182
181
|
chains: [...this.#chains.values()].map((sdk) => sdk.stateHuman(raw))
|
|
183
182
|
};
|
|
184
183
|
}
|
|
@@ -7,6 +7,7 @@ import "./constants/index.js";
|
|
|
7
7
|
import { formatTimestamp } from "./utils/formatter.js";
|
|
8
8
|
import { toAddress } from "./utils/toAddress.js";
|
|
9
9
|
import "./utils/index.js";
|
|
10
|
+
import { executeMulticallBatches } from "./utils/viem/executeMulticallBatches.js";
|
|
10
11
|
import { ChainContractsRegister } from "./base/ChainContractsRegister.js";
|
|
11
12
|
import "./base/index.js";
|
|
12
13
|
import { executeDelegatedMulticalls } from "./utils/viem/executeDelegatedMulticalls.js";
|
|
@@ -40,7 +41,7 @@ import { createPublicClient, fallback, http, parseEventLogs } from "viem";
|
|
|
40
41
|
* Serialised state format version, checked during hydration to detect
|
|
41
42
|
* incompatible snapshots.
|
|
42
43
|
**/
|
|
43
|
-
const STATE_VERSION =
|
|
44
|
+
const STATE_VERSION = 2;
|
|
44
45
|
/**
|
|
45
46
|
* @internal
|
|
46
47
|
* Creates a viem `PublicClient` from the given connection options.
|
|
@@ -150,7 +151,7 @@ var OnchainSDK = class extends ChainContractsRegister {
|
|
|
150
151
|
*/
|
|
151
152
|
async attach(options) {
|
|
152
153
|
if (this.#attached) throw new SdkAlreadyAttachedError();
|
|
153
|
-
const { addressProvider = ADDRESS_PROVIDER_V310, blockNumber, ignoreUpdateablePrices, ignoreMarkets, marketConfigurators: mcs, redstone
|
|
154
|
+
const { addressProvider = ADDRESS_PROVIDER_V310, blockNumber, ignoreUpdateablePrices, ignoreMarkets, marketConfigurators: mcs, redstone } = options ?? {};
|
|
154
155
|
const marketConfigurators = mcs ?? TypedObjectUtils.keys(this.client.chain.defaultMarketConfigurators);
|
|
155
156
|
const rwaFactories = options?.rwaFactories ?? this.client.chain.rwaFactories;
|
|
156
157
|
this.logger?.info({
|
|
@@ -174,19 +175,15 @@ var OnchainSDK = class extends ChainContractsRegister {
|
|
|
174
175
|
this.#marketRegister = new MarketRegister(this, ignoreMarkets);
|
|
175
176
|
if (!marketConfigurators.length) this.logger?.warn("no market configurators provided, skipping market loading");
|
|
176
177
|
else {
|
|
178
|
+
const priceUpdates = await this.#getPriceUpdateTxs(marketConfigurators, ignoreUpdateablePrices);
|
|
179
|
+
this.logger?.debug({ configurators: marketConfigurators }, `calling getMarkets with ${priceUpdates.length} price updates in block ${this.currentBlock}`);
|
|
177
180
|
const delegated = [...this.#marketRegister.getLoadMulticalls(marketConfigurators), ...this.#rwa.getLoadMulticalls(marketConfigurators, rwaFactories)];
|
|
178
|
-
let txs = [];
|
|
179
|
-
if (!ignoreUpdateablePrices) {
|
|
180
|
-
const updatables = await this.#priceFeeds.getPartialUpdatablePriceFeeds(marketConfigurators);
|
|
181
|
-
txs = (await this.#priceFeeds.generatePriceFeedsUpdateTxs(updatables)).txs;
|
|
182
|
-
}
|
|
183
|
-
this.logger?.debug({ configurators: marketConfigurators }, `calling getMarkets with ${txs.length} price updates in block ${this.currentBlock}`);
|
|
184
181
|
await executeDelegatedMulticalls(this.client, delegated, {
|
|
185
|
-
priceUpdates
|
|
182
|
+
priceUpdates,
|
|
186
183
|
blockNumber: this.currentBlock,
|
|
187
184
|
gas: this.gasLimit
|
|
188
185
|
});
|
|
189
|
-
|
|
186
|
+
await this.#warmup();
|
|
190
187
|
}
|
|
191
188
|
const pluginsList = TypedObjectUtils.entries(this.plugins);
|
|
192
189
|
(await Promise.allSettled(pluginsList.map(([name, plugin]) => {
|
|
@@ -203,6 +200,36 @@ var OnchainSDK = class extends ChainContractsRegister {
|
|
|
203
200
|
this.#attached = true;
|
|
204
201
|
}
|
|
205
202
|
/**
|
|
203
|
+
* @internal
|
|
204
|
+
* Pass 0 of attach: resolves the price updates that the market reads of
|
|
205
|
+
* pass 1 are simulated with.
|
|
206
|
+
*
|
|
207
|
+
* @param configurators - Market configurators whose feeds are considered.
|
|
208
|
+
* @param ignoreUpdateablePrices - When `true`, no updates are fetched.
|
|
209
|
+
**/
|
|
210
|
+
async #getPriceUpdateTxs(configurators, ignoreUpdateablePrices) {
|
|
211
|
+
if (ignoreUpdateablePrices) return [];
|
|
212
|
+
const updatables = await this.priceFeeds.getPartialUpdatablePriceFeeds(configurators);
|
|
213
|
+
const { txs } = await this.priceFeeds.generatePriceFeedsUpdateTxs(updatables);
|
|
214
|
+
return txs;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* @internal
|
|
218
|
+
* Pass 2 of attach: loads the data that is read synchronously afterwards
|
|
219
|
+
* (zappers, withdrawable assets, extended token data) in a single multicall.
|
|
220
|
+
*
|
|
221
|
+
* Also re-run after a sync that reloaded the markets these caches derive from.
|
|
222
|
+
*
|
|
223
|
+
* @param force - Reload caches that are already populated.
|
|
224
|
+
**/
|
|
225
|
+
async #warmup(force = false) {
|
|
226
|
+
await executeMulticallBatches(this.client, [
|
|
227
|
+
this.marketRegister.getLoadZappersMulticall(force),
|
|
228
|
+
...this.#withdrawalCompressor ? [this.#withdrawalCompressor.getLoadWithdrawableAssetsMulticall(force)] : [],
|
|
229
|
+
this.tokensMeta.getLoadTokenDataMulticall()
|
|
230
|
+
], { blockNumber: this.currentBlock });
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
206
233
|
* Restores SDK state from a previously serialised {@link GearboxState}
|
|
207
234
|
* snapshot, without making any on-chain calls.
|
|
208
235
|
*
|
|
@@ -214,7 +241,7 @@ var OnchainSDK = class extends ChainContractsRegister {
|
|
|
214
241
|
*/
|
|
215
242
|
hydrate(state, options) {
|
|
216
243
|
if (this.#attached) throw new SdkAlreadyAttachedError();
|
|
217
|
-
if (state.version !==
|
|
244
|
+
if (state.version !== 2) throw new SdkStateVersionMismatchError(2, state.version);
|
|
218
245
|
if (state.network !== this.networkType) throw new SdkChainMismatchError(this.networkType, state.network);
|
|
219
246
|
const { ignoreMarkets, redstone } = options ?? {};
|
|
220
247
|
this.logger?.info({ networkType: this.networkType }, "hydrating sdk state");
|
|
@@ -228,6 +255,7 @@ var OnchainSDK = class extends ChainContractsRegister {
|
|
|
228
255
|
this.#rwa = new RWARegistry(this);
|
|
229
256
|
this.#rwa.setState(state.rwa);
|
|
230
257
|
if (state.withdrawals) this.#withdrawalCompressor?.hydrate(state.withdrawals);
|
|
258
|
+
if (state.tokens) this.tokensMeta.hydrate(state.tokens);
|
|
231
259
|
for (const [name, plugin] of TypedObjectUtils.entries(this.plugins)) {
|
|
232
260
|
const pluginState = state.plugins[name];
|
|
233
261
|
if (plugin.hydrate && pluginState) {
|
|
@@ -273,13 +301,14 @@ var OnchainSDK = class extends ChainContractsRegister {
|
|
|
273
301
|
/** Serialisable snapshot of the current SDK state. */
|
|
274
302
|
get state() {
|
|
275
303
|
return {
|
|
276
|
-
version:
|
|
304
|
+
version: 2,
|
|
277
305
|
network: this.networkType,
|
|
278
306
|
chainId: this.chainId,
|
|
279
307
|
currentBlock: this.currentBlock,
|
|
280
308
|
timestamp: this.timestamp,
|
|
281
309
|
addressProvider: this.addressProvider.state,
|
|
282
310
|
...this.marketRegister.state,
|
|
311
|
+
tokens: this.tokensMeta.state,
|
|
283
312
|
rwa: this.#rwa.state,
|
|
284
313
|
withdrawals: this.#withdrawalCompressor?.state,
|
|
285
314
|
plugins: Object.fromEntries(TypedObjectUtils.entries(this.plugins).map(([name, plugin]) => [name, plugin.loaded ? {
|
|
@@ -338,7 +367,7 @@ var OnchainSDK = class extends ChainContractsRegister {
|
|
|
338
367
|
}
|
|
339
368
|
this.#currentBlock = blockNumber;
|
|
340
369
|
this.#timestamp = timestamp;
|
|
341
|
-
await this.marketRegister.syncState(ignoreUpdateablePrices);
|
|
370
|
+
if (await this.marketRegister.syncState(ignoreUpdateablePrices, this.#rwa.getSyncMulticalls())) await this.#warmup(true);
|
|
342
371
|
const pluginsList = TypedObjectUtils.entries(this.plugins);
|
|
343
372
|
(await Promise.allSettled(pluginsList.map(([name, plugin]) => {
|
|
344
373
|
if (plugin.syncState) {
|
|
@@ -56,12 +56,6 @@ var CreditAccountsServiceV310 = class extends SDKConstruct {
|
|
|
56
56
|
return this.#compressor.getBorrowerCreditAccounts(borrower, options, blockNumber);
|
|
57
57
|
}
|
|
58
58
|
/**
|
|
59
|
-
* {@inheritDoc ICreditAccountsService.listPositions}
|
|
60
|
-
**/
|
|
61
|
-
async listPositions(props) {
|
|
62
|
-
return this.#compressor.listPositions(props);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
59
|
* {@inheritDoc ICreditAccountsService.getRewards}
|
|
66
60
|
**/
|
|
67
61
|
async getRewards(creditAccount) {
|
|
@@ -382,7 +376,7 @@ var CreditAccountsServiceV310 = class extends SDKConstruct {
|
|
|
382
376
|
calls.push(facade.prepareIncreaseDebt(op.amount));
|
|
383
377
|
break;
|
|
384
378
|
case "decreaseDebt":
|
|
385
|
-
calls.push(facade.prepareChangeDebt(op.amount, true));
|
|
379
|
+
calls.push(op.full ? facade.prepareDecreaseDebtFull() : facade.prepareChangeDebt(op.amount, true));
|
|
386
380
|
break;
|
|
387
381
|
case "addCollateral":
|
|
388
382
|
calls.push(...facade.prepareAddCollateral([{
|
|
@@ -391,7 +385,7 @@ var CreditAccountsServiceV310 = class extends SDKConstruct {
|
|
|
391
385
|
}], {}));
|
|
392
386
|
break;
|
|
393
387
|
case "withdrawCollateral":
|
|
394
|
-
calls.push(facade.prepareWithdrawCollateral(op.token, op.amount, op.to));
|
|
388
|
+
calls.push(facade.prepareWithdrawCollateral(op.token, op.all ? MAX_UINT256 : op.amount, op.to));
|
|
395
389
|
break;
|
|
396
390
|
case "swap":
|
|
397
391
|
case "wrapRwaCollateral":
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { AddressMap } from "../../utils/AddressMap.js";
|
|
2
1
|
import { AddressSet } from "../../utils/AddressSet.js";
|
|
3
2
|
import { AP_CREDIT_ACCOUNT_COMPRESSOR } from "../../constants/address-provider.js";
|
|
4
3
|
import { ADDRESS_0X0 } from "../../constants/addresses.js";
|
|
@@ -9,11 +8,8 @@ import { hexEq } from "../../utils/hex.js";
|
|
|
9
8
|
import "../../utils/index.js";
|
|
10
9
|
import { SDKConstruct } from "../../base/SDKConstruct.js";
|
|
11
10
|
import "../../base/index.js";
|
|
12
|
-
import { borrowApyBps, healthFactorBps, positionLeverage, usdToNumber } from "../../market/math.js";
|
|
13
|
-
import { dominantCollateral } from "../../market/credit/dominantCollateral.js";
|
|
14
11
|
import { simulateWithPriceUpdates } from "../../utils/viem/simulateWithPriceUpdates.js";
|
|
15
12
|
import "../../utils/viem/index.js";
|
|
16
|
-
import "../../market/index.js";
|
|
17
13
|
import { iRWAFactoryAbi } from "../../../abi/rwa/iRWAFactory.js";
|
|
18
14
|
import { CreditAccountCompressorV310Contract } from "./CreditAccountCompressorV310Contract.js";
|
|
19
15
|
//#region src/sdk/accounts/credit-account-compressor/CreditAccountCompressor.ts
|
|
@@ -21,9 +17,8 @@ import { CreditAccountCompressorV310Contract } from "./CreditAccountCompressorV3
|
|
|
21
17
|
* Reads credit accounts of the current chain.
|
|
22
18
|
*
|
|
23
19
|
* Stitches the credit account compressor together with the RWA factories (for
|
|
24
|
-
* accounts owned via an investor EOA) and
|
|
25
|
-
*
|
|
26
|
-
* either as raw account data or as {@link StrategyPosition}s.
|
|
20
|
+
* accounts owned via an investor EOA), and describes the result as raw
|
|
21
|
+
* account data.
|
|
27
22
|
*
|
|
28
23
|
* TODO: create and deploy new compressor contract onchain to avoid all this stitching
|
|
29
24
|
**/
|
|
@@ -173,89 +168,6 @@ var CreditAccountCompressor = class extends SDKConstruct {
|
|
|
173
168
|
return filtered.sort((a, b) => Number(a.healthFactor - b.healthFactor));
|
|
174
169
|
}
|
|
175
170
|
/**
|
|
176
|
-
* Describes all credit accounts of a wallet as strategy positions.
|
|
177
|
-
*
|
|
178
|
-
* @param props - {@link ListStrategyPositionsProps}
|
|
179
|
-
**/
|
|
180
|
-
async listPositions(props) {
|
|
181
|
-
const { owner, includeZeroDebt, blockNumber } = props;
|
|
182
|
-
const [accounts] = await Promise.all([this.getBorrowerCreditAccounts(owner, { includeZeroDebt }, blockNumber), this.sdk.withdrawalCompressor?.loadWithdrawableAssets(void 0, blockNumber)]);
|
|
183
|
-
const describable = accounts.filter((ca) => {
|
|
184
|
-
if (!ca.success) this.logger?.warn(`cannot describe position of ${this.labelAddress(ca.creditAccount)}: collateral computation failed`);
|
|
185
|
-
return ca.success;
|
|
186
|
-
});
|
|
187
|
-
const withdrawals = await Promise.all(describable.map((ca) => this.#accountWithdrawals(ca, blockNumber)));
|
|
188
|
-
return describable.map((ca, i) => this.#toStrategyPosition(ca, withdrawals[i] ?? new AddressMap()));
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Builds one strategy position from an account snapshot.
|
|
192
|
-
*
|
|
193
|
-
* @param withdrawals - Delayed withdrawals of the account, keyed by the
|
|
194
|
-
* phantom token that represents them on it.
|
|
195
|
-
**/
|
|
196
|
-
#toStrategyPosition(ca, withdrawals) {
|
|
197
|
-
const suite = this.sdk.marketRegister.findCreditManager(ca.creditManager);
|
|
198
|
-
const { market } = suite;
|
|
199
|
-
const { priceOracle } = market;
|
|
200
|
-
const { pool } = market.pool;
|
|
201
|
-
const token = this.sdk.tokensMeta.mustGetToken(market.unwrappedUnderlying);
|
|
202
|
-
const totalDebtValue = ca.debt + ca.accruedInterest + ca.accruedFees;
|
|
203
|
-
const collateral = dominantCollateral(ca, market);
|
|
204
|
-
return {
|
|
205
|
-
kind: "strategy",
|
|
206
|
-
chainId: this.sdk.chainId,
|
|
207
|
-
creditManager: ca.creditManager,
|
|
208
|
-
creditAccount: ca.creditAccount,
|
|
209
|
-
name: collateral ? suite.strategyName(collateral) : token.symbol,
|
|
210
|
-
targetCollateral: collateral ? this.sdk.tokensMeta.mustGetToken(collateral) : null,
|
|
211
|
-
leverage: positionLeverage(totalDebtValue, ca.totalValue),
|
|
212
|
-
borrowApy: borrowApyBps(pool.baseInterestRate, suite.creditManager.feeInterest),
|
|
213
|
-
totalDebt: {
|
|
214
|
-
token,
|
|
215
|
-
value: totalDebtValue,
|
|
216
|
-
valueUsd: usdToNumber(ca.totalDebtUSD)
|
|
217
|
-
},
|
|
218
|
-
totalValue: {
|
|
219
|
-
token,
|
|
220
|
-
value: ca.totalValue,
|
|
221
|
-
valueUsd: usdToNumber(ca.totalValueUSD)
|
|
222
|
-
},
|
|
223
|
-
healthFactor: healthFactorBps(ca.healthFactor),
|
|
224
|
-
collaterals: ca.tokens.flatMap((t) => {
|
|
225
|
-
if ((t.mask & ca.enabledTokensMask) === 0n || t.balance <= 10n) return [];
|
|
226
|
-
return [{
|
|
227
|
-
collateral: priceOracle.toTokenAmount(t.token, t.balance),
|
|
228
|
-
quota: priceOracle.toTokenAmount(market.underlying, t.quota),
|
|
229
|
-
withdrawals: withdrawals.get(t.token) ?? []
|
|
230
|
-
}];
|
|
231
|
-
})
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Delayed withdrawals of one account, keyed by the phantom token that
|
|
236
|
-
* represents them on it, so that each collateral row can pick up its own.
|
|
237
|
-
**/
|
|
238
|
-
async #accountWithdrawals(ca, blockNumber) {
|
|
239
|
-
const compressor = this.sdk.withdrawalCompressor;
|
|
240
|
-
const byPhantomToken = new AddressMap(void 0, "accountWithdrawals");
|
|
241
|
-
const holdsPhantomToken = ca.tokens.some((t) => t.balance > 10n && compressor?.getWithdrawalSourceToken(t.token) !== void 0);
|
|
242
|
-
if (!compressor || !holdsPhantomToken) return byPhantomToken;
|
|
243
|
-
const { priceOracle } = this.sdk.marketRegister.findByCreditManager(ca.creditManager);
|
|
244
|
-
const { claimable, pending } = await compressor.getCurrentWithdrawals(ca.creditAccount, blockNumber);
|
|
245
|
-
const add = (w, outputs, claimableAt) => {
|
|
246
|
-
const assets = outputs.map((o) => ({
|
|
247
|
-
isDelayed: true,
|
|
248
|
-
...priceOracle.toTokenAmount(o.token, o.amount),
|
|
249
|
-
redeemer: w.redeemer,
|
|
250
|
-
claimableAt: claimableAt === void 0 ? void 0 : Number(claimableAt)
|
|
251
|
-
}));
|
|
252
|
-
byPhantomToken.upsert(w.withdrawalPhantomToken, [...byPhantomToken.get(w.withdrawalPhantomToken) ?? [], ...assets]);
|
|
253
|
-
};
|
|
254
|
-
for (const w of claimable) add(w, w.outputs);
|
|
255
|
-
for (const w of pending) add(w, w.expectedOutputs, w.claimableAt);
|
|
256
|
-
return byPhantomToken;
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
171
|
* Credit account compressor contract of the current chain.
|
|
260
172
|
*
|
|
261
173
|
* Resolved on every access, because the address provider is only populated
|
|
@@ -5,7 +5,8 @@ import { CreditAccountCompressorV310Contract } from "./credit-account-compressor
|
|
|
5
5
|
import { CreditAccountCompressor } from "./credit-account-compressor/CreditAccountCompressor.js";
|
|
6
6
|
import "./credit-account-compressor/index.js";
|
|
7
7
|
import { CreditAccountsServiceV310 } from "./CreditAccountsServiceV310.js";
|
|
8
|
-
import {
|
|
8
|
+
import { IntentPreviewError } from "./intents/types.js";
|
|
9
|
+
import { fetchCreditAccountSlice, toCreditAccountSlice } from "./intents/utils/credit-account-slice.js";
|
|
9
10
|
import { CreditAccountOperationsService } from "./intents/index.js";
|
|
10
11
|
import { LIQUIDATION_APPROVAL_BUFFER, LIQUIDATION_COMPRESSOR_V313_ADDRESS } from "./liquidations/constants.js";
|
|
11
12
|
import { LiquidationsService } from "./liquidations/LiquidationsService.js";
|
|
@@ -24,4 +25,4 @@ import { toWithdrawalStatus } from "./withdrawal-compressor/types.js";
|
|
|
24
25
|
import { WithdrawalCompressorV313Contract } from "./withdrawal-compressor/WithdrawalCompressorV313Contract.js";
|
|
25
26
|
import { createWithdrawalCompressor } from "./withdrawal-compressor/createWithdrawalCompressor.js";
|
|
26
27
|
import "./withdrawal-compressor/index.js";
|
|
27
|
-
export { AbstractWithdrawalCompressorContract, AccountBotsService, CreditAccountCompressor, CreditAccountCompressorV310Contract, CreditAccountOperationsService, CreditAccountsServiceV310, DELAYED_INTENT_TYPES, DELAYED_INTENT_VERSION, InvalidDelayedIntentError, LIQUIDATION_APPROVAL_BUFFER, LIQUIDATION_COMPRESSOR_V313_ADDRESS, LiquidationsService, MultichainLiquidationsService, PeripheryCompressorV310Contract, RedemptionLoggerV310Contract, WithdrawalCompressorV310Contract, WithdrawalCompressorV311Contract, WithdrawalCompressorV313Contract, createRedemptionLogger, createWithdrawalCompressor, decodeDelayedIntent, encodeDelayedIntent, getWithdrawalCompressorAddress, iCreditAccountAbi,
|
|
28
|
+
export { AbstractWithdrawalCompressorContract, AccountBotsService, CreditAccountCompressor, CreditAccountCompressorV310Contract, CreditAccountOperationsService, CreditAccountsServiceV310, DELAYED_INTENT_TYPES, DELAYED_INTENT_VERSION, IntentPreviewError, InvalidDelayedIntentError, LIQUIDATION_APPROVAL_BUFFER, LIQUIDATION_COMPRESSOR_V313_ADDRESS, LiquidationsService, MultichainLiquidationsService, PeripheryCompressorV310Contract, RedemptionLoggerV310Contract, WithdrawalCompressorV310Contract, WithdrawalCompressorV311Contract, WithdrawalCompressorV313Contract, createRedemptionLogger, createWithdrawalCompressor, decodeDelayedIntent, encodeDelayedIntent, fetchCreditAccountSlice, getWithdrawalCompressorAddress, iCreditAccountAbi, toClaimableWithdrawal, toCreditAccountSlice, toPendingWithdrawal, toRequestableWithdrawal, toWithdrawalStatus };
|