@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
|
@@ -6,11 +6,12 @@ import "../../constants/index.js";
|
|
|
6
6
|
import "../../utils/index.js";
|
|
7
7
|
import { SDKConstruct } from "../../base/SDKConstruct.js";
|
|
8
8
|
import "../../base/index.js";
|
|
9
|
-
import {
|
|
9
|
+
import { calcAdditionalBorrowApy, calcBorrowApy, minSeizedAmount, optimalHFForPartialLiquidation, optimalRepaidAmount } from "../math.js";
|
|
10
10
|
import createCreditConfigurator from "./createCreditConfigurator.js";
|
|
11
11
|
import createCreditFacade from "./createCreditFacade.js";
|
|
12
12
|
import createCreditManager from "./createCreditManager.js";
|
|
13
13
|
import { mustGetDominantCollateral } from "./dominantCollateral.js";
|
|
14
|
+
import { isStrategyCollateral } from "./isStrategyCollateral.js";
|
|
14
15
|
//#region src/sdk/market/credit/CreditSuite.ts
|
|
15
16
|
/**
|
|
16
17
|
* SDK aggregate for one credit-manager branch inside a market.
|
|
@@ -170,13 +171,31 @@ var CreditSuite = class extends SDKConstruct {
|
|
|
170
171
|
return this.creditFacade.isPaused || this.market.pool.isPaused;
|
|
171
172
|
}
|
|
172
173
|
/**
|
|
173
|
-
* Collateral tokens a leveraged position can be built around in this suite
|
|
174
|
-
*
|
|
175
|
-
*
|
|
174
|
+
* Collateral tokens a leveraged position can be built around in this suite,
|
|
175
|
+
* see {@link isStrategyCollateral} for the per-token criteria.
|
|
176
|
+
*
|
|
177
|
+
* A suite where no debt can be drawn at all ({@link maxBorrowAmount} is `0`,
|
|
178
|
+
* e.g. its debt limit is exhausted or zeroed out) offers no strategies,
|
|
179
|
+
* whatever its collaterals are.
|
|
176
180
|
*/
|
|
177
181
|
get strategyCollaterals() {
|
|
178
|
-
|
|
179
|
-
|
|
182
|
+
if (this.maxBorrowAmount === 0n) return [];
|
|
183
|
+
const { pqk, unwrappedUnderlying } = this.market.pool;
|
|
184
|
+
const { mainPrices } = this.market.priceOracle;
|
|
185
|
+
const { tokensMeta, creditManager } = this;
|
|
186
|
+
return creditManager.collateralTokens.filter((token) => {
|
|
187
|
+
const meta = tokensMeta.mustGet(token);
|
|
188
|
+
return isStrategyCollateral({
|
|
189
|
+
token,
|
|
190
|
+
underlying: creditManager.underlying,
|
|
191
|
+
unwrappedUnderlying,
|
|
192
|
+
liquidationThreshold: creditManager.liquidationThresholds.mustGet(token),
|
|
193
|
+
contractType: meta.contractType,
|
|
194
|
+
isExpired: meta.isExpired,
|
|
195
|
+
mainPrice: mainPrices.get(token)?.price,
|
|
196
|
+
hasActiveQuota: pqk.hasActiveQuota(token)
|
|
197
|
+
});
|
|
198
|
+
});
|
|
180
199
|
}
|
|
181
200
|
/**
|
|
182
201
|
* Largest debt a single new position can take on right now: the tightest of
|
|
@@ -220,16 +239,16 @@ var CreditSuite = class extends SDKConstruct {
|
|
|
220
239
|
curator: market.curator,
|
|
221
240
|
underlyingToken: market.underlyingToken,
|
|
222
241
|
totalBorrow: oracle.toAmount(pool.underlying, borrowed),
|
|
223
|
-
collateralTokens:
|
|
242
|
+
collateralTokens: this.strategyCollaterals.map((t) => this.tokensMeta.mustGetToken(t)),
|
|
224
243
|
paused: this.isPaused,
|
|
225
244
|
rwa: market.rwa,
|
|
226
|
-
sunset: isSunsetStrategy(cm.address, collateral, this.sdk.networkType),
|
|
245
|
+
sunset: market.sunset || isSunsetStrategy(cm.address, collateral, this.sdk.networkType),
|
|
227
246
|
liquidationThreshold,
|
|
228
247
|
liquidationPremium: cm.liquidationPremium,
|
|
229
248
|
liquidationFee: cm.feeLiquidation,
|
|
230
249
|
expirationDate: this.expirationDate,
|
|
231
|
-
borrowApy:
|
|
232
|
-
additionalBorrowApy:
|
|
250
|
+
borrowApy: calcBorrowApy(pool.baseInterestRate, cm.feeInterest),
|
|
251
|
+
additionalBorrowApy: calcAdditionalBorrowApy(market.pool.pqk.quotaRate(collateral), cm.feeInterest, maxLeverage),
|
|
233
252
|
maxBorrowAmount: oracle.toAmount(pool.underlying, this.maxBorrowAmount),
|
|
234
253
|
maxLeverage
|
|
235
254
|
};
|
|
@@ -3,7 +3,8 @@ import { CreditFacadeV310BaseContract, creditFacadeV310Abi as abi } from "./Cred
|
|
|
3
3
|
import { CreditFacadeV310Contract } from "./CreditFacadeV310Contract.js";
|
|
4
4
|
import { CreditManagerV310Contract } from "./CreditManagerV310Contract.js";
|
|
5
5
|
import { dominantCollateral, mustGetDominantCollateral } from "./dominantCollateral.js";
|
|
6
|
+
import { NON_STRATEGY_PHANTOM_TOKEN_TYPES, isStrategyCollateral } from "./isStrategyCollateral.js";
|
|
6
7
|
import { CreditSuite } from "./CreditSuite.js";
|
|
7
8
|
import { expectedBalanceDeltas } from "./expectedBalanceDeltas.js";
|
|
8
9
|
import "./types.js";
|
|
9
|
-
export { CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, abi as creditFacadeV310Abi, dominantCollateral, expectedBalanceDeltas, mustGetDominantCollateral };
|
|
10
|
+
export { CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, NON_STRATEGY_PHANTOM_TOKEN_TYPES, abi as creditFacadeV310Abi, dominantCollateral, expectedBalanceDeltas, isStrategyCollateral, mustGetDominantCollateral };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import "../../constants/math.js";
|
|
2
|
+
import "../../constants/index.js";
|
|
3
|
+
import { isAddressEqual } from "viem";
|
|
4
|
+
//#region src/sdk/market/credit/isStrategyCollateral.ts
|
|
5
|
+
/**
|
|
6
|
+
* Withdrawal and redemption phantom tokens that can never be acquired as a
|
|
7
|
+
* strategy target. Other `PHANTOM_TOKEN::*` types (Convex, Infrared, staking
|
|
8
|
+
* rewards) can.
|
|
9
|
+
*/
|
|
10
|
+
const NON_STRATEGY_PHANTOM_TOKEN_TYPES = [
|
|
11
|
+
"PHANTOM_TOKEN::INFINIFI_UNWIND",
|
|
12
|
+
"PHANTOM_TOKEN::MELLOW_WITHDRAWAL",
|
|
13
|
+
"PHANTOM_TOKEN::MIDAS_REDEMPTION",
|
|
14
|
+
"PHANTOM_TOKEN::SECURITIZE_RD",
|
|
15
|
+
"PHANTOM_TOKEN::UPSHIFT_WITHDRAW"
|
|
16
|
+
];
|
|
17
|
+
const NON_STRATEGY_PHANTOM_TOKEN_TYPE_SET = new Set(NON_STRATEGY_PHANTOM_TOKEN_TYPES);
|
|
18
|
+
const RWA_UNDERLYING_PREFIX = "RWA_UNDERLYING::";
|
|
19
|
+
/**
|
|
20
|
+
* Whether a collateral token can be the target of a leveraged strategy.
|
|
21
|
+
*
|
|
22
|
+
* A token qualifies when it
|
|
23
|
+
*
|
|
24
|
+
* - has a liquidation threshold above `0` and below `100%`, and is not the
|
|
25
|
+
* suite's underlying — borrowing an asset against itself is not a position,
|
|
26
|
+
* and an LT of `0` or at least `100%` would mean unbounded leverage;
|
|
27
|
+
* - is not the token the market's underlying wraps, which for an RWA market
|
|
28
|
+
* is the same exposure as the underlying itself (also rejected when
|
|
29
|
+
* `contractType` starts with `"RWA_UNDERLYING::"`);
|
|
30
|
+
* - is not a withdrawal or redemption phantom token listed in
|
|
31
|
+
* {@link NON_STRATEGY_PHANTOM_TOKEN_TYPES} — those only ever appear as the
|
|
32
|
+
* intermediate step of a withdrawal and cannot be acquired;
|
|
33
|
+
* - is not an expired token, e.g. a matured Pendle PT;
|
|
34
|
+
* - has a non-zero main price in the market's oracle — a zero or missing
|
|
35
|
+
* answer (e.g. a failed or zero price feed) means the position cannot be
|
|
36
|
+
* valued;
|
|
37
|
+
* - the market still accepts quota for.
|
|
38
|
+
*/
|
|
39
|
+
function isStrategyCollateral({ token, underlying, unwrappedUnderlying, liquidationThreshold, contractType, isExpired, mainPrice, hasActiveQuota }) {
|
|
40
|
+
if (isAddressEqual(token, underlying) || isAddressEqual(token, unwrappedUnderlying)) return false;
|
|
41
|
+
if (liquidationThreshold <= 0 || liquidationThreshold >= Number(10000n)) return false;
|
|
42
|
+
if (contractType && (NON_STRATEGY_PHANTOM_TOKEN_TYPE_SET.has(contractType) || contractType.startsWith(RWA_UNDERLYING_PREFIX))) return false;
|
|
43
|
+
if (isExpired) return false;
|
|
44
|
+
if (!mainPrice) return false;
|
|
45
|
+
return hasActiveQuota;
|
|
46
|
+
}
|
|
47
|
+
//#endregion
|
|
48
|
+
export { NON_STRATEGY_PHANTOM_TOKEN_TYPES, isStrategyCollateral };
|
|
@@ -4,8 +4,10 @@ import "./adapters/index.js";
|
|
|
4
4
|
import { CreditConfiguratorV310Contract } from "./credit/CreditConfiguratorV310Contract.js";
|
|
5
5
|
import { CreditFacadeV310BaseContract, creditFacadeV310Abi as abi } from "./credit/CreditFacadeV310BaseContract.js";
|
|
6
6
|
import { CreditFacadeV310Contract } from "./credit/CreditFacadeV310Contract.js";
|
|
7
|
+
import { MAX_LEVERAGE_BUFFER_BPS, PARTIAL_LIQUIDATION_BUFFER_BPS, calcAdditionalBorrowApy, calcBorrowApy, calcMaxLeverage, calcPositionLeverage, calcUtilization, healthFactorBps, minSeizedAmount, optimalHFForPartialLiquidation, optimalRepaidAmount, rayToBps, usdToNumber } from "./math.js";
|
|
7
8
|
import { CreditManagerV310Contract } from "./credit/CreditManagerV310Contract.js";
|
|
8
9
|
import { dominantCollateral, mustGetDominantCollateral } from "./credit/dominantCollateral.js";
|
|
10
|
+
import { NON_STRATEGY_PHANTOM_TOKEN_TYPES, isStrategyCollateral } from "./credit/isStrategyCollateral.js";
|
|
9
11
|
import { CreditSuite } from "./credit/CreditSuite.js";
|
|
10
12
|
import { expectedBalanceDeltas } from "./credit/expectedBalanceDeltas.js";
|
|
11
13
|
import "./credit/index.js";
|
|
@@ -59,4 +61,4 @@ import { RWARegistry } from "./rwa/RWARegistry.js";
|
|
|
59
61
|
import { RWA_FACTORY_TYPES, isRWAFactory } from "./rwa/types.js";
|
|
60
62
|
import "./rwa/index.js";
|
|
61
63
|
import "./types.js";
|
|
62
|
-
export { AbstractLPPriceFeedContract, AbstractPriceFeedContract, BalancerStablePriceFeedContract, BalancerWeightedPriceFeedContract, BoundedPriceFeedContract, CompositePriceFeedContract, CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, CurveCryptoPriceFeedContract, CurveStablePriceFeedContract, CurveUSDPriceFeedContract, Erc4626PriceFeedContract, ExternalPriceFeedContract, GaugeContract, IERC20ZapperContract, IETHZapperContract, LinearInterestRateModelContract, MarketRegister, MarketSuite, MellowLRTPriceFeedContract, MidasLiquidatorContract, PHANTOM_TOKEN_MIDAS_REDEMPTION, PHANTOM_TOKEN_SECURITIZE_REDEMPTION, PartialPriceFeedInitError, PendleTWAPPTPriceFeed, PlaceholderAdapterContract, PoolSuite, PoolV310Contract, PriceFeedRef, PriceFeedRegister, PriceOracleV310Contract, PythPriceFeed, RWARegistry, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, RWA_LIQUIDATOR_MIDAS, RWA_LIQUIDATOR_SECURITIZE, RedstonePriceFeedContract, SECURITIZE_REGISTER_VAULT_TYPES, SecuritizeLiquidatorContract, SecuritizeRWAFactory, UnsupportedZapperFunctionError, WstETHPriceFeedContract, YearnPriceFeedContract, ZapperContract, ZeroPriceFeedContract, createAdapter, createPriceOracle, createZapper, abi as creditFacadeV310Abi, dominantCollateral, expectedBalanceDeltas, fetchRedstonePayloads, getRawPriceUpdates, isLPPriceFeed, isRWAFactory, isUpdatablePriceFeed, mustGetDominantCollateral };
|
|
64
|
+
export { AbstractLPPriceFeedContract, AbstractPriceFeedContract, BalancerStablePriceFeedContract, BalancerWeightedPriceFeedContract, BoundedPriceFeedContract, CompositePriceFeedContract, CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, CurveCryptoPriceFeedContract, CurveStablePriceFeedContract, CurveUSDPriceFeedContract, Erc4626PriceFeedContract, ExternalPriceFeedContract, GaugeContract, IERC20ZapperContract, IETHZapperContract, LinearInterestRateModelContract, MAX_LEVERAGE_BUFFER_BPS, MarketRegister, MarketSuite, MellowLRTPriceFeedContract, MidasLiquidatorContract, NON_STRATEGY_PHANTOM_TOKEN_TYPES, PARTIAL_LIQUIDATION_BUFFER_BPS, PHANTOM_TOKEN_MIDAS_REDEMPTION, PHANTOM_TOKEN_SECURITIZE_REDEMPTION, PartialPriceFeedInitError, PendleTWAPPTPriceFeed, PlaceholderAdapterContract, PoolSuite, PoolV310Contract, PriceFeedRef, PriceFeedRegister, PriceOracleV310Contract, PythPriceFeed, RWARegistry, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, RWA_LIQUIDATOR_MIDAS, RWA_LIQUIDATOR_SECURITIZE, RedstonePriceFeedContract, SECURITIZE_REGISTER_VAULT_TYPES, SecuritizeLiquidatorContract, SecuritizeRWAFactory, UnsupportedZapperFunctionError, WstETHPriceFeedContract, YearnPriceFeedContract, ZapperContract, ZeroPriceFeedContract, calcAdditionalBorrowApy, calcBorrowApy, calcMaxLeverage, calcPositionLeverage, calcUtilization, createAdapter, createPriceOracle, createZapper, abi as creditFacadeV310Abi, dominantCollateral, expectedBalanceDeltas, fetchRedstonePayloads, getRawPriceUpdates, healthFactorBps, isLPPriceFeed, isRWAFactory, isStrategyCollateral, isUpdatablePriceFeed, minSeizedAmount, mustGetDominantCollateral, optimalHFForPartialLiquidation, optimalRepaidAmount, rayToBps, usdToNumber };
|
|
@@ -15,22 +15,31 @@ const FULL = Number(PERCENTAGE_FACTOR);
|
|
|
15
15
|
*
|
|
16
16
|
* @example
|
|
17
17
|
* ```ts
|
|
18
|
-
*
|
|
18
|
+
* // ray: 5% (0.05 × 10²⁷)
|
|
19
|
+
* rayToBps(50_000_000_000_000_000_000_000_000n) // 500 bps = 5%
|
|
19
20
|
* ```
|
|
20
21
|
**/
|
|
21
22
|
function rayToBps(ray) {
|
|
22
23
|
return Number(ray * PERCENTAGE_FACTOR / RAY);
|
|
23
24
|
}
|
|
24
25
|
/**
|
|
26
|
+
* Raw 8-decimal USD values below this are compressor leftover dust (typically
|
|
27
|
+
* 1-wei balances on empty accounts) and report as `0`.
|
|
28
|
+
**/
|
|
29
|
+
const USD_DUST_THRESHOLD = 1000n;
|
|
30
|
+
/**
|
|
25
31
|
* Converts a USD value in the oracle's 8-decimal fixed point to a float.
|
|
26
32
|
*
|
|
33
|
+
* Values below {@link USD_DUST_THRESHOLD} report as `0`.
|
|
34
|
+
*
|
|
27
35
|
* @example
|
|
28
36
|
* ```ts
|
|
37
|
+
* // usd: $1500.50 in 8-decimal fixed point
|
|
29
38
|
* usdToNumber(150_050_000_000n) // 1500.5
|
|
30
39
|
* ```
|
|
31
40
|
**/
|
|
32
41
|
function usdToNumber(usd) {
|
|
33
|
-
return Number(usd) / Number(PRICE_DECIMALS);
|
|
42
|
+
return usd < USD_DUST_THRESHOLD ? 0 : Number(usd) / Number(PRICE_DECIMALS);
|
|
34
43
|
}
|
|
35
44
|
/**
|
|
36
45
|
* Share of capital currently borrowed, in basis points. Returns `0` when there
|
|
@@ -38,56 +47,66 @@ function usdToNumber(usd) {
|
|
|
38
47
|
*
|
|
39
48
|
* @example
|
|
40
49
|
* ```ts
|
|
41
|
-
*
|
|
50
|
+
* // borrowed: 750, total: 1000
|
|
51
|
+
* calcUtilization(750n, 1000n) // 750 / 1000 = 7500 bps = 75%
|
|
42
52
|
* ```
|
|
43
53
|
**/
|
|
44
|
-
function
|
|
54
|
+
function calcUtilization(borrowed, total) {
|
|
45
55
|
if (total <= 0n || borrowed <= 0n) return 0;
|
|
46
56
|
const utilization = Number(borrowed * PERCENTAGE_FACTOR / total);
|
|
47
57
|
return Math.min(utilization, FULL);
|
|
48
58
|
}
|
|
49
59
|
/**
|
|
50
|
-
* Annual cost of debt for a credit manager, in basis points:
|
|
51
|
-
*
|
|
60
|
+
* Annual cost of debt for a credit manager, in basis points:
|
|
61
|
+
* `baseInterestRate × (1 + feeInterest)` — the pool's base rate plus the
|
|
62
|
+
* protocol's cut of the accrued interest.
|
|
52
63
|
*
|
|
53
64
|
* @param baseInterestRate - Pool base rate in ray.
|
|
54
65
|
* @param feeInterest - Credit manager interest fee in basis points.
|
|
55
66
|
*
|
|
56
67
|
* @example
|
|
57
68
|
* ```ts
|
|
58
|
-
* // 5%
|
|
59
|
-
*
|
|
69
|
+
* // baseInterestRate: 5% in ray, feeInterest: 5000 bps = 50%
|
|
70
|
+
* calcBorrowApy(50_000_000_000_000_000_000_000_000n, 5000) // 5% × 1.5 = 750 bps = 7.5%
|
|
60
71
|
* ```
|
|
61
72
|
**/
|
|
62
|
-
function
|
|
73
|
+
function calcBorrowApy(baseInterestRate, feeInterest) {
|
|
63
74
|
return rayToBps(baseInterestRate * (PERCENTAGE_FACTOR + BigInt(feeInterest)) / PERCENTAGE_FACTOR);
|
|
64
75
|
}
|
|
65
76
|
/**
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
77
|
+
* 5% safety margin subtracted from 100% in {@link calcMaxLeverage}, so a
|
|
78
|
+
* maxed position opens with HF slightly above 1.
|
|
79
|
+
**/
|
|
80
|
+
const MAX_LEVERAGE_BUFFER_BPS = 500;
|
|
81
|
+
/**
|
|
82
|
+
* Highest total-value leverage a liquidation threshold allows:
|
|
83
|
+
* `(100% − buffer) / (100% − liquidationThreshold)`. At HF = 1, debt is
|
|
84
|
+
* `liquidationThreshold × totalValue`, leaving `1 − liquidationThreshold` of
|
|
85
|
+
* equity per unit of exposure; the {@link MAX_LEVERAGE_BUFFER_BPS} buffer
|
|
86
|
+
* keeps the maxed position slightly away from that boundary.
|
|
71
87
|
*
|
|
72
88
|
* @example
|
|
73
89
|
* ```ts
|
|
74
|
-
*
|
|
75
|
-
*
|
|
90
|
+
* // liquidationThreshold: 9000 bps = 90%
|
|
91
|
+
* calcMaxLeverage(9000) // (1 − 0.05) / (1 − 0.9) = 9.5x total exposure
|
|
76
92
|
* ```
|
|
77
93
|
**/
|
|
78
|
-
function
|
|
79
|
-
|
|
80
|
-
|
|
94
|
+
function calcMaxLeverage(liquidationThreshold) {
|
|
95
|
+
if (liquidationThreshold >= FULL) return 0;
|
|
96
|
+
const leverage = (FULL - 500) / (FULL - liquidationThreshold);
|
|
97
|
+
return Math.max(leverage, 1);
|
|
81
98
|
}
|
|
82
99
|
/**
|
|
83
100
|
* Converts a credit account's health factor from the 18-decimal fixed point the
|
|
84
101
|
* contracts store to basis points.
|
|
85
102
|
*
|
|
86
|
-
*
|
|
103
|
+
* Accounts with no debt store `MAX_UINT256` on-chain; for those this
|
|
104
|
+
* returns `0`.
|
|
87
105
|
*
|
|
88
106
|
* @example
|
|
89
107
|
* ```ts
|
|
90
|
-
*
|
|
108
|
+
* // healthFactor: 1.25 in 18-decimal fixed point
|
|
109
|
+
* healthFactorBps(1_250_000_000_000_000_000n) // 12500 bps = 1.25
|
|
91
110
|
* ```
|
|
92
111
|
**/
|
|
93
112
|
function healthFactorBps(healthFactor) {
|
|
@@ -95,39 +114,39 @@ function healthFactorBps(healthFactor) {
|
|
|
95
114
|
return Number(healthFactor * PERCENTAGE_FACTOR / WAD);
|
|
96
115
|
}
|
|
97
116
|
/**
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
* Returns `0` for a position that carries no debt and for one that is
|
|
102
|
-
* underwater, where there is no equity to lever.
|
|
117
|
+
* Total-value leverage of an open position:
|
|
118
|
+
* `totalValue / (totalValue − totalDebt)`. `1` when unleveraged, `0` when
|
|
119
|
+
* underwater.
|
|
103
120
|
*
|
|
104
|
-
* @param
|
|
105
|
-
* @param
|
|
121
|
+
* @param totalValue - Total value of the position.
|
|
122
|
+
* @param totalDebt - Debt principal plus accrued interest and fees, same token.
|
|
106
123
|
*
|
|
107
124
|
* @example
|
|
108
125
|
* ```ts
|
|
109
|
-
*
|
|
126
|
+
* // totalValue: 100k, totalDebt: 80k → equity: 100k − 80k = 20k
|
|
127
|
+
* calcPositionLeverage(100_000n, 80_000n) // 100k / 20k = 5x
|
|
110
128
|
* ```
|
|
111
129
|
**/
|
|
112
|
-
function
|
|
130
|
+
function calcPositionLeverage(totalValue, totalDebt) {
|
|
113
131
|
const equity = totalValue - totalDebt;
|
|
114
|
-
if (
|
|
115
|
-
|
|
132
|
+
if (totalValue <= 0n || equity <= 0n) return 0;
|
|
133
|
+
if (totalDebt <= 0n) return 1;
|
|
134
|
+
return Number(totalValue) / Number(equity);
|
|
116
135
|
}
|
|
117
136
|
/**
|
|
118
|
-
* Annual quota cost
|
|
119
|
-
*
|
|
120
|
-
*
|
|
137
|
+
* Annual quota cost on equity, in basis points:
|
|
138
|
+
* `quotaRate × (1 + feeInterest) × leverage`. Quota accrues on the whole
|
|
139
|
+
* quoted position, and the DAO takes `feeInterest` of it as with base interest.
|
|
121
140
|
*
|
|
122
141
|
* @example
|
|
123
142
|
* ```ts
|
|
124
|
-
* // 2
|
|
125
|
-
*
|
|
143
|
+
* // quotaRate: 200 bps = 2%, feeInterest: 2500 bps = 25%, leverage: 9.5x
|
|
144
|
+
* calcAdditionalBorrowApy(200, 2500, 9.5) // 2% × 1.25 × 9.5 = 2375 bps = 23.75%
|
|
126
145
|
* ```
|
|
127
146
|
**/
|
|
128
|
-
function
|
|
129
|
-
if (!Number.isFinite(leverage)) return 0;
|
|
130
|
-
return Math.round(quotaRate *
|
|
147
|
+
function calcAdditionalBorrowApy(quotaRate, feeInterest, leverage) {
|
|
148
|
+
if (!Number.isFinite(leverage) || leverage <= 0) return 0;
|
|
149
|
+
return Math.round(quotaRate * (1 + feeInterest / FULL) * leverage);
|
|
131
150
|
}
|
|
132
151
|
/**
|
|
133
152
|
* {@link PERCENTAGE_FACTOR} less a 0.1% safety buffer.
|
|
@@ -185,4 +204,4 @@ function optimalHFForPartialLiquidation(borrowRate) {
|
|
|
185
204
|
return PERCENTAGE_FACTOR + (borrowRate < 100n ? borrowRate : 100n);
|
|
186
205
|
}
|
|
187
206
|
//#endregion
|
|
188
|
-
export { PARTIAL_LIQUIDATION_BUFFER_BPS,
|
|
207
|
+
export { MAX_LEVERAGE_BUFFER_BPS, PARTIAL_LIQUIDATION_BUFFER_BPS, calcAdditionalBorrowApy, calcBorrowApy, calcMaxLeverage, calcPositionLeverage, calcUtilization, healthFactorBps, minSeizedAmount, optimalHFForPartialLiquidation, optimalRepaidAmount, rayToBps, usdToNumber };
|
|
@@ -132,17 +132,24 @@ var PriceOracleBaseContract = class extends BaseContract {
|
|
|
132
132
|
return amount * 10n ** BigInt(this.tokensMeta.decimals(to)) / price;
|
|
133
133
|
}
|
|
134
134
|
/**
|
|
135
|
-
* {@inheritDoc IPriceOracleContract.
|
|
135
|
+
* {@inheritDoc IPriceOracleContract.safeConvertToUSD}
|
|
136
136
|
**/
|
|
137
|
-
|
|
137
|
+
safeConvertToUSD(token, amount) {
|
|
138
138
|
try {
|
|
139
|
-
return
|
|
139
|
+
return this.convertToUSD(token, amount);
|
|
140
140
|
} catch (e) {
|
|
141
141
|
this.logger?.debug(`cannot price ${this.labelAddress(token)}: ${e}`);
|
|
142
142
|
return null;
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
/**
|
|
146
|
+
* {@inheritDoc IPriceOracleContract.safeUsdValue}
|
|
147
|
+
**/
|
|
148
|
+
safeUsdValue(token, amount) {
|
|
149
|
+
const usd = this.safeConvertToUSD(token, amount);
|
|
150
|
+
return usd === null ? null : usdToNumber(usd);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
146
153
|
* {@inheritDoc IPriceOracleContract.toAmount}
|
|
147
154
|
**/
|
|
148
155
|
toAmount = (token, value) => {
|
|
@@ -7,7 +7,7 @@ import "../../utils/index.js";
|
|
|
7
7
|
import { BaseContract } from "../../base/BaseContract.js";
|
|
8
8
|
import "../../base/index.js";
|
|
9
9
|
import { iPausableAbi } from "../../../abi/iPausable.js";
|
|
10
|
-
import {
|
|
10
|
+
import { calcUtilization } from "../math.js";
|
|
11
11
|
//#region src/sdk/market/pool/PoolV310Contract.ts
|
|
12
12
|
const abi = [...iPoolV310Abi, ...iPausableAbi];
|
|
13
13
|
var PoolV310Contract = class extends BaseContract {
|
|
@@ -50,7 +50,7 @@ var PoolV310Contract = class extends BaseContract {
|
|
|
50
50
|
* {@inheritDoc IPoolContract.utilization}
|
|
51
51
|
*/
|
|
52
52
|
get utilization() {
|
|
53
|
-
return
|
|
53
|
+
return calcUtilization(this.borrowed, this.expectedLiquidity);
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
56
|
* {@inheritDoc IPoolContract.unwrappedUnderlying}
|
|
@@ -136,6 +136,20 @@ var PoolV310Contract = class extends BaseContract {
|
|
|
136
136
|
]
|
|
137
137
|
});
|
|
138
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Burns as many of the owner's shares as it takes to send `assets` of the
|
|
141
|
+
* underlying to the receiver.
|
|
142
|
+
*/
|
|
143
|
+
withdraw(assets, receiver, owner) {
|
|
144
|
+
return this.createRawTx({
|
|
145
|
+
functionName: "withdraw",
|
|
146
|
+
args: [
|
|
147
|
+
assets,
|
|
148
|
+
receiver,
|
|
149
|
+
owner
|
|
150
|
+
]
|
|
151
|
+
});
|
|
152
|
+
}
|
|
139
153
|
stringifyFunctionParams(params) {
|
|
140
154
|
switch (params.functionName) {
|
|
141
155
|
case "deposit": {
|
|
@@ -24,6 +24,11 @@ var RWARegistry = class extends SDKConstruct {
|
|
|
24
24
|
#state;
|
|
25
25
|
#factories = new AddressMap();
|
|
26
26
|
/**
|
|
27
|
+
* Factories requested during attach; `undefined` when the registry was
|
|
28
|
+
* hydrated instead, in which case the request was never made on this instance.
|
|
29
|
+
**/
|
|
30
|
+
#requestedFactories;
|
|
31
|
+
/**
|
|
27
32
|
* @internal
|
|
28
33
|
*
|
|
29
34
|
* Returns delegated multicalls for loading all RWA underlying tokens from the on-chain RWA compressor.
|
|
@@ -33,6 +38,7 @@ var RWARegistry = class extends SDKConstruct {
|
|
|
33
38
|
* @param rwaFactories - RWA factory contracts to query.
|
|
34
39
|
*/
|
|
35
40
|
getLoadMulticalls(configurators, rwaFactories = []) {
|
|
41
|
+
this.#requestedFactories = rwaFactories;
|
|
36
42
|
if (!rwaFactories.length) return [];
|
|
37
43
|
const [rwaCompressorAddress] = this.sdk.addressProvider.mustGetLatest(AP_RWA_COMPRESSOR, VERSION_RANGE_310);
|
|
38
44
|
return [{
|
|
@@ -46,6 +52,22 @@ var RWARegistry = class extends SDKConstruct {
|
|
|
46
52
|
}];
|
|
47
53
|
}
|
|
48
54
|
/**
|
|
55
|
+
* @internal
|
|
56
|
+
*
|
|
57
|
+
* Returns delegated multicalls that refresh the RWA state. Unlike the other
|
|
58
|
+
* warmed caches, RWA data carries values that change between blocks (e.g. the
|
|
59
|
+
* deposit allowance and claimable amount of an on-demand liquidity provider),
|
|
60
|
+
* so it is refreshed on every SDK sync.
|
|
61
|
+
*
|
|
62
|
+
* Factories are the ones requested during attach; after hydration the chain
|
|
63
|
+
* defaults are used, since the snapshot does not carry the requested list.
|
|
64
|
+
* An attach that explicitly requested no factories stays disabled.
|
|
65
|
+
**/
|
|
66
|
+
getSyncMulticalls() {
|
|
67
|
+
const factories = this.#requestedFactories ?? this.sdk.chain.rwaFactories;
|
|
68
|
+
return this.getLoadMulticalls([...this.sdk.marketRegister.marketFilter.configurators], factories);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
49
71
|
* Fetches decoded investor data from the on-chain RWA compressor.
|
|
50
72
|
*
|
|
51
73
|
* Each factory produces its own investor data (e.g. registered tokens,
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { PARTIAL_LIQUIDATION_BUFFER_BPS, additionalBorrowApyBps, borrowApyBps, healthFactorBps, maxLeverage, minSeizedAmount, optimalHFForPartialLiquidation, optimalRepaidAmount, positionLeverage, rayToBps, usdToNumber, utilizationBps } from "../market/math.js";
|
|
2
1
|
import { MultichainOpportunitiesService } from "./MultichainOpportunitiesService.js";
|
|
3
2
|
import { OpportunitiesService } from "./OpportunitiesService.js";
|
|
4
|
-
export { MultichainOpportunitiesService, OpportunitiesService
|
|
3
|
+
export { MultichainOpportunitiesService, OpportunitiesService };
|
package/dist/esm/sdk/options.js
CHANGED
|
@@ -60,11 +60,7 @@ const attachOptionsSchema = z.object({
|
|
|
60
60
|
/**
|
|
61
61
|
* Options for Redstone price-feed updates.
|
|
62
62
|
**/
|
|
63
|
-
redstone: RedstoneOptions.optional()
|
|
64
|
-
/**
|
|
65
|
-
* When `true`, automatically load zappers during attach.
|
|
66
|
-
**/
|
|
67
|
-
loadZappers: z.boolean().optional()
|
|
63
|
+
redstone: RedstoneOptions.optional()
|
|
68
64
|
});
|
|
69
65
|
//#endregion
|
|
70
66
|
export { attachOptionsSchema, onchainSDKOptionsSchema };
|