@debridge-finance/borderless-validation-sdk 0.0.5 → 0.0.7
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/helpers/evm-dln-hook-pack.js +8 -6
- package/dist/cjs/helpers/evm-dln-hook-pack.js.map +1 -1
- package/dist/cjs/helpers/evm-gas-compensation-tx.js +2 -1
- package/dist/cjs/helpers/evm-gas-compensation-tx.js.map +1 -1
- package/dist/cjs/helpers/evm-intent-id.js +6 -5
- package/dist/cjs/helpers/evm-intent-id.js.map +1 -1
- package/dist/cjs/helpers/evm-trade-amounts.js +25 -43
- package/dist/cjs/helpers/evm-trade-amounts.js.map +1 -1
- package/dist/cjs/helpers/expected-delegate.js +10 -11
- package/dist/cjs/helpers/expected-delegate.js.map +1 -1
- package/dist/cjs/helpers/gas-compensation.js +3 -0
- package/dist/cjs/helpers/gas-compensation.js.map +1 -1
- package/dist/cjs/helpers/hex.js +35 -0
- package/dist/cjs/helpers/hex.js.map +1 -1
- package/dist/cjs/helpers/integer.js +10 -0
- package/dist/cjs/helpers/integer.js.map +1 -0
- package/dist/cjs/helpers/placeholder.js +3 -2
- package/dist/cjs/helpers/placeholder.js.map +1 -1
- package/dist/cjs/helpers/solana-intent-id.js +6 -5
- package/dist/cjs/helpers/solana-intent-id.js.map +1 -1
- package/dist/cjs/helpers/synthetic-native-wrap.js +56 -0
- package/dist/cjs/helpers/synthetic-native-wrap.js.map +1 -0
- package/dist/cjs/types/enums.js +2 -0
- package/dist/cjs/types/enums.js.map +1 -1
- package/dist/cjs/types/request.js +27 -5
- package/dist/cjs/types/request.js.map +1 -1
- package/dist/cjs/types/response.js +11 -3
- package/dist/cjs/types/response.js.map +1 -1
- package/dist/cjs/types/validation.js +40 -1
- package/dist/cjs/types/validation.js.map +1 -1
- package/dist/cjs/validations/accumulative-token.js +272 -0
- package/dist/cjs/validations/accumulative-token.js.map +1 -0
- package/dist/cjs/validations/compensation-hook.js +9 -0
- package/dist/cjs/validations/compensation-hook.js.map +1 -1
- package/dist/cjs/validations/cost-token.js +56 -0
- package/dist/cjs/validations/cost-token.js.map +1 -0
- package/dist/cjs/validations/dln-metadata.js +63 -0
- package/dist/cjs/validations/dln-metadata.js.map +1 -0
- package/dist/cjs/validations/evm-caveats.js +5 -3
- package/dist/cjs/validations/evm-caveats.js.map +1 -1
- package/dist/cjs/validations/evm-op-budget.js +4 -4
- package/dist/cjs/validations/evm-op-budget.js.map +1 -1
- package/dist/cjs/validations/evm-op-hook.js +7 -1
- package/dist/cjs/validations/evm-op-hook.js.map +1 -1
- package/dist/cjs/validations/evm-op-wrap.js +6 -5
- package/dist/cjs/validations/evm-op-wrap.js.map +1 -1
- package/dist/cjs/validations/evm-permit2.js +7 -4
- package/dist/cjs/validations/evm-permit2.js.map +1 -1
- package/dist/cjs/validations/evm-required-actions.js +7 -4
- package/dist/cjs/validations/evm-required-actions.js.map +1 -1
- package/dist/cjs/validations/external-call.js +330 -0
- package/dist/cjs/validations/external-call.js.map +1 -0
- package/dist/cjs/validations/hooks-common.js +38 -2
- package/dist/cjs/validations/hooks-common.js.map +1 -1
- package/dist/cjs/validations/intent-tokens.js +54 -40
- package/dist/cjs/validations/intent-tokens.js.map +1 -1
- package/dist/cjs/validations/intent.js +192 -71
- package/dist/cjs/validations/intent.js.map +1 -1
- package/dist/cjs/validations/ptp.js +157 -0
- package/dist/cjs/validations/ptp.js.map +1 -0
- package/dist/cjs/validations/required-actions.js +2 -2
- package/dist/cjs/validations/required-actions.js.map +1 -1
- package/dist/cjs/validations/solana-hook.js +12 -0
- package/dist/cjs/validations/solana-hook.js.map +1 -1
- package/dist/cjs/validations/solana-op-budget.js +20 -40
- package/dist/cjs/validations/solana-op-budget.js.map +1 -1
- package/dist/cjs/validations/solana-op-wrap.js +27 -32
- package/dist/cjs/validations/solana-op-wrap.js.map +1 -1
- package/dist/cjs/validations/total-dst-amount.js +432 -0
- package/dist/cjs/validations/total-dst-amount.js.map +1 -0
- package/dist/cjs/validations/trade-grouping.js +67 -25
- package/dist/cjs/validations/trade-grouping.js.map +1 -1
- package/dist/cjs/validations/trade-matching.js +112 -0
- package/dist/cjs/validations/trade-matching.js.map +1 -0
- package/dist/cjs/validations/trades.js +365 -71
- package/dist/cjs/validations/trades.js.map +1 -1
- package/dist/cjs/validator.js +22 -4
- package/dist/cjs/validator.js.map +1 -1
- package/dist/cjs/whitelists/environment-config.js +5 -5
- package/dist/cjs/whitelists/environment-config.js.map +1 -1
- package/dist/esm/helpers/evm-dln-hook-pack.js +8 -6
- package/dist/esm/helpers/evm-dln-hook-pack.js.map +1 -1
- package/dist/esm/helpers/evm-gas-compensation-tx.js +2 -1
- package/dist/esm/helpers/evm-gas-compensation-tx.js.map +1 -1
- package/dist/esm/helpers/evm-intent-id.js +6 -5
- package/dist/esm/helpers/evm-intent-id.js.map +1 -1
- package/dist/esm/helpers/evm-trade-amounts.js +26 -44
- package/dist/esm/helpers/evm-trade-amounts.js.map +1 -1
- package/dist/esm/helpers/expected-delegate.js +10 -11
- package/dist/esm/helpers/expected-delegate.js.map +1 -1
- package/dist/esm/helpers/gas-compensation.js +3 -0
- package/dist/esm/helpers/gas-compensation.js.map +1 -1
- package/dist/esm/helpers/hex.js +29 -0
- package/dist/esm/helpers/hex.js.map +1 -1
- package/dist/esm/helpers/integer.js +7 -0
- package/dist/esm/helpers/integer.js.map +1 -0
- package/dist/esm/helpers/placeholder.js +3 -2
- package/dist/esm/helpers/placeholder.js.map +1 -1
- package/dist/esm/helpers/solana-intent-id.js +6 -5
- package/dist/esm/helpers/solana-intent-id.js.map +1 -1
- package/dist/esm/helpers/synthetic-native-wrap.js +52 -0
- package/dist/esm/helpers/synthetic-native-wrap.js.map +1 -0
- package/dist/esm/types/enums.js +2 -0
- package/dist/esm/types/enums.js.map +1 -1
- package/dist/esm/types/request.js +25 -4
- package/dist/esm/types/request.js.map +1 -1
- package/dist/esm/types/response.js +11 -3
- package/dist/esm/types/response.js.map +1 -1
- package/dist/esm/types/validation.js +40 -1
- package/dist/esm/types/validation.js.map +1 -1
- package/dist/esm/validations/accumulative-token.js +269 -0
- package/dist/esm/validations/accumulative-token.js.map +1 -0
- package/dist/esm/validations/compensation-hook.js +9 -0
- package/dist/esm/validations/compensation-hook.js.map +1 -1
- package/dist/esm/validations/cost-token.js +53 -0
- package/dist/esm/validations/cost-token.js.map +1 -0
- package/dist/esm/validations/dln-metadata.js +56 -0
- package/dist/esm/validations/dln-metadata.js.map +1 -0
- package/dist/esm/validations/evm-caveats.js +5 -3
- package/dist/esm/validations/evm-caveats.js.map +1 -1
- package/dist/esm/validations/evm-op-budget.js +4 -4
- package/dist/esm/validations/evm-op-budget.js.map +1 -1
- package/dist/esm/validations/evm-op-hook.js +7 -1
- package/dist/esm/validations/evm-op-hook.js.map +1 -1
- package/dist/esm/validations/evm-op-wrap.js +6 -5
- package/dist/esm/validations/evm-op-wrap.js.map +1 -1
- package/dist/esm/validations/evm-permit2.js +7 -4
- package/dist/esm/validations/evm-permit2.js.map +1 -1
- package/dist/esm/validations/evm-required-actions.js +7 -4
- package/dist/esm/validations/evm-required-actions.js.map +1 -1
- package/dist/esm/validations/external-call.js +325 -0
- package/dist/esm/validations/external-call.js.map +1 -0
- package/dist/esm/validations/hooks-common.js +38 -2
- package/dist/esm/validations/hooks-common.js.map +1 -1
- package/dist/esm/validations/intent-tokens.js +55 -41
- package/dist/esm/validations/intent-tokens.js.map +1 -1
- package/dist/esm/validations/intent.js +194 -73
- package/dist/esm/validations/intent.js.map +1 -1
- package/dist/esm/validations/ptp.js +154 -0
- package/dist/esm/validations/ptp.js.map +1 -0
- package/dist/esm/validations/required-actions.js +2 -2
- package/dist/esm/validations/required-actions.js.map +1 -1
- package/dist/esm/validations/solana-hook.js +13 -1
- package/dist/esm/validations/solana-hook.js.map +1 -1
- package/dist/esm/validations/solana-op-budget.js +21 -41
- package/dist/esm/validations/solana-op-budget.js.map +1 -1
- package/dist/esm/validations/solana-op-wrap.js +28 -33
- package/dist/esm/validations/solana-op-wrap.js.map +1 -1
- package/dist/esm/validations/total-dst-amount.js +429 -0
- package/dist/esm/validations/total-dst-amount.js.map +1 -0
- package/dist/esm/validations/trade-grouping.js +67 -25
- package/dist/esm/validations/trade-grouping.js.map +1 -1
- package/dist/esm/validations/trade-matching.js +109 -0
- package/dist/esm/validations/trade-matching.js.map +1 -0
- package/dist/esm/validations/trades.js +365 -71
- package/dist/esm/validations/trades.js.map +1 -1
- package/dist/esm/validator.js +22 -4
- package/dist/esm/validator.js.map +1 -1
- package/dist/esm/whitelists/environment-config.js +5 -5
- package/dist/esm/whitelists/environment-config.js.map +1 -1
- package/dist/types/helpers/evm-dln-hook-pack.d.ts.map +1 -1
- package/dist/types/helpers/evm-gas-compensation-tx.d.ts.map +1 -1
- package/dist/types/helpers/evm-intent-id.d.ts.map +1 -1
- package/dist/types/helpers/evm-trade-amounts.d.ts +1 -1
- package/dist/types/helpers/evm-trade-amounts.d.ts.map +1 -1
- package/dist/types/helpers/expected-delegate.d.ts.map +1 -1
- package/dist/types/helpers/gas-compensation.d.ts.map +1 -1
- package/dist/types/helpers/hex.d.ts +6 -0
- package/dist/types/helpers/hex.d.ts.map +1 -1
- package/dist/types/helpers/integer.d.ts +2 -0
- package/dist/types/helpers/integer.d.ts.map +1 -0
- package/dist/types/helpers/placeholder.d.ts.map +1 -1
- package/dist/types/helpers/solana-intent-id.d.ts.map +1 -1
- package/dist/types/helpers/synthetic-native-wrap.d.ts +4 -0
- package/dist/types/helpers/synthetic-native-wrap.d.ts.map +1 -0
- package/dist/types/types/enums.d.ts +4 -2
- package/dist/types/types/enums.d.ts.map +1 -1
- package/dist/types/types/request.d.ts +85 -6
- package/dist/types/types/request.d.ts.map +1 -1
- package/dist/types/types/response.d.ts +96 -12
- package/dist/types/types/response.d.ts.map +1 -1
- package/dist/types/types/validation.d.ts +36 -1
- package/dist/types/types/validation.d.ts.map +1 -1
- package/dist/types/validations/accumulative-token.d.ts +3 -0
- package/dist/types/validations/accumulative-token.d.ts.map +1 -0
- package/dist/types/validations/compensation-hook.d.ts.map +1 -1
- package/dist/types/validations/cost-token.d.ts +3 -0
- package/dist/types/validations/cost-token.d.ts.map +1 -0
- package/dist/types/validations/dln-metadata.d.ts +7 -0
- package/dist/types/validations/dln-metadata.d.ts.map +1 -0
- package/dist/types/validations/evm-caveats.d.ts.map +1 -1
- package/dist/types/validations/evm-op-hook.d.ts.map +1 -1
- package/dist/types/validations/evm-op-wrap.d.ts.map +1 -1
- package/dist/types/validations/evm-permit2.d.ts.map +1 -1
- package/dist/types/validations/evm-required-actions.d.ts +1 -1
- package/dist/types/validations/evm-required-actions.d.ts.map +1 -1
- package/dist/types/validations/external-call.d.ts +15 -0
- package/dist/types/validations/external-call.d.ts.map +1 -0
- package/dist/types/validations/intent-tokens.d.ts.map +1 -1
- package/dist/types/validations/intent.d.ts +1 -1
- package/dist/types/validations/intent.d.ts.map +1 -1
- package/dist/types/validations/ptp.d.ts +3 -0
- package/dist/types/validations/ptp.d.ts.map +1 -0
- package/dist/types/validations/required-actions.d.ts +1 -1
- package/dist/types/validations/required-actions.d.ts.map +1 -1
- package/dist/types/validations/solana-hook.d.ts.map +1 -1
- package/dist/types/validations/solana-op-budget.d.ts.map +1 -1
- package/dist/types/validations/solana-op-wrap.d.ts.map +1 -1
- package/dist/types/validations/total-dst-amount.d.ts +3 -0
- package/dist/types/validations/total-dst-amount.d.ts.map +1 -0
- package/dist/types/validations/trade-grouping.d.ts +2 -1
- package/dist/types/validations/trade-grouping.d.ts.map +1 -1
- package/dist/types/validations/trade-matching.d.ts +13 -0
- package/dist/types/validations/trade-matching.d.ts.map +1 -0
- package/dist/types/validations/trades.d.ts +2 -1
- package/dist/types/validations/trades.d.ts.map +1 -1
- package/dist/types/validator.d.ts.map +1 -1
- package/dist/types/whitelists/environment-config.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -6,6 +6,7 @@ const address_1 = require("../helpers/address");
|
|
|
6
6
|
const evm_token_1 = require("../helpers/evm-token");
|
|
7
7
|
const subscription_to_chain_id_1 = require("../whitelists/subscription-to-chain-id");
|
|
8
8
|
const programs_1 = require("../whitelists/solana/programs");
|
|
9
|
+
const integer_1 = require("../helpers/integer");
|
|
9
10
|
function validateIntentTokens(ctx, basePath) {
|
|
10
11
|
const intent = ctx.intentPayload.intent;
|
|
11
12
|
const group = ctx.tradeGroup;
|
|
@@ -97,29 +98,50 @@ function validateInputTokens(inputTokens, ctx, expectedTokens, basePath) {
|
|
|
97
98
|
}
|
|
98
99
|
return violations;
|
|
99
100
|
}
|
|
100
|
-
// CRITICAL: constraintBudget equals the sum of
|
|
101
|
-
// whose srcChainTokenIn resolves to
|
|
102
|
-
//
|
|
103
|
-
//
|
|
104
|
-
//
|
|
105
|
-
//
|
|
101
|
+
// CRITICAL: `constraintBudget` equals the sum of `response.trades[i]
|
|
102
|
+
// .srcChainTokenIn.amount` for trades whose `srcChainTokenIn` resolves to
|
|
103
|
+
// this `inputToken.address`. The same formula holds in every mode — the API
|
|
104
|
+
// always builds `constraintBudget` from the post-mutation per-trade source
|
|
105
|
+
// amounts, which is exactly what the response surfaces. Sums only the trades
|
|
106
|
+
// the API folded into THIS intent (one trade group can split into several
|
|
107
|
+
// intents by dlnHook/metadata).
|
|
108
|
+
//
|
|
109
|
+
// Sanity bounds on `response.srcChainTokenIn.amount` itself live in
|
|
110
|
+
// `validateTrades`.
|
|
106
111
|
function validateConstraintBudget(inputToken, ctx, normalizedAddress, basePath) {
|
|
107
112
|
const realChainId = ctx.tradeGroup.realChainId;
|
|
108
|
-
const
|
|
113
|
+
const contributingResponseTrades = ctx.intentTrades
|
|
114
|
+
.map((trade, i) => ({ trade, response: ctx.intentResponseTrades[i] }))
|
|
115
|
+
.filter(({ trade }) => {
|
|
109
116
|
const resolved = (0, evm_token_1.resolveWrappedTokenAddress)(trade.srcChainTokenIn, realChainId);
|
|
110
117
|
// Safe skip: unresolved input tokens are already reported by
|
|
111
|
-
// resolveGroupInputTokens
|
|
118
|
+
// `resolveGroupInputTokens`.
|
|
112
119
|
if (resolved === undefined)
|
|
113
120
|
return false;
|
|
114
121
|
return (0, address_1.normalizeAddress)(realChainId, resolved) === normalizedAddress;
|
|
115
122
|
});
|
|
116
|
-
|
|
123
|
+
// Safe skip: missing response trade at a contributing index is reported
|
|
124
|
+
// by `validateTrades` as `TradeCountMismatch`; computing a partial sum here
|
|
125
|
+
// would emit a misleading duplicate violation.
|
|
126
|
+
if (contributingResponseTrades.some(({ response }) => response === undefined)) {
|
|
117
127
|
return [];
|
|
118
128
|
}
|
|
119
|
-
|
|
129
|
+
let expectedSum = 0n;
|
|
130
|
+
for (const { response, trade } of contributingResponseTrades) {
|
|
131
|
+
try {
|
|
132
|
+
expectedSum += (0, integer_1.parseIntegerString)(response.srcChainTokenIn.amount);
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
// Safe skip: invalid response `srcChainTokenIn.amount` is reported
|
|
136
|
+
// by `validateTrades` (`srcChainTokenIn.amount` parse rules).
|
|
137
|
+
void trade;
|
|
138
|
+
void error;
|
|
139
|
+
return [];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
120
142
|
let actualBudget;
|
|
121
143
|
try {
|
|
122
|
-
actualBudget =
|
|
144
|
+
actualBudget = (0, integer_1.parseIntegerString)(inputToken.constraintBudget);
|
|
123
145
|
}
|
|
124
146
|
catch (error) {
|
|
125
147
|
return [{
|
|
@@ -134,7 +156,7 @@ function validateConstraintBudget(inputToken, ctx, normalizedAddress, basePath)
|
|
|
134
156
|
return [{
|
|
135
157
|
code: types_1.ViolationCode.IntentConstraintBudgetMismatch,
|
|
136
158
|
message: "intent.inputToken[].constraintBudget must equal the sum of"
|
|
137
|
-
+ "
|
|
159
|
+
+ " response.trades[].srcChainTokenIn.amount for the matching trades",
|
|
138
160
|
path: `${basePath}.constraintBudget`,
|
|
139
161
|
expected: expectedSum.toString(),
|
|
140
162
|
actual: inputToken.constraintBudget,
|
|
@@ -142,21 +164,6 @@ function validateConstraintBudget(inputToken, ctx, normalizedAddress, basePath)
|
|
|
142
164
|
}
|
|
143
165
|
return [];
|
|
144
166
|
}
|
|
145
|
-
function canPredictBudget(trades) {
|
|
146
|
-
return trades.every(trade => isNumericAmount(trade.srcChainTokenInAmount) &&
|
|
147
|
-
trade.prependOperatingExpenses !== true);
|
|
148
|
-
}
|
|
149
|
-
function isNumericAmount(amount) {
|
|
150
|
-
if (amount === types_1.SpecialAmount.Auto || amount === types_1.SpecialAmount.Max)
|
|
151
|
-
return false;
|
|
152
|
-
try {
|
|
153
|
-
BigInt(amount);
|
|
154
|
-
return true;
|
|
155
|
-
}
|
|
156
|
-
catch {
|
|
157
|
-
return false;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
167
|
// CRITICAL: each giveToken[].inputTokenAddress must equal one of
|
|
161
168
|
// intent.inputToken[].address that is used by at least one cross-chain trade
|
|
162
169
|
// in the group. Same-chain trades do not produce giveToken entries.
|
|
@@ -234,16 +241,18 @@ function collectInputAddressesForCrossChainTrades(intent, group) {
|
|
|
234
241
|
function isCrossChain(trade) {
|
|
235
242
|
return trade.srcChainId !== trade.dstChainId;
|
|
236
243
|
}
|
|
237
|
-
// CRITICAL: intent.takeToken[] must
|
|
238
|
-
// (dstChainId, dstChainTokenOut) pairs from the group's trades.
|
|
239
|
-
//
|
|
240
|
-
//
|
|
244
|
+
// CRITICAL: intent.takeToken[] must cover the unique destination
|
|
245
|
+
// (dstChainId, dstChainTokenOut) pairs from the group's trades. The API keys
|
|
246
|
+
// actual take-token entries by source/from token plus destination token, so
|
|
247
|
+
// duplicate detection uses the full
|
|
248
|
+
// (fromTokenAddress, takeTokenChainId, takeTokenAddress) identity.
|
|
241
249
|
// CRITICAL: fromTokenAddress must be in inputToken[] (same-chain) or giveToken[]
|
|
242
250
|
// (cross-chain).
|
|
243
251
|
function validateTakeTokens(intent, group, basePath) {
|
|
244
252
|
const violations = [];
|
|
245
|
-
const
|
|
246
|
-
const actualKeys = intent.takeToken.map(takeToken =>
|
|
253
|
+
const expectedDestinations = buildExpectedTakeTokenDestinations(group);
|
|
254
|
+
const actualKeys = intent.takeToken.map(takeToken => buildTakeTokenIdentityKey(takeToken, group.realChainId));
|
|
255
|
+
const actualDestinations = new Set(intent.takeToken.map(takeToken => buildTakeTokenDestinationKey(takeToken)));
|
|
247
256
|
const firstOccurrence = new Map();
|
|
248
257
|
for (let i = 0; i < actualKeys.length; i++) {
|
|
249
258
|
const key = actualKeys[i];
|
|
@@ -252,8 +261,8 @@ function validateTakeTokens(intent, group, basePath) {
|
|
|
252
261
|
violations.push({
|
|
253
262
|
code: types_1.ViolationCode.IntentTakeTokenDuplicate,
|
|
254
263
|
message: `intent.takeToken[${i}] duplicates the entry at`
|
|
255
|
-
+ ` index ${earlier} — each (
|
|
256
|
-
+ ` takeTokenAddress)
|
|
264
|
+
+ ` index ${earlier} — each (fromTokenAddress,`
|
|
265
|
+
+ ` takeTokenChainId, takeTokenAddress) tuple must appear once`,
|
|
257
266
|
path: `${basePath}[${i}]`,
|
|
258
267
|
actual: key,
|
|
259
268
|
});
|
|
@@ -262,8 +271,8 @@ function validateTakeTokens(intent, group, basePath) {
|
|
|
262
271
|
firstOccurrence.set(key, i);
|
|
263
272
|
}
|
|
264
273
|
}
|
|
265
|
-
for (const expectedTakeToken of
|
|
266
|
-
if (!
|
|
274
|
+
for (const expectedTakeToken of expectedDestinations) {
|
|
275
|
+
if (!actualDestinations.has(expectedTakeToken)) {
|
|
267
276
|
violations.push({
|
|
268
277
|
code: types_1.ViolationCode.IntentTakeTokenMissing,
|
|
269
278
|
message: "an expected (dstChainId, dstChainTokenOut) pair is"
|
|
@@ -275,7 +284,7 @@ function validateTakeTokens(intent, group, basePath) {
|
|
|
275
284
|
}
|
|
276
285
|
// Validate each unique entry (duplicates are already reported above)
|
|
277
286
|
for (const [, i] of firstOccurrence) {
|
|
278
|
-
violations.push(...validateSingleTakeToken(intent, intent.takeToken[i], group,
|
|
287
|
+
violations.push(...validateSingleTakeToken(intent, intent.takeToken[i], group, expectedDestinations, `${basePath}[${i}]`));
|
|
279
288
|
}
|
|
280
289
|
return violations;
|
|
281
290
|
}
|
|
@@ -289,10 +298,15 @@ function buildChainTokenKey(chainId, realChainId, address) {
|
|
|
289
298
|
: address;
|
|
290
299
|
return `${chainId}:${normalized}`;
|
|
291
300
|
}
|
|
292
|
-
function
|
|
301
|
+
function buildTakeTokenDestinationKey(takeToken) {
|
|
293
302
|
return buildChainTokenKey(takeToken.takeTokenChainId, (0, subscription_to_chain_id_1.resolveChainId)(takeToken.takeTokenChainId), takeToken.takeTokenAddress);
|
|
294
303
|
}
|
|
295
|
-
function
|
|
304
|
+
function buildTakeTokenIdentityKey(takeToken, sourceRealChainId) {
|
|
305
|
+
const fromKey = (0, address_1.normalizeAddress)(sourceRealChainId, takeToken.fromTokenAddress);
|
|
306
|
+
const destinationKey = buildTakeTokenDestinationKey(takeToken);
|
|
307
|
+
return `${fromKey}->${destinationKey}`;
|
|
308
|
+
}
|
|
309
|
+
function buildExpectedTakeTokenDestinations(group) {
|
|
296
310
|
const set = new Set();
|
|
297
311
|
for (const trade of group.trades) {
|
|
298
312
|
const dstRealChainId = (0, subscription_to_chain_id_1.resolveChainId)(trade.dstChainId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intent-tokens.js","sourceRoot":"","sources":["../../../src/validations/intent-tokens.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"intent-tokens.js","sourceRoot":"","sources":["../../../src/validations/intent-tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.validateIntents = validateIntents;
|
|
4
|
-
const viem_1 = require("viem");
|
|
5
4
|
const types_1 = require("../types");
|
|
6
5
|
const address_1 = require("../helpers/address");
|
|
7
|
-
const sets_1 = require("../helpers/sets");
|
|
8
6
|
const expected_delegate_1 = require("../helpers/expected-delegate");
|
|
9
7
|
const types_2 = require("../whitelists/types");
|
|
10
8
|
const evm_intent_id_1 = require("../helpers/evm-intent-id");
|
|
11
9
|
const solana_intent_id_1 = require("../helpers/solana-intent-id");
|
|
12
|
-
const evm_dln_hook_pack_1 = require("../helpers/evm-dln-hook-pack");
|
|
13
10
|
const hex_1 = require("../helpers/hex");
|
|
14
11
|
const intent_tokens_1 = require("./intent-tokens");
|
|
15
12
|
const intent_destinations_1 = require("./intent-destinations");
|
|
16
|
-
|
|
13
|
+
const dln_metadata_1 = require("./dln-metadata");
|
|
14
|
+
const external_call_1 = require("./external-call");
|
|
15
|
+
const integer_1 = require("../helpers/integer");
|
|
16
|
+
function validateIntents(contexts, quoteMode, envConfig, syntheticNativeWrapMode) {
|
|
17
17
|
const violations = [];
|
|
18
18
|
for (const ctx of contexts) {
|
|
19
|
-
violations.push(...validateSingleIntent(ctx, quoteMode, envConfig));
|
|
19
|
+
violations.push(...validateSingleIntent(ctx, quoteMode, envConfig, syntheticNativeWrapMode));
|
|
20
20
|
}
|
|
21
21
|
return violations;
|
|
22
22
|
}
|
|
23
|
-
function validateSingleIntent(ctx, quoteMode, envConfig) {
|
|
23
|
+
function validateSingleIntent(ctx, quoteMode, envConfig, syntheticNativeWrapMode) {
|
|
24
24
|
const basePath = `response.intents[${ctx.intentIndex}].intent`;
|
|
25
25
|
const intent = ctx.intentPayload.intent;
|
|
26
26
|
const group = ctx.tradeGroup;
|
|
27
27
|
const violations = [
|
|
28
28
|
...validateNonNegativeNumerics(intent, basePath),
|
|
29
|
-
...
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
...(syntheticNativeWrapMode
|
|
30
|
+
? []
|
|
31
|
+
: [
|
|
32
|
+
...validateIntentDifferentiationFields(ctx, quoteMode, basePath),
|
|
33
|
+
...(0, intent_tokens_1.validateIntentTokens)(ctx, basePath),
|
|
34
|
+
...(0, intent_destinations_1.validateIntentDestinations)(intent, group, basePath, quoteMode),
|
|
35
|
+
]),
|
|
32
36
|
];
|
|
33
|
-
if (!quoteMode) {
|
|
34
|
-
violations.push(...validateExecutionIdentity(intent, group, basePath, envConfig), ...validateAllowedCancelBeneficiary(intent, group, basePath), ...validateSrcAllowedSender(intent, group, basePath, envConfig));
|
|
37
|
+
if (!quoteMode && !syntheticNativeWrapMode) {
|
|
38
|
+
violations.push(...validateExecutionIdentity(intent, group, basePath, envConfig), ...validateAllowedCancelBeneficiary(intent, group, basePath), ...validateSrcAllowedSender(intent, ctx.intentTrades, group, basePath, envConfig));
|
|
35
39
|
}
|
|
36
40
|
return violations;
|
|
37
41
|
}
|
|
@@ -58,7 +62,8 @@ function validateExecutionIdentity(intent, group, basePath, envConfig) {
|
|
|
58
62
|
violations.push({
|
|
59
63
|
code: types_1.ViolationCode.IntentAuthorityMismatch,
|
|
60
64
|
message: ownerUnverifiable
|
|
61
|
-
? "cannot verify intent.intentAuthority: request trade has no
|
|
65
|
+
? "cannot verify intent.intentAuthority: request trade has no"
|
|
66
|
+
+ " srcChainAuthorityAddress in execution mode"
|
|
62
67
|
: "intent.intentAuthority must equal srcChainAuthorityAddress",
|
|
63
68
|
path: `${basePath}.intentAuthority`,
|
|
64
69
|
expected: expectedOwner,
|
|
@@ -136,11 +141,11 @@ function validateAllowedCancelBeneficiary(intent, group, basePath) {
|
|
|
136
141
|
// request input. We require a single-element list whose entry is in the
|
|
137
142
|
// whitelist.
|
|
138
143
|
//
|
|
139
|
-
// Branch B (
|
|
140
|
-
//
|
|
141
|
-
//
|
|
142
|
-
//
|
|
143
|
-
function validateSrcAllowedSender(intent, group, basePath, envConfig) {
|
|
144
|
+
// Branch B (selected delegate): chain has no solver executor override. The
|
|
145
|
+
// API emits exactly one delegate: the first `srcAllowedSender` among the
|
|
146
|
+
// trades folded into this intent, or a config fallback when none is specified.
|
|
147
|
+
// The fallback is not verified here because the SDK has no delegate whitelist.
|
|
148
|
+
function validateSrcAllowedSender(intent, intentTrades, group, basePath, envConfig) {
|
|
144
149
|
const actualList = intent.srcAllowedSender ?? [];
|
|
145
150
|
const path = `${basePath}.srcAllowedSender`;
|
|
146
151
|
if ((0, expected_delegate_1.hasSolverExecutorOverride)(envConfig.solverExecutorContracts, group.realChainId)) {
|
|
@@ -166,22 +171,19 @@ function validateSrcAllowedSender(intent, group, basePath, envConfig) {
|
|
|
166
171
|
}
|
|
167
172
|
return [];
|
|
168
173
|
}
|
|
169
|
-
const
|
|
170
|
-
.map(t => t.srcAllowedSender)
|
|
171
|
-
.filter((s) => s !== undefined);
|
|
174
|
+
const expectedDelegate = (0, expected_delegate_1.getExpectedIntentDelegate)(intentTrades);
|
|
172
175
|
// Safe skip: no request srcAllowedSender — API substitutes its
|
|
173
176
|
// delegate from config; we have no whitelist for that fallback.
|
|
174
|
-
if (
|
|
177
|
+
if (expectedDelegate === undefined)
|
|
175
178
|
return [];
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
if (!(0, sets_1.setsEqual)(expectedSet, actualSet)) {
|
|
179
|
+
if (actualList.length !== 1
|
|
180
|
+
|| !(0, address_1.addressEquals)(group.realChainId, actualList[0], expectedDelegate)) {
|
|
179
181
|
return [{
|
|
180
182
|
code: types_1.ViolationCode.IntentSrcAllowedSenderMismatch,
|
|
181
|
-
message: "intent.srcAllowedSender must contain exactly the
|
|
182
|
-
+ "
|
|
183
|
+
message: "intent.srcAllowedSender must contain exactly the selected"
|
|
184
|
+
+ " request srcAllowedSender delegate",
|
|
183
185
|
path,
|
|
184
|
-
expected:
|
|
186
|
+
expected: [expectedDelegate],
|
|
185
187
|
actual: actualList,
|
|
186
188
|
}];
|
|
187
189
|
}
|
|
@@ -191,11 +193,13 @@ function validateSrcAllowedSender(intent, group, basePath, envConfig) {
|
|
|
191
193
|
// (srcChainId, srcChainAuthorityAddress, dlnHook, dlnMetadata) and produces a separate
|
|
192
194
|
// intent for each unique combination. These fields on the intent must reflect the
|
|
193
195
|
// corresponding request trade fields.
|
|
194
|
-
function validateIntentDifferentiationFields(
|
|
196
|
+
function validateIntentDifferentiationFields(ctx, quoteMode, basePath) {
|
|
197
|
+
const intent = ctx.intentPayload.intent;
|
|
195
198
|
return [
|
|
196
199
|
...validateExecutionMetadata(intent, basePath),
|
|
197
|
-
...
|
|
198
|
-
...
|
|
200
|
+
...(0, dln_metadata_1.validateIntentDlnMetadataFormat)(intent, basePath),
|
|
201
|
+
...validateDlnMetadata(ctx, quoteMode, basePath),
|
|
202
|
+
...validateExternalCallHash(ctx, quoteMode, basePath),
|
|
199
203
|
];
|
|
200
204
|
}
|
|
201
205
|
// CRITICAL: executionMetadata is hardcoded to undefined in the API intent
|
|
@@ -212,56 +216,170 @@ function validateExecutionMetadata(intent, basePath) {
|
|
|
212
216
|
actual: intent.executionMetadata,
|
|
213
217
|
}];
|
|
214
218
|
}
|
|
215
|
-
// CRITICAL: intent.dlnMetadata must match request
|
|
216
|
-
//
|
|
217
|
-
//
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
219
|
+
// CRITICAL: intent.dlnMetadata must match the request dlnMetadata for the
|
|
220
|
+
// specific trades that point to this intent via `relatedIntentId`. Quote mode has
|
|
221
|
+
// no reliable per-trade `relatedIntentId` mapping, so it falls back to group-level
|
|
222
|
+
// matching.
|
|
223
|
+
function validateDlnMetadata(ctx, quoteMode, basePath) {
|
|
224
|
+
const intent = ctx.intentPayload.intent;
|
|
225
|
+
const expectedValues = quoteMode
|
|
226
|
+
? ctx.tradeGroup.trades.map(trade => trade.dlnMetadata)
|
|
227
|
+
: getDlnMetadataValuesFromRelatedTrades(ctx);
|
|
228
|
+
if (expectedValues.length === 0) {
|
|
229
|
+
// Safe skip: missing/invalid `relatedIntentId` is reported by
|
|
230
|
+
// `validateRelatedIntentIds`; without that mapping there is no concrete
|
|
231
|
+
// request subset to compare against.
|
|
232
|
+
return [];
|
|
233
|
+
}
|
|
234
|
+
if (quoteMode) {
|
|
235
|
+
if (matchesAnyDlnMetadata(intent.dlnMetadata, expectedValues))
|
|
236
|
+
return [];
|
|
237
|
+
return [{
|
|
238
|
+
code: types_1.ViolationCode.IntentDlnMetadataMismatch,
|
|
239
|
+
message: "quote-mode intent.dlnMetadata must match one of"
|
|
240
|
+
+ " request.trades[].dlnMetadata values from the trade group",
|
|
241
|
+
path: `${basePath}.dlnMetadata`,
|
|
242
|
+
expected: uniqueDlnMetadata(expectedValues),
|
|
243
|
+
actual: intent.dlnMetadata,
|
|
244
|
+
}];
|
|
245
|
+
}
|
|
246
|
+
const uniqueExpected = uniqueDlnMetadata(expectedValues);
|
|
247
|
+
if (uniqueExpected.length > 1) {
|
|
248
|
+
return [{
|
|
249
|
+
code: types_1.ViolationCode.IntentDlnMetadataMismatch,
|
|
250
|
+
message: "request trades related to the same intent must have identical dlnMetadata",
|
|
251
|
+
path: `${basePath}.dlnMetadata`,
|
|
252
|
+
expected: uniqueExpected,
|
|
253
|
+
actual: intent.dlnMetadata,
|
|
254
|
+
}];
|
|
255
|
+
}
|
|
256
|
+
const expected = uniqueExpected[0];
|
|
257
|
+
if ((0, dln_metadata_1.dlnMetadataEquals)(intent.dlnMetadata, expected))
|
|
223
258
|
return [];
|
|
224
259
|
return [{
|
|
225
260
|
code: types_1.ViolationCode.IntentDlnMetadataMismatch,
|
|
226
|
-
message: "intent.dlnMetadata must match
|
|
227
|
-
+ "
|
|
261
|
+
message: "intent.dlnMetadata must match request.trades[].dlnMetadata"
|
|
262
|
+
+ " for trades related to this intent",
|
|
228
263
|
path: `${basePath}.dlnMetadata`,
|
|
229
|
-
expected
|
|
264
|
+
expected,
|
|
230
265
|
actual: intent.dlnMetadata,
|
|
231
266
|
}];
|
|
232
267
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
268
|
+
function matchesAnyDlnMetadata(actual, expectedValues) {
|
|
269
|
+
for (const expected of expectedValues) {
|
|
270
|
+
if ((0, dln_metadata_1.dlnMetadataEquals)(actual, expected))
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
function getDlnMetadataValuesFromRelatedTrades(ctx) {
|
|
276
|
+
const intentId = ctx.intentPayload.intent.intentId;
|
|
277
|
+
const expected = [];
|
|
278
|
+
for (let i = 0; i < ctx.tradeGroup.trades.length; i++) {
|
|
279
|
+
const responseTrade = ctx.tradeGroup.responseTrades[i];
|
|
280
|
+
if (responseTrade?.relatedIntentId === intentId) {
|
|
281
|
+
expected.push(ctx.tradeGroup.trades[i].dlnMetadata);
|
|
243
282
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
283
|
+
}
|
|
284
|
+
return expected;
|
|
285
|
+
}
|
|
286
|
+
function uniqueDlnMetadata(values) {
|
|
287
|
+
const seen = new Set();
|
|
288
|
+
const unique = [];
|
|
289
|
+
for (const value of values) {
|
|
290
|
+
const key = (0, dln_metadata_1.normalizeDlnMetadataKey)(value);
|
|
291
|
+
if (!seen.has(key)) {
|
|
292
|
+
seen.add(key);
|
|
293
|
+
unique.push(value);
|
|
252
294
|
}
|
|
253
295
|
}
|
|
254
|
-
|
|
296
|
+
return unique;
|
|
297
|
+
}
|
|
298
|
+
// CRITICAL: intent.externalCallHash must match the hash of the serialized
|
|
299
|
+
// external call data for the specific trades that point to this intent via
|
|
300
|
+
// `relatedIntentId`. Quote mode has no reliable per-trade mapping, so it falls
|
|
301
|
+
// back to group-level matching.
|
|
302
|
+
function validateExternalCallHash(ctx, quoteMode, basePath) {
|
|
303
|
+
const intent = ctx.intentPayload.intent;
|
|
304
|
+
const expectedValues = quoteMode
|
|
305
|
+
? getExternalCallHashesFromGroup(ctx)
|
|
306
|
+
: getExternalCallHashesFromRelatedTrades(ctx);
|
|
307
|
+
if (expectedValues.invalidExternalCallData) {
|
|
308
|
+
// Safe skip: malformed `response.trades[].externalCallData` is reported
|
|
309
|
+
// by `validateExternalCalls`; without valid bytes there is no hash to compare.
|
|
310
|
+
return [];
|
|
311
|
+
}
|
|
312
|
+
if (expectedValues.hashes.length === 0) {
|
|
313
|
+
// Safe skip: missing/invalid `relatedIntentId` is reported by
|
|
314
|
+
// `validateRelatedIntentIds`; without that mapping there is no concrete
|
|
315
|
+
// request subset to compare against.
|
|
316
|
+
return [];
|
|
317
|
+
}
|
|
318
|
+
if (quoteMode) {
|
|
319
|
+
if (matchesAnyHex(intent.externalCallHash, new Set(expectedValues.hashes)))
|
|
320
|
+
return [];
|
|
321
|
+
return [{
|
|
322
|
+
code: types_1.ViolationCode.IntentExternalCallHashMismatch,
|
|
323
|
+
message: "quote-mode intent.externalCallHash must match one of"
|
|
324
|
+
+ " response.trades[].externalCallData hashes from the trade group",
|
|
325
|
+
path: `${basePath}.externalCallHash`,
|
|
326
|
+
expected: uniqueHex(expectedValues.hashes),
|
|
327
|
+
actual: intent.externalCallHash,
|
|
328
|
+
}];
|
|
329
|
+
}
|
|
330
|
+
const uniqueExpected = uniqueHex(expectedValues.hashes);
|
|
331
|
+
if (uniqueExpected.length > 1) {
|
|
332
|
+
return [{
|
|
333
|
+
code: types_1.ViolationCode.IntentExternalCallHashMismatch,
|
|
334
|
+
message: "response trades related to the same intent must have identical"
|
|
335
|
+
+ " externalCallData hashes",
|
|
336
|
+
path: `${basePath}.externalCallHash`,
|
|
337
|
+
expected: uniqueExpected,
|
|
338
|
+
actual: intent.externalCallHash,
|
|
339
|
+
}];
|
|
340
|
+
}
|
|
341
|
+
const expected = uniqueExpected[0];
|
|
342
|
+
if ((0, hex_1.hexEquals)(intent.externalCallHash, expected))
|
|
255
343
|
return [];
|
|
256
344
|
return [{
|
|
257
345
|
code: types_1.ViolationCode.IntentExternalCallHashMismatch,
|
|
258
|
-
message: "intent.externalCallHash must match
|
|
259
|
-
+ "
|
|
346
|
+
message: "intent.externalCallHash must match response.trades[].externalCallData"
|
|
347
|
+
+ " hash for trades related to this intent",
|
|
260
348
|
path: `${basePath}.externalCallHash`,
|
|
261
|
-
expected
|
|
349
|
+
expected,
|
|
262
350
|
actual: intent.externalCallHash,
|
|
263
351
|
}];
|
|
264
352
|
}
|
|
353
|
+
function getExternalCallHashesFromGroup(ctx) {
|
|
354
|
+
return getExternalCallHashes(ctx.tradeGroup.responseTrades);
|
|
355
|
+
}
|
|
356
|
+
function getExternalCallHashesFromRelatedTrades(ctx) {
|
|
357
|
+
const intentId = ctx.intentPayload.intent.intentId;
|
|
358
|
+
const responseTrades = ctx.tradeGroup.responseTrades.filter(responseTrade => responseTrade?.relatedIntentId === intentId);
|
|
359
|
+
return getExternalCallHashes(responseTrades);
|
|
360
|
+
}
|
|
361
|
+
function getExternalCallHashes(responseTrades) {
|
|
362
|
+
const hashes = [];
|
|
363
|
+
let invalidExternalCallData = false;
|
|
364
|
+
for (const responseTrade of responseTrades) {
|
|
365
|
+
const result = (0, external_call_1.getResponseExternalCallHash)(responseTrade);
|
|
366
|
+
if (result.kind === external_call_1.ResponseExternalCallHashKind.Invalid) {
|
|
367
|
+
invalidExternalCallData = true;
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
hashes.push(result.hash);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return { hashes, invalidExternalCallData };
|
|
374
|
+
}
|
|
375
|
+
function uniqueHex(values) {
|
|
376
|
+
const unique = [];
|
|
377
|
+
for (const value of values) {
|
|
378
|
+
if (!matchesAnyHex(value, new Set(unique)))
|
|
379
|
+
unique.push(value);
|
|
380
|
+
}
|
|
381
|
+
return unique;
|
|
382
|
+
}
|
|
265
383
|
function matchesAnyHex(actual, expected) {
|
|
266
384
|
for (const exp of expected) {
|
|
267
385
|
if ((0, hex_1.hexEquals)(actual, exp))
|
|
@@ -296,15 +414,9 @@ function checkBigIntFields(items, basePath, fieldNames) {
|
|
|
296
414
|
for (let i = 0; i < items.length; i++) {
|
|
297
415
|
for (const fieldName of fieldNames) {
|
|
298
416
|
const raw = items[i][fieldName];
|
|
417
|
+
let parsed;
|
|
299
418
|
try {
|
|
300
|
-
|
|
301
|
-
violations.push({
|
|
302
|
-
code: types_1.ViolationCode.IntentNumericValueNegative,
|
|
303
|
-
message: `${basePath}[${i}].${fieldName} must be non-negative`,
|
|
304
|
-
path: `${basePath}[${i}].${fieldName}`,
|
|
305
|
-
actual: raw,
|
|
306
|
-
});
|
|
307
|
-
}
|
|
419
|
+
parsed = (0, integer_1.parseIntegerString)(raw);
|
|
308
420
|
}
|
|
309
421
|
catch (error) {
|
|
310
422
|
violations.push({
|
|
@@ -314,6 +426,15 @@ function checkBigIntFields(items, basePath, fieldNames) {
|
|
|
314
426
|
actual: raw,
|
|
315
427
|
details: error,
|
|
316
428
|
});
|
|
429
|
+
continue;
|
|
430
|
+
}
|
|
431
|
+
if (parsed < 0n) {
|
|
432
|
+
violations.push({
|
|
433
|
+
code: types_1.ViolationCode.IntentNumericValueNegative,
|
|
434
|
+
message: `${basePath}[${i}].${fieldName} must be non-negative`,
|
|
435
|
+
path: `${basePath}[${i}].${fieldName}`,
|
|
436
|
+
actual: raw,
|
|
437
|
+
});
|
|
317
438
|
}
|
|
318
439
|
}
|
|
319
440
|
}
|