@gearbox-protocol/sdk 16.0.0-next.49 → 16.0.0-next.50
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/model/index.js +0 -7
- package/dist/cjs/model/previews.js +0 -40
- package/dist/cjs/onchain/index.js +2 -0
- package/dist/cjs/onchain/market/index.js +2 -0
- package/dist/cjs/onchain/market/oracle/errors.js +14 -0
- package/dist/cjs/onchain/market/oracle/index.js +2 -0
- package/dist/cjs/onchain/validation/checks.js +19 -11
- package/dist/cjs/preview/index.js +7 -2
- package/dist/cjs/preview/preview/buildDelayedStrategyPositionOperationPreview.js +8 -8
- package/dist/cjs/preview/preview/errors.js +77 -9
- package/dist/cjs/preview/preview/index.js +7 -2
- package/dist/cjs/preview/preview/previewAdjustStrategyPosition.js +7 -7
- package/dist/cjs/preview/preview/previewExitOrRepayStrategyPosition.js +10 -10
- package/dist/cjs/preview/preview/previewOpenStrategyPosition.js +7 -9
- package/dist/cjs/preview/preview/replayInnerOperations.js +15 -37
- package/dist/cjs/preview/preview/replayMulticall.js +1 -1
- package/dist/cjs/preview/preview/unwrapNativeCollateral.js +4 -9
- package/dist/cjs/preview/validate/checkOperation.js +1 -1
- package/dist/esm/model/index.js +2 -2
- package/dist/esm/model/previews.js +1 -34
- package/dist/esm/onchain/index.js +2 -1
- package/dist/esm/onchain/market/index.js +2 -1
- package/dist/esm/onchain/market/oracle/errors.js +13 -0
- package/dist/esm/onchain/market/oracle/index.js +2 -1
- package/dist/esm/onchain/validation/checks.js +19 -11
- package/dist/esm/preview/index.js +2 -2
- package/dist/esm/preview/preview/buildDelayedStrategyPositionOperationPreview.js +8 -8
- package/dist/esm/preview/preview/errors.js +72 -9
- package/dist/esm/preview/preview/index.js +2 -2
- package/dist/esm/preview/preview/previewAdjustStrategyPosition.js +7 -7
- package/dist/esm/preview/preview/previewExitOrRepayStrategyPosition.js +10 -10
- package/dist/esm/preview/preview/previewOpenStrategyPosition.js +8 -10
- package/dist/esm/preview/preview/replayInnerOperations.js +15 -37
- package/dist/esm/preview/preview/replayMulticall.js +1 -1
- package/dist/esm/preview/preview/unwrapNativeCollateral.js +4 -9
- package/dist/esm/preview/validate/checkOperation.js +1 -1
- package/dist/types/model/index.d.ts +2 -2
- package/dist/types/model/previews.d.ts +78 -49
- package/dist/types/onchain/index.d.ts +2 -1
- package/dist/types/onchain/market/MarketSuite.d.ts +2 -2
- package/dist/types/onchain/market/index.d.ts +2 -1
- package/dist/types/onchain/market/oracle/errors.d.ts +19 -0
- package/dist/types/onchain/market/oracle/index.d.ts +2 -1
- package/dist/types/onchain/validation/checks.d.ts +10 -13
- package/dist/types/onchain/validation/refusal.d.ts +4 -6
- package/dist/types/preview/index.d.ts +2 -2
- package/dist/types/preview/preview/buildDelayedStrategyPositionOperationPreview.d.ts +1 -1
- package/dist/types/preview/preview/errors.d.ts +27 -6
- package/dist/types/preview/preview/index.d.ts +2 -2
- package/dist/types/preview/preview/replayInnerOperations.d.ts +2 -2
- package/dist/types/preview/preview/replayMulticall.d.ts +1 -1
- package/dist/types/preview/preview/unwrapNativeCollateral.d.ts +4 -5
- package/dist/types/sdk/prepare/errors.d.ts +5 -3
- package/package.json +1 -1
package/dist/cjs/model/index.js
CHANGED
|
@@ -27,13 +27,6 @@ const require_model_withdrawals_schema = require("./withdrawals.schema.js");
|
|
|
27
27
|
exports.CHART_METRIC_UNITS = require_model_charts.CHART_METRIC_UNITS;
|
|
28
28
|
exports.CHART_RANGES = require_model_charts.CHART_RANGES;
|
|
29
29
|
exports.CHART_UNAVAILABLE_CODES = require_model_charts.CHART_UNAVAILABLE_CODES;
|
|
30
|
-
exports.ERROR_ADAPTER_CALL_OUTSIDE_BRACKET = require_model_previews.ERROR_ADAPTER_CALL_OUTSIDE_BRACKET;
|
|
31
|
-
exports.ERROR_INVALID_TRANSACTION_VALUE = require_model_previews.ERROR_INVALID_TRANSACTION_VALUE;
|
|
32
|
-
exports.ERROR_MALFORMED_BRACKET = require_model_previews.ERROR_MALFORMED_BRACKET;
|
|
33
|
-
exports.ERROR_NON_ADAPTER_CALL_IN_BRACKET = require_model_previews.ERROR_NON_ADAPTER_CALL_IN_BRACKET;
|
|
34
|
-
exports.ERROR_UNPREVIEWABLE_ADAPTER_CALL = require_model_previews.ERROR_UNPREVIEWABLE_ADAPTER_CALL;
|
|
35
|
-
exports.ERROR_UNPRICEABLE_TOKEN = require_model_previews.ERROR_UNPRICEABLE_TOKEN;
|
|
36
|
-
exports.ERROR_UNSUPPORTED_OUT_OF_BRACKET_CALL = require_model_previews.ERROR_UNSUPPORTED_OUT_OF_BRACKET_CALL;
|
|
37
30
|
exports.FILTER_ALL = require_model_filters.FILTER_ALL;
|
|
38
31
|
exports.POOL_OPPORTUNITY_CHART_METRICS = require_model_charts.POOL_OPPORTUNITY_CHART_METRICS;
|
|
39
32
|
exports.POOL_POSITION_CHART_METRICS = require_model_charts.POOL_POSITION_CHART_METRICS;
|
|
@@ -1,39 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
//#region src/model/previews.ts
|
|
3
3
|
/**
|
|
4
|
-
* Broken `storeExpectedBalances`/`compareBalances` bracket structure:
|
|
5
|
-
* `storeExpectedBalances` without a matching `compareBalances`, nested
|
|
6
|
-
* brackets, or `compareBalances` without a preceding `storeExpectedBalances`.
|
|
7
|
-
* We expect transactions that were generated by our frontend using router/withdrawal compressor
|
|
8
|
-
**/
|
|
9
|
-
const ERROR_MALFORMED_BRACKET = 1001;
|
|
10
|
-
/**
|
|
11
|
-
* Adapter call outside a `storeExpectedBalances`/`compareBalances` bracket
|
|
12
|
-
* We expect transactions that were generated by our frontend using router/withdrawal compressor,
|
|
13
|
-
**/
|
|
14
|
-
const ERROR_ADAPTER_CALL_OUTSIDE_BRACKET = 1002;
|
|
15
|
-
/**
|
|
16
|
-
* Bracketed call whose target is not an adapter (or adapter that is not known to the SDK)
|
|
17
|
-
**/
|
|
18
|
-
const ERROR_NON_ADAPTER_CALL_IN_BRACKET = 1003;
|
|
19
|
-
/**
|
|
20
|
-
* Bracketed adapter call cannot be replayed (undecodable/unsupported calldata)
|
|
21
|
-
**/
|
|
22
|
-
const ERROR_UNPREVIEWABLE_ADAPTER_CALL = 1004;
|
|
23
|
-
/**
|
|
24
|
-
* An out-of-bracket adapter call that is allowed there (e.g. RWA wrap/unwrap)
|
|
25
|
-
* could not be decoded or replayed
|
|
26
|
-
**/
|
|
27
|
-
const ERROR_UNSUPPORTED_OUT_OF_BRACKET_CALL = 1005;
|
|
28
|
-
/**
|
|
29
|
-
* `msg.value` does not fit into the declared WETH collateral
|
|
30
|
-
* Transactions can have arbitrary value, but the ones that we create
|
|
31
|
-
* using our frontend should have a value that fits into the declared WETH collateral.
|
|
32
|
-
**/
|
|
33
|
-
const ERROR_INVALID_TRANSACTION_VALUE = 1006;
|
|
34
|
-
/** A token in the preview could not be priced by the oracle */
|
|
35
|
-
const ERROR_UNPRICEABLE_TOKEN = 2001;
|
|
36
|
-
/**
|
|
37
4
|
* Renames a projection's routed fields, for a caller that built one from floor
|
|
38
5
|
* balances.
|
|
39
6
|
*
|
|
@@ -56,11 +23,4 @@ function asEstimated(p) {
|
|
|
56
23
|
};
|
|
57
24
|
}
|
|
58
25
|
//#endregion
|
|
59
|
-
exports.ERROR_ADAPTER_CALL_OUTSIDE_BRACKET = ERROR_ADAPTER_CALL_OUTSIDE_BRACKET;
|
|
60
|
-
exports.ERROR_INVALID_TRANSACTION_VALUE = ERROR_INVALID_TRANSACTION_VALUE;
|
|
61
|
-
exports.ERROR_MALFORMED_BRACKET = ERROR_MALFORMED_BRACKET;
|
|
62
|
-
exports.ERROR_NON_ADAPTER_CALL_IN_BRACKET = ERROR_NON_ADAPTER_CALL_IN_BRACKET;
|
|
63
|
-
exports.ERROR_UNPREVIEWABLE_ADAPTER_CALL = ERROR_UNPREVIEWABLE_ADAPTER_CALL;
|
|
64
|
-
exports.ERROR_UNPRICEABLE_TOKEN = ERROR_UNPRICEABLE_TOKEN;
|
|
65
|
-
exports.ERROR_UNSUPPORTED_OUT_OF_BRACKET_CALL = ERROR_UNSUPPORTED_OUT_OF_BRACKET_CALL;
|
|
66
26
|
exports.asEstimated = asEstimated;
|
|
@@ -172,6 +172,7 @@ const require_onchain_market_pricefeeds_ZeroPriceFeed = require("./market/pricef
|
|
|
172
172
|
const require_onchain_market_pricefeeds_PriceFeedsRegister = require("./market/pricefeeds/PriceFeedsRegister.js");
|
|
173
173
|
const require_onchain_market_oracle_PriceOracleV310Contract = require("./market/oracle/PriceOracleV310Contract.js");
|
|
174
174
|
const require_onchain_market_oracle_createPriceOracle = require("./market/oracle/createPriceOracle.js");
|
|
175
|
+
const require_onchain_market_oracle_errors = require("./market/oracle/errors.js");
|
|
175
176
|
const require_onchain_market_pool_GaugeContract = require("./market/pool/GaugeContract.js");
|
|
176
177
|
const require_onchain_market_pool_LinearInterestRateModelContract = require("./market/pool/LinearInterestRateModelContract.js");
|
|
177
178
|
const require_onchain_market_pool_PoolV310Contract = require("./market/pool/PoolV310Contract.js");
|
|
@@ -708,5 +709,6 @@ exports.toSignificant = require_onchain_utils_formatter.toSignificant;
|
|
|
708
709
|
exports.toToken = require_onchain_validation_token.toToken;
|
|
709
710
|
exports.toTokenAmount = require_onchain_validation_token.toTokenAmount;
|
|
710
711
|
exports.toWithdrawalStatus = require_onchain_accounts_withdrawal_compressor_types.toWithdrawalStatus;
|
|
712
|
+
exports.unpriceableTokenError = require_onchain_market_oracle_errors.unpriceableTokenError;
|
|
711
713
|
exports.usdToNumber = require_onchain_market_math.usdToNumber;
|
|
712
714
|
exports.watchBlocksAsync = require_onchain_utils_viem_watchBlocksAsync.watchBlocksAsync;
|
|
@@ -122,6 +122,7 @@ const require_onchain_market_pricefeeds_PriceFeedsRegister = require("./pricefee
|
|
|
122
122
|
require("./pricefeeds/index.js");
|
|
123
123
|
const require_onchain_market_oracle_PriceOracleV310Contract = require("./oracle/PriceOracleV310Contract.js");
|
|
124
124
|
const require_onchain_market_oracle_createPriceOracle = require("./oracle/createPriceOracle.js");
|
|
125
|
+
const require_onchain_market_oracle_errors = require("./oracle/errors.js");
|
|
125
126
|
require("./oracle/index.js");
|
|
126
127
|
const require_onchain_market_pool_GaugeContract = require("./pool/GaugeContract.js");
|
|
127
128
|
const require_onchain_market_pool_LinearInterestRateModelContract = require("./pool/LinearInterestRateModelContract.js");
|
|
@@ -360,4 +361,5 @@ exports.rewardsFromTransfers = require_onchain_market_adapters_transferHelpers.r
|
|
|
360
361
|
exports.strategyName = require_onchain_market_strategyName.strategyName;
|
|
361
362
|
exports.swapFromTransfers = require_onchain_market_adapters_transferHelpers.swapFromTransfers;
|
|
362
363
|
exports.toNetTransfers = require_onchain_market_adapters_transferHelpers.toNetTransfers;
|
|
364
|
+
exports.unpriceableTokenError = require_onchain_market_oracle_errors.unpriceableTokenError;
|
|
363
365
|
exports.usdToNumber = require_onchain_market_math.usdToNumber;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/onchain/market/oracle/errors.ts
|
|
3
|
+
/**
|
|
4
|
+
* Builds an {@link UnpriceableTokenError} for `token`.
|
|
5
|
+
**/
|
|
6
|
+
function unpriceableTokenError(token) {
|
|
7
|
+
return {
|
|
8
|
+
code: "unpriceableToken",
|
|
9
|
+
message: `cannot price token ${token}`,
|
|
10
|
+
token
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
exports.unpriceableTokenError = unpriceableTokenError;
|
|
@@ -2,7 +2,9 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
const require_onchain_market_oracle_collateralPriceInUnderlying = require("./collateralPriceInUnderlying.js");
|
|
3
3
|
const require_onchain_market_oracle_PriceOracleV310Contract = require("./PriceOracleV310Contract.js");
|
|
4
4
|
const require_onchain_market_oracle_createPriceOracle = require("./createPriceOracle.js");
|
|
5
|
+
const require_onchain_market_oracle_errors = require("./errors.js");
|
|
5
6
|
require("./types.js");
|
|
6
7
|
exports.PriceOracleV310Contract = require_onchain_market_oracle_PriceOracleV310Contract.PriceOracleV310Contract;
|
|
7
8
|
exports.collateralPriceInUnderlying = require_onchain_market_oracle_collateralPriceInUnderlying.collateralPriceInUnderlying;
|
|
8
9
|
exports.createPriceOracle = require_onchain_market_oracle_createPriceOracle.createPriceOracle;
|
|
10
|
+
exports.unpriceableTokenError = require_onchain_market_oracle_errors.unpriceableTokenError;
|
|
@@ -208,24 +208,32 @@ function checkFunding(args) {
|
|
|
208
208
|
/**
|
|
209
209
|
* The SDK could not replay the transaction.
|
|
210
210
|
*
|
|
211
|
-
* Only
|
|
212
|
-
*
|
|
213
|
-
*
|
|
211
|
+
* Only a {@link MalformedPreviewError} lands here. An `unpriceableToken`
|
|
212
|
+
* warning says the transaction is fine and the SDK could not fully evaluate
|
|
213
|
+
* it, which is a caveat on the numbers rather than a reason to refuse — it
|
|
214
|
+
* stays on the preview for the caller to surface.
|
|
214
215
|
*/
|
|
215
|
-
function checkPreviewError(
|
|
216
|
-
if (!
|
|
216
|
+
function checkPreviewError(warning) {
|
|
217
|
+
if (!warning || !isMalformedPreviewError(warning)) return null;
|
|
217
218
|
return {
|
|
218
219
|
reason: "malformedTransaction",
|
|
219
|
-
detail:
|
|
220
|
+
detail: warning
|
|
220
221
|
};
|
|
221
222
|
}
|
|
222
223
|
/**
|
|
223
|
-
*
|
|
224
|
-
*
|
|
225
|
-
* incomplete. A range, so a future 1007 classifies itself.
|
|
224
|
+
* Whether the preview warning means the transaction itself is malformed,
|
|
225
|
+
* rather than that only the evaluation was incomplete.
|
|
226
226
|
*/
|
|
227
|
-
function isMalformedPreviewError(
|
|
228
|
-
|
|
227
|
+
function isMalformedPreviewError(warning) {
|
|
228
|
+
switch (warning.code) {
|
|
229
|
+
case "malformedBracket":
|
|
230
|
+
case "adapterCallOutsideBracket":
|
|
231
|
+
case "nonAdapterCallInBracket":
|
|
232
|
+
case "unpreviewableAdapterCall":
|
|
233
|
+
case "unsupportedOutOfBracketCall":
|
|
234
|
+
case "invalidTransactionValue": return true;
|
|
235
|
+
default: return false;
|
|
236
|
+
}
|
|
229
237
|
}
|
|
230
238
|
//#endregion
|
|
231
239
|
exports.MIN_HEALTH_FACTOR_FACADE = MIN_HEALTH_FACTOR_FACADE;
|
|
@@ -18,12 +18,12 @@ const require_preview_prerequisites_BalancePrerequisite = require("./prerequisit
|
|
|
18
18
|
const require_preview_prerequisites_RWAOpenRequirementsPrerequisite = require("./prerequisites/RWAOpenRequirementsPrerequisite.js");
|
|
19
19
|
const require_preview_prerequisites_checkPrerequisites = require("./prerequisites/checkPrerequisites.js");
|
|
20
20
|
require("./prerequisites/index.js");
|
|
21
|
-
const require_preview_preview_errors = require("./preview/errors.js");
|
|
22
21
|
const require_preview_preview_buildDelayedStrategyPositionOperationPreview = require("./preview/buildDelayedStrategyPositionOperationPreview.js");
|
|
23
22
|
const require_preview_preview_CreditAccountState = require("./preview/CreditAccountState.js");
|
|
24
23
|
const require_preview_preview_detectCloseOrRepay = require("./preview/detectCloseOrRepay.js");
|
|
25
24
|
const require_preview_preview_detectDelayedClaim = require("./preview/detectDelayedClaim.js");
|
|
26
25
|
const require_preview_preview_detectDelayedOperation = require("./preview/detectDelayedOperation.js");
|
|
26
|
+
const require_preview_preview_errors = require("./preview/errors.js");
|
|
27
27
|
const require_preview_preview_estimateClaimableAt = require("./preview/estimateClaimableAt.js");
|
|
28
28
|
const require_preview_preview_replayInnerOperations = require("./preview/replayInnerOperations.js");
|
|
29
29
|
const require_preview_preview_replayMulticall = require("./preview/replayMulticall.js");
|
|
@@ -46,6 +46,7 @@ exports.UnexpectedFacadeEventOrderError = require_preview_trace_errors.Unexpecte
|
|
|
46
46
|
exports.UnknownAdapterError = require_preview_trace_errors.UnknownAdapterError;
|
|
47
47
|
exports.UnknownFacadeCallError = require_preview_trace_errors.UnknownFacadeCallError;
|
|
48
48
|
exports.WithdrawCollateralAlignmentError = require_preview_trace_errors.WithdrawCollateralAlignmentError;
|
|
49
|
+
exports.adapterCallOutsideBracketError = require_preview_preview_errors.adapterCallOutsideBracketError;
|
|
49
50
|
exports.asPreviewSimulationError = require_preview_simulate_errors.asPreviewSimulationError;
|
|
50
51
|
exports.buildDelayedStrategyPositionOperationPreview = require_preview_preview_buildDelayedStrategyPositionOperationPreview.buildDelayedStrategyPositionOperationPreview;
|
|
51
52
|
exports.checkOperation = require_preview_validate_checkOperation.checkOperation;
|
|
@@ -60,11 +61,14 @@ exports.estimateClaimableAt = require_preview_preview_estimateClaimableAt.estima
|
|
|
60
61
|
exports.extractAdapterCallTraces = require_preview_trace_extractAdapterCallTraces.extractAdapterCallTraces;
|
|
61
62
|
exports.extractTransfers = require_preview_trace_extractTransfers.extractTransfers;
|
|
62
63
|
exports.findFacadeCalls = require_preview_trace_findFacadeCalls.findFacadeCalls;
|
|
64
|
+
exports.invalidTransactionValueError = require_preview_preview_errors.invalidTransactionValueError;
|
|
63
65
|
exports.isCloseOrRepay = require_preview_preview_detectCloseOrRepay.isCloseOrRepay;
|
|
64
66
|
exports.isPoolOperation = require_preview_parse_types.isPoolOperation;
|
|
65
67
|
exports.isRWAOperation = require_preview_parse_types.isRWAOperation;
|
|
66
68
|
exports.makeReplayState = require_preview_preview_replayInnerOperations.makeReplayState;
|
|
69
|
+
exports.malformedBracketError = require_preview_preview_errors.malformedBracketError;
|
|
67
70
|
exports.marketIssues = require_preview_validate_checkOperation.marketIssues;
|
|
71
|
+
exports.nonAdapterCallInBracketError = require_preview_preview_errors.nonAdapterCallInBracketError;
|
|
68
72
|
exports.parseFacadeOperationCalldata = require_preview_parse_parseFacadeOperationCalldata.parseFacadeOperationCalldata;
|
|
69
73
|
exports.parseOperationCalldata = require_preview_parse_parseOperationCalldata.parseOperationCalldata;
|
|
70
74
|
exports.parsePoolOperationCalldata = require_preview_parse_parsePoolOperationCalldata.parsePoolOperationCalldata;
|
|
@@ -78,4 +82,5 @@ exports.refuse = require_onchain_validation_refusal.refuse;
|
|
|
78
82
|
exports.replayInnerOperations = require_preview_preview_replayInnerOperations.replayInnerOperations;
|
|
79
83
|
exports.replayMulticall = require_preview_preview_replayMulticall.replayMulticall;
|
|
80
84
|
exports.resolveDelayedClaimIntent = require_preview_preview_detectDelayedClaim.resolveDelayedClaimIntent;
|
|
81
|
-
exports.
|
|
85
|
+
exports.unpreviewableAdapterCallError = require_preview_preview_errors.unpreviewableAdapterCallError;
|
|
86
|
+
exports.unsupportedOutOfBracketCallError = require_preview_preview_errors.unsupportedOutOfBracketCallError;
|
|
@@ -4,8 +4,8 @@ const require_onchain_utils_bigint_math = require("../../onchain/utils/bigint-ma
|
|
|
4
4
|
const require_onchain_constants_math = require("../../onchain/constants/math.js");
|
|
5
5
|
const require_model_previews = require("../../model/previews.js");
|
|
6
6
|
require("../../model/index.js");
|
|
7
|
+
const require_onchain_market_oracle_errors = require("../../onchain/market/oracle/errors.js");
|
|
7
8
|
require("../../onchain/index.js");
|
|
8
|
-
const require_preview_preview_errors = require("./errors.js");
|
|
9
9
|
let viem = require("viem");
|
|
10
10
|
//#region src/preview/preview/buildDelayedStrategyPositionOperationPreview.ts
|
|
11
11
|
/**
|
|
@@ -16,7 +16,7 @@ let viem = require("viem");
|
|
|
16
16
|
* Pure function: the input states are never mutated and no network access is performed.
|
|
17
17
|
* Swaps are estimated with the injected conversion; remaining holdings are
|
|
18
18
|
* priced by `MarketSuite.valueInUnderlying`. Tokens that cannot be priced
|
|
19
|
-
* contribute nothing and set a non-fatal `
|
|
19
|
+
* contribute nothing and set a non-fatal `unpriceableToken` warning on the
|
|
20
20
|
* preview.
|
|
21
21
|
*
|
|
22
22
|
* The changes (e.g. `totalDebtChange`) are reported relative to the account
|
|
@@ -47,18 +47,18 @@ function buildDelayedStrategyPositionOperationPreview(afterInstant, before, dete
|
|
|
47
47
|
return buildAdjustPreview(post, before, collateralWithdrawn, converter, sdk);
|
|
48
48
|
}
|
|
49
49
|
function makeSafeConverter(convert) {
|
|
50
|
-
let
|
|
50
|
+
let warning;
|
|
51
51
|
return {
|
|
52
52
|
convert: (token, to, amount) => {
|
|
53
53
|
try {
|
|
54
54
|
return convert(token, to, amount);
|
|
55
55
|
} catch {
|
|
56
|
-
|
|
56
|
+
warning ??= require_onchain_market_oracle_errors.unpriceableTokenError(token);
|
|
57
57
|
return 0n;
|
|
58
58
|
}
|
|
59
59
|
},
|
|
60
|
-
get
|
|
61
|
-
return
|
|
60
|
+
get warning() {
|
|
61
|
+
return warning;
|
|
62
62
|
}
|
|
63
63
|
};
|
|
64
64
|
}
|
|
@@ -171,7 +171,7 @@ function buildClosePreview(post, converter, receivedToken, sdk) {
|
|
|
171
171
|
name: suite.accountStrategyName(post.creditAccount),
|
|
172
172
|
targetCollateral: suite.accountTargetCollateral(post.creditAccount),
|
|
173
173
|
receivedAmount: oracle.toTokenAmount(receivedToken, require_onchain_utils_bigint_math.BigIntMath.max(priced.value - post.totalDebt, 0n)),
|
|
174
|
-
|
|
174
|
+
warning: converter.warning ?? (priced.unpriceable ? require_onchain_market_oracle_errors.unpriceableTokenError(priced.unpriceable) : void 0)
|
|
175
175
|
};
|
|
176
176
|
}
|
|
177
177
|
function buildAdjustPreview(post, before, collateralWithdrawn, converter, sdk) {
|
|
@@ -194,7 +194,7 @@ function buildAdjustPreview(post, before, collateralWithdrawn, converter, sdk) {
|
|
|
194
194
|
...oracle.toAmount(market.underlying, q.balance)
|
|
195
195
|
})),
|
|
196
196
|
assetsChange: post.balances.difference(before.balances).toAssets(require_onchain_constants_math.DUST_THRESHOLD).map((a) => oracle.toTokenAmount(a.token, a.balance)),
|
|
197
|
-
|
|
197
|
+
warning: converter.warning ?? (priced.unpriceable ? require_onchain_market_oracle_errors.unpriceableTokenError(priced.unpriceable) : void 0)
|
|
198
198
|
};
|
|
199
199
|
}
|
|
200
200
|
//#endregion
|
|
@@ -1,17 +1,85 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_model_previews = require("../../model/previews.js");
|
|
3
|
-
require("../../model/index.js");
|
|
4
2
|
//#region src/preview/preview/errors.ts
|
|
3
|
+
const MALFORMED_BRACKET_MESSAGE = {
|
|
4
|
+
nested: "nested storeExpectedBalances/compareBalances bracket",
|
|
5
|
+
unmatchedCompare: "compareBalances without a preceding storeExpectedBalances",
|
|
6
|
+
unmatchedStore: "storeExpectedBalances without a matching compareBalances"
|
|
7
|
+
};
|
|
5
8
|
/**
|
|
6
|
-
*
|
|
7
|
-
* attach this with `error ??=` so a malformed-transaction (1xxx) error
|
|
8
|
-
* already recorded keeps precedence.
|
|
9
|
+
* Builds a {@link MalformedBracketError} for the given bracket invariant.
|
|
9
10
|
**/
|
|
10
|
-
function
|
|
11
|
+
function malformedBracketError(kind) {
|
|
11
12
|
return {
|
|
12
|
-
code:
|
|
13
|
-
message:
|
|
13
|
+
code: "malformedBracket",
|
|
14
|
+
message: MALFORMED_BRACKET_MESSAGE[kind],
|
|
15
|
+
kind
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Builds an {@link AdapterCallOutsideBracketError} for `adapter`.
|
|
20
|
+
**/
|
|
21
|
+
function adapterCallOutsideBracketError(adapter) {
|
|
22
|
+
return {
|
|
23
|
+
code: "adapterCallOutsideBracket",
|
|
24
|
+
message: `call to ${adapter} outside of a storeExpectedBalances/compareBalances bracket`,
|
|
25
|
+
adapter
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Builds a {@link NonAdapterCallInBracketError} for `target`.
|
|
30
|
+
**/
|
|
31
|
+
function nonAdapterCallInBracketError(target) {
|
|
32
|
+
return {
|
|
33
|
+
code: "nonAdapterCallInBracket",
|
|
34
|
+
message: `call to ${target} between storeExpectedBalances and compareBalances is not an adapter call`,
|
|
35
|
+
target
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function asCause(cause) {
|
|
39
|
+
return cause instanceof Error ? cause : new Error(String(cause));
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Builds an {@link UnpreviewableAdapterCallError} for a bracketed adapter
|
|
43
|
+
* call that could not be replayed.
|
|
44
|
+
**/
|
|
45
|
+
function unpreviewableAdapterCallError(adapter, cause) {
|
|
46
|
+
const err = asCause(cause);
|
|
47
|
+
return {
|
|
48
|
+
code: "unpreviewableAdapterCall",
|
|
49
|
+
message: err.message,
|
|
50
|
+
adapter,
|
|
51
|
+
cause: err
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Builds an {@link UnsupportedOutOfBracketCallError} for an allowed
|
|
56
|
+
* out-of-bracket adapter call that could not be replayed.
|
|
57
|
+
**/
|
|
58
|
+
function unsupportedOutOfBracketCallError(adapter, cause) {
|
|
59
|
+
const err = asCause(cause);
|
|
60
|
+
return {
|
|
61
|
+
code: "unsupportedOutOfBracketCall",
|
|
62
|
+
message: err.message,
|
|
63
|
+
adapter,
|
|
64
|
+
cause: err
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Builds an {@link InvalidTransactionValueError} when `msg.value` does not
|
|
69
|
+
* fit into the declared WETH collateral.
|
|
70
|
+
**/
|
|
71
|
+
function invalidTransactionValueError(value, wethCollateral) {
|
|
72
|
+
return {
|
|
73
|
+
code: "invalidTransactionValue",
|
|
74
|
+
message: `transaction value ${value} exceeds WETH collateral ${wethCollateral}`,
|
|
75
|
+
value,
|
|
76
|
+
wethCollateral
|
|
14
77
|
};
|
|
15
78
|
}
|
|
16
79
|
//#endregion
|
|
17
|
-
exports.
|
|
80
|
+
exports.adapterCallOutsideBracketError = adapterCallOutsideBracketError;
|
|
81
|
+
exports.invalidTransactionValueError = invalidTransactionValueError;
|
|
82
|
+
exports.malformedBracketError = malformedBracketError;
|
|
83
|
+
exports.nonAdapterCallInBracketError = nonAdapterCallInBracketError;
|
|
84
|
+
exports.unpreviewableAdapterCallError = unpreviewableAdapterCallError;
|
|
85
|
+
exports.unsupportedOutOfBracketCallError = unsupportedOutOfBracketCallError;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_preview_preview_errors = require("./errors.js");
|
|
3
2
|
const require_preview_preview_buildDelayedStrategyPositionOperationPreview = require("./buildDelayedStrategyPositionOperationPreview.js");
|
|
4
3
|
const require_preview_preview_CreditAccountState = require("./CreditAccountState.js");
|
|
5
4
|
const require_preview_preview_detectCloseOrRepay = require("./detectCloseOrRepay.js");
|
|
6
5
|
const require_preview_preview_detectDelayedClaim = require("./detectDelayedClaim.js");
|
|
7
6
|
const require_preview_preview_detectDelayedOperation = require("./detectDelayedOperation.js");
|
|
7
|
+
const require_preview_preview_errors = require("./errors.js");
|
|
8
8
|
const require_preview_preview_estimateClaimableAt = require("./estimateClaimableAt.js");
|
|
9
9
|
const require_preview_preview_replayInnerOperations = require("./replayInnerOperations.js");
|
|
10
10
|
const require_preview_preview_replayMulticall = require("./replayMulticall.js");
|
|
@@ -12,17 +12,22 @@ const require_preview_preview_previewAdjustStrategyPosition = require("./preview
|
|
|
12
12
|
const require_preview_preview_previewExitOrRepayStrategyPosition = require("./previewExitOrRepayStrategyPosition.js");
|
|
13
13
|
const require_preview_preview_previewOperation = require("./previewOperation.js");
|
|
14
14
|
exports.CreditAccountState = require_preview_preview_CreditAccountState.CreditAccountState;
|
|
15
|
+
exports.adapterCallOutsideBracketError = require_preview_preview_errors.adapterCallOutsideBracketError;
|
|
15
16
|
exports.buildDelayedStrategyPositionOperationPreview = require_preview_preview_buildDelayedStrategyPositionOperationPreview.buildDelayedStrategyPositionOperationPreview;
|
|
16
17
|
exports.classifyCloseOrRepay = require_preview_preview_detectCloseOrRepay.classifyCloseOrRepay;
|
|
17
18
|
exports.detectDelayedClaim = require_preview_preview_detectDelayedClaim.detectDelayedClaim;
|
|
18
19
|
exports.detectDelayedOperation = require_preview_preview_detectDelayedOperation.detectDelayedOperation;
|
|
19
20
|
exports.estimateClaimableAt = require_preview_preview_estimateClaimableAt.estimateClaimableAt;
|
|
21
|
+
exports.invalidTransactionValueError = require_preview_preview_errors.invalidTransactionValueError;
|
|
20
22
|
exports.isCloseOrRepay = require_preview_preview_detectCloseOrRepay.isCloseOrRepay;
|
|
21
23
|
exports.makeReplayState = require_preview_preview_replayInnerOperations.makeReplayState;
|
|
24
|
+
exports.malformedBracketError = require_preview_preview_errors.malformedBracketError;
|
|
25
|
+
exports.nonAdapterCallInBracketError = require_preview_preview_errors.nonAdapterCallInBracketError;
|
|
22
26
|
exports.previewAdjustStrategyPosition = require_preview_preview_previewAdjustStrategyPosition.previewAdjustStrategyPosition;
|
|
23
27
|
exports.previewExitOrRepayStrategyPosition = require_preview_preview_previewExitOrRepayStrategyPosition.previewExitOrRepayStrategyPosition;
|
|
24
28
|
exports.previewOperation = require_preview_preview_previewOperation.previewOperation;
|
|
25
29
|
exports.replayInnerOperations = require_preview_preview_replayInnerOperations.replayInnerOperations;
|
|
26
30
|
exports.replayMulticall = require_preview_preview_replayMulticall.replayMulticall;
|
|
27
31
|
exports.resolveDelayedClaimIntent = require_preview_preview_detectDelayedClaim.resolveDelayedClaimIntent;
|
|
28
|
-
exports.
|
|
32
|
+
exports.unpreviewableAdapterCallError = require_preview_preview_errors.unpreviewableAdapterCallError;
|
|
33
|
+
exports.unsupportedOutOfBracketCallError = require_preview_preview_errors.unsupportedOutOfBracketCallError;
|
|
@@ -3,8 +3,8 @@ const require_onchain_constants_address_provider = require("../../onchain/consta
|
|
|
3
3
|
const require_onchain_constants_math = require("../../onchain/constants/math.js");
|
|
4
4
|
const require_model_previews = require("../../model/previews.js");
|
|
5
5
|
require("../../model/index.js");
|
|
6
|
+
const require_onchain_market_oracle_errors = require("../../onchain/market/oracle/errors.js");
|
|
6
7
|
require("../../onchain/index.js");
|
|
7
|
-
const require_preview_preview_errors = require("./errors.js");
|
|
8
8
|
const require_preview_preview_replayMulticall = require("./replayMulticall.js");
|
|
9
9
|
const require_preview_preview_unwrapNativeCollateral = require("./unwrapNativeCollateral.js");
|
|
10
10
|
//#region src/preview/preview/previewAdjustStrategyPosition.ts
|
|
@@ -20,14 +20,14 @@ function previewAdjustStrategyPosition(input, operation, options) {
|
|
|
20
20
|
const market = sdk.marketRegister.findByCreditManager(operation.creditManager);
|
|
21
21
|
const suite = sdk.marketRegister.findCreditManager(operation.creditManager);
|
|
22
22
|
const oracle = market.priceOracle;
|
|
23
|
-
const { before, after,
|
|
23
|
+
const { before, after, warning: replayWarning } = require_preview_preview_replayMulticall.replayMulticall(sdk, operation, options);
|
|
24
24
|
const account = after.account;
|
|
25
|
-
let
|
|
26
|
-
const { assets: collateralAdded,
|
|
27
|
-
|
|
25
|
+
let warning = replayWarning;
|
|
26
|
+
const { assets: collateralAdded, warning: unwrapWarning } = require_preview_preview_unwrapNativeCollateral.unwrapNativeCollateral(after.collateralAdded.toAssets(), value, sdk.addressProvider.getAddress(require_onchain_constants_address_provider.AP_WETH_TOKEN, 0));
|
|
27
|
+
warning ??= unwrapWarning;
|
|
28
28
|
const assetsChange = account.balances.difference(before.balances).toAssets(require_onchain_constants_math.DUST_THRESHOLD);
|
|
29
29
|
const priced = market.valueInUnderlying(account.balances.toAssets());
|
|
30
|
-
if (priced.unpriceable)
|
|
30
|
+
if (priced.unpriceable) warning ??= require_onchain_market_oracle_errors.unpriceableTokenError(priced.unpriceable);
|
|
31
31
|
const snap = account.toSnapshot(priced.value);
|
|
32
32
|
return {
|
|
33
33
|
operation: "AdjustCreditAccount",
|
|
@@ -43,7 +43,7 @@ function previewAdjustStrategyPosition(input, operation, options) {
|
|
|
43
43
|
...oracle.toAmount(market.underlying, q.balance)
|
|
44
44
|
})),
|
|
45
45
|
assetsChange: assetsChange.map((a) => oracle.toTokenAmount(a.token, a.balance)),
|
|
46
|
-
|
|
46
|
+
warning
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
//#endregion
|
|
@@ -3,8 +3,8 @@ const require_onchain_constants_address_provider = require("../../onchain/consta
|
|
|
3
3
|
require("../../onchain/constants/math.js");
|
|
4
4
|
const require_model_previews = require("../../model/previews.js");
|
|
5
5
|
require("../../model/index.js");
|
|
6
|
+
const require_onchain_market_oracle_errors = require("../../onchain/market/oracle/errors.js");
|
|
6
7
|
require("../../onchain/index.js");
|
|
7
|
-
const require_preview_preview_errors = require("./errors.js");
|
|
8
8
|
const require_preview_preview_detectCloseOrRepay = require("./detectCloseOrRepay.js");
|
|
9
9
|
const require_preview_preview_replayMulticall = require("./replayMulticall.js");
|
|
10
10
|
const require_preview_preview_unwrapNativeCollateral = require("./unwrapNativeCollateral.js");
|
|
@@ -26,11 +26,11 @@ function previewExitOrRepayStrategyPosition(input, operation, permanent, options
|
|
|
26
26
|
function previewCloseCreditAccount(input, operation, permanent, replay) {
|
|
27
27
|
const { sdk } = input;
|
|
28
28
|
const market = sdk.marketRegister.findByCreditManager(operation.creditManager);
|
|
29
|
-
const { before, after,
|
|
29
|
+
const { before, after, warning: replayWarning } = replay;
|
|
30
30
|
const account = after.account;
|
|
31
|
-
let
|
|
31
|
+
let warning = replayWarning;
|
|
32
32
|
const priced = market.valueInUnderlying(account.balances.toAssets());
|
|
33
|
-
if (priced.unpriceable)
|
|
33
|
+
if (priced.unpriceable) warning ??= require_onchain_market_oracle_errors.unpriceableTokenError(priced.unpriceable);
|
|
34
34
|
const suite = sdk.marketRegister.findCreditManager(operation.creditManager);
|
|
35
35
|
let receivedToken = market.underlying;
|
|
36
36
|
for (const m of operation.multicall) if (m.operation === "WithdrawCollateral" && m.amount === 115792089237316195423570985008687907853269984665640564039457584007913129639935n) {
|
|
@@ -45,7 +45,7 @@ function previewCloseCreditAccount(input, operation, permanent, replay) {
|
|
|
45
45
|
name: suite.accountStrategyName(operation.creditAccount),
|
|
46
46
|
targetCollateral: suite.accountTargetCollateral(operation.creditAccount),
|
|
47
47
|
receivedAmount: market.priceOracle.toTokenAmount(receivedToken, after.collateralWithdrawn.getOrZero(receivedToken)),
|
|
48
|
-
|
|
48
|
+
warning
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
@@ -56,12 +56,12 @@ function previewCloseCreditAccount(input, operation, permanent, replay) {
|
|
|
56
56
|
function previewRepayCreditAccount(input, operation, permanent, replay) {
|
|
57
57
|
const { sdk, value = 0n } = input;
|
|
58
58
|
const market = sdk.marketRegister.findByCreditManager(operation.creditManager);
|
|
59
|
-
const { before, after,
|
|
59
|
+
const { before, after, warning: replayWarning } = replay;
|
|
60
60
|
const account = after.account;
|
|
61
|
-
const { assets: collateralAdded,
|
|
62
|
-
let
|
|
61
|
+
const { assets: collateralAdded, warning: unwrapWarning } = require_preview_preview_unwrapNativeCollateral.unwrapNativeCollateral(after.collateralAdded.toAssets(), value, sdk.addressProvider.getAddress(require_onchain_constants_address_provider.AP_WETH_TOKEN, 0));
|
|
62
|
+
let warning = replayWarning ?? unwrapWarning;
|
|
63
63
|
const priced = market.valueInUnderlying(account.balances.toAssets());
|
|
64
|
-
if (priced.unpriceable)
|
|
64
|
+
if (priced.unpriceable) warning ??= require_onchain_market_oracle_errors.unpriceableTokenError(priced.unpriceable);
|
|
65
65
|
const suite = sdk.marketRegister.findCreditManager(operation.creditManager);
|
|
66
66
|
return {
|
|
67
67
|
operation: "RepayCreditAccount",
|
|
@@ -73,7 +73,7 @@ function previewRepayCreditAccount(input, operation, permanent, replay) {
|
|
|
73
73
|
collateralAdded: collateralAdded.map((a) => market.priceOracle.toTokenAmount(a.token, a.balance)),
|
|
74
74
|
debtRepaid: market.toUnderlyingAmount(before.totalDebt - account.totalDebt),
|
|
75
75
|
collateralWithdrawn: after.collateralWithdrawn.toAssets().map((a) => market.priceOracle.toTokenAmount(a.token, a.balance)),
|
|
76
|
-
|
|
76
|
+
warning
|
|
77
77
|
};
|
|
78
78
|
}
|
|
79
79
|
//#endregion
|
|
@@ -2,6 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
const require_onchain_constants_address_provider = require("../../onchain/constants/address-provider.js");
|
|
3
3
|
const require_model_previews = require("../../model/previews.js");
|
|
4
4
|
require("../../model/index.js");
|
|
5
|
+
const require_onchain_market_oracle_errors = require("../../onchain/market/oracle/errors.js");
|
|
5
6
|
require("../../onchain/index.js");
|
|
6
7
|
const require_preview_preview_CreditAccountState = require("./CreditAccountState.js");
|
|
7
8
|
const require_preview_preview_replayInnerOperations = require("./replayInnerOperations.js");
|
|
@@ -12,22 +13,19 @@ function previewOpenStrategyPosition(input, operation) {
|
|
|
12
13
|
const market = sdk.marketRegister.findByCreditManager(operation.creditManager);
|
|
13
14
|
const oracle = market.priceOracle;
|
|
14
15
|
const state = require_preview_preview_replayInnerOperations.makeReplayState(require_preview_preview_CreditAccountState.CreditAccountState.beforeOpen(operation.creditManager, market.underlying));
|
|
15
|
-
let
|
|
16
|
+
let warning = require_preview_preview_replayInnerOperations.replayInnerOperations(sdk, operation.multicall, state);
|
|
16
17
|
const account = state.account;
|
|
17
|
-
let
|
|
18
|
+
let priceWarning;
|
|
18
19
|
const netValue = state.collateralAdded.sum((token, balance) => {
|
|
19
20
|
try {
|
|
20
21
|
return oracle.convert(token, market.underlying, balance);
|
|
21
22
|
} catch {
|
|
22
|
-
|
|
23
|
-
code: require_model_previews.ERROR_UNPRICEABLE_TOKEN,
|
|
24
|
-
message: `cannot price token ${token}`
|
|
25
|
-
};
|
|
23
|
+
priceWarning ??= require_onchain_market_oracle_errors.unpriceableTokenError(token);
|
|
26
24
|
return 0n;
|
|
27
25
|
}
|
|
28
26
|
});
|
|
29
|
-
const { assets: collateral,
|
|
30
|
-
|
|
27
|
+
const { assets: collateral, warning: unwrapWarning } = require_preview_preview_unwrapNativeCollateral.unwrapNativeCollateral(state.collateralAdded.toAssets(), value, sdk.addressProvider.getAddress(require_onchain_constants_address_provider.AP_WETH_TOKEN, 0));
|
|
28
|
+
warning ??= unwrapWarning ?? priceWarning;
|
|
31
29
|
const snap = account.toSnapshot(netValue + account.totalDebt);
|
|
32
30
|
const targetAsset = inferTargetAsset(operation.multicall, account.balances);
|
|
33
31
|
return {
|
|
@@ -35,7 +33,7 @@ function previewOpenStrategyPosition(input, operation) {
|
|
|
35
33
|
...require_model_previews.asEstimated(sdk.positions.projection(snap, { availableLiquidityChange: -account.totalDebt })),
|
|
36
34
|
targetCollateral: targetAsset ? oracle.toTokenAmount(targetAsset.token, targetAsset.balance) : void 0,
|
|
37
35
|
collateralAdded: collateral.map((a) => oracle.toTokenAmount(a.token, a.balance)),
|
|
38
|
-
|
|
36
|
+
warning
|
|
39
37
|
};
|
|
40
38
|
}
|
|
41
39
|
/**
|