@gearbox-protocol/sdk 15.1.0-next.1 → 15.1.0-next.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/abi/iExpirable.js +15 -0
- package/dist/cjs/common-utils/utils/apy/get-single-quota-borrow-rate.js +2 -0
- package/dist/cjs/common-utils/utils/creditAccount/calc-health-factor.js +24 -22
- package/dist/cjs/common-utils/utils/creditAccount/calc-quota-borrow-rate.js +2 -0
- package/dist/cjs/common-utils/utils/creditAccount/get-time-to-liquidation.js +8 -5
- package/dist/cjs/common-utils/utils/creditAccount/liquidation-price.js +21 -11
- package/dist/cjs/dev/AccountOpener.js +0 -1
- package/dist/cjs/dev/compareOpportunities.js +137 -0
- package/dist/cjs/dev/comparePositions.js +183 -0
- package/dist/cjs/dev/fieldDiff.js +241 -0
- package/dist/cjs/model/charts.js +147 -0
- package/dist/cjs/model/charts.schema.js +240 -0
- package/dist/cjs/model/index.js +35 -22
- package/dist/cjs/model/liquidations.schema.js +1 -1
- package/dist/cjs/model/notices.schema.js +25 -0
- package/dist/cjs/model/opportunities.schema.js +1 -1
- package/dist/cjs/model/positions.schema.js +48 -2
- package/dist/cjs/new-sdk/AbstractNamespace.js +34 -4
- package/dist/cjs/new-sdk/GearboxSDK.js +72 -3
- package/dist/cjs/new-sdk/execute/ExecuteApi.js +95 -0
- package/dist/cjs/new-sdk/execute/index.js +3 -0
- package/dist/cjs/new-sdk/index.js +7 -0
- package/dist/cjs/new-sdk/opportunities/OpportunitiesNamespace.js +29 -6
- package/dist/cjs/new-sdk/positions/PositionsNamespace.js +3 -6
- package/dist/cjs/new-sdk/simulate/SimulateApi.js +361 -0
- package/dist/cjs/new-sdk/simulate/index.js +4 -0
- package/dist/cjs/new-sdk/utils/index.js +0 -1
- package/dist/cjs/offchain/AbstractOffchainNamespace.js +10 -7
- package/dist/cjs/offchain/GearboxAPI.js +7 -0
- package/dist/cjs/offchain/index.js +3 -0
- package/dist/cjs/offchain/notices/OffchainNotices.js +27 -0
- package/dist/cjs/offchain/notices/index.js +3 -0
- package/dist/cjs/offchain/opportunities/OffchainOpportunities.js +4 -8
- package/dist/cjs/offchain/positions/OffchainPositions.js +12 -12
- package/dist/cjs/preview/preview/CreditAccountState.js +14 -1
- package/dist/cjs/preview/preview/buildDelayedPreview.js +16 -6
- package/dist/cjs/preview/preview/previewAdjustCreditAccount.js +9 -2
- package/dist/cjs/preview/preview/previewOpenCreditAccount.js +11 -3
- package/dist/cjs/preview/preview/previewOperation.js +1 -1
- package/dist/cjs/sdk/MultichainSDK.js +3 -4
- package/dist/cjs/sdk/OnchainSDK.js +42 -13
- package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +2 -8
- package/dist/cjs/sdk/accounts/credit-account-compressor/CreditAccountCompressor.js +2 -90
- package/dist/cjs/sdk/accounts/index.js +5 -2
- package/dist/cjs/sdk/accounts/intents/guards.js +114 -0
- package/dist/cjs/sdk/accounts/intents/index.js +216 -358
- package/dist/cjs/sdk/accounts/intents/math.js +56 -0
- package/dist/cjs/sdk/accounts/intents/open-strategy.js +133 -0
- package/dist/cjs/sdk/accounts/intents/operations.js +165 -0
- package/dist/cjs/sdk/accounts/intents/plan.js +373 -0
- package/dist/cjs/sdk/accounts/intents/realize.js +301 -0
- package/dist/cjs/sdk/accounts/intents/testing/delayed.js +50 -0
- package/dist/cjs/sdk/accounts/intents/testing/market.js +166 -0
- package/dist/cjs/sdk/accounts/intents/testing/sdk-mock.js +194 -35
- package/dist/cjs/sdk/accounts/intents/tests/add-collateral.fixtures.js +123 -0
- package/dist/cjs/sdk/accounts/intents/tests/adjust-leverage.fixtures.js +254 -0
- package/dist/cjs/sdk/accounts/intents/tests/deposit.fixtures.js +324 -0
- package/dist/cjs/sdk/accounts/intents/tests/finish-decrease-leverage.fixtures.js +242 -0
- package/dist/cjs/sdk/accounts/intents/tests/finish-withdraw.fixtures.js +383 -0
- package/dist/cjs/sdk/accounts/intents/tests/open-strategy.fixtures.js +133 -0
- package/dist/cjs/sdk/accounts/intents/tests/withdraw-asset.fixtures.js +131 -0
- package/dist/cjs/sdk/accounts/intents/tests/withdraw.fixtures.js +426 -0
- package/dist/cjs/sdk/accounts/intents/types.js +16 -0
- package/dist/cjs/sdk/accounts/intents/utils/adjust-state-to-snapshot.js +18 -0
- package/dist/cjs/sdk/accounts/intents/utils/credit-account-slice.js +45 -0
- package/dist/cjs/sdk/accounts/intents/utils/index.js +17 -8
- package/dist/cjs/sdk/accounts/intents/utils/ledger.js +94 -0
- package/dist/cjs/sdk/accounts/intents/utils/pick-token.js +72 -0
- package/dist/cjs/sdk/accounts/intents/utils/quotas-for-update.js +27 -0
- package/dist/cjs/sdk/accounts/intents/utils/router-path.js +86 -0
- package/dist/cjs/sdk/accounts/intents/view.js +38 -0
- package/dist/cjs/sdk/accounts/liquidations/LiquidationsService.js +0 -3
- package/dist/cjs/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.js +29 -18
- package/dist/cjs/sdk/base/BaseContract.js +1 -1
- package/dist/cjs/sdk/base/TokensMeta.js +78 -27
- package/dist/cjs/sdk/index.js +30 -7
- package/dist/cjs/sdk/market/MarketRegister.js +16 -7
- package/dist/cjs/sdk/market/ZapperRegister.js +56 -25
- package/dist/cjs/sdk/market/credit/CreditManagerV310Contract.js +1 -12
- package/dist/cjs/sdk/market/credit/CreditSuite.js +28 -9
- package/dist/cjs/sdk/market/credit/index.js +3 -0
- package/dist/cjs/sdk/market/credit/isStrategyCollateral.js +50 -0
- package/dist/cjs/sdk/market/index.js +17 -0
- package/dist/cjs/sdk/market/math.js +65 -45
- package/dist/cjs/sdk/market/oracle/PriceOracleBaseContract.js +10 -3
- package/dist/cjs/sdk/market/pool/PoolV310Contract.js +15 -1
- package/dist/cjs/sdk/market/rwa/RWARegistry.js +22 -0
- package/dist/cjs/sdk/opportunities/index.js +0 -13
- package/dist/cjs/sdk/options.js +1 -5
- package/dist/cjs/sdk/pools/PoolService.js +133 -4
- package/dist/cjs/sdk/pools/index.js +2 -0
- package/dist/cjs/sdk/positions/PositionsService.js +218 -1
- package/dist/cjs/sdk/positions/calcBorrowRate.js +43 -0
- package/dist/cjs/sdk/positions/calcHealthFactor.js +52 -0
- package/dist/cjs/sdk/positions/calcLiquidationPrice.js +23 -0
- package/dist/cjs/sdk/positions/calcLiquidationPriceForTarget.js +30 -0
- package/dist/cjs/sdk/positions/calcTimeToLiquidationMs.js +19 -0
- package/dist/cjs/sdk/positions/index.js +12 -1
- package/dist/cjs/sdk/positions/types.js +31 -0
- package/dist/cjs/sdk/utils/abi-decode.js +2 -2
- package/dist/cjs/sdk/utils/viem/executeMulticallBatches.js +32 -0
- package/dist/cjs/sdk/utils/viem/index.js +2 -0
- package/dist/esm/abi/iExpirable.js +14 -0
- package/dist/esm/common-utils/utils/apy/get-single-quota-borrow-rate.js +2 -0
- package/dist/esm/common-utils/utils/creditAccount/calc-health-factor.js +24 -22
- package/dist/esm/common-utils/utils/creditAccount/calc-quota-borrow-rate.js +2 -0
- package/dist/esm/common-utils/utils/creditAccount/get-time-to-liquidation.js +8 -5
- package/dist/esm/common-utils/utils/creditAccount/liquidation-price.js +21 -11
- package/dist/esm/dev/AccountOpener.js +0 -1
- package/dist/esm/dev/compareOpportunities.js +135 -0
- package/dist/esm/dev/comparePositions.js +181 -0
- package/dist/esm/dev/fieldDiff.js +224 -0
- package/dist/esm/model/charts.js +140 -0
- package/dist/esm/model/charts.schema.js +226 -0
- package/dist/esm/model/index.js +9 -7
- package/dist/esm/model/liquidations.schema.js +1 -1
- package/dist/esm/model/notices.schema.js +23 -0
- package/dist/esm/model/opportunities.schema.js +1 -1
- package/dist/esm/model/positions.schema.js +46 -4
- package/dist/esm/new-sdk/AbstractNamespace.js +34 -4
- package/dist/esm/new-sdk/GearboxSDK.js +72 -4
- package/dist/esm/new-sdk/execute/ExecuteApi.js +94 -0
- package/dist/esm/new-sdk/execute/index.js +2 -0
- package/dist/esm/new-sdk/index.js +6 -2
- package/dist/esm/new-sdk/opportunities/OpportunitiesNamespace.js +29 -6
- package/dist/esm/new-sdk/positions/PositionsNamespace.js +3 -6
- package/dist/esm/new-sdk/simulate/SimulateApi.js +360 -0
- package/dist/esm/new-sdk/simulate/index.js +3 -0
- package/dist/esm/new-sdk/utils/index.js +0 -1
- package/dist/esm/offchain/AbstractOffchainNamespace.js +10 -7
- package/dist/esm/offchain/GearboxAPI.js +7 -0
- package/dist/esm/offchain/index.js +3 -1
- package/dist/esm/offchain/notices/OffchainNotices.js +26 -0
- package/dist/esm/offchain/notices/index.js +2 -0
- package/dist/esm/offchain/opportunities/OffchainOpportunities.js +4 -8
- package/dist/esm/offchain/positions/OffchainPositions.js +12 -12
- package/dist/esm/preview/preview/CreditAccountState.js +14 -1
- package/dist/esm/preview/preview/buildDelayedPreview.js +16 -6
- package/dist/esm/preview/preview/previewAdjustCreditAccount.js +9 -2
- package/dist/esm/preview/preview/previewOpenCreditAccount.js +11 -3
- package/dist/esm/preview/preview/previewOperation.js +1 -1
- package/dist/esm/sdk/MultichainSDK.js +3 -4
- package/dist/esm/sdk/OnchainSDK.js +42 -13
- package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +2 -8
- package/dist/esm/sdk/accounts/credit-account-compressor/CreditAccountCompressor.js +2 -90
- package/dist/esm/sdk/accounts/index.js +3 -2
- package/dist/esm/sdk/accounts/intents/guards.js +108 -0
- package/dist/esm/sdk/accounts/intents/index.js +214 -358
- package/dist/esm/sdk/accounts/intents/math.js +51 -0
- package/dist/esm/sdk/accounts/intents/open-strategy.js +132 -0
- package/dist/esm/sdk/accounts/intents/operations.js +153 -0
- package/dist/esm/sdk/accounts/intents/plan.js +361 -0
- package/dist/esm/sdk/accounts/intents/realize.js +300 -0
- package/dist/esm/sdk/accounts/intents/testing/delayed.js +38 -0
- package/dist/esm/sdk/accounts/intents/testing/market.js +148 -0
- package/dist/esm/sdk/accounts/intents/testing/sdk-mock.js +194 -35
- package/dist/esm/sdk/accounts/intents/tests/add-collateral.fixtures.js +110 -0
- package/dist/esm/sdk/accounts/intents/tests/adjust-leverage.fixtures.js +234 -0
- package/dist/esm/sdk/accounts/intents/tests/deposit.fixtures.js +302 -0
- package/dist/esm/sdk/accounts/intents/tests/finish-decrease-leverage.fixtures.js +220 -0
- package/dist/esm/sdk/accounts/intents/tests/finish-withdraw.fixtures.js +355 -0
- package/dist/esm/sdk/accounts/intents/tests/open-strategy.fixtures.js +119 -0
- package/dist/esm/sdk/accounts/intents/tests/withdraw-asset.fixtures.js +117 -0
- package/dist/esm/sdk/accounts/intents/tests/withdraw.fixtures.js +402 -0
- package/dist/esm/sdk/accounts/intents/types.js +16 -1
- package/dist/esm/sdk/accounts/intents/utils/adjust-state-to-snapshot.js +17 -0
- package/dist/esm/sdk/accounts/intents/utils/credit-account-slice.js +43 -0
- package/dist/esm/sdk/accounts/intents/utils/index.js +9 -7
- package/dist/esm/sdk/accounts/intents/utils/ledger.js +93 -0
- package/dist/esm/sdk/accounts/intents/utils/pick-token.js +68 -0
- package/dist/esm/sdk/accounts/intents/utils/quotas-for-update.js +27 -1
- package/dist/esm/sdk/accounts/intents/utils/router-path.js +85 -0
- package/dist/esm/sdk/accounts/intents/view.js +37 -0
- package/dist/esm/sdk/accounts/liquidations/LiquidationsService.js +0 -3
- package/dist/esm/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.js +29 -18
- package/dist/esm/sdk/base/BaseContract.js +1 -1
- package/dist/esm/sdk/base/TokensMeta.js +78 -27
- package/dist/esm/sdk/index.js +13 -4
- package/dist/esm/sdk/market/MarketRegister.js +16 -7
- package/dist/esm/sdk/market/ZapperRegister.js +56 -25
- package/dist/esm/sdk/market/credit/CreditManagerV310Contract.js +2 -13
- package/dist/esm/sdk/market/credit/CreditSuite.js +29 -10
- package/dist/esm/sdk/market/credit/index.js +2 -1
- package/dist/esm/sdk/market/credit/isStrategyCollateral.js +48 -0
- package/dist/esm/sdk/market/index.js +3 -1
- package/dist/esm/sdk/market/math.js +60 -41
- package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +10 -3
- package/dist/esm/sdk/market/pool/PoolV310Contract.js +16 -2
- package/dist/esm/sdk/market/rwa/RWARegistry.js +22 -0
- package/dist/esm/sdk/opportunities/index.js +1 -2
- package/dist/esm/sdk/options.js +1 -5
- package/dist/esm/sdk/pools/PoolService.js +133 -6
- package/dist/esm/sdk/pools/index.js +2 -2
- package/dist/esm/sdk/positions/PositionsService.js +218 -1
- package/dist/esm/sdk/positions/calcBorrowRate.js +42 -0
- package/dist/esm/sdk/positions/calcHealthFactor.js +51 -0
- package/dist/esm/sdk/positions/calcLiquidationPrice.js +22 -0
- package/dist/esm/sdk/positions/calcLiquidationPriceForTarget.js +29 -0
- package/dist/esm/sdk/positions/calcTimeToLiquidationMs.js +18 -0
- package/dist/esm/sdk/positions/index.js +7 -2
- package/dist/esm/sdk/positions/types.js +31 -1
- package/dist/esm/sdk/utils/abi-decode.js +2 -2
- package/dist/esm/sdk/utils/viem/executeMulticallBatches.js +31 -0
- package/dist/esm/sdk/utils/viem/index.js +2 -1
- package/dist/types/abi/iExpirable.d.ts +14 -0
- package/dist/types/common-utils/utils/apy/get-single-quota-borrow-rate.d.ts +2 -0
- package/dist/types/common-utils/utils/creditAccount/calc-health-factor.d.ts +3 -0
- package/dist/types/common-utils/utils/creditAccount/calc-quota-borrow-rate.d.ts +2 -0
- package/dist/types/common-utils/utils/creditAccount/get-time-to-liquidation.d.ts +6 -1
- package/dist/types/common-utils/utils/creditAccount/liquidation-price.d.ts +3 -0
- package/dist/types/dev/compareOpportunities.d.ts +105 -0
- package/dist/types/dev/comparePositions.d.ts +149 -0
- package/dist/types/dev/fieldDiff.d.ts +167 -0
- package/dist/types/model/charts.d.ts +349 -0
- package/dist/types/model/charts.schema.d.ts +364 -0
- package/dist/types/model/index.d.ts +8 -6
- package/dist/types/model/notices.d.ts +29 -0
- package/dist/types/model/notices.schema.d.ts +23 -0
- package/dist/types/model/opportunities.d.ts +9 -9
- package/dist/types/model/positions.d.ts +133 -7
- package/dist/types/model/positions.schema.d.ts +128 -1
- package/dist/types/new-sdk/AbstractNamespace.d.ts +15 -2
- package/dist/types/new-sdk/GearboxSDK.d.ts +14 -2
- package/dist/types/new-sdk/execute/ExecuteApi.d.ts +108 -0
- package/dist/types/new-sdk/execute/index.d.ts +2 -0
- package/dist/types/new-sdk/index.d.ts +8 -4
- package/dist/types/new-sdk/opportunities/OpportunitiesNamespace.d.ts +19 -7
- package/dist/types/new-sdk/opportunities/types.d.ts +30 -9
- package/dist/types/new-sdk/positions/PositionsNamespace.d.ts +4 -5
- package/dist/types/new-sdk/positions/types.d.ts +9 -9
- package/dist/types/new-sdk/simulate/SimulateApi.d.ts +90 -0
- package/dist/types/new-sdk/simulate/index.d.ts +3 -0
- package/dist/types/new-sdk/simulate/types.d.ts +508 -0
- package/dist/types/new-sdk/types.d.ts +35 -1
- package/dist/types/new-sdk/utils/index.d.ts +1 -2
- package/dist/types/offchain/AbstractOffchainNamespace.d.ts +5 -21
- package/dist/types/offchain/GearboxAPI.d.ts +6 -0
- package/dist/types/offchain/index.d.ts +4 -2
- package/dist/types/offchain/notices/OffchainNotices.d.ts +19 -0
- package/dist/types/offchain/notices/index.d.ts +2 -0
- package/dist/types/offchain/opportunities/OffchainOpportunities.d.ts +8 -4
- package/dist/types/offchain/positions/OffchainPositions.d.ts +8 -6
- package/dist/types/preview/preview/CreditAccountState.d.ts +6 -0
- package/dist/types/preview/preview/buildDelayedPreview.d.ts +5 -1
- package/dist/types/preview/preview/types.d.ts +4 -2
- package/dist/types/sdk/MultichainSDK.d.ts +0 -5
- package/dist/types/sdk/OnchainSDK.d.ts +1 -5
- package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -7
- package/dist/types/sdk/accounts/credit-account-compressor/CreditAccountCompressor.d.ts +3 -12
- package/dist/types/sdk/accounts/credit-account-compressor/index.d.ts +2 -2
- package/dist/types/sdk/accounts/credit-account-compressor/types.d.ts +1 -19
- package/dist/types/sdk/accounts/index.d.ts +7 -5
- package/dist/types/sdk/accounts/intents/guards.d.ts +72 -0
- package/dist/types/sdk/accounts/intents/index.d.ts +130 -15
- package/dist/types/sdk/accounts/intents/math.d.ts +46 -0
- package/dist/types/sdk/accounts/intents/open-strategy.d.ts +64 -0
- package/dist/types/sdk/accounts/intents/operations.d.ts +215 -0
- package/dist/types/sdk/accounts/intents/plan.d.ts +189 -0
- package/dist/types/sdk/accounts/intents/realize.d.ts +35 -0
- package/dist/types/sdk/accounts/intents/testing/delayed.d.ts +50 -0
- package/dist/types/sdk/accounts/intents/testing/expect.d.ts +17 -21
- package/dist/types/sdk/accounts/intents/testing/market.d.ts +91 -0
- package/dist/types/sdk/accounts/intents/testing/sdk-mock.d.ts +64 -16
- package/dist/types/sdk/accounts/intents/tests/add-collateral.fixtures.d.ts +45 -0
- package/dist/types/sdk/accounts/intents/tests/adjust-leverage.fixtures.d.ts +56 -0
- package/dist/types/sdk/accounts/intents/tests/deposit.fixtures.d.ts +64 -0
- package/dist/types/sdk/accounts/intents/tests/finish-decrease-leverage.fixtures.d.ts +107 -0
- package/dist/types/sdk/accounts/intents/tests/finish-withdraw.fixtures.d.ts +136 -0
- package/dist/types/sdk/accounts/intents/tests/open-strategy.fixtures.d.ts +56 -0
- package/dist/types/sdk/accounts/intents/tests/withdraw-asset.fixtures.d.ts +60 -0
- package/dist/types/sdk/accounts/intents/tests/withdraw.fixtures.d.ts +79 -0
- package/dist/types/sdk/accounts/intents/types.d.ts +369 -43
- package/dist/types/sdk/accounts/intents/utils/adjust-state-to-snapshot.d.ts +13 -0
- package/dist/types/sdk/accounts/intents/utils/assemble-operation-calls.d.ts +1 -1
- package/dist/types/sdk/accounts/intents/utils/credit-account-slice.d.ts +29 -0
- package/dist/types/sdk/accounts/intents/utils/index.d.ts +7 -5
- package/dist/types/sdk/accounts/intents/utils/ledger.d.ts +41 -0
- package/dist/types/sdk/accounts/intents/utils/pick-token.d.ts +55 -0
- package/dist/types/sdk/accounts/intents/utils/quotas-for-update.d.ts +15 -4
- package/dist/types/sdk/accounts/intents/utils/router-path.d.ts +70 -0
- package/dist/types/sdk/accounts/intents/view.d.ts +15 -0
- package/dist/types/sdk/accounts/types.d.ts +17 -14
- package/dist/types/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.d.ts +6 -0
- package/dist/types/sdk/accounts/withdrawal-compressor/types.d.ts +18 -0
- package/dist/types/sdk/base/TokensMeta.d.ts +44 -1
- package/dist/types/sdk/base/index.d.ts +2 -2
- package/dist/types/sdk/base/token-types.d.ts +12 -1
- package/dist/types/sdk/index.d.ts +28 -19
- package/dist/types/sdk/market/MarketRegister.d.ts +7 -3
- package/dist/types/sdk/market/ZapperRegister.d.ts +20 -2
- package/dist/types/sdk/market/credit/CreditManagerV310Contract.d.ts +0 -4
- package/dist/types/sdk/market/credit/CreditSuite.d.ts +6 -3
- package/dist/types/sdk/market/credit/index.d.ts +2 -1
- package/dist/types/sdk/market/credit/isStrategyCollateral.d.ts +74 -0
- package/dist/types/sdk/market/credit/types.d.ts +2 -9
- package/dist/types/sdk/market/index.d.ts +4 -2
- package/dist/types/sdk/market/math.d.ts +46 -34
- package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +6 -2
- package/dist/types/sdk/market/oracle/types.d.ts +10 -2
- package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +5 -0
- package/dist/types/sdk/market/pool/types.d.ts +5 -0
- package/dist/types/sdk/market/rwa/RWARegistry.d.ts +13 -0
- package/dist/types/sdk/market/types.d.ts +5 -1
- package/dist/types/sdk/opportunities/index.d.ts +1 -2
- package/dist/types/sdk/options.d.ts +0 -1
- package/dist/types/sdk/pools/PoolService.d.ts +32 -2
- package/dist/types/sdk/pools/index.d.ts +3 -3
- package/dist/types/sdk/pools/types.d.ts +109 -4
- package/dist/types/sdk/positions/PositionsService.d.ts +33 -2
- package/dist/types/sdk/positions/calcBorrowRate.d.ts +40 -0
- package/dist/types/sdk/positions/calcHealthFactor.d.ts +55 -0
- package/dist/types/sdk/positions/calcLiquidationPrice.d.ts +12 -0
- package/dist/types/sdk/positions/calcLiquidationPriceForTarget.d.ts +43 -0
- package/dist/types/sdk/positions/calcTimeToLiquidationMs.d.ts +16 -0
- package/dist/types/sdk/positions/index.d.ts +7 -2
- package/dist/types/sdk/positions/types.d.ts +58 -1
- package/dist/types/sdk/types/state.d.ts +6 -0
- package/dist/types/sdk/utils/viem/executeMulticallBatches.d.ts +39 -0
- package/dist/types/sdk/utils/viem/index.d.ts +3 -2
- package/package.json +2 -1
- package/dist/cjs/model/history.js +0 -53
- package/dist/cjs/model/history.schema.js +0 -128
- package/dist/cjs/sdk/accounts/intents/intents/index.js +0 -14
- package/dist/cjs/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.fixtures.js +0 -121
- package/dist/cjs/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.js +0 -15
- package/dist/cjs/sdk/accounts/intents/intents/resume/close/close.fixtures.js +0 -108
- package/dist/cjs/sdk/accounts/intents/intents/resume/close/close.js +0 -51
- package/dist/cjs/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.fixtures.js +0 -130
- package/dist/cjs/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.js +0 -83
- package/dist/cjs/sdk/accounts/intents/intents/resume/deposit/deposit.fixtures.js +0 -117
- package/dist/cjs/sdk/accounts/intents/intents/resume/deposit/deposit.js +0 -15
- package/dist/cjs/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.fixtures.js +0 -95
- package/dist/cjs/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.js +0 -15
- package/dist/cjs/sdk/accounts/intents/intents/resume/index.js +0 -13
- package/dist/cjs/sdk/accounts/intents/intents/resume/withdraw/withdraw.fixtures.js +0 -138
- package/dist/cjs/sdk/accounts/intents/intents/resume/withdraw/withdraw.js +0 -161
- package/dist/cjs/sdk/accounts/intents/operations/add-collateral/index.js +0 -17
- package/dist/cjs/sdk/accounts/intents/operations/claim-delayed/index.js +0 -54
- package/dist/cjs/sdk/accounts/intents/operations/close-credit-account/index.js +0 -26
- package/dist/cjs/sdk/accounts/intents/operations/decrease-debt/index.js +0 -12
- package/dist/cjs/sdk/accounts/intents/operations/increase-debt/index.js +0 -12
- package/dist/cjs/sdk/accounts/intents/operations/index.js +0 -27
- package/dist/cjs/sdk/accounts/intents/operations/quota-update/index.js +0 -22
- package/dist/cjs/sdk/accounts/intents/operations/repay-credit-account/index.js +0 -22
- package/dist/cjs/sdk/accounts/intents/operations/start-delayed-withdrawal/index.js +0 -18
- package/dist/cjs/sdk/accounts/intents/operations/swap/index.js +0 -18
- package/dist/cjs/sdk/accounts/intents/operations/unwrap-rwa-collateral/index.js +0 -27
- package/dist/cjs/sdk/accounts/intents/operations/withdraw-collateral/index.js +0 -43
- package/dist/cjs/sdk/accounts/intents/operations/wrap-rwa-collateral/index.js +0 -27
- package/dist/cjs/sdk/accounts/intents/quoters/close.js +0 -58
- package/dist/cjs/sdk/accounts/intents/quoters/index.js +0 -7
- package/dist/cjs/sdk/accounts/intents/quoters/swap.js +0 -79
- package/dist/cjs/sdk/accounts/intents/testing/expect.js +0 -167
- package/dist/cjs/sdk/accounts/intents/testing/resume.js +0 -172
- package/dist/cjs/sdk/accounts/intents/utils/simulate-adjust-state.js +0 -39
- package/dist/cjs/sdk/accounts/intents/utils/simulate-assets.js +0 -69
- package/dist/cjs/sdk/accounts/intents/utils/with-quota-update.js +0 -13
- package/dist/esm/model/history.js +0 -49
- package/dist/esm/model/history.schema.js +0 -116
- package/dist/esm/sdk/accounts/intents/intents/index.js +0 -8
- package/dist/esm/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.fixtures.js +0 -107
- package/dist/esm/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.js +0 -14
- package/dist/esm/sdk/accounts/intents/intents/resume/close/close.fixtures.js +0 -94
- package/dist/esm/sdk/accounts/intents/intents/resume/close/close.js +0 -50
- package/dist/esm/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.fixtures.js +0 -114
- package/dist/esm/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.js +0 -82
- package/dist/esm/sdk/accounts/intents/intents/resume/deposit/deposit.fixtures.js +0 -110
- package/dist/esm/sdk/accounts/intents/intents/resume/deposit/deposit.js +0 -14
- package/dist/esm/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.fixtures.js +0 -88
- package/dist/esm/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.js +0 -14
- package/dist/esm/sdk/accounts/intents/intents/resume/index.js +0 -7
- package/dist/esm/sdk/accounts/intents/intents/resume/withdraw/withdraw.fixtures.js +0 -121
- package/dist/esm/sdk/accounts/intents/intents/resume/withdraw/withdraw.js +0 -160
- package/dist/esm/sdk/accounts/intents/operations/add-collateral/index.js +0 -16
- package/dist/esm/sdk/accounts/intents/operations/claim-delayed/index.js +0 -52
- package/dist/esm/sdk/accounts/intents/operations/close-credit-account/index.js +0 -25
- package/dist/esm/sdk/accounts/intents/operations/decrease-debt/index.js +0 -11
- package/dist/esm/sdk/accounts/intents/operations/increase-debt/index.js +0 -11
- package/dist/esm/sdk/accounts/intents/operations/index.js +0 -14
- package/dist/esm/sdk/accounts/intents/operations/quota-update/index.js +0 -21
- package/dist/esm/sdk/accounts/intents/operations/repay-credit-account/index.js +0 -21
- package/dist/esm/sdk/accounts/intents/operations/start-delayed-withdrawal/index.js +0 -17
- package/dist/esm/sdk/accounts/intents/operations/swap/index.js +0 -17
- package/dist/esm/sdk/accounts/intents/operations/unwrap-rwa-collateral/index.js +0 -26
- package/dist/esm/sdk/accounts/intents/operations/withdraw-collateral/index.js +0 -42
- package/dist/esm/sdk/accounts/intents/operations/wrap-rwa-collateral/index.js +0 -26
- package/dist/esm/sdk/accounts/intents/quoters/close.js +0 -56
- package/dist/esm/sdk/accounts/intents/quoters/index.js +0 -3
- package/dist/esm/sdk/accounts/intents/quoters/swap.js +0 -77
- package/dist/esm/sdk/accounts/intents/testing/expect.js +0 -162
- package/dist/esm/sdk/accounts/intents/testing/resume.js +0 -157
- package/dist/esm/sdk/accounts/intents/utils/simulate-adjust-state.js +0 -38
- package/dist/esm/sdk/accounts/intents/utils/simulate-assets.js +0 -68
- package/dist/esm/sdk/accounts/intents/utils/with-quota-update.js +0 -12
- package/dist/types/model/history.d.ts +0 -153
- package/dist/types/model/history.schema.d.ts +0 -95
- package/dist/types/new-sdk/utils/history.d.ts +0 -18
- package/dist/types/sdk/accounts/intents/intents/index.d.ts +0 -8
- package/dist/types/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.d.ts +0 -13
- package/dist/types/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.fixtures.d.ts +0 -38
- package/dist/types/sdk/accounts/intents/intents/resume/close/close.d.ts +0 -26
- package/dist/types/sdk/accounts/intents/intents/resume/close/close.fixtures.d.ts +0 -63
- package/dist/types/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.d.ts +0 -26
- package/dist/types/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.fixtures.d.ts +0 -86
- package/dist/types/sdk/accounts/intents/intents/resume/deposit/deposit.d.ts +0 -13
- package/dist/types/sdk/accounts/intents/intents/resume/deposit/deposit.fixtures.d.ts +0 -48
- package/dist/types/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.d.ts +0 -13
- package/dist/types/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.fixtures.d.ts +0 -46
- package/dist/types/sdk/accounts/intents/intents/resume/index.d.ts +0 -7
- package/dist/types/sdk/accounts/intents/intents/resume/withdraw/withdraw.d.ts +0 -33
- package/dist/types/sdk/accounts/intents/intents/resume/withdraw/withdraw.fixtures.d.ts +0 -68
- package/dist/types/sdk/accounts/intents/operations/add-collateral/index.d.ts +0 -23
- package/dist/types/sdk/accounts/intents/operations/claim-delayed/index.d.ts +0 -55
- package/dist/types/sdk/accounts/intents/operations/close-credit-account/index.d.ts +0 -22
- package/dist/types/sdk/accounts/intents/operations/decrease-debt/index.d.ts +0 -18
- package/dist/types/sdk/accounts/intents/operations/increase-debt/index.d.ts +0 -18
- package/dist/types/sdk/accounts/intents/operations/index.d.ts +0 -14
- package/dist/types/sdk/accounts/intents/operations/quota-update/index.d.ts +0 -24
- package/dist/types/sdk/accounts/intents/operations/repay-credit-account/index.d.ts +0 -31
- package/dist/types/sdk/accounts/intents/operations/start-delayed-withdrawal/index.d.ts +0 -23
- package/dist/types/sdk/accounts/intents/operations/swap/index.d.ts +0 -28
- package/dist/types/sdk/accounts/intents/operations/types.d.ts +0 -21
- package/dist/types/sdk/accounts/intents/operations/unwrap-rwa-collateral/index.d.ts +0 -30
- package/dist/types/sdk/accounts/intents/operations/withdraw-collateral/index.d.ts +0 -36
- package/dist/types/sdk/accounts/intents/operations/wrap-rwa-collateral/index.d.ts +0 -30
- package/dist/types/sdk/accounts/intents/quoters/close.d.ts +0 -43
- package/dist/types/sdk/accounts/intents/quoters/index.d.ts +0 -3
- package/dist/types/sdk/accounts/intents/quoters/swap.d.ts +0 -43
- package/dist/types/sdk/accounts/intents/testing/resume.d.ts +0 -84
- package/dist/types/sdk/accounts/intents/utils/simulate-adjust-state.d.ts +0 -19
- package/dist/types/sdk/accounts/intents/utils/simulate-assets.d.ts +0 -21
- package/dist/types/sdk/accounts/intents/utils/with-quota-update.d.ts +0 -16
- /package/dist/cjs/{new-sdk/utils/history.js → model/notices.js} +0 -0
- /package/dist/cjs/{sdk/accounts/intents/operations → new-sdk/simulate}/types.js +0 -0
- /package/dist/esm/{new-sdk/utils/history.js → model/notices.js} +0 -0
- /package/dist/esm/{sdk/accounts/intents/operations → new-sdk/simulate}/types.js +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/abi/iExpirable.ts
|
|
3
|
+
const iExpirableAbi = [{
|
|
4
|
+
type: "function",
|
|
5
|
+
inputs: [],
|
|
6
|
+
name: "isExpired",
|
|
7
|
+
outputs: [{
|
|
8
|
+
name: "",
|
|
9
|
+
internalType: "bool",
|
|
10
|
+
type: "bool"
|
|
11
|
+
}],
|
|
12
|
+
stateMutability: "view"
|
|
13
|
+
}];
|
|
14
|
+
//#endregion
|
|
15
|
+
exports.iExpirableAbi = iExpirableAbi;
|
|
@@ -5,6 +5,8 @@ const require_common_utils_utils_creditAccount_calc_quota_borrow_rate = require(
|
|
|
5
5
|
/**
|
|
6
6
|
* Under the hood sums up rates for all given quotas and then multiplies them by 1+feeInterest,
|
|
7
7
|
* but it is expected that the ONLY quota will be passed
|
|
8
|
+
*
|
|
9
|
+
* @deprecated Use `calcBorrowRate` from `sdk/positions` instead.
|
|
8
10
|
*/
|
|
9
11
|
function getSingleQuotaBorrowRate(props) {
|
|
10
12
|
const qr = require_common_utils_utils_creditAccount_calc_quota_borrow_rate.calcQuotaBorrowRate(props);
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
3
|
-
const require_sdk_constants_math = require("../../../sdk/constants/math.js");
|
|
4
|
-
require("../../../sdk/index.js");
|
|
5
|
-
const require_common_utils_utils_price_math = require("../price-math.js");
|
|
2
|
+
const require_sdk_positions_calcHealthFactor = require("../../../sdk/positions/calcHealthFactor.js");
|
|
6
3
|
//#region src/common-utils/utils/creditAccount/calc-health-factor.ts
|
|
7
|
-
const MAX_UINT16 = 65535;
|
|
8
4
|
/**
|
|
9
5
|
* Computes account health factor in percentage-factor units.
|
|
10
6
|
*
|
|
@@ -15,25 +11,31 @@ const MAX_UINT16 = 65535;
|
|
|
15
11
|
* @param props Credit account balances, quotas, prices, thresholds, and debt context.
|
|
16
12
|
* @returns Health factor as a number in `PERCENTAGE_FACTOR` scale,
|
|
17
13
|
* or `65535` when debt is zero.
|
|
14
|
+
*
|
|
15
|
+
* @deprecated Use `calcHealthFactor` from `sdk/positions` instead; this
|
|
16
|
+
* wrapper only maps the legacy props onto an `AccountSnapshot`.
|
|
18
17
|
*/
|
|
19
18
|
function calcHealthFactor({ assets, quotas, quotasInfo, liquidationThresholds, underlyingToken, debt, prices, tokensList }) {
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
19
|
+
const decimals = {};
|
|
20
|
+
for (const [token, meta] of Object.entries(tokensList)) decimals[token] = meta.decimals;
|
|
21
|
+
const lts = {};
|
|
22
|
+
for (const [token, lt] of Object.entries(liquidationThresholds)) lts[token] = Number(lt);
|
|
23
|
+
const activeQuotas = {};
|
|
24
|
+
for (const [token, info] of Object.entries(quotasInfo)) if (info?.isActive) activeQuotas[token] = true;
|
|
25
|
+
return require_sdk_positions_calcHealthFactor.calcHealthFactor({
|
|
26
|
+
snapshot: {
|
|
27
|
+
creditManager: underlyingToken,
|
|
28
|
+
assets,
|
|
29
|
+
quotas: Object.values(quotas),
|
|
30
|
+
totalDebt: debt,
|
|
31
|
+
totalValue: 0n
|
|
32
|
+
},
|
|
33
|
+
underlying: underlyingToken,
|
|
34
|
+
decimals,
|
|
35
|
+
prices,
|
|
36
|
+
liquidationThresholds: lts,
|
|
37
|
+
activeQuotas
|
|
38
|
+
});
|
|
37
39
|
}
|
|
38
40
|
//#endregion
|
|
39
41
|
exports.calcHealthFactor = calcHealthFactor;
|
|
@@ -9,6 +9,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
9
9
|
*
|
|
10
10
|
* @param props Quota balances and per-token quota rates.
|
|
11
11
|
* @returns Sum of `balance * rate` terms in percentage-factor scale.
|
|
12
|
+
*
|
|
13
|
+
* @deprecated Use `calcBorrowRate` from `sdk/positions` instead.
|
|
12
14
|
*/
|
|
13
15
|
function calcQuotaBorrowRate({ quotas, quotaRates }) {
|
|
14
16
|
return Object.values(quotas).reduce((acc, { token, balance }) => {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
3
|
-
require("../../../sdk/index.js");
|
|
2
|
+
const require_sdk_positions_calcTimeToLiquidationMs = require("../../../sdk/positions/calcTimeToLiquidationMs.js");
|
|
4
3
|
//#region src/common-utils/utils/creditAccount/get-time-to-liquidation.ts
|
|
5
4
|
/**
|
|
6
5
|
* Estimates time remaining until health factor reaches liquidation level.
|
|
@@ -9,13 +8,17 @@ require("../../../sdk/index.js");
|
|
|
9
8
|
* and returns a millisecond duration until `healthFactor` decays to `1.0`
|
|
10
9
|
* (`PERCENTAGE_FACTOR` in internal scale).
|
|
11
10
|
*
|
|
12
|
-
* @param props Current health factor and `
|
|
11
|
+
* @param props Current health factor and `totalBorrowRate_debt`, both `Bps`
|
|
12
|
+
* (`10000` = 100%) — not the legacy `PERCENTAGE_FACTOR_1KK` (`1_000_000` =
|
|
13
|
+
* 100%) scale the pre-rewrite frontend fed this under the same name.
|
|
13
14
|
* @returns Milliseconds to liquidation as `bigint`, or `null` when already at/under
|
|
14
15
|
* liquidation threshold or when borrow-rate exposure is zero.
|
|
16
|
+
*
|
|
17
|
+
* @deprecated Use `calcTimeToLiquidationMs` from `sdk/positions` instead;
|
|
18
|
+
* this wrapper only forwards to the new implementation.
|
|
15
19
|
*/
|
|
16
20
|
function getTimeToLiquidation({ healthFactor, totalBorrowRate_debt }) {
|
|
17
|
-
|
|
18
|
-
return (BigInt(healthFactor) - require_sdk_constants_math.PERCENTAGE_FACTOR) * (BigInt(require_sdk_constants_math.SECONDS_PER_YEAR) * require_sdk_constants_math.PERCENTAGE_FACTOR * require_sdk_constants_math.PERCENTAGE_DECIMALS / totalBorrowRate_debt) * 1000n / require_sdk_constants_math.PERCENTAGE_FACTOR;
|
|
21
|
+
return require_sdk_positions_calcTimeToLiquidationMs.calcTimeToLiquidationMs(healthFactor, totalBorrowRate_debt);
|
|
19
22
|
}
|
|
20
23
|
//#endregion
|
|
21
24
|
exports.getTimeToLiquidation = getTimeToLiquidation;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
3
|
-
require("../../../sdk/index.js");
|
|
2
|
+
const require_sdk_positions_calcLiquidationPriceForTarget = require("../../../sdk/positions/calcLiquidationPriceForTarget.js");
|
|
4
3
|
//#region src/common-utils/utils/creditAccount/liquidation-price.ts
|
|
5
4
|
/**
|
|
6
5
|
* Calculates target token liquidation price for a credit account.
|
|
@@ -13,17 +12,28 @@ require("../../../sdk/index.js");
|
|
|
13
12
|
* @param props Debt context, assets, thresholds, and token metadata.
|
|
14
13
|
* @returns Target token price in `PRICE_DECIMALS` precision that corresponds
|
|
15
14
|
* to liquidation boundary; returns `0n` when target balance or LT is non-positive.
|
|
15
|
+
*
|
|
16
|
+
* @deprecated Use `calcLiquidationPriceForTarget` from `sdk/positions`
|
|
17
|
+
* instead; this wrapper only maps the legacy props onto an `AccountSnapshot`.
|
|
16
18
|
*/
|
|
17
19
|
function liquidationPrice({ liquidationThresholds, debt, underlyingToken, targetToken, assets, tokensList }) {
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
20
|
+
const decimals = {};
|
|
21
|
+
for (const [token, meta] of Object.entries(tokensList)) decimals[token] = meta.decimals;
|
|
22
|
+
const lts = {};
|
|
23
|
+
for (const [token, lt] of Object.entries(liquidationThresholds)) lts[token] = Number(lt);
|
|
24
|
+
return require_sdk_positions_calcLiquidationPriceForTarget.calcLiquidationPriceForTarget({
|
|
25
|
+
snapshot: {
|
|
26
|
+
creditManager: underlyingToken,
|
|
27
|
+
assets: Object.values(assets),
|
|
28
|
+
quotas: [],
|
|
29
|
+
totalDebt: debt,
|
|
30
|
+
totalValue: 0n
|
|
31
|
+
},
|
|
32
|
+
targetToken,
|
|
33
|
+
underlying: underlyingToken,
|
|
34
|
+
decimals,
|
|
35
|
+
liquidationThresholds: lts
|
|
36
|
+
});
|
|
27
37
|
}
|
|
28
38
|
//#endregion
|
|
29
39
|
exports.liquidationPrice = liquidationPrice;
|
|
@@ -87,7 +87,6 @@ var AccountOpener = class extends require_sdk_base_SDKConstruct.SDKConstruct {
|
|
|
87
87
|
depositIntoPools,
|
|
88
88
|
claimFromFaucet
|
|
89
89
|
}, "opening credit accounts");
|
|
90
|
-
await Promise.all([this.sdk.tokensMeta.loadTokenData(), this.sdk.marketRegister.loadZappers()]);
|
|
91
90
|
let deposits = [];
|
|
92
91
|
if (depositIntoPools) try {
|
|
93
92
|
deposits = await this.#depositIntoPools(targets);
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_model_opportunities = require("../model/opportunities.js");
|
|
3
|
+
require("../model/index.js");
|
|
4
|
+
const require_dev_fieldDiff = require("./fieldDiff.js");
|
|
5
|
+
//#region src/dev/compareOpportunities.ts
|
|
6
|
+
/**
|
|
7
|
+
* Matches two opportunity listings by {@link opportunityId} and reports every
|
|
8
|
+
* field the two sources disagree on.
|
|
9
|
+
*
|
|
10
|
+
* Nothing is filtered out. A field only the backend can fill, or a USD value
|
|
11
|
+
* that drifted within snapshot-lag noise, is still reported — tagged
|
|
12
|
+
* {@link FieldDiff.expected} so that {@link CompareCounts.clean} can ignore it
|
|
13
|
+
* while {@link CompareCounts.identical} stays strict.
|
|
14
|
+
**/
|
|
15
|
+
function compareOpportunities(input) {
|
|
16
|
+
const onchainRows = indexById(input.onchain.data);
|
|
17
|
+
const offchainRows = indexById(input.offchain.data);
|
|
18
|
+
const onlyOnchain = [];
|
|
19
|
+
const onlyOffchain = [];
|
|
20
|
+
const matched = [];
|
|
21
|
+
for (const [id, row] of onchainRows) {
|
|
22
|
+
const counterpart = offchainRows.get(id);
|
|
23
|
+
if (!counterpart) {
|
|
24
|
+
onlyOnchain.push(toRef(row));
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const diffs = diffOpportunity(row, counterpart);
|
|
28
|
+
matched.push({
|
|
29
|
+
id,
|
|
30
|
+
kind: row.kind,
|
|
31
|
+
chainId: row.chainId,
|
|
32
|
+
onchainName: row.name,
|
|
33
|
+
offchainName: counterpart.name,
|
|
34
|
+
identical: diffs.length === 0,
|
|
35
|
+
clean: diffs.every((diff) => diff.expected),
|
|
36
|
+
diffs
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
for (const [id, row] of offchainRows) if (!onchainRows.has(id)) onlyOffchain.push(toRef(row));
|
|
40
|
+
byId(onlyOnchain);
|
|
41
|
+
byId(onlyOffchain);
|
|
42
|
+
matched.sort((a, b) => a.id.localeCompare(b.id));
|
|
43
|
+
return {
|
|
44
|
+
generatedAt: input.generatedAt ?? (/* @__PURE__ */ new Date()).toISOString(),
|
|
45
|
+
backendUrl: input.backendUrl,
|
|
46
|
+
networks: [...input.networks],
|
|
47
|
+
onchainChains: input.onchain.meta.chains,
|
|
48
|
+
offchainChains: input.offchain.meta.chains,
|
|
49
|
+
summary: summarize(input.onchain.data, input.offchain.data, onlyOnchain, onlyOffchain, matched),
|
|
50
|
+
onlyOnchain,
|
|
51
|
+
onlyOffchain,
|
|
52
|
+
matched
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function indexById(rows) {
|
|
56
|
+
return new Map(rows.map((row) => [require_model_opportunities.opportunityId(row), row]));
|
|
57
|
+
}
|
|
58
|
+
function byId(refs) {
|
|
59
|
+
refs.sort((a, b) => a.id.localeCompare(b.id));
|
|
60
|
+
}
|
|
61
|
+
function toRef(row) {
|
|
62
|
+
const base = {
|
|
63
|
+
id: require_model_opportunities.opportunityId(row),
|
|
64
|
+
kind: row.kind,
|
|
65
|
+
chainId: row.chainId,
|
|
66
|
+
name: row.name
|
|
67
|
+
};
|
|
68
|
+
return row.kind === "pool" ? {
|
|
69
|
+
...base,
|
|
70
|
+
pool: row.pool
|
|
71
|
+
} : {
|
|
72
|
+
...base,
|
|
73
|
+
creditManager: row.creditManager,
|
|
74
|
+
targetCollateral: row.targetCollateral.address
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Every field two versions of one opportunity disagree on.
|
|
79
|
+
**/
|
|
80
|
+
function diffOpportunity(onchain, offchain) {
|
|
81
|
+
return require_dev_fieldDiff.diffObjects(onchain, offchain).map((diff) => tagDiff(diff, onchain.kind));
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Paths whose values are basis-point rates that routinely differ by ±1 from
|
|
85
|
+
* truncation vs rounding, plus pool `utilization` for the same reason.
|
|
86
|
+
**/
|
|
87
|
+
const BPS_RATE_PATHS = /* @__PURE__ */ new Set([
|
|
88
|
+
"borrowApy",
|
|
89
|
+
"supplyApy.organicApy",
|
|
90
|
+
"additionalBorrowApy",
|
|
91
|
+
"utilization"
|
|
92
|
+
]);
|
|
93
|
+
/**
|
|
94
|
+
* Amount fields whose bigint `value` moves with expected-liquidity accrual
|
|
95
|
+
* between the backend's last sync and the current block. Strategy
|
|
96
|
+
* `totalBorrow.value` and `maxBorrowAmount.value` are not in this set: those
|
|
97
|
+
* disagreements are formula bugs, not lag.
|
|
98
|
+
**/
|
|
99
|
+
const LAG_AMOUNT_PATHS = /* @__PURE__ */ new Set(["totalSupply.value", "availableLiquidity.value"]);
|
|
100
|
+
/**
|
|
101
|
+
* Fields documented `@mode offchain` in the model: the chain has nothing to
|
|
102
|
+
* put there, so a presence (or nested) mismatch is expected. Strategy
|
|
103
|
+
* `utilization` is in this set; pool `utilization` is not.
|
|
104
|
+
**/
|
|
105
|
+
function isModeScoped(path, kind) {
|
|
106
|
+
if (path === "curator.url") return true;
|
|
107
|
+
if (path === "totalApy" || path.endsWith(".totalApy")) return true;
|
|
108
|
+
if (path === "rewards" || path.startsWith("rewards[") || path.includes(".rewards[") || path.endsWith(".rewards")) return true;
|
|
109
|
+
if (kind !== "strategy") return false;
|
|
110
|
+
return path === "utilization" || path === "collateralApy" || path.startsWith("collateralApy.") || path === "maxLeverageApy" || path.startsWith("maxLeverageApy.") || path === "totalValue" || path.startsWith("totalValue.");
|
|
111
|
+
}
|
|
112
|
+
function tagDiff(diff, kind) {
|
|
113
|
+
if (isModeScoped(diff.path, kind)) return require_dev_fieldDiff.withExpected(diff, "mode-scoped");
|
|
114
|
+
if (withinTolerance(diff)) return require_dev_fieldDiff.withExpected(diff, "tolerance");
|
|
115
|
+
return diff;
|
|
116
|
+
}
|
|
117
|
+
function withinTolerance(diff) {
|
|
118
|
+
if (diff.kind === "usd") return require_dev_fieldDiff.isUsdWithinTolerance(diff.onchain, diff.offchain);
|
|
119
|
+
if (diff.kind !== "numeric") return false;
|
|
120
|
+
if (BPS_RATE_PATHS.has(diff.path)) return require_dev_fieldDiff.isBpsWithinTolerance(diff.onchain, diff.offchain);
|
|
121
|
+
if (LAG_AMOUNT_PATHS.has(diff.path)) return require_dev_fieldDiff.isAmountWithinTolerance(diff.onchain, diff.offchain);
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
function summarize(onchain, offchain, onlyOnchain, onlyOffchain, matched) {
|
|
125
|
+
const byChain = require_dev_fieldDiff.union(onchain.map((row) => String(row.chainId)), offchain.map((row) => String(row.chainId))).map((chainId) => ({
|
|
126
|
+
chainId: Number(chainId),
|
|
127
|
+
...require_dev_fieldDiff.toCompareCounts(onchain.filter((row) => String(row.chainId) === chainId).length, offchain.filter((row) => String(row.chainId) === chainId).length, onlyOnchain.filter((ref) => String(ref.chainId) === chainId).length, onlyOffchain.filter((ref) => String(ref.chainId) === chainId).length, matched.filter((match) => String(match.chainId) === chainId))
|
|
128
|
+
})).sort((a, b) => a.chainId - b.chainId);
|
|
129
|
+
return {
|
|
130
|
+
...require_dev_fieldDiff.toCompareCounts(onchain.length, offchain.length, onlyOnchain.length, onlyOffchain.length, matched),
|
|
131
|
+
byChain,
|
|
132
|
+
diffsByPath: require_dev_fieldDiff.countPaths(matched.flatMap((match) => match.diffs))
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
//#endregion
|
|
136
|
+
exports.compareOpportunities = compareOpportunities;
|
|
137
|
+
exports.diffOpportunity = diffOpportunity;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_model_positions = require("../model/positions.js");
|
|
3
|
+
require("../model/index.js");
|
|
4
|
+
const require_dev_fieldDiff = require("./fieldDiff.js");
|
|
5
|
+
//#region src/dev/comparePositions.ts
|
|
6
|
+
/**
|
|
7
|
+
* Matches two position listings per wallet by {@link positionId} and reports
|
|
8
|
+
* every field the two sources disagree on.
|
|
9
|
+
*
|
|
10
|
+
* Nothing is filtered out. A field only one mode can fill, or a USD value that
|
|
11
|
+
* drifted within snapshot-lag noise, is still reported — tagged
|
|
12
|
+
* {@link FieldDiff.expected} so that {@link CompareCounts.clean} can ignore it
|
|
13
|
+
* while {@link CompareCounts.identical} stays strict.
|
|
14
|
+
**/
|
|
15
|
+
function comparePositions(input) {
|
|
16
|
+
const failures = input.failures ?? [];
|
|
17
|
+
const wallets = [...input.wallets.map(compareWallet), ...failures.map((failure) => ({
|
|
18
|
+
wallet: failure.wallet,
|
|
19
|
+
error: failure.error,
|
|
20
|
+
onlyOnchain: [],
|
|
21
|
+
onlyOffchain: [],
|
|
22
|
+
matched: []
|
|
23
|
+
}))];
|
|
24
|
+
wallets.sort((a, b) => a.wallet.localeCompare(b.wallet));
|
|
25
|
+
return {
|
|
26
|
+
generatedAt: input.generatedAt ?? (/* @__PURE__ */ new Date()).toISOString(),
|
|
27
|
+
backendUrl: input.backendUrl,
|
|
28
|
+
networks: [...input.networks],
|
|
29
|
+
onchainChains: collectChains(input.wallets, "onchain"),
|
|
30
|
+
offchainChains: collectChains(input.wallets, "offchain"),
|
|
31
|
+
summary: summarize(input.wallets, wallets, failures.length),
|
|
32
|
+
wallets
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Every field two versions of one position disagree on.
|
|
37
|
+
**/
|
|
38
|
+
function diffPosition(onchain, offchain) {
|
|
39
|
+
return require_dev_fieldDiff.diffObjects(onchain, offchain, { keyOf: keyOfPositionArray }).map((diff) => tagDiff(diff, onchain.kind));
|
|
40
|
+
}
|
|
41
|
+
function compareWallet(input) {
|
|
42
|
+
const onchainRows = indexById(input.onchain.data);
|
|
43
|
+
const offchainRows = indexById(input.offchain.data);
|
|
44
|
+
const onlyOnchain = [];
|
|
45
|
+
const onlyOffchain = [];
|
|
46
|
+
const matched = [];
|
|
47
|
+
for (const [id, row] of onchainRows) {
|
|
48
|
+
const counterpart = offchainRows.get(id);
|
|
49
|
+
if (!counterpart) {
|
|
50
|
+
onlyOnchain.push(toRef(row));
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
const diffs = diffPosition(row, counterpart);
|
|
54
|
+
matched.push({
|
|
55
|
+
id,
|
|
56
|
+
kind: row.kind,
|
|
57
|
+
chainId: row.chainId,
|
|
58
|
+
onchainName: row.name,
|
|
59
|
+
offchainName: counterpart.name,
|
|
60
|
+
identical: diffs.length === 0,
|
|
61
|
+
clean: diffs.every((diff) => diff.expected),
|
|
62
|
+
diffs
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
for (const [id, row] of offchainRows) if (!onchainRows.has(id)) onlyOffchain.push(toRef(row));
|
|
66
|
+
onlyOnchain.sort((a, b) => a.id.localeCompare(b.id));
|
|
67
|
+
onlyOffchain.sort((a, b) => a.id.localeCompare(b.id));
|
|
68
|
+
matched.sort((a, b) => a.id.localeCompare(b.id));
|
|
69
|
+
return {
|
|
70
|
+
wallet: input.wallet,
|
|
71
|
+
onlyOnchain,
|
|
72
|
+
onlyOffchain,
|
|
73
|
+
matched
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function indexById(rows) {
|
|
77
|
+
return new Map(rows.map((row) => [require_model_positions.positionId(row), row]));
|
|
78
|
+
}
|
|
79
|
+
function toRef(row) {
|
|
80
|
+
const base = {
|
|
81
|
+
id: require_model_positions.positionId(row),
|
|
82
|
+
kind: row.kind,
|
|
83
|
+
chainId: row.chainId,
|
|
84
|
+
name: row.name
|
|
85
|
+
};
|
|
86
|
+
switch (row.kind) {
|
|
87
|
+
case "pool": return {
|
|
88
|
+
...base,
|
|
89
|
+
pool: row.pool
|
|
90
|
+
};
|
|
91
|
+
case "strategy": return {
|
|
92
|
+
...base,
|
|
93
|
+
creditAccount: row.creditAccount,
|
|
94
|
+
creditManager: row.creditManager
|
|
95
|
+
};
|
|
96
|
+
case "liquidation": return base;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* `collaterals[]` is keyed by the collateral token, not by a top-level
|
|
101
|
+
* address. Rewards-points programs already identify themselves by `id`.
|
|
102
|
+
**/
|
|
103
|
+
function keyOfPositionArray(path, value) {
|
|
104
|
+
if (path !== "collaterals" || !require_dev_fieldDiff.isRecord(value) || !require_dev_fieldDiff.isRecord(value.collateral)) return;
|
|
105
|
+
const token = value.collateral.token;
|
|
106
|
+
return require_dev_fieldDiff.isRecord(token) && typeof token.address === "string" ? token.address : void 0;
|
|
107
|
+
}
|
|
108
|
+
const BPS_RATE_PATHS = /* @__PURE__ */ new Set([
|
|
109
|
+
"borrowApy",
|
|
110
|
+
"apy.organicApy",
|
|
111
|
+
"healthFactor"
|
|
112
|
+
]);
|
|
113
|
+
/**
|
|
114
|
+
* Amount fields whose bigint `value` moves with interest accrual between the
|
|
115
|
+
* backend's last sync and the current block.
|
|
116
|
+
**/
|
|
117
|
+
function isLagAmountPath(path) {
|
|
118
|
+
return path === "totalDebt.value" || path === "totalValue.value" || path === "netValue.value" || path.endsWith(".collateral.value") || path.endsWith(".quota.value");
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Fields documented `@mode offchain` or `@mode onchain` in the model.
|
|
122
|
+
**/
|
|
123
|
+
function isModeScoped(path, kind) {
|
|
124
|
+
if (path === "pnl" || path.startsWith("pnl.")) return true;
|
|
125
|
+
if (kind === "pool") return path === "apy.totalApy" || path.startsWith("apy.rewards");
|
|
126
|
+
if (kind === "strategy") return path === "netApy" || path.startsWith("netApy.") || path === "borrowRate" || path.startsWith("borrowRate.") || path === "timeToLiquidation" || path === "liquidationPrice";
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
function tagDiff(diff, kind) {
|
|
130
|
+
if (isModeScoped(diff.path, kind)) return require_dev_fieldDiff.withExpected(diff, "mode-scoped");
|
|
131
|
+
if (withinTolerance(diff)) return require_dev_fieldDiff.withExpected(diff, "tolerance");
|
|
132
|
+
return diff;
|
|
133
|
+
}
|
|
134
|
+
function withinTolerance(diff) {
|
|
135
|
+
if (diff.kind === "usd") return require_dev_fieldDiff.isUsdWithinTolerance(diff.onchain, diff.offchain);
|
|
136
|
+
if (diff.kind !== "numeric") return false;
|
|
137
|
+
if (diff.path === "leverage") return require_dev_fieldDiff.withinRelative(require_dev_fieldDiff.asFiniteNumber(diff.onchain), require_dev_fieldDiff.asFiniteNumber(diff.offchain), require_dev_fieldDiff.USD_RELATIVE_EPSILON);
|
|
138
|
+
if (BPS_RATE_PATHS.has(diff.path)) return require_dev_fieldDiff.isBpsWithinTolerance(diff.onchain, diff.offchain);
|
|
139
|
+
if (isLagAmountPath(diff.path)) return require_dev_fieldDiff.isAmountWithinTolerance(diff.onchain, diff.offchain);
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
function summarize(inputs, wallets, failed) {
|
|
143
|
+
const compared = wallets.filter((wallet) => !wallet.error);
|
|
144
|
+
const allOnchain = inputs.flatMap((input) => input.onchain.data);
|
|
145
|
+
const allOffchain = inputs.flatMap((input) => input.offchain.data);
|
|
146
|
+
const onlyOnchain = compared.flatMap((wallet) => wallet.onlyOnchain);
|
|
147
|
+
const onlyOffchain = compared.flatMap((wallet) => wallet.onlyOffchain);
|
|
148
|
+
const matched = compared.flatMap((wallet) => wallet.matched);
|
|
149
|
+
const byChain = require_dev_fieldDiff.union(allOnchain.map((row) => String(row.chainId)), allOffchain.map((row) => String(row.chainId))).map((chainId) => ({
|
|
150
|
+
chainId: Number(chainId),
|
|
151
|
+
...require_dev_fieldDiff.toCompareCounts(allOnchain.filter((row) => String(row.chainId) === chainId).length, allOffchain.filter((row) => String(row.chainId) === chainId).length, onlyOnchain.filter((ref) => String(ref.chainId) === chainId).length, onlyOffchain.filter((ref) => String(ref.chainId) === chainId).length, matched.filter((match) => String(match.chainId) === chainId))
|
|
152
|
+
})).sort((a, b) => a.chainId - b.chainId);
|
|
153
|
+
const byWallet = wallets.map((wallet) => ({
|
|
154
|
+
wallet: wallet.wallet,
|
|
155
|
+
...wallet.error ? { error: wallet.error } : {},
|
|
156
|
+
...require_dev_fieldDiff.toCompareCounts(wallet.matched.length + wallet.onlyOnchain.length, wallet.matched.length + wallet.onlyOffchain.length, wallet.onlyOnchain.length, wallet.onlyOffchain.length, wallet.matched)
|
|
157
|
+
}));
|
|
158
|
+
const walletsClean = compared.filter((wallet) => wallet.onlyOnchain.length === 0 && wallet.onlyOffchain.length === 0 && wallet.matched.every((match) => match.clean)).length;
|
|
159
|
+
return {
|
|
160
|
+
...require_dev_fieldDiff.toCompareCounts(allOnchain.length, allOffchain.length, onlyOnchain.length, onlyOffchain.length, matched),
|
|
161
|
+
wallets: wallets.length,
|
|
162
|
+
walletsClean,
|
|
163
|
+
walletsFailed: failed,
|
|
164
|
+
byChain,
|
|
165
|
+
byWallet,
|
|
166
|
+
diffsByPath: require_dev_fieldDiff.countPaths(matched.flatMap((match) => match.diffs))
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* One metadata entry per chain, preferring a success so the report names the
|
|
171
|
+
* block. Later wallets of the same chain are ignored.
|
|
172
|
+
**/
|
|
173
|
+
function collectChains(wallets, side) {
|
|
174
|
+
const byChain = /* @__PURE__ */ new Map();
|
|
175
|
+
for (const wallet of wallets) for (const chain of wallet[side].meta.chains) {
|
|
176
|
+
const existing = byChain.get(chain.chainId);
|
|
177
|
+
if (!existing || existing.status !== "success" && chain.status === "success") byChain.set(chain.chainId, chain);
|
|
178
|
+
}
|
|
179
|
+
return [...byChain.values()].sort((a, b) => a.chainId - b.chainId);
|
|
180
|
+
}
|
|
181
|
+
//#endregion
|
|
182
|
+
exports.comparePositions = comparePositions;
|
|
183
|
+
exports.diffPosition = diffPosition;
|