@debridge-finance/borderless-validation-sdk 0.5.2 → 0.6.0

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 (139) hide show
  1. package/dist/cjs/helpers/address.js +7 -0
  2. package/dist/cjs/helpers/address.js.map +1 -1
  3. package/dist/cjs/helpers/evm-intent-id.js +2 -1
  4. package/dist/cjs/helpers/evm-intent-id.js.map +1 -1
  5. package/dist/cjs/helpers/execution-metadata.js +122 -0
  6. package/dist/cjs/helpers/execution-metadata.js.map +1 -0
  7. package/dist/cjs/helpers/solana-instruction.js +7 -1
  8. package/dist/cjs/helpers/solana-instruction.js.map +1 -1
  9. package/dist/cjs/helpers/solana-intent-id.js +46 -20
  10. package/dist/cjs/helpers/solana-intent-id.js.map +1 -1
  11. package/dist/cjs/types/request.js +1 -1
  12. package/dist/cjs/types/request.js.map +1 -1
  13. package/dist/cjs/types/response.js +44 -3
  14. package/dist/cjs/types/response.js.map +1 -1
  15. package/dist/cjs/types/validation.js +35 -2
  16. package/dist/cjs/types/validation.js.map +1 -1
  17. package/dist/cjs/validations/dln-metadata.js +6 -0
  18. package/dist/cjs/validations/dln-metadata.js.map +1 -1
  19. package/dist/cjs/validations/evm-permit.js +13 -4
  20. package/dist/cjs/validations/evm-permit.js.map +1 -1
  21. package/dist/cjs/validations/execution-metadata.js +163 -0
  22. package/dist/cjs/validations/execution-metadata.js.map +1 -0
  23. package/dist/cjs/validations/intent.js +0 -15
  24. package/dist/cjs/validations/intent.js.map +1 -1
  25. package/dist/cjs/validations/low-input-sweep-bundle.js +33 -14
  26. package/dist/cjs/validations/low-input-sweep-bundle.js.map +1 -1
  27. package/dist/cjs/validations/low-input-sweep-consolidation.js +75 -0
  28. package/dist/cjs/validations/low-input-sweep-consolidation.js.map +1 -0
  29. package/dist/cjs/validations/low-input-sweep.js +19 -13
  30. package/dist/cjs/validations/low-input-sweep.js.map +1 -1
  31. package/dist/cjs/validations/solana-compute-budget.js +111 -0
  32. package/dist/cjs/validations/solana-compute-budget.js.map +1 -0
  33. package/dist/cjs/validations/solana-op-budget.js +1 -1
  34. package/dist/cjs/validations/solana-op-budget.js.map +1 -1
  35. package/dist/cjs/validations/solana-op-wrap.js +1 -1
  36. package/dist/cjs/validations/solana-op-wrap.js.map +1 -1
  37. package/dist/cjs/validations/solana-preparation.js +193 -0
  38. package/dist/cjs/validations/solana-preparation.js.map +1 -0
  39. package/dist/cjs/validations/solana-required-actions.js +65 -29
  40. package/dist/cjs/validations/solana-required-actions.js.map +1 -1
  41. package/dist/cjs/validations/solana-transaction.js +35 -67
  42. package/dist/cjs/validations/solana-transaction.js.map +1 -1
  43. package/dist/cjs/validations/trade-grouping.js +6 -8
  44. package/dist/cjs/validations/trade-grouping.js.map +1 -1
  45. package/dist/cjs/validations/trade-index-matching.js +110 -0
  46. package/dist/cjs/validations/trade-index-matching.js.map +1 -0
  47. package/dist/cjs/validations/trade-matching.js +10 -5
  48. package/dist/cjs/validations/trade-matching.js.map +1 -1
  49. package/dist/cjs/validator.js +4 -0
  50. package/dist/cjs/validator.js.map +1 -1
  51. package/dist/cjs/whitelists/environment-config.js +2 -0
  52. package/dist/cjs/whitelists/environment-config.js.map +1 -1
  53. package/dist/esm/helpers/address.js +6 -0
  54. package/dist/esm/helpers/address.js.map +1 -1
  55. package/dist/esm/helpers/evm-intent-id.js +2 -1
  56. package/dist/esm/helpers/evm-intent-id.js.map +1 -1
  57. package/dist/esm/helpers/execution-metadata.js +114 -0
  58. package/dist/esm/helpers/execution-metadata.js.map +1 -0
  59. package/dist/esm/helpers/solana-instruction.js +6 -0
  60. package/dist/esm/helpers/solana-instruction.js.map +1 -1
  61. package/dist/esm/helpers/solana-intent-id.js +47 -21
  62. package/dist/esm/helpers/solana-intent-id.js.map +1 -1
  63. package/dist/esm/types/request.js +1 -1
  64. package/dist/esm/types/request.js.map +1 -1
  65. package/dist/esm/types/response.js +45 -4
  66. package/dist/esm/types/response.js.map +1 -1
  67. package/dist/esm/types/validation.js +35 -2
  68. package/dist/esm/types/validation.js.map +1 -1
  69. package/dist/esm/validations/dln-metadata.js +5 -0
  70. package/dist/esm/validations/dln-metadata.js.map +1 -1
  71. package/dist/esm/validations/evm-permit.js +13 -4
  72. package/dist/esm/validations/evm-permit.js.map +1 -1
  73. package/dist/esm/validations/execution-metadata.js +160 -0
  74. package/dist/esm/validations/execution-metadata.js.map +1 -0
  75. package/dist/esm/validations/intent.js +1 -16
  76. package/dist/esm/validations/intent.js.map +1 -1
  77. package/dist/esm/validations/low-input-sweep-bundle.js +33 -14
  78. package/dist/esm/validations/low-input-sweep-bundle.js.map +1 -1
  79. package/dist/esm/validations/low-input-sweep-consolidation.js +72 -0
  80. package/dist/esm/validations/low-input-sweep-consolidation.js.map +1 -0
  81. package/dist/esm/validations/low-input-sweep.js +19 -13
  82. package/dist/esm/validations/low-input-sweep.js.map +1 -1
  83. package/dist/esm/validations/solana-compute-budget.js +107 -0
  84. package/dist/esm/validations/solana-compute-budget.js.map +1 -0
  85. package/dist/esm/validations/solana-op-budget.js +1 -1
  86. package/dist/esm/validations/solana-op-budget.js.map +1 -1
  87. package/dist/esm/validations/solana-op-wrap.js +1 -1
  88. package/dist/esm/validations/solana-op-wrap.js.map +1 -1
  89. package/dist/esm/validations/solana-preparation.js +190 -0
  90. package/dist/esm/validations/solana-preparation.js.map +1 -0
  91. package/dist/esm/validations/solana-required-actions.js +65 -29
  92. package/dist/esm/validations/solana-required-actions.js.map +1 -1
  93. package/dist/esm/validations/solana-transaction.js +35 -67
  94. package/dist/esm/validations/solana-transaction.js.map +1 -1
  95. package/dist/esm/validations/trade-grouping.js +8 -10
  96. package/dist/esm/validations/trade-grouping.js.map +1 -1
  97. package/dist/esm/validations/trade-index-matching.js +107 -0
  98. package/dist/esm/validations/trade-index-matching.js.map +1 -0
  99. package/dist/esm/validations/trade-matching.js +10 -5
  100. package/dist/esm/validations/trade-matching.js.map +1 -1
  101. package/dist/esm/validator.js +4 -0
  102. package/dist/esm/validator.js.map +1 -1
  103. package/dist/esm/whitelists/environment-config.js +2 -0
  104. package/dist/esm/whitelists/environment-config.js.map +1 -1
  105. package/dist/types/helpers/address.d.ts +1 -0
  106. package/dist/types/helpers/address.d.ts.map +1 -1
  107. package/dist/types/helpers/evm-intent-id.d.ts.map +1 -1
  108. package/dist/types/helpers/execution-metadata.d.ts +38 -0
  109. package/dist/types/helpers/execution-metadata.d.ts.map +1 -0
  110. package/dist/types/helpers/solana-instruction.d.ts +4 -0
  111. package/dist/types/helpers/solana-instruction.d.ts.map +1 -1
  112. package/dist/types/helpers/solana-intent-id.d.ts.map +1 -1
  113. package/dist/types/types/request.d.ts +1 -2
  114. package/dist/types/types/request.d.ts.map +1 -1
  115. package/dist/types/types/response.d.ts +53 -24
  116. package/dist/types/types/response.d.ts.map +1 -1
  117. package/dist/types/types/validation.d.ts +32 -1
  118. package/dist/types/types/validation.d.ts.map +1 -1
  119. package/dist/types/validations/dln-metadata.d.ts +1 -0
  120. package/dist/types/validations/dln-metadata.d.ts.map +1 -1
  121. package/dist/types/validations/evm-permit.d.ts.map +1 -1
  122. package/dist/types/validations/execution-metadata.d.ts +3 -0
  123. package/dist/types/validations/execution-metadata.d.ts.map +1 -0
  124. package/dist/types/validations/low-input-sweep-bundle.d.ts.map +1 -1
  125. package/dist/types/validations/low-input-sweep-consolidation.d.ts +5 -0
  126. package/dist/types/validations/low-input-sweep-consolidation.d.ts.map +1 -0
  127. package/dist/types/validations/low-input-sweep.d.ts.map +1 -1
  128. package/dist/types/validations/solana-compute-budget.d.ts +5 -0
  129. package/dist/types/validations/solana-compute-budget.d.ts.map +1 -0
  130. package/dist/types/validations/solana-preparation.d.ts +3 -0
  131. package/dist/types/validations/solana-preparation.d.ts.map +1 -0
  132. package/dist/types/validations/solana-required-actions.d.ts.map +1 -1
  133. package/dist/types/validations/solana-transaction.d.ts.map +1 -1
  134. package/dist/types/validations/trade-index-matching.d.ts +4 -0
  135. package/dist/types/validations/trade-index-matching.d.ts.map +1 -0
  136. package/dist/types/validations/trade-matching.d.ts.map +1 -1
  137. package/dist/types/validator.d.ts.map +1 -1
  138. package/dist/types/whitelists/environment-config.d.ts.map +1 -1
  139. package/package.json +1 -1
@@ -2,13 +2,17 @@ import { ViolationCode, SolanaActionKind, SolanaActionOperation, } from "../type
2
2
  import { validateSolanaTransactionActions, validateSolanaSignTransactionActions, } from "./solana-transaction.js";
3
3
  import { validateSolanaSignActions } from "./solana-sign.js";
4
4
  import { validateSolanaEmbeddedIntentActions } from "./solana-embedded-intent.js";
5
+ import { validateSolanaPreparationActions } from "./solana-preparation.js";
5
6
  export function validateSolanaRequiredActions(request, actions, basePath, realChainId, quoteMode, trades, responseTrades, srcChainAuthorityAddress, intent, envConfig, quoteTradeSubsetUnverifiable) {
6
7
  return [
7
8
  ...validateUniqueActionIds(actions, basePath),
8
9
  ...validateRequiredActionsOrder(actions, basePath, quoteMode),
9
10
  ...validateAAConstraints(request, actions, basePath),
11
+ ...validateOnChainActionKinds(request, actions, basePath),
12
+ ...validateOnChainIntentPresence(request, actions, basePath, quoteMode),
10
13
  ...validateNoOperationActions(actions, basePath),
11
14
  ...validateNoCompensationActions(actions, basePath),
15
+ ...validateSolanaPreparationActions(actions, basePath, realChainId, envConfig.solanaIntentProgram),
12
16
  ...validateSolanaTransactionActions(actions, basePath, realChainId, quoteMode, srcChainAuthorityAddress, request, trades, responseTrades, intent.inputToken, envConfig, quoteTradeSubsetUnverifiable),
13
17
  ...validateSolanaSignTransactionActions(actions, basePath, realChainId, quoteMode, srcChainAuthorityAddress, request, trades, responseTrades, intent.inputToken, envConfig, quoteTradeSubsetUnverifiable),
14
18
  ...validateSolanaSignActions(actions, basePath, realChainId, quoteMode, intent, envConfig),
@@ -59,37 +63,69 @@ function validateRequiredActionsOrder(actions, basePath, quoteMode) {
59
63
  function isIntentRepresentationAction(action) {
60
64
  return action.actions.includes(SolanaActionOperation.Intent);
61
65
  }
62
- // CRITICAL: AA constraints
66
+ // CRITICAL: AA forbids user-submitted transactions. Without AA, co-signed
67
+ // preparation is permitted only when on-chain submission was explicitly requested.
63
68
  function validateAAConstraints(request, actions, basePath) {
64
- const violations = [];
65
- for (let i = 0; i < actions.length; i++) {
66
- const action = actions[i];
67
- if (request.enableAccountAbstraction) {
68
- // CRITICAL: AA=true → no Transaction type actions
69
- if (action.type === SolanaActionKind.Transaction) {
70
- violations.push({
71
- code: ViolationCode.SolanaForbiddenTransactionWithAA,
72
- message: "Transaction action is forbidden when enableAccountAbstraction=true",
73
- path: `${basePath}.requiredActions[${i}].type`,
74
- actual: action.type,
75
- });
76
- }
77
- }
78
- else {
79
- // AA=false normally uses Transaction. The on-chain intent flow is the one
80
- // exception: API and wallet co-sign an Intent SignTransaction for taker broadcast.
81
- if (action.type === SolanaActionKind.SignTransaction
82
- && !action.actions.includes(SolanaActionOperation.Intent)) {
83
- violations.push({
84
- code: ViolationCode.SolanaForbiddenSignTransactionWithoutAA,
85
- message: "SignTransaction action is forbidden when enableAccountAbstraction=false",
86
- path: `${basePath}.requiredActions[${i}].type`,
87
- actual: action.type,
88
- });
89
- }
90
- }
69
+ return actions.flatMap((action, index) => validateActionAAConstraint(request, action, `${basePath}.requiredActions[${index}]`));
70
+ }
71
+ function validateActionAAConstraint(request, action, actionPath) {
72
+ if (request.enableAccountAbstraction && action.type === SolanaActionKind.Transaction) {
73
+ return [{
74
+ code: ViolationCode.SolanaForbiddenTransactionWithAA,
75
+ message: "Transaction action is forbidden when enableAccountAbstraction=true",
76
+ path: `${actionPath}.type`,
77
+ actual: action.type,
78
+ }];
91
79
  }
92
- return violations;
80
+ // Without an explicit on-chain request, only the embedded Intent may use
81
+ // SignTransaction without AA; standalone preparation still uses Transaction.
82
+ if (!request.enableAccountAbstraction
83
+ && request.intentOnChainSubmission !== true
84
+ && action.type === SolanaActionKind.SignTransaction
85
+ && !action.actions.includes(SolanaActionOperation.Intent)) {
86
+ return [{
87
+ code: ViolationCode.SolanaForbiddenSignTransactionWithoutAA,
88
+ message: "preparation SignTransaction requires AA or explicitly requested on-chain intent submission",
89
+ path: `${actionPath}.type`,
90
+ actual: action.type,
91
+ }];
92
+ }
93
+ return [];
94
+ }
95
+ // CRITICAL: explicit on-chain submission requires co-signed transactions for
96
+ // preparation and Intent alike. Changing the action type must not change the mode.
97
+ function validateOnChainActionKinds(request, actions, basePath) {
98
+ if (request.intentOnChainSubmission !== true)
99
+ return [];
100
+ return actions.flatMap((action, index) => {
101
+ if (action.type === SolanaActionKind.SignTransaction)
102
+ return [];
103
+ return [{
104
+ code: ViolationCode.SolanaOnChainActionKindInvalid,
105
+ message: "on-chain Solana intent submission requires SignTransaction for every required action",
106
+ path: `${basePath}.requiredActions[${index}].type`,
107
+ expected: SolanaActionKind.SignTransaction,
108
+ actual: action.type,
109
+ }];
110
+ });
111
+ }
112
+ // CRITICAL: preparation or a separate message signature cannot replace the
113
+ // requested embedded Intent. Quote responses may omit the Intent action entirely.
114
+ // Duplicate representations and embedded payloads are checked independently.
115
+ function validateOnChainIntentPresence(request, actions, basePath, quoteMode) {
116
+ if (request.intentOnChainSubmission !== true || quoteMode)
117
+ return [];
118
+ const intentActions = actions.filter(action => action.type === SolanaActionKind.SignTransaction
119
+ && action.actions.includes(SolanaActionOperation.Intent));
120
+ if (intentActions.length > 0)
121
+ return [];
122
+ return [{
123
+ code: ViolationCode.OnChainIntentTransactionMissing,
124
+ message: "on-chain Solana intent submission requires an embedded Intent SignTransaction",
125
+ path: `${basePath}.requiredActions`,
126
+ expected: { embeddedIntentActionCount: 1 },
127
+ actual: { embeddedIntentActionCount: 0 },
128
+ }];
93
129
  }
94
130
  // HIGH: Operation actions must be absent
95
131
  function validateNoOperationActions(actions, basePath) {
@@ -1 +1 @@
1
- {"version":3,"file":"solana-required-actions.js","sourceRoot":"","sources":["../../../src/validations/solana-required-actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solana-required-actions.js","sourceRoot":"","sources":["../../../src/validations/solana-required-actions.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { resolveInstructions, isClassicApprove, isCustomApprove, isSystemTransfe
5
5
  import { COMPUTE_BUDGET_PROGRAM, } from "../whitelists/solana/programs.js";
6
6
  import { validateSolanaBudgetInstructions } from "./solana-op-budget.js";
7
7
  import { validateSolanaWrapInstructions } from "./solana-op-wrap.js";
8
+ import { isSolanaComputeBudgetAllowed, validateSolanaComputeBudgetInstructions, } from "./solana-compute-budget.js";
8
9
  const ALLOWED_TX_ACTIONS = new Set([
9
10
  SolanaActionOperation.Wrap,
10
11
  SolanaActionOperation.Budget,
@@ -29,7 +30,7 @@ export function validateSolanaTransactionActions(actions, basePath, realChainId,
29
30
  }
30
31
  const accountKeys = getStaticAccountKeys(decoded.transaction);
31
32
  const resolved = resolveInstructions(decoded.transaction.message.compiledInstructions, accountKeys);
32
- violations.push(...validateTransactionFeePayer(decoded.transaction, actionPath, realChainId, quoteMode, srcChainAuthorityAddress), ...validateTransactionComputeBudget(decoded.transaction, actionPath, isFirstTransactionAction), ...validateAllowedInstructions(decoded.transaction, actionPath, envConfig.solanaTransactionAllowedPrograms, ViolationCode.SolanaTransactionForbiddenInstruction, "Transaction"), ...validateDeclaredOperationsForInstructions(resolved, action, actionPath, envConfig), ...validateIntentActionInstructions(resolved, action, actionPath, envConfig), ...validateSolanaBudgetInstructions(action, resolved, actionPath, request, trades, responseTrades, realChainId, quoteMode, srcChainAuthorityAddress, envConfig, quoteTradeSubsetUnverifiable), ...validateSolanaWrapInstructions(action, resolved, actionPath, inputTokens, realChainId, quoteMode, srcChainAuthorityAddress, quoteTradeSubsetUnverifiable), ...validateNoUnclassifiedInstructions(resolved, actionPath, buildClassifiers(envConfig.solanaIntentProgram, isComputeBudget)));
33
+ violations.push(...validateTransactionFeePayer(decoded.transaction, actionPath, realChainId, quoteMode, srcChainAuthorityAddress), ...validateSolanaComputeBudgetInstructions(resolved, actionPath, request, isFirstTransactionAction), ...validateAllowedInstructions(decoded.transaction, actionPath, getAllowedTransactionPrograms(envConfig.solanaTransactionAllowedPrograms, request), ViolationCode.SolanaTransactionForbiddenInstruction, "Transaction"), ...validateDeclaredOperationsForInstructions(resolved, action, actionPath, envConfig), ...validateIntentActionInstructions(resolved, action, actionPath, envConfig), ...validateSolanaBudgetInstructions(action, resolved, actionPath, request, trades, responseTrades, realChainId, quoteMode, srcChainAuthorityAddress, envConfig, quoteTradeSubsetUnverifiable), ...validateSolanaWrapInstructions(action, resolved, actionPath, inputTokens, realChainId, quoteMode, srcChainAuthorityAddress, quoteTradeSubsetUnverifiable), ...validateNoUnclassifiedInstructions(resolved, actionPath, buildClassifiers(envConfig.solanaIntentProgram, ix => isSolanaComputeBudgetAllowed(request) && isComputeBudget(ix))));
33
34
  }
34
35
  return violations;
35
36
  }
@@ -54,19 +55,12 @@ export function validateSolanaSignTransactionActions(actions, basePath, realChai
54
55
  }
55
56
  const accountKeys = getStaticAccountKeys(decoded.transaction);
56
57
  const resolved = resolveInstructions(decoded.transaction.message.compiledInstructions, accountKeys);
57
- const isIntentSubmission = action.actions.includes(SolanaActionOperation.Intent);
58
- const isNonAaIntentSubmission = isIntentSubmission && !request.enableAccountAbstraction;
59
- const allowedPrograms = isIntentSubmission
60
- ? new Set([
61
- ...envConfig.solanaSignTransactionAllowedPrograms,
62
- COMPUTE_BUDGET_PROGRAM,
63
- ])
64
- : envConfig.solanaSignTransactionAllowedPrograms;
65
- violations.push(...validateAllowedInstructions(decoded.transaction, actionPath, allowedPrograms, ViolationCode.SolanaSignTransactionForbiddenInstruction, actionType), ...(isNonAaIntentSubmission
58
+ // Ordinary non-AA embedded intents also carry ComputeBudget. The request
59
+ // policy removes it again for AA and explicitly requested on-chain mode.
60
+ const allowedPrograms = getAllowedTransactionPrograms(new Set([...envConfig.solanaSignTransactionAllowedPrograms, COMPUTE_BUDGET_PROGRAM]), request);
61
+ violations.push(...validateAllowedInstructions(decoded.transaction, actionPath, allowedPrograms, ViolationCode.SolanaSignTransactionForbiddenInstruction, actionType), ...(!request.enableAccountAbstraction
66
62
  ? validateTransactionFeePayer(decoded.transaction, actionPath, realChainId, quoteMode, srcChainAuthorityAddress)
67
- : []), ...(isNonAaIntentSubmission
68
- ? validateTransactionComputeBudget(decoded.transaction, actionPath, true)
69
- : []), ...validateDeclaredOperationsForInstructions(resolved, action, actionPath, envConfig), ...validateIntentActionInstructions(resolved, action, actionPath, envConfig), ...validateSolanaBudgetInstructions(action, resolved, actionPath, request, trades, responseTrades, realChainId, quoteMode, srcChainAuthorityAddress, envConfig, quoteTradeSubsetUnverifiable), ...validateSolanaWrapInstructions(action, resolved, actionPath, inputTokens, realChainId, quoteMode, srcChainAuthorityAddress, quoteTradeSubsetUnverifiable), ...validateNoUnclassifiedInstructions(resolved, actionPath, buildClassifiers(envConfig.solanaIntentProgram, isIntentSubmission ? isMemoOrComputeBudget : isMemo)));
63
+ : []), ...validateSolanaComputeBudgetInstructions(resolved, actionPath, request, true), ...validateDeclaredOperationsForInstructions(resolved, action, actionPath, envConfig), ...validateIntentActionInstructions(resolved, action, actionPath, envConfig), ...validateSolanaBudgetInstructions(action, resolved, actionPath, request, trades, responseTrades, realChainId, quoteMode, srcChainAuthorityAddress, envConfig, quoteTradeSubsetUnverifiable), ...validateSolanaWrapInstructions(action, resolved, actionPath, inputTokens, realChainId, quoteMode, srcChainAuthorityAddress, quoteTradeSubsetUnverifiable), ...validateNoUnclassifiedInstructions(resolved, actionPath, buildClassifiers(envConfig.solanaIntentProgram, ix => isMemo(ix) || (isSolanaComputeBudgetAllowed(request) && isComputeBudget(ix)))));
70
64
  }
71
65
  return violations;
72
66
  }
@@ -132,7 +126,7 @@ function validateIntentActionInstructions(resolved, action, actionPath, envConfi
132
126
  // =============================================
133
127
  // HIGH: actions[] must only contain unique Wrap, Budget, Intent operations
134
128
  function validateActionsList(action, actionPath) {
135
- const violations = [];
129
+ const violations = validatePreparationOperationPresent(action, actionPath);
136
130
  const invalid = action.actions.filter(a => !ALLOWED_TX_ACTIONS.has(a));
137
131
  const duplicates = findDuplicateActions(action.actions);
138
132
  if (invalid.length > 0) {
@@ -155,6 +149,25 @@ function validateActionsList(action, actionPath) {
155
149
  }
156
150
  return violations;
157
151
  }
152
+ // HIGH: a SignTransaction without Intent must declare Wrap or Budget.
153
+ // Their validators also require the corresponding instructions.
154
+ // Ordinary Transaction actions may legitimately contain only ComputeBudget;
155
+ // the shared response schema and an empty quote requiredActions list stay valid.
156
+ function validatePreparationOperationPresent(action, actionPath) {
157
+ if (action.type !== SolanaActionKind.SignTransaction
158
+ || action.actions.includes(SolanaActionOperation.Intent)
159
+ || action.actions.includes(SolanaActionOperation.Wrap)
160
+ || action.actions.includes(SolanaActionOperation.Budget))
161
+ return [];
162
+ // Existing Wrap/Budget and Intent validators require the actual instructions
163
+ // when their labels are present; a fictitious label cannot satisfy validation.
164
+ return [{
165
+ code: ViolationCode.SolanaPreparationOperationMissing,
166
+ message: "SignTransaction without Intent must declare at least one operation: Wrap or Budget",
167
+ path: `${actionPath}.actions`,
168
+ actual: action.actions,
169
+ }];
170
+ }
158
171
  function findDuplicateActions(actions) {
159
172
  const seen = new Set();
160
173
  const duplicates = new Set();
@@ -195,9 +208,7 @@ function validateTransactionFeePayer(transaction, actionPath, realChainId, quote
195
208
  if (quoteMode || !srcChainAuthorityAddress)
196
209
  return [];
197
210
  const feePayer = getFeePayer(transaction);
198
- if (!feePayer)
199
- return [];
200
- if (!addressEquals(realChainId, feePayer, srcChainAuthorityAddress)) {
211
+ if (feePayer === undefined || !addressEquals(realChainId, feePayer, srcChainAuthorityAddress)) {
201
212
  return [{
202
213
  code: ViolationCode.SolanaTransactionFeePayerMismatch,
203
214
  message: "Transaction feePayer must equal request.trades[].srcChainAuthorityAddress",
@@ -208,54 +219,14 @@ function validateTransactionFeePayer(transaction, actionPath, realChainId, quote
208
219
  }
209
220
  return [];
210
221
  }
211
- // HIGH: the first Transaction must contain at least 2 leading ComputeBudget
212
- // instructions. Later split Transaction actions may omit ComputeBudget entirely;
213
- // when present, ComputeBudget must still stay at the beginning.
214
- function validateTransactionComputeBudget(transaction, actionPath, isFirstTransactionAction) {
215
- const instructions = transaction.message.compiledInstructions;
216
- const accountKeys = getStaticAccountKeys(transaction);
217
- const computeBudgetIndices = getComputeBudgetInstructionIndices(instructions, accountKeys);
218
- const leadingComputeBudgetCount = countLeadingComputeBudgetInstructions(instructions, accountKeys);
219
- if (!isFirstTransactionAction && computeBudgetIndices.length === 0)
220
- return [];
221
- if (leadingComputeBudgetCount < computeBudgetIndices.length) {
222
- return [{
223
- code: ViolationCode.SolanaTransactionComputeBudgetMissing,
224
- message: "ComputeBudget instructions must be at the beginning of Transaction",
225
- path: `${actionPath}.data.data`,
226
- expected: computeBudgetIndices.map((_, i) => i),
227
- actual: computeBudgetIndices,
228
- }];
229
- }
230
- if (leadingComputeBudgetCount < 2) {
231
- return [{
232
- code: ViolationCode.SolanaTransactionComputeBudgetMissing,
233
- message: "Transaction must have at least 2 ComputeBudget instructions at the beginning",
234
- path: `${actionPath}.data.data`,
235
- expected: 2,
236
- actual: leadingComputeBudgetCount,
237
- }];
222
+ // Keep the program allowlist aligned with the request-based instruction policy.
223
+ // Copy the shared whitelist: a validation must never mutate environment config.
224
+ function getAllowedTransactionPrograms(programs, request) {
225
+ const allowed = new Set(programs);
226
+ if (!isSolanaComputeBudgetAllowed(request)) {
227
+ allowed.delete(COMPUTE_BUDGET_PROGRAM);
238
228
  }
239
- return [];
240
- }
241
- function getComputeBudgetInstructionIndices(instructions, accountKeys) {
242
- const indices = [];
243
- for (let i = 0; i < instructions.length; i++) {
244
- const programId = accountKeys[instructions[i].programIdIndex];
245
- if (programId === COMPUTE_BUDGET_PROGRAM)
246
- indices.push(i);
247
- }
248
- return indices;
249
- }
250
- function countLeadingComputeBudgetInstructions(instructions, accountKeys) {
251
- let count = 0;
252
- for (let i = 0; i < instructions.length; i++) {
253
- const programId = accountKeys[instructions[i].programIdIndex];
254
- if (programId !== COMPUTE_BUDGET_PROGRAM)
255
- break;
256
- count++;
257
- }
258
- return count;
229
+ return allowed;
259
230
  }
260
231
  // CRITICAL: no instructions from disallowed programs
261
232
  function validateAllowedInstructions(transaction, actionPath, allowedPrograms, violationCode, label) {
@@ -299,9 +270,6 @@ function buildClassifiers(intentProgram, leadClassifier) {
299
270
  (ix) => isIntentInstruction(ix, intentProgram),
300
271
  ];
301
272
  }
302
- function isMemoOrComputeBudget(ix) {
303
- return isMemo(ix) || isComputeBudget(ix);
304
- }
305
273
  // CRITICAL: every instruction from an allowed program must be recognized by at least one classifier.
306
274
  function validateNoUnclassifiedInstructions(resolved, actionPath, classifiers) {
307
275
  const violations = [];
@@ -1 +1 @@
1
- {"version":3,"file":"solana-transaction.js","sourceRoot":"","sources":["../../../src/validations/solana-transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"solana-transaction.js","sourceRoot":"","sources":["../../../src/validations/solana-transaction.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,8 @@ import { ViolationCode, } from "../types/index.js";
3
3
  import { resolveChainId } from "../whitelists/subscription-to-chain-id.js";
4
4
  import { addressEquals, getAddressIdentityKey } from "../helpers/address.js";
5
5
  import { serializeDlnHook } from "../helpers/evm-dln-hook-pack.js";
6
- import { hexEquals, isEmptyHex } from "../helpers/hex.js";
7
- import { dlnMetadataEquals, normalizeDlnMetadataKey } from "./dln-metadata.js";
6
+ import { hexEquals } from "../helpers/hex.js";
7
+ import { getDlnMetadataGroupingKey } from "./dln-metadata.js";
8
8
  import { getResponseExternalCallHash, ResponseExternalCallHashKind } from "./external-call.js";
9
9
  import { hasAnyExecutionAddress } from "../helpers/quote-mode.js";
10
10
  import { interactionsEqual, interactionsKey } from "../helpers/interactions.js";
@@ -25,9 +25,9 @@ export function getRequestTradeIndex(ctx, intentTradeIndex) {
25
25
  // partner costs, hooks, or metadata checks.
26
26
  //
27
27
  // NOTE: the API may further split a group into multiple intents based on
28
- // fields like intent.executionMetadata, intent.dlnMetadata,
29
- // intent.externalCallHash, etc. that are not present in the request, so one
30
- // group can correspond to one or more response intents.
28
+ // dlnHook, dlnMetadata, and pre/post interactions. One group can therefore
29
+ // correspond to one or more response intents. Bundle-level executionMetadata
30
+ // does not distinguish these subsets.
31
31
  export function groupTrades(trades, quoteMode, consolidationMode = false, tradePairs, sweptTradeIndices) {
32
32
  const map = new Map();
33
33
  const violations = [];
@@ -235,8 +235,7 @@ function validateIntentDifferentiation(contexts) {
235
235
  function intentDifferentiationKey(intent, realChainId) {
236
236
  const parts = [
237
237
  intent.externalCallHash ?? "",
238
- normalizeDlnMetadataKey(intent.dlnMetadata),
239
- intent.executionMetadata ?? "",
238
+ getDlnMetadataGroupingKey(intent.dlnMetadata),
240
239
  interactionsKey(realChainId, intent.preInteractions),
241
240
  interactionsKey(realChainId, intent.postInteractions),
242
241
  ];
@@ -285,7 +284,7 @@ function selectIntentTrades(group, intent) {
285
284
  function tradeDifferentiationKey(trade, responseTrade, realChainId) {
286
285
  const parts = [
287
286
  computeTradeExternalCallHash(trade, responseTrade) ?? "",
288
- normalizeDlnMetadataKey(trade.dlnMetadata),
287
+ getDlnMetadataGroupingKey(trade.dlnMetadata),
289
288
  interactionsKey(realChainId, trade.preInteractions),
290
289
  interactionsKey(realChainId, trade.postInteractions),
291
290
  ];
@@ -293,8 +292,7 @@ function tradeDifferentiationKey(trade, responseTrade, realChainId) {
293
292
  }
294
293
  function tradeMatchesIntent(trade, responseTrade, intent, realChainId) {
295
294
  return hexEquals(intent.externalCallHash, computeTradeExternalCallHash(trade, responseTrade))
296
- && dlnMetadataEquals(intent.dlnMetadata, trade.dlnMetadata)
297
- && isEmptyHex(intent.executionMetadata)
295
+ && getDlnMetadataGroupingKey(intent.dlnMetadata) === getDlnMetadataGroupingKey(trade.dlnMetadata)
298
296
  && interactionsEqual(realChainId, intent.preInteractions, trade.preInteractions)
299
297
  && interactionsEqual(realChainId, intent.postInteractions, trade.postInteractions);
300
298
  }
@@ -1 +1 @@
1
- {"version":3,"file":"trade-grouping.js","sourceRoot":"","sources":["../../../src/validations/trade-grouping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trade-grouping.js","sourceRoot":"","sources":["../../../src/validations/trade-grouping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import { ViolationCode } from "../types/index.js";
2
+ // Binds each response trade to the explicitly named request entry, never to a
3
+ // similar route. This validates indices only: trade, intent and budget validators
4
+ // must still check the contents using these same pairs.
5
+ export function matchTradesByRequestIndex(requestTrades, responseTrades, consolidationMode, sweptTradeIndices) {
6
+ const result = { pairs: [], violations: [] };
7
+ const seen = new Set();
8
+ let previousIndex = -1;
9
+ for (let i = 0; i < responseTrades.length; i++) {
10
+ const tradeIndex = responseTrades[i].tradeIndex;
11
+ const violation = validateTradeIndex(tradeIndex, requestTrades.length, seen, sweptTradeIndices, i);
12
+ if (violation !== undefined) {
13
+ result.violations.push(violation);
14
+ continue;
15
+ }
16
+ // The check above guarantees a valid number, but does not narrow its TypeScript type.
17
+ const requestIndex = tradeIndex;
18
+ result.violations.push(...validateTradeIndexOrder(requestIndex, previousIndex, i));
19
+ seen.add(requestIndex);
20
+ previousIndex = requestIndex;
21
+ result.pairs.push({
22
+ requestIndex,
23
+ responseIndex: i,
24
+ requestTrade: requestTrades[requestIndex],
25
+ responseTrade: responseTrades[i],
26
+ });
27
+ }
28
+ if (!consolidationMode) {
29
+ result.violations.push(...validateTradeIndexCoverage(requestTrades.length, sweptTradeIndices, result.pairs));
30
+ }
31
+ return result;
32
+ }
33
+ // CRITICAL: an explicit index must name one non-swept request entry exactly once.
34
+ // The range guard is also required for direct callers that bypass schema parsing.
35
+ function validateTradeIndex(tradeIndex, tradeCount, seen, sweptTradeIndices, responseIndex) {
36
+ const path = `response.trades[${responseIndex}].tradeIndex`;
37
+ if (tradeIndex === undefined) {
38
+ return {
39
+ code: ViolationCode.TradeIndexMissing,
40
+ message: "tradeIndex must be present on every trade in an indexed response",
41
+ path,
42
+ };
43
+ }
44
+ if (!Number.isSafeInteger(tradeIndex) || tradeIndex < 0 || tradeIndex >= tradeCount) {
45
+ return {
46
+ code: ViolationCode.TradeIndexInvalid,
47
+ message: "tradeIndex must identify an existing request trade",
48
+ path,
49
+ actual: tradeIndex,
50
+ details: { min: 0, maxExclusive: tradeCount },
51
+ };
52
+ }
53
+ return validateTradeIndexReuse(tradeIndex, seen, sweptTradeIndices, path);
54
+ }
55
+ // CRITICAL: one request input cannot authorize two exchanges or an exchange and a sweep.
56
+ function validateTradeIndexReuse(tradeIndex, seen, sweptTradeIndices, path) {
57
+ if (seen.has(tradeIndex)) {
58
+ return {
59
+ code: ViolationCode.TradeIndexDuplicate,
60
+ message: "a request trade must not appear more than once in response.trades",
61
+ path,
62
+ actual: tradeIndex,
63
+ };
64
+ }
65
+ if (sweptTradeIndices.has(tradeIndex)) {
66
+ return {
67
+ code: ViolationCode.TradeIndexSwept,
68
+ message: "a request trade must not appear both as an exchange and a sweep",
69
+ path,
70
+ actual: tradeIndex,
71
+ };
72
+ }
73
+ return undefined;
74
+ }
75
+ // HIGH: preserve request order because consolidation checks treat the last
76
+ // response trade as the final balancing trade. Its request index also defines
77
+ // the cutoff for permitted sweeps. Allowing reordering requires updating those
78
+ // checks first; explicit `tradeIndex` values alone do not remove this dependency.
79
+ function validateTradeIndexOrder(tradeIndex, previousIndex, responseIndex) {
80
+ if (tradeIndex > previousIndex)
81
+ return [];
82
+ return [{
83
+ code: ViolationCode.TradeIndexOrderMismatch,
84
+ message: "response trade indices must preserve the original request order",
85
+ path: `response.trades[${responseIndex}].tradeIndex`,
86
+ actual: tradeIndex,
87
+ details: { previousTradeIndex: previousIndex },
88
+ }];
89
+ }
90
+ // CRITICAL: outside consolidation, every non-swept request trade must be present.
91
+ // Equal array lengths alone cannot detect a duplicated or substituted index.
92
+ function validateTradeIndexCoverage(requestTradeCount, sweptTradeIndices, pairs) {
93
+ const expected = Array.from({ length: requestTradeCount }, (_, index) => index)
94
+ .filter(index => !sweptTradeIndices.has(index));
95
+ const actual = pairs.map(pair => pair.requestIndex);
96
+ if (expected.length === actual.length
97
+ && expected.every((expectedIndex, i) => expectedIndex === actual[i]))
98
+ return [];
99
+ return [{
100
+ code: ViolationCode.TradeIndexCoverageMismatch,
101
+ message: "response trades must cover every non-swept request trade in order outside consolidation",
102
+ path: "response.trades",
103
+ expected: { tradeIndices: expected },
104
+ actual: { tradeIndices: actual },
105
+ }];
106
+ }
107
+ //# sourceMappingURL=trade-index-matching.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trade-index-matching.js","sourceRoot":"","sources":["../../../src/validations/trade-index-matching.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0C,aAAa,EAAE,MAAM,UAAU,CAAC;AAGjF,8EAA8E;AAC9E,kFAAkF;AAClF,wDAAwD;AACxD,MAAM,UAAU,yBAAyB,CACrC,aAA6B,EAC7B,cAA+B,EAC/B,iBAA0B,EAC1B,iBAAsC;IAEtC,MAAM,MAAM,GAAqB,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;IAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAEhD,MAAM,SAAS,GAAG,kBAAkB,CAChC,UAAU,EAAE,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAC/D,CAAC;QAEF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAClC,SAAS;QACb,CAAC;QAED,sFAAsF;QACtF,MAAM,YAAY,GAAG,UAAoB,CAAC;QAE1C,MAAM,CAAC,UAAU,CAAC,IAAI,CAClB,GAAG,uBAAuB,CAAC,YAAY,EAAE,aAAa,EAAE,CAAC,CAAC,CAC7D,CAAC;QAEF,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACvB,aAAa,GAAG,YAAY,CAAC;QAE7B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,YAAY;YACZ,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC;YACzC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;SACnC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACrB,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAChD,aAAa,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,CAAC,KAAK,CACxD,CAAC,CAAC;IACP,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,kFAAkF;AAClF,kFAAkF;AAClF,SAAS,kBAAkB,CACvB,UAA8B,EAC9B,UAAkB,EAClB,IAAyB,EACzB,iBAAsC,EACtC,aAAqB;IAErB,MAAM,IAAI,GAAG,mBAAmB,aAAa,cAAc,CAAC;IAE5D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO;YACH,IAAI,EAAE,aAAa,CAAC,iBAAiB;YACrC,OAAO,EAAE,kEAAkE;YAC3E,IAAI;SACP,CAAC;IACN,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;QAClF,OAAO;YACH,IAAI,EAAE,aAAa,CAAC,iBAAiB;YACrC,OAAO,EAAE,oDAAoD;YAC7D,IAAI;YACJ,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE;SAChD,CAAC;IACN,CAAC;IAED,OAAO,uBAAuB,CAAC,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;AAC9E,CAAC;AAED,yFAAyF;AACzF,SAAS,uBAAuB,CAC5B,UAAkB,EAClB,IAAyB,EACzB,iBAAsC,EACtC,IAAY;IAEZ,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACvB,OAAO;YACH,IAAI,EAAE,aAAa,CAAC,mBAAmB;YACvC,OAAO,EAAE,mEAAmE;YAC5E,IAAI;YACJ,MAAM,EAAE,UAAU;SACrB,CAAC;IACN,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO;YACH,IAAI,EAAE,aAAa,CAAC,eAAe;YACnC,OAAO,EAAE,iEAAiE;YAC1E,IAAI;YACJ,MAAM,EAAE,UAAU;SACrB,CAAC;IACN,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,2EAA2E;AAC3E,8EAA8E;AAC9E,+EAA+E;AAC/E,kFAAkF;AAClF,SAAS,uBAAuB,CAC5B,UAAkB,EAClB,aAAqB,EACrB,aAAqB;IAErB,IAAI,UAAU,GAAG,aAAa;QAAE,OAAO,EAAE,CAAC;IAE1C,OAAO,CAAC;YACJ,IAAI,EAAE,aAAa,CAAC,uBAAuB;YAC3C,OAAO,EAAE,iEAAiE;YAC1E,IAAI,EAAE,mBAAmB,aAAa,cAAc;YACpD,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,EAAE,kBAAkB,EAAE,aAAa,EAAE;SACjD,CAAC,CAAC;AACP,CAAC;AAED,kFAAkF;AAClF,6EAA6E;AAC7E,SAAS,0BAA0B,CAC/B,iBAAyB,EACzB,iBAAsC,EACtC,KAAkB;IAElB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;SAC1E,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEpD,IACI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;WAC9B,QAAQ,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;QACtE,OAAO,EAAE,CAAC;IAEZ,OAAO,CAAC;YACJ,IAAI,EAAE,aAAa,CAAC,0BAA0B;YAC9C,OAAO,EAAE,yFAAyF;YAClG,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE;YACpC,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;SACnC,CAAC,CAAC;AACP,CAAC"}
@@ -1,15 +1,20 @@
1
1
  import { ViolationCode } from "../types/index.js";
2
2
  import { addressEquals } from "../helpers/address.js";
3
3
  import { resolveChainId } from "../whitelists/subscription-to-chain-id.js";
4
+ import { matchTradesByRequestIndex } from "./trade-index-matching.js";
4
5
  // Builds the request↔response trade mapping used by validators that need a
5
6
  // concrete request trade for every response trade.
6
7
  //
7
- // Non-consolidation mode: API keeps non-swept trades in the same order, so order
8
- // pairing is enough while preserving original request and response indices.
9
- //
10
- // Consolidation mode: API may omit request trades, but the remaining response
11
- // trades must still be an order-preserving subsequence of request.trades[].
8
+ // An explicit tradeIndex selects the original request trade, including after
9
+ // consolidation skips. Its contents are still checked against that request trade.
10
+ // Legacy matching is retained only when ALL indices are absent: positional for
11
+ // non-consolidation, greedy and order-preserving for consolidation. Removing all
12
+ // indices therefore retains the legacy ambiguity; partial/invalid indices never
13
+ // select this compatibility path. Consolidation sweeps require explicit indices.
12
14
  export function matchTrades(requestTrades, responseTrades, quoteMode, consolidationMode, sweptTradeIndices) {
15
+ if (responseTrades.some(trade => trade.tradeIndex !== undefined)) {
16
+ return matchTradesByRequestIndex(requestTrades, responseTrades, consolidationMode, sweptTradeIndices);
17
+ }
13
18
  if (!consolidationMode) {
14
19
  return {
15
20
  pairs: pairTradesByIndex(requestTrades, responseTrades, sweptTradeIndices),