@gearbox-protocol/sdk 16.0.0-next.42 → 16.0.0-next.43

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.
Files changed (56) hide show
  1. package/dist/cjs/model/index.js +4 -0
  2. package/dist/cjs/model/result.js +27 -0
  3. package/dist/cjs/onchain/accounts/intents/tail.js +1 -1
  4. package/dist/cjs/onchain/accounts/withdrawal-compressor/errors.js +14 -14
  5. package/dist/cjs/onchain/index.js +0 -1
  6. package/dist/cjs/onchain/market/zapper/errors.js +13 -12
  7. package/dist/cjs/onchain/validation/index.js +0 -1
  8. package/dist/cjs/preview/index.js +4 -1
  9. package/dist/cjs/preview/parse/errors.js +25 -22
  10. package/dist/cjs/preview/preview/errors.js +12 -11
  11. package/dist/cjs/preview/preview/previewOperation.js +41 -10
  12. package/dist/cjs/preview/simulate/errors.js +18 -17
  13. package/dist/cjs/sdk/execute/ExecuteApi.js +1 -1
  14. package/dist/cjs/sdk/index.js +1 -1
  15. package/dist/cjs/sdk/prepare/PrepareApi.js +198 -278
  16. package/dist/cjs/sdk/prepare/errors.js +5 -2
  17. package/dist/cjs/sdk/prepare/index.js +1 -1
  18. package/dist/esm/model/index.js +2 -1
  19. package/dist/esm/model/result.js +24 -0
  20. package/dist/esm/onchain/accounts/intents/tail.js +1 -1
  21. package/dist/esm/onchain/accounts/withdrawal-compressor/errors.js +14 -14
  22. package/dist/esm/onchain/index.js +2 -2
  23. package/dist/esm/onchain/market/zapper/errors.js +13 -12
  24. package/dist/esm/onchain/validation/index.js +2 -2
  25. package/dist/esm/preview/index.js +4 -2
  26. package/dist/esm/preview/parse/errors.js +25 -22
  27. package/dist/esm/preview/preview/errors.js +12 -11
  28. package/dist/esm/preview/preview/previewOperation.js +41 -10
  29. package/dist/esm/preview/simulate/errors.js +18 -17
  30. package/dist/esm/sdk/execute/ExecuteApi.js +1 -1
  31. package/dist/esm/sdk/index.js +2 -2
  32. package/dist/esm/sdk/prepare/PrepareApi.js +199 -279
  33. package/dist/esm/sdk/prepare/errors.js +5 -2
  34. package/dist/esm/sdk/prepare/index.js +2 -2
  35. package/dist/types/model/errors.d.ts +3 -31
  36. package/dist/types/model/index.d.ts +3 -2
  37. package/dist/types/model/result.d.ts +48 -0
  38. package/dist/types/onchain/accounts/withdrawal-compressor/errors.d.ts +18 -5
  39. package/dist/types/onchain/index.d.ts +2 -2
  40. package/dist/types/onchain/market/zapper/errors.d.ts +20 -6
  41. package/dist/types/onchain/validation/index.d.ts +2 -2
  42. package/dist/types/preview/index.d.ts +5 -3
  43. package/dist/types/preview/parse/errors.d.ts +36 -11
  44. package/dist/types/preview/preview/errors.d.ts +17 -5
  45. package/dist/types/preview/preview/index.d.ts +2 -2
  46. package/dist/types/preview/preview/previewOperation.d.ts +21 -2
  47. package/dist/types/preview/simulate/errors.d.ts +21 -8
  48. package/dist/types/sdk/execute/types.d.ts +6 -11
  49. package/dist/types/sdk/index.d.ts +3 -3
  50. package/dist/types/sdk/prepare/PrepareApi.d.ts +29 -26
  51. package/dist/types/sdk/prepare/errors.d.ts +56 -19
  52. package/dist/types/sdk/prepare/index.d.ts +3 -3
  53. package/dist/types/sdk/prepare/types.d.ts +73 -74
  54. package/dist/types/sdk/preview/PreviewNamespace.d.ts +4 -1
  55. package/dist/types/sdk/preview/types.d.ts +7 -3
  56. package/package.json +11 -2
@@ -21,6 +21,7 @@ const require_model_previews = require("./previews.js");
21
21
  require("./primitives.js");
22
22
  require("./response.js");
23
23
  const require_model_response_schema = require("./response.schema.js");
24
+ const require_model_result = require("./result.js");
24
25
  require("./withdrawals.js");
25
26
  const require_model_withdrawals_schema = require("./withdrawals.schema.js");
26
27
  exports.CHART_METRIC_UNITS = require_model_charts.CHART_METRIC_UNITS;
@@ -71,6 +72,7 @@ exports.filterAllSchema = require_model_filters_schema.filterAllSchema;
71
72
  exports.filterable = require_model_filters_schema.filterable;
72
73
  exports.instantReceivedAssetSchema = require_model_liquidations_schema.instantReceivedAssetSchema;
73
74
  exports.isFilterSet = require_model_filters.isFilterSet;
75
+ exports.isSDKError = require_model_result.isSDKError;
74
76
  exports.leverageSchema = require_model_primitives_schema.leverageSchema;
75
77
  exports.liquidatableAccountFilterSchema = require_model_liquidations_schema.liquidatableAccountFilterSchema;
76
78
  exports.liquidatableAccountSchema = require_model_liquidations_schema.liquidatableAccountSchema;
@@ -133,6 +135,8 @@ exports.responseMetadataSchema = require_model_response_schema.responseMetadataS
133
135
  exports.responseSchema = require_model_response_schema.responseSchema;
134
136
  exports.rewardsPnLSchema = require_model_positions_schema.rewardsPnLSchema;
135
137
  exports.rewardsSchema = require_model_opportunities_schema.rewardsSchema;
138
+ exports.sdkErr = require_model_result.sdkErr;
139
+ exports.sdkOk = require_model_result.sdkOk;
136
140
  exports.strategyOpportunityChartMetricSchema = require_model_charts_schema.strategyOpportunityChartMetricSchema;
137
141
  exports.strategyOpportunityDetailSchema = require_model_opportunities_schema.strategyOpportunityDetailSchema;
138
142
  exports.strategyOpportunityId = require_model_opportunities.strategyOpportunityId;
@@ -0,0 +1,27 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/model/result.ts
3
+ /** The success half, built. */
4
+ function sdkOk(data) {
5
+ return {
6
+ ok: true,
7
+ data
8
+ };
9
+ }
10
+ /** The failure half, built. */
11
+ function sdkErr(error) {
12
+ return {
13
+ ok: false,
14
+ error
15
+ };
16
+ }
17
+ /**
18
+ * Narrows a {@link SDKReturn} to its failure half. Trivial over `ok`, but it
19
+ * names the intent at call sites that would otherwise read `!r.ok`.
20
+ **/
21
+ function isSDKError(answer) {
22
+ return !answer.ok;
23
+ }
24
+ //#endregion
25
+ exports.isSDKError = isSDKError;
26
+ exports.sdkErr = sdkErr;
27
+ exports.sdkOk = sdkOk;
@@ -54,7 +54,7 @@ async function projectTail(args) {
54
54
  const { request, delayed, creditAccount, sdk, quotaReserve } = args;
55
55
  const { claim } = delayed;
56
56
  const queued = request.outputs.find((o) => o.isDelayed);
57
- if (!queued || !claim) throw new Error("projectTail: the request queued nothing to claim");
57
+ if (!queued || !claim) throw new require_onchain_validation_refusal.IntentPreviewError("noRecordedIntent", void 0, "projectTail: the request queued nothing to claim");
58
58
  const next = sliceAfter(creditAccount, delayed.afterRequest);
59
59
  const steps = planTail({
60
60
  intent: delayed.record,
@@ -1,20 +1,20 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  //#region src/onchain/accounts/withdrawal-compressor/errors.ts
3
+ function invalidDelayedIntent(extraData, cause) {
4
+ const verdict = {
5
+ code: "invalidDelayedIntent",
6
+ message: `cannot decode delayed intent from extraData ${extraData}`,
7
+ extraData
8
+ };
9
+ if (cause !== void 0) verdict.cause = cause instanceof Error ? cause : new Error(String(cause));
10
+ return verdict;
11
+ }
12
+ Object.defineProperty(invalidDelayedIntent, Symbol.hasInstance, { value: (value) => typeof value === "object" && value !== null && value.code === "invalidDelayedIntent" });
3
13
  /**
4
- * Thrown when a delayed-withdrawal request or redemption log carries
5
- * non-empty `extraData` that cannot be decoded as a `DelayedIntent`.
6
- * Requests produced by our stack always encode a valid intent, so garbage
7
- * here means a malformed/foreign transaction that must not be previewed as
8
- * if it were fine.
14
+ * Builds the verdict. Callable with or without `new`, so pre-declassing raise
15
+ * sites keep compiling; `instanceof` matches on the `code` discriminant, and
16
+ * the answer is never an `Error`.
9
17
  */
10
- var InvalidDelayedIntentError = class extends Error {
11
- /** Raw `extraData` that failed to decode. */
12
- extraData;
13
- constructor(extraData, cause) {
14
- super(`cannot decode delayed intent from extraData ${extraData}`, { cause });
15
- this.name = "InvalidDelayedIntentError";
16
- this.extraData = extraData;
17
- }
18
- };
18
+ const InvalidDelayedIntentError = invalidDelayedIntent;
19
19
  //#endregion
20
20
  exports.InvalidDelayedIntentError = InvalidDelayedIntentError;
@@ -346,7 +346,6 @@ exports.IERC20ZapperContract = require_onchain_market_zapper_IERC20ZapperContrac
346
346
  exports.IETHZapperContract = require_onchain_market_zapper_IETHZapperContract.IETHZapperContract;
347
347
  exports.InfinifiGatewayAdapterContract = require_onchain_market_adapters_contracts_InfinifiGatewayAdapterContract.InfinifiGatewayAdapterContract;
348
348
  exports.InfinifiUnwindingGatewayAdapterContract = require_onchain_market_adapters_contracts_InfinifiUnwindingGatewayAdapterContract.InfinifiUnwindingGatewayAdapterContract;
349
- exports.IntentPreviewError = require_onchain_validation_refusal.IntentPreviewError;
350
349
  exports.InvalidDelayedIntentError = require_onchain_accounts_withdrawal_compressor_errors.InvalidDelayedIntentError;
351
350
  exports.KelpLRTDepositPoolAdapterContract = require_onchain_market_adapters_contracts_KelpLRTDepositPoolAdapterContract.KelpLRTDepositPoolAdapterContract;
352
351
  exports.KelpLRTWithdrawalManagerAdapterContract = require_onchain_market_adapters_contracts_KelpLRTWithdrawalManagerAdapterContract.KelpLRTWithdrawalManagerAdapterContract;
@@ -1,18 +1,19 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  //#region src/onchain/market/zapper/errors.ts
3
+ function unsupportedZapperFunction(zapper, functionName) {
4
+ return {
5
+ code: "unsupportedZapperFunction",
6
+ message: `unsupported zapper function "${functionName}" on ${zapper}`,
7
+ zapper,
8
+ functionName
9
+ };
10
+ }
11
+ Object.defineProperty(unsupportedZapperFunction, Symbol.hasInstance, { value: (value) => typeof value === "object" && value !== null && value.code === "unsupportedZapperFunction" });
3
12
  /**
4
- * Thrown when a zapper call uses a function other than a known
5
- * `deposit`/`redeem` variant.
13
+ * Builds the verdict. Callable with or without `new`, so pre-declassing raise
14
+ * sites keep compiling; `instanceof` matches on the `code` discriminant, and
15
+ * the answer is never an `Error`.
6
16
  */
7
- var UnsupportedZapperFunctionError = class extends Error {
8
- zapper;
9
- functionName;
10
- constructor(zapper, functionName) {
11
- super(`unsupported zapper function "${functionName}" on ${zapper}`);
12
- this.name = "UnsupportedZapperFunctionError";
13
- this.zapper = zapper;
14
- this.functionName = functionName;
15
- }
16
- };
17
+ const UnsupportedZapperFunctionError = unsupportedZapperFunction;
17
18
  //#endregion
18
19
  exports.UnsupportedZapperFunctionError = UnsupportedZapperFunctionError;
@@ -2,7 +2,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_onchain_validation_checks = require("./checks.js");
3
3
  const require_onchain_validation_refusal = require("./refusal.js");
4
4
  const require_onchain_validation_token = require("./token.js");
5
- exports.IntentPreviewError = require_onchain_validation_refusal.IntentPreviewError;
6
5
  exports.MIN_HEALTH_FACTOR_FACADE = require_onchain_validation_checks.MIN_HEALTH_FACTOR_FACADE;
7
6
  exports.MIN_HEALTH_FACTOR_FORM = require_onchain_validation_checks.MIN_HEALTH_FACTOR_FORM;
8
7
  exports.MIN_HF_LIMITED = require_onchain_validation_checks.MIN_HF_LIMITED;
@@ -1,6 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_onchain_market_zapper_errors = require("../onchain/market/zapper/errors.js");
3
3
  const require_onchain_validation_refusal = require("../onchain/validation/refusal.js");
4
+ const require_onchain_accounts_withdrawal_compressor_errors = require("../onchain/accounts/withdrawal-compressor/errors.js");
4
5
  const require_preview_trace_errors = require("./trace/errors.js");
5
6
  const require_preview_trace_extractAdapterCallTraces = require("./trace/extractAdapterCallTraces.js");
6
7
  const require_preview_trace_extractTransfers = require("./trace/extractTransfers.js");
@@ -31,6 +32,7 @@ const require_preview_preview_replayInnerOperations = require("./preview/replayI
31
32
  const require_preview_preview_replayMulticall = require("./preview/replayMulticall.js");
32
33
  const require_preview_preview_previewAdjustStrategyPosition = require("./preview/previewAdjustStrategyPosition.js");
33
34
  const require_preview_preview_previewExitOrRepayStrategyPosition = require("./preview/previewExitOrRepayStrategyPosition.js");
35
+ const require_preview_simulate_errors = require("./simulate/errors.js");
34
36
  const require_preview_preview_previewOperation = require("./preview/previewOperation.js");
35
37
  require("./preview/index.js");
36
38
  require("./types.js");
@@ -40,8 +42,9 @@ require("./validate/index.js");
40
42
  exports.AllowancePrerequisite = require_preview_prerequisites_AllowancePrerequisite.AllowancePrerequisite;
41
43
  exports.BalancePrerequisite = require_preview_prerequisites_BalancePrerequisite.BalancePrerequisite;
42
44
  exports.CreditAccountState = require_preview_preview_CreditAccountState.CreditAccountState;
43
- exports.IntentPreviewError = require_onchain_validation_refusal.IntentPreviewError;
45
+ exports.InvalidDelayedIntentError = require_onchain_accounts_withdrawal_compressor_errors.InvalidDelayedIntentError;
44
46
  exports.Prerequisite = require_preview_prerequisites_Prerequisite.Prerequisite;
47
+ exports.PreviewSimulationError = require_preview_simulate_errors.PreviewSimulationError;
45
48
  exports.RWAOpenRequirementsPrerequisite = require_preview_prerequisites_RWAOpenRequirementsPrerequisite.RWAOpenRequirementsPrerequisite;
46
49
  exports.TransferAlignmentError = require_preview_trace_errors.TransferAlignmentError;
47
50
  exports.UnexpectedFacadeEventOrderError = require_preview_trace_errors.UnexpectedFacadeEventOrderError;
@@ -1,32 +1,35 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_onchain_market_zapper_errors = require("../../onchain/market/zapper/errors.js");
3
- require("../../onchain/index.js");
4
3
  //#region src/preview/parse/errors.ts
4
+ function unsupportedTarget(target) {
5
+ return {
6
+ code: "unsupportedTarget",
7
+ message: `unsupported transaction target: ${target}`,
8
+ target
9
+ };
10
+ }
11
+ Object.defineProperty(unsupportedTarget, Symbol.hasInstance, { value: (value) => typeof value === "object" && value !== null && value.code === "unsupportedTarget" });
5
12
  /**
6
- * Thrown when the target of a transaction is neither a known Gearbox pool nor a
7
- * credit facade.
13
+ * Builds the verdict. Callable with or without `new`, so pre-declassing raise
14
+ * sites keep compiling; `instanceof` matches on the `code` discriminant, and
15
+ * the answer is never an `Error`.
8
16
  */
9
- var UnsupportedTargetError = class extends Error {
10
- target;
11
- constructor(target) {
12
- super(`unsupported transaction target: ${target}`);
13
- this.name = "UnsupportedTargetError";
14
- this.target = target;
15
- }
16
- };
17
+ const UnsupportedTargetError = unsupportedTarget;
18
+ function unsupportedPoolFunction(pool, functionName) {
19
+ return {
20
+ code: "unsupportedPoolFunction",
21
+ message: `unsupported pool function "${functionName}" on ${pool}`,
22
+ pool,
23
+ functionName
24
+ };
25
+ }
26
+ Object.defineProperty(unsupportedPoolFunction, Symbol.hasInstance, { value: (value) => typeof value === "object" && value !== null && value.code === "unsupportedPoolFunction" });
17
27
  /**
18
- * Thrown when a pool call uses a function other than ERC4626 `deposit`/`redeem`.
28
+ * Builds the verdict. Callable with or without `new`, so pre-declassing raise
29
+ * sites keep compiling; `instanceof` matches on the `code` discriminant, and
30
+ * the answer is never an `Error`.
19
31
  */
20
- var UnsupportedPoolFunctionError = class extends Error {
21
- pool;
22
- functionName;
23
- constructor(pool, functionName) {
24
- super(`unsupported pool function "${functionName}" on ${pool}`);
25
- this.name = "UnsupportedPoolFunctionError";
26
- this.pool = pool;
27
- this.functionName = functionName;
28
- }
29
- };
32
+ const UnsupportedPoolFunctionError = unsupportedPoolFunction;
30
33
  //#endregion
31
34
  exports.UnsupportedPoolFunctionError = UnsupportedPoolFunctionError;
32
35
  exports.UnsupportedTargetError = UnsupportedTargetError;
@@ -1,17 +1,18 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  //#region src/preview/preview/errors.ts
3
+ function unsupportedOperation(operation) {
4
+ return {
5
+ code: "unsupportedOperation",
6
+ message: `operation "${operation}" is not supported by previewOperation`,
7
+ operation
8
+ };
9
+ }
10
+ Object.defineProperty(unsupportedOperation, Symbol.hasInstance, { value: (value) => typeof value === "object" && value !== null && value.code === "unsupportedOperation" });
3
11
  /**
4
- * Thrown by `previewOperation` for parsed operations it cannot preview yet.
5
- * Currently only pool operations and credit account opening are supported.
12
+ * Builds the verdict. Callable with or without `new`, so pre-declassing raise
13
+ * sites keep compiling; `instanceof` matches on the `code` discriminant, and
14
+ * the answer is never an `Error`.
6
15
  */
7
- var UnsupportedOperationError = class extends Error {
8
- /** The parsed operation kind (the `operation` discriminant). */
9
- operation;
10
- constructor(operation) {
11
- super(`operation "${operation}" is not supported by previewOperation`);
12
- this.name = "UnsupportedOperationError";
13
- this.operation = operation;
14
- }
15
- };
16
+ const UnsupportedOperationError = unsupportedOperation;
16
17
  //#endregion
17
18
  exports.UnsupportedOperationError = UnsupportedOperationError;
@@ -1,4 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_model_result = require("../../model/result.js");
3
+ require("../../model/index.js");
4
+ const require_onchain_market_zapper_errors = require("../../onchain/market/zapper/errors.js");
5
+ const require_onchain_accounts_withdrawal_compressor_errors = require("../../onchain/accounts/withdrawal-compressor/errors.js");
6
+ require("../../onchain/index.js");
7
+ const require_preview_parse_errors = require("../parse/errors.js");
2
8
  const require_preview_parse_parseOperationCalldata = require("../parse/parseOperationCalldata.js");
3
9
  const require_preview_parse_types = require("../parse/types.js");
4
10
  require("../parse/index.js");
@@ -11,25 +17,50 @@ const require_preview_preview_estimateClaimableAt = require("./estimateClaimable
11
17
  const require_preview_preview_replayMulticall = require("./replayMulticall.js");
12
18
  const require_preview_preview_previewAdjustStrategyPosition = require("./previewAdjustStrategyPosition.js");
13
19
  const require_preview_preview_previewExitOrRepayStrategyPosition = require("./previewExitOrRepayStrategyPosition.js");
20
+ const require_preview_simulate_errors = require("../simulate/errors.js");
14
21
  const require_preview_preview_previewOpenStrategyPosition = require("./previewOpenStrategyPosition.js");
15
22
  const require_preview_preview_previewPoolPositionOperation = require("./previewPoolPositionOperation.js");
16
23
  //#region src/preview/preview/previewOperation.ts
17
24
  /**
25
+ * Narrows a raised value to the verdict vocabulary: a plain non-`Error`
26
+ * object whose `code` is one of the preview verdicts. Genuine exceptions —
27
+ * bugs, outages, calldata the parser cannot read at all — fail the check and
28
+ * keep propagating as throws.
29
+ */
30
+ function isPreviewVerdict(raised) {
31
+ if (typeof raised !== "object" || raised === null || raised instanceof Error) return false;
32
+ return raised instanceof require_preview_parse_errors.UnsupportedTargetError || raised instanceof require_preview_parse_errors.UnsupportedPoolFunctionError || raised instanceof require_onchain_market_zapper_errors.UnsupportedZapperFunctionError || raised instanceof require_preview_preview_errors.UnsupportedOperationError || raised instanceof require_onchain_accounts_withdrawal_compressor_errors.InvalidDelayedIntentError || raised instanceof require_preview_simulate_errors.PreviewSimulationError;
33
+ }
34
+ /**
18
35
  * Previews a raw operation calldata: decodes it into a typed operation and
19
36
  * assembles an operation-specific, human-displayable preview.
37
+ *
38
+ * Answers an {@link SDKReturn} envelope: the preview behind `ok: true`, or —
39
+ * when the transaction is one the previewer refuses to read — a
40
+ * {@link PreviewVerdictError} behind `ok: false`. A thrown exception still
41
+ * means the SDK could not do its job (a read failed, the targeted credit
42
+ * account could not be resolved), not a verdict on the transaction.
20
43
  */
21
44
  async function previewOperation(input, options) {
22
- const operation = require_preview_parse_parseOperationCalldata.parseOperationCalldata(input);
23
- if (require_preview_parse_types.isPoolOperation(operation)) return require_preview_preview_previewPoolPositionOperation.previewPoolPositionOperation(input, operation, options);
24
- if (operation.operation === "OpenCreditAccount" || operation.operation === "RWAOpenCreditAccount") return require_preview_preview_previewOpenStrategyPosition.previewOpenStrategyPosition(input, operation);
25
- if (operation.operation === "CloseCreditAccount") {
26
- const resolved = await resolveCreditAccount(input, operation, options);
27
- const preview = require_preview_preview_previewExitOrRepayStrategyPosition.previewExitOrRepayStrategyPosition(input, operation, true, resolved);
28
- preview.intent = await require_preview_preview_detectDelayedClaim.resolveDelayedClaimIntent(input.sdk, operation.multicall, options?.blockNumber);
29
- return preview;
45
+ try {
46
+ const operation = require_preview_parse_parseOperationCalldata.parseOperationCalldata(input);
47
+ if (require_preview_parse_types.isPoolOperation(operation)) return require_model_result.sdkOk(await require_preview_preview_previewPoolPositionOperation.previewPoolPositionOperation(input, operation, options));
48
+ if (operation.operation === "OpenCreditAccount" || operation.operation === "RWAOpenCreditAccount") return require_model_result.sdkOk(await require_preview_preview_previewOpenStrategyPosition.previewOpenStrategyPosition(input, operation));
49
+ if (operation.operation === "CloseCreditAccount") {
50
+ const resolved = await resolveCreditAccount(input, operation, options);
51
+ const preview = require_preview_preview_previewExitOrRepayStrategyPosition.previewExitOrRepayStrategyPosition(input, operation, true, resolved);
52
+ preview.intent = await require_preview_preview_detectDelayedClaim.resolveDelayedClaimIntent(input.sdk, operation.multicall, options?.blockNumber);
53
+ return require_model_result.sdkOk(preview);
54
+ }
55
+ if (operation.operation === "MultiCall" || operation.operation === "BotMulticall" || operation.operation === "RWAMulticall") {
56
+ const resolved = await resolveCreditAccount(input, operation, options);
57
+ return require_model_result.sdkOk(await previewMulticallOperation(input, operation, resolved));
58
+ }
59
+ return require_model_result.sdkErr(require_preview_preview_errors.UnsupportedOperationError(operation.operation));
60
+ } catch (raised) {
61
+ if (isPreviewVerdict(raised)) return require_model_result.sdkErr(raised);
62
+ throw raised;
30
63
  }
31
- if (operation.operation === "MultiCall" || operation.operation === "BotMulticall" || operation.operation === "RWAMulticall") return previewMulticallOperation(input, operation, await resolveCreditAccount(input, operation, options));
32
- throw new require_preview_preview_errors.UnsupportedOperationError(operation.operation);
33
64
  }
34
65
  /**
35
66
  * Resolves the pre-state of the credit account an operation targets: uses the
@@ -2,33 +2,34 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_abi_errors = require("../../abi/errors.js");
3
3
  let viem = require("viem");
4
4
  //#region src/preview/simulate/errors.ts
5
+ function previewSimulationFailed(failures) {
6
+ const message = failures.length <= 1 ? failures[0]?.detail.reason ?? "simulation failed" : "all simulation flows failed";
7
+ const cause = failures.find((f) => f.detail.cause instanceof Error)?.detail.cause;
8
+ const verdict = {
9
+ code: "previewSimulationFailed",
10
+ message,
11
+ failures
12
+ };
13
+ if (cause) verdict.cause = cause;
14
+ return verdict;
15
+ }
16
+ Object.defineProperty(previewSimulationFailed, Symbol.hasInstance, { value: (value) => typeof value === "object" && value !== null && value.code === "previewSimulationFailed" });
5
17
  /**
6
- * Error returned by the pool simulation when it fails. It wraps the flow's
7
- * decoded revert reason (see {@link failures}).
18
+ * Builds the verdict. Callable with or without `new`, so pre-declassing raise
19
+ * sites keep compiling; `instanceof` matches on the `code` discriminant, and
20
+ * the answer is never an `Error`.
8
21
  */
9
- var PreviewSimulationError = class extends viem.BaseError {
10
- name = "PreviewSimulationError";
11
- /** Per-flow decoded failures behind this error. */
12
- failures;
13
- constructor(failures) {
14
- const shortMessage = failures.length <= 1 ? failures[0]?.detail.reason ?? "simulation failed" : "all simulation flows failed";
15
- const cause = failures.find((f) => f.detail.cause instanceof Error)?.detail.cause;
16
- super(shortMessage, {
17
- metaMessages: failures.map((f) => `[${f.source}] ${f.detail.reason}`),
18
- cause
19
- });
20
- this.failures = failures;
21
- }
22
- };
22
+ const PreviewSimulationError = previewSimulationFailed;
23
23
  /**
24
24
  * Normalises an unknown rejection reason into a {@link PreviewSimulationError}.
25
25
  * Pass-through when it already is one; otherwise decodes it under `source`.
26
26
  */
27
27
  function asPreviewSimulationError(reason, source) {
28
28
  if (reason instanceof PreviewSimulationError) return reason;
29
+ const error = reason instanceof Error ? reason : new Error(String(reason));
29
30
  return new PreviewSimulationError([{
30
31
  source,
31
- detail: decodeSimulationError({ error: reason instanceof Error ? reason : new Error(String(reason)) })
32
+ detail: decodeSimulationError({ error })
32
33
  }]);
33
34
  }
34
35
  /**
@@ -12,7 +12,7 @@ var ExecuteApi = class {
12
12
  * {@inheritDoc IOpportunitiesExecute.buildTx}
13
13
  **/
14
14
  async buildTx(request) {
15
- if (!request.sim.success) throw new Error(`cannot build a transaction from a failed ${request.kind} preparation`);
15
+ if (!request.sim.ok) throw new Error(`cannot build a transaction from a failed ${request.kind} preparation`);
16
16
  const sdk = this.#chainOf(request.chainId);
17
17
  switch (request.kind) {
18
18
  case "pool": return poolTx(sdk, request);
@@ -52,5 +52,5 @@ exports.mergeChainOne = require_sdk_utils_mergeChains.mergeChainOne;
52
52
  exports.noStrategyTargetCollateral = require_sdk_prepare_errors.noStrategyTargetCollateral;
53
53
  exports.raise = require_onchain_validation_refusal.raise;
54
54
  exports.refuse = require_onchain_validation_refusal.refuse;
55
- exports.toPrepareError = require_sdk_prepare_errors.toPrepareError;
55
+ exports.toRefusalError = require_sdk_prepare_errors.toRefusalError;
56
56
  exports.unexpectedFailure = require_sdk_prepare_errors.unexpectedFailure;