@debridge-finance/borderless-validation-sdk 0.3.1 → 0.4.1
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/README.md +120 -11
- package/dist/cjs/graylists/evm/token-permit-metadata.js +7 -1
- package/dist/cjs/graylists/evm/token-permit-metadata.js.map +1 -1
- package/dist/cjs/helpers/address.js +139 -63
- package/dist/cjs/helpers/address.js.map +1 -1
- package/dist/cjs/helpers/amount.js +8 -0
- package/dist/cjs/helpers/amount.js.map +1 -0
- package/dist/cjs/helpers/evm-dln-hook-pack.js +16 -4
- package/dist/cjs/helpers/evm-dln-hook-pack.js.map +1 -1
- package/dist/cjs/helpers/evm-gas-compensation-tx.js +11 -26
- package/dist/cjs/helpers/evm-gas-compensation-tx.js.map +1 -1
- package/dist/cjs/helpers/evm-intent-id-abi.js +8 -1
- package/dist/cjs/helpers/evm-intent-id-abi.js.map +1 -1
- package/dist/cjs/helpers/evm-trade-amounts.js +11 -3
- package/dist/cjs/helpers/evm-trade-amounts.js.map +1 -1
- package/dist/cjs/helpers/expected-delegate.js +2 -6
- package/dist/cjs/helpers/expected-delegate.js.map +1 -1
- package/dist/cjs/helpers/gas-compensation.js +8 -4
- package/dist/cjs/helpers/gas-compensation.js.map +1 -1
- package/dist/cjs/helpers/interactions.js +4 -20
- package/dist/cjs/helpers/interactions.js.map +1 -1
- package/dist/cjs/helpers/synthetic-native-wrap.js +3 -2
- package/dist/cjs/helpers/synthetic-native-wrap.js.map +1 -1
- package/dist/cjs/types/enums.js +1 -0
- package/dist/cjs/types/enums.js.map +1 -1
- package/dist/cjs/types/request.js +15 -2
- package/dist/cjs/types/request.js.map +1 -1
- package/dist/cjs/types/response.js +2 -1
- package/dist/cjs/types/response.js.map +1 -1
- package/dist/cjs/types/validation.js +21 -3
- package/dist/cjs/types/validation.js.map +1 -1
- package/dist/cjs/validations/compensation-hook.js +4 -5
- package/dist/cjs/validations/compensation-hook.js.map +1 -1
- package/dist/cjs/validations/cost-token.js +9 -1
- package/dist/cjs/validations/cost-token.js.map +1 -1
- package/dist/cjs/validations/echo-fields.js +18 -0
- package/dist/cjs/validations/echo-fields.js.map +1 -1
- package/dist/cjs/validations/evm-caveats.js +3 -0
- package/dist/cjs/validations/evm-caveats.js.map +1 -1
- package/dist/cjs/validations/evm-on-chain-intent.js +150 -0
- package/dist/cjs/validations/evm-on-chain-intent.js.map +1 -0
- package/dist/cjs/validations/evm-op-budget.js +23 -3
- package/dist/cjs/validations/evm-op-budget.js.map +1 -1
- package/dist/cjs/validations/evm-op-hook.js +6 -6
- package/dist/cjs/validations/evm-op-hook.js.map +1 -1
- package/dist/cjs/validations/evm-permit.js +17 -6
- package/dist/cjs/validations/evm-permit.js.map +1 -1
- package/dist/cjs/validations/evm-permit2.js +14 -6
- package/dist/cjs/validations/evm-permit2.js.map +1 -1
- package/dist/cjs/validations/evm-required-actions.js +26 -7
- package/dist/cjs/validations/evm-required-actions.js.map +1 -1
- package/dist/cjs/validations/evm-sign712-metamask.js +3 -126
- package/dist/cjs/validations/evm-sign712-metamask.js.map +1 -1
- package/dist/cjs/validations/evm-sign712-shared.js +127 -0
- package/dist/cjs/validations/evm-sign712-shared.js.map +1 -1
- package/dist/cjs/validations/evm-sign712.js +18 -2
- package/dist/cjs/validations/evm-sign712.js.map +1 -1
- package/dist/cjs/validations/evm-sign7702.js +2 -0
- package/dist/cjs/validations/evm-sign7702.js.map +1 -1
- package/dist/cjs/validations/evm-transaction.js +7 -1
- package/dist/cjs/validations/evm-transaction.js.map +1 -1
- package/dist/cjs/validations/external-call.js +9 -20
- package/dist/cjs/validations/external-call.js.map +1 -1
- package/dist/cjs/validations/hook-version.js +35 -0
- package/dist/cjs/validations/hook-version.js.map +1 -0
- package/dist/cjs/validations/hooks-common.js +74 -199
- package/dist/cjs/validations/hooks-common.js.map +1 -1
- package/dist/cjs/validations/intent-destinations.js +52 -50
- package/dist/cjs/validations/intent-destinations.js.map +1 -1
- package/dist/cjs/validations/intent-tokens.js +319 -79
- package/dist/cjs/validations/intent-tokens.js.map +1 -1
- package/dist/cjs/validations/intent.js +34 -26
- package/dist/cjs/validations/intent.js.map +1 -1
- package/dist/cjs/validations/max-reserved.js +54 -0
- package/dist/cjs/validations/max-reserved.js.map +1 -0
- package/dist/cjs/validations/on-chain-intent-submission.js +70 -0
- package/dist/cjs/validations/on-chain-intent-submission.js.map +1 -0
- package/dist/cjs/validations/ptp.js +9 -6
- package/dist/cjs/validations/ptp.js.map +1 -1
- package/dist/cjs/validations/refill.js +11 -5
- package/dist/cjs/validations/refill.js.map +1 -1
- package/dist/cjs/validations/solana-hook.js +12 -64
- package/dist/cjs/validations/solana-hook.js.map +1 -1
- package/dist/cjs/validations/solana-op-budget.js +1 -1
- package/dist/cjs/validations/solana-op-budget.js.map +1 -1
- package/dist/cjs/validations/solana-op-wrap.js +29 -47
- package/dist/cjs/validations/solana-op-wrap.js.map +1 -1
- package/dist/cjs/validations/solana-required-actions.js +2 -2
- package/dist/cjs/validations/solana-required-actions.js.map +1 -1
- package/dist/cjs/validations/solana-transaction.js +4 -53
- package/dist/cjs/validations/solana-transaction.js.map +1 -1
- package/dist/cjs/validations/total-dst-amount.js +19 -3
- package/dist/cjs/validations/total-dst-amount.js.map +1 -1
- package/dist/cjs/validations/trade-grouping.js +35 -9
- package/dist/cjs/validations/trade-grouping.js.map +1 -1
- package/dist/cjs/validations/trade-matching.js +1 -1
- package/dist/cjs/validations/trade-matching.js.map +1 -1
- package/dist/cjs/validations/trades.js +29 -9
- package/dist/cjs/validations/trades.js.map +1 -1
- package/dist/cjs/validator.js +28 -17
- package/dist/cjs/validator.js.map +1 -1
- package/dist/cjs/whitelists/environment-config.js +9 -22
- package/dist/cjs/whitelists/environment-config.js.map +1 -1
- package/dist/cjs/whitelists/types.js +2 -5
- package/dist/cjs/whitelists/types.js.map +1 -1
- package/dist/esm/graylists/evm/token-permit-metadata.js +7 -1
- package/dist/esm/graylists/evm/token-permit-metadata.js.map +1 -1
- package/dist/esm/helpers/address.js +133 -61
- package/dist/esm/helpers/address.js.map +1 -1
- package/dist/esm/helpers/amount.js +5 -0
- package/dist/esm/helpers/amount.js.map +1 -0
- package/dist/esm/helpers/evm-dln-hook-pack.js +15 -4
- package/dist/esm/helpers/evm-dln-hook-pack.js.map +1 -1
- package/dist/esm/helpers/evm-gas-compensation-tx.js +12 -27
- package/dist/esm/helpers/evm-gas-compensation-tx.js.map +1 -1
- package/dist/esm/helpers/evm-intent-id-abi.js +7 -0
- package/dist/esm/helpers/evm-intent-id-abi.js.map +1 -1
- package/dist/esm/helpers/evm-trade-amounts.js +12 -4
- package/dist/esm/helpers/evm-trade-amounts.js.map +1 -1
- package/dist/esm/helpers/expected-delegate.js +2 -6
- package/dist/esm/helpers/expected-delegate.js.map +1 -1
- package/dist/esm/helpers/gas-compensation.js +9 -5
- package/dist/esm/helpers/gas-compensation.js.map +1 -1
- package/dist/esm/helpers/interactions.js +5 -21
- package/dist/esm/helpers/interactions.js.map +1 -1
- package/dist/esm/helpers/synthetic-native-wrap.js +4 -3
- package/dist/esm/helpers/synthetic-native-wrap.js.map +1 -1
- package/dist/esm/types/enums.js +1 -0
- package/dist/esm/types/enums.js.map +1 -1
- package/dist/esm/types/request.js +15 -2
- package/dist/esm/types/request.js.map +1 -1
- package/dist/esm/types/response.js +3 -2
- package/dist/esm/types/response.js.map +1 -1
- package/dist/esm/types/validation.js +21 -3
- package/dist/esm/types/validation.js.map +1 -1
- package/dist/esm/validations/compensation-hook.js +4 -5
- package/dist/esm/validations/compensation-hook.js.map +1 -1
- package/dist/esm/validations/cost-token.js +9 -1
- package/dist/esm/validations/cost-token.js.map +1 -1
- package/dist/esm/validations/echo-fields.js +18 -0
- package/dist/esm/validations/echo-fields.js.map +1 -1
- package/dist/esm/validations/evm-caveats.js +3 -0
- package/dist/esm/validations/evm-caveats.js.map +1 -1
- package/dist/esm/validations/evm-on-chain-intent.js +147 -0
- package/dist/esm/validations/evm-on-chain-intent.js.map +1 -0
- package/dist/esm/validations/evm-op-budget.js +25 -5
- package/dist/esm/validations/evm-op-budget.js.map +1 -1
- package/dist/esm/validations/evm-op-hook.js +8 -8
- package/dist/esm/validations/evm-op-hook.js.map +1 -1
- package/dist/esm/validations/evm-permit.js +18 -7
- package/dist/esm/validations/evm-permit.js.map +1 -1
- package/dist/esm/validations/evm-permit2.js +15 -7
- package/dist/esm/validations/evm-permit2.js.map +1 -1
- package/dist/esm/validations/evm-required-actions.js +28 -9
- package/dist/esm/validations/evm-required-actions.js.map +1 -1
- package/dist/esm/validations/evm-sign712-metamask.js +4 -126
- package/dist/esm/validations/evm-sign712-metamask.js.map +1 -1
- package/dist/esm/validations/evm-sign712-shared.js +126 -1
- package/dist/esm/validations/evm-sign712-shared.js.map +1 -1
- package/dist/esm/validations/evm-sign712.js +17 -2
- package/dist/esm/validations/evm-sign712.js.map +1 -1
- package/dist/esm/validations/evm-sign7702.js +2 -0
- package/dist/esm/validations/evm-sign7702.js.map +1 -1
- package/dist/esm/validations/evm-transaction.js +7 -1
- package/dist/esm/validations/evm-transaction.js.map +1 -1
- package/dist/esm/validations/external-call.js +10 -21
- package/dist/esm/validations/external-call.js.map +1 -1
- package/dist/esm/validations/hook-version.js +31 -0
- package/dist/esm/validations/hook-version.js.map +1 -0
- package/dist/esm/validations/hooks-common.js +75 -200
- package/dist/esm/validations/hooks-common.js.map +1 -1
- package/dist/esm/validations/intent-destinations.js +53 -51
- package/dist/esm/validations/intent-destinations.js.map +1 -1
- package/dist/esm/validations/intent-tokens.js +320 -80
- package/dist/esm/validations/intent-tokens.js.map +1 -1
- package/dist/esm/validations/intent.js +34 -26
- package/dist/esm/validations/intent.js.map +1 -1
- package/dist/esm/validations/max-reserved.js +51 -0
- package/dist/esm/validations/max-reserved.js.map +1 -0
- package/dist/esm/validations/on-chain-intent-submission.js +67 -0
- package/dist/esm/validations/on-chain-intent-submission.js.map +1 -0
- package/dist/esm/validations/ptp.js +9 -6
- package/dist/esm/validations/ptp.js.map +1 -1
- package/dist/esm/validations/refill.js +11 -5
- package/dist/esm/validations/refill.js.map +1 -1
- package/dist/esm/validations/solana-hook.js +12 -64
- package/dist/esm/validations/solana-hook.js.map +1 -1
- package/dist/esm/validations/solana-op-budget.js +1 -1
- package/dist/esm/validations/solana-op-budget.js.map +1 -1
- package/dist/esm/validations/solana-op-wrap.js +30 -48
- package/dist/esm/validations/solana-op-wrap.js.map +1 -1
- package/dist/esm/validations/solana-required-actions.js +2 -2
- package/dist/esm/validations/solana-required-actions.js.map +1 -1
- package/dist/esm/validations/solana-transaction.js +4 -53
- package/dist/esm/validations/solana-transaction.js.map +1 -1
- package/dist/esm/validations/total-dst-amount.js +20 -4
- package/dist/esm/validations/total-dst-amount.js.map +1 -1
- package/dist/esm/validations/trade-grouping.js +35 -10
- package/dist/esm/validations/trade-grouping.js.map +1 -1
- package/dist/esm/validations/trade-matching.js +1 -1
- package/dist/esm/validations/trade-matching.js.map +1 -1
- package/dist/esm/validations/trades.js +29 -9
- package/dist/esm/validations/trades.js.map +1 -1
- package/dist/esm/validator.js +28 -17
- package/dist/esm/validator.js.map +1 -1
- package/dist/esm/whitelists/environment-config.js +8 -21
- package/dist/esm/whitelists/environment-config.js.map +1 -1
- package/dist/esm/whitelists/types.js +3 -6
- package/dist/esm/whitelists/types.js.map +1 -1
- package/dist/types/graylists/evm/token-permit-metadata.d.ts.map +1 -1
- package/dist/types/helpers/address.d.ts +9 -5
- package/dist/types/helpers/address.d.ts.map +1 -1
- package/dist/types/helpers/amount.d.ts +2 -0
- package/dist/types/helpers/amount.d.ts.map +1 -0
- package/dist/types/helpers/evm-dln-hook-pack.d.ts +1 -0
- package/dist/types/helpers/evm-dln-hook-pack.d.ts.map +1 -1
- package/dist/types/helpers/evm-gas-compensation-tx.d.ts +1 -3
- package/dist/types/helpers/evm-gas-compensation-tx.d.ts.map +1 -1
- package/dist/types/helpers/evm-intent-id-abi.d.ts +111 -0
- package/dist/types/helpers/evm-intent-id-abi.d.ts.map +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/interactions.d.ts.map +1 -1
- package/dist/types/helpers/synthetic-native-wrap.d.ts.map +1 -1
- package/dist/types/types/enums.d.ts +1 -0
- package/dist/types/types/enums.d.ts.map +1 -1
- package/dist/types/types/request.d.ts +32 -23
- package/dist/types/types/request.d.ts.map +1 -1
- package/dist/types/types/response.d.ts +10 -42
- package/dist/types/types/response.d.ts.map +1 -1
- package/dist/types/types/validation.d.ts +19 -4
- package/dist/types/types/validation.d.ts.map +1 -1
- package/dist/types/validations/compensation-hook.d.ts +1 -2
- package/dist/types/validations/compensation-hook.d.ts.map +1 -1
- package/dist/types/validations/cost-token.d.ts.map +1 -1
- package/dist/types/validations/echo-fields.d.ts.map +1 -1
- package/dist/types/validations/evm-caveats.d.ts.map +1 -1
- package/dist/types/validations/evm-on-chain-intent.d.ts +4 -0
- package/dist/types/validations/evm-on-chain-intent.d.ts.map +1 -0
- package/dist/types/validations/evm-op-budget.d.ts.map +1 -1
- package/dist/types/validations/evm-op-hook.d.ts.map +1 -1
- package/dist/types/validations/evm-permit.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.map +1 -1
- package/dist/types/validations/evm-sign712-metamask.d.ts +0 -11
- package/dist/types/validations/evm-sign712-metamask.d.ts.map +1 -1
- package/dist/types/validations/evm-sign712-shared.d.ts +12 -0
- package/dist/types/validations/evm-sign712-shared.d.ts.map +1 -1
- package/dist/types/validations/evm-sign712.d.ts +1 -0
- package/dist/types/validations/evm-sign712.d.ts.map +1 -1
- package/dist/types/validations/evm-sign7702.d.ts.map +1 -1
- package/dist/types/validations/evm-transaction.d.ts +1 -1
- package/dist/types/validations/evm-transaction.d.ts.map +1 -1
- package/dist/types/validations/external-call.d.ts.map +1 -1
- package/dist/types/validations/hook-version.d.ts +7 -0
- package/dist/types/validations/hook-version.d.ts.map +1 -0
- package/dist/types/validations/hooks-common.d.ts +1 -4
- package/dist/types/validations/hooks-common.d.ts.map +1 -1
- package/dist/types/validations/intent-destinations.d.ts.map +1 -1
- package/dist/types/validations/intent-tokens.d.ts.map +1 -1
- package/dist/types/validations/max-reserved.d.ts +3 -0
- package/dist/types/validations/max-reserved.d.ts.map +1 -0
- package/dist/types/validations/on-chain-intent-submission.d.ts +3 -0
- package/dist/types/validations/on-chain-intent-submission.d.ts.map +1 -0
- package/dist/types/validations/ptp.d.ts.map +1 -1
- package/dist/types/validations/refill.d.ts.map +1 -1
- package/dist/types/validations/solana-hook.d.ts +1 -2
- package/dist/types/validations/solana-hook.d.ts.map +1 -1
- package/dist/types/validations/solana-op-wrap.d.ts +2 -2
- package/dist/types/validations/solana-op-wrap.d.ts.map +1 -1
- package/dist/types/validations/solana-required-actions.d.ts.map +1 -1
- package/dist/types/validations/solana-transaction.d.ts +3 -3
- package/dist/types/validations/solana-transaction.d.ts.map +1 -1
- package/dist/types/validations/total-dst-amount.d.ts.map +1 -1
- package/dist/types/validations/trade-grouping.d.ts +1 -0
- package/dist/types/validations/trade-grouping.d.ts.map +1 -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 +0 -1
- package/dist/types/whitelists/environment-config.d.ts.map +1 -1
- package/dist/types/whitelists/types.d.ts +0 -1
- package/dist/types/whitelists/types.d.ts.map +1 -1
- package/package.json +5 -2
package/dist/cjs/validator.js
CHANGED
|
@@ -12,6 +12,7 @@ const trade_grouping_1 = require("./validations/trade-grouping");
|
|
|
12
12
|
const accumulative_token_1 = require("./validations/accumulative-token");
|
|
13
13
|
const cost_token_1 = require("./validations/cost-token");
|
|
14
14
|
const ptp_1 = require("./validations/ptp");
|
|
15
|
+
const max_reserved_1 = require("./validations/max-reserved");
|
|
15
16
|
const total_dst_amount_1 = require("./validations/total-dst-amount");
|
|
16
17
|
const dln_metadata_1 = require("./validations/dln-metadata");
|
|
17
18
|
const external_call_1 = require("./validations/external-call");
|
|
@@ -21,17 +22,16 @@ const interactions_1 = require("./validations/interactions");
|
|
|
21
22
|
const environment_config_1 = require("./whitelists/environment-config");
|
|
22
23
|
const synthetic_native_wrap_1 = require("./helpers/synthetic-native-wrap");
|
|
23
24
|
const quote_mode_1 = require("./helpers/quote-mode");
|
|
25
|
+
const on_chain_intent_submission_1 = require("./validations/on-chain-intent-submission");
|
|
26
|
+
const hook_version_1 = require("./validations/hook-version");
|
|
24
27
|
const SUPPORTED_VALIDATION_VERSION = 1n;
|
|
25
28
|
const COMPATIBLE_VALIDATION_VERSION_ALIASES = new Set(["2"]);
|
|
26
29
|
function createValidator(config) {
|
|
27
30
|
const envConfig = (0, environment_config_1.buildEnvironmentConfig)(config.environment);
|
|
28
|
-
const options = {
|
|
29
|
-
allowLegacyHookV1: config.allowLegacyHookV1 ?? true,
|
|
30
|
-
};
|
|
31
31
|
return {
|
|
32
32
|
validate(url, request, response) {
|
|
33
33
|
try {
|
|
34
|
-
return validateInternal(url, request, response, envConfig
|
|
34
|
+
return validateInternal(url, request, response, envConfig);
|
|
35
35
|
}
|
|
36
36
|
catch (error) {
|
|
37
37
|
return createUnexpectedValidationError(error);
|
|
@@ -40,7 +40,7 @@ function createValidator(config) {
|
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
function validateInternal(_url, // TODO: not validated now, enable in the future
|
|
43
|
-
request, response, envConfig
|
|
43
|
+
request, response, envConfig) {
|
|
44
44
|
const higherVersionViolation = validateSupportedValidationVersion(response);
|
|
45
45
|
if (higherVersionViolation !== undefined) {
|
|
46
46
|
return { ok: false, violations: [higherVersionViolation] };
|
|
@@ -49,15 +49,25 @@ request, response, envConfig, options) {
|
|
|
49
49
|
// TODO: uncomment in the future to enable url validation
|
|
50
50
|
// violations.push(...validateUrl(url));
|
|
51
51
|
const reqResult = types_1.BundleCreationRequestSchema.safeParse(request);
|
|
52
|
+
if (!reqResult.success) {
|
|
53
|
+
const resResult = types_1.BundleCreationResponseSchema.safeParse(response);
|
|
54
|
+
violations.push(...buildStructureViolations(reqResult, resResult));
|
|
55
|
+
return { ok: false, violations };
|
|
56
|
+
}
|
|
57
|
+
const unsupportedHookViolations = (0, hook_version_1.validateSupportedRequestHookShapes)(reqResult.data);
|
|
58
|
+
if (unsupportedHookViolations.length > 0) {
|
|
59
|
+
// Reject unsupported request semantics before parsing the response so a
|
|
60
|
+
// transformed V1 echo cannot hide the real cause behind a response-side
|
|
61
|
+
// structural violation.
|
|
62
|
+
return { ok: false, violations: unsupportedHookViolations };
|
|
63
|
+
}
|
|
64
|
+
const supportedRequest = reqResult.data;
|
|
52
65
|
const resResult = types_1.BundleCreationResponseSchema.safeParse(response);
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
// If the structure is invalid, we can't do any meaningful validation,
|
|
56
|
-
// so we do not continue with field validations and just report
|
|
57
|
-
// the structure issues.
|
|
66
|
+
if (!resResult.success) {
|
|
67
|
+
violations.push(...buildStructureViolations(reqResult, resResult));
|
|
58
68
|
return { ok: false, violations };
|
|
59
69
|
}
|
|
60
|
-
violations.push(...validateBundleCreation(
|
|
70
|
+
violations.push(...validateBundleCreation(supportedRequest, resResult.data, envConfig));
|
|
61
71
|
return {
|
|
62
72
|
ok: violations.length === 0,
|
|
63
73
|
violations,
|
|
@@ -129,11 +139,11 @@ function createUnexpectedValidationError(error) {
|
|
|
129
139
|
}],
|
|
130
140
|
};
|
|
131
141
|
}
|
|
132
|
-
function validateBundleCreation(request, response, envConfig
|
|
133
|
-
const context = buildBundleValidationContext(request, response, envConfig
|
|
142
|
+
function validateBundleCreation(request, response, envConfig) {
|
|
143
|
+
const context = buildBundleValidationContext(request, response, envConfig);
|
|
134
144
|
return runBundleValidations(context);
|
|
135
145
|
}
|
|
136
|
-
function buildBundleValidationContext(request, response, envConfig
|
|
146
|
+
function buildBundleValidationContext(request, response, envConfig) {
|
|
137
147
|
const modes = detectBundleModes(request, response);
|
|
138
148
|
const tradeMatch = (0, trade_matching_1.matchTrades)(request.trades, response.trades, modes.quoteMode, modes.consolidationMode);
|
|
139
149
|
const groupResult = (0, trade_grouping_1.groupTrades)(request.trades, response.trades, modes.quoteMode, modes.consolidationMode, tradeMatch.pairs);
|
|
@@ -142,7 +152,6 @@ function buildBundleValidationContext(request, response, envConfig, options) {
|
|
|
142
152
|
request,
|
|
143
153
|
response,
|
|
144
154
|
envConfig,
|
|
145
|
-
options,
|
|
146
155
|
modes,
|
|
147
156
|
tradeMatch,
|
|
148
157
|
groups: groupResult.groups,
|
|
@@ -160,12 +169,14 @@ function detectBundleModes(request, response) {
|
|
|
160
169
|
};
|
|
161
170
|
}
|
|
162
171
|
function runBundleValidations(context) {
|
|
163
|
-
const { request, response, envConfig,
|
|
172
|
+
const { request, response, envConfig, modes } = context;
|
|
164
173
|
return [
|
|
165
174
|
...(0, echo_fields_1.validateEchoFields)(request, response),
|
|
175
|
+
...(0, on_chain_intent_submission_1.validateOnChainIntentSubmission)(request),
|
|
166
176
|
...context.tradeMatch.violations,
|
|
167
177
|
...(0, trades_1.validateTrades)(request, response, modes.quoteMode, context.tradeMatch.pairs),
|
|
168
178
|
...(0, accumulative_token_1.validateAccumulativeTokens)(response, modes.quoteMode, modes.quoteGroupingUnverifiable),
|
|
179
|
+
...(0, max_reserved_1.validateMaxReservedRequest)(request),
|
|
169
180
|
...(0, total_dst_amount_1.validateTotalDstAmount)(request, response),
|
|
170
181
|
...(0, cost_token_1.validateCostToken)(request, response),
|
|
171
182
|
...(0, ptp_1.validatePtp)(request, response),
|
|
@@ -178,7 +189,7 @@ function runBundleValidations(context) {
|
|
|
178
189
|
...(0, interactions_1.validateIntentInteractions)(context.intentContexts),
|
|
179
190
|
...(0, intent_1.validateIntents)(context.intentContexts, modes.quoteMode, envConfig, modes.syntheticNativeWrapMode),
|
|
180
191
|
...(0, required_actions_1.validateRequiredActions)(request, response, context.intentContexts, modes.quoteMode, envConfig, modes.syntheticNativeWrapMode),
|
|
181
|
-
...(0, hooks_common_1.validateHooks)(request, response, modes.quoteMode, envConfig
|
|
192
|
+
...(0, hooks_common_1.validateHooks)(request, response, modes.quoteMode, envConfig),
|
|
182
193
|
];
|
|
183
194
|
}
|
|
184
195
|
// TODO: enable in the future
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/validator.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SOLANA_ALLOWANCE_HOLDER_ENABLED_BY_ENVIRONMENT = exports.SOLANA_ALLOWANCE_HOLDER_BY_ENVIRONMENT = exports.
|
|
3
|
+
exports.SOLANA_ALLOWANCE_HOLDER_ENABLED_BY_ENVIRONMENT = exports.SOLANA_ALLOWANCE_HOLDER_BY_ENVIRONMENT = exports.SOLANA_INTENT_PROGRAM_BY_ENVIRONMENT = exports.METAMASK_CHAINS = exports.EVM_CHAINS_ENABLED_FOR_INTENTS = exports.SOLANA_MAGIC_ANY_TRUSTED_SOLVER_ADDRESS = exports.TRON_MAGIC_ANY_TRUSTED_SOLVER_ADDRESS = exports.EVM_MAGIC_ANY_TRUSTED_SOLVER_ADDRESS = exports.PROD_TRON_SOLVER_EXECUTOR = exports.TEST_TRON_SOLVER_EXECUTOR = exports.GASLESS_EVM_SOLVER_EXECUTOR = exports.PROD_EVM_SOLVER_EXECUTOR = exports.TEST_EVM_SOLVER_EXECUTOR = void 0;
|
|
4
4
|
exports.buildEnvironmentConfig = buildEnvironmentConfig;
|
|
5
5
|
const web3_js_1 = require("@solana/web3.js");
|
|
6
6
|
const enums_1 = require("../types/enums");
|
|
@@ -112,10 +112,7 @@ const EVM_AND_TRON_DELEGATES_BY_ENVIRONMENT = {
|
|
|
112
112
|
...(0, types_1.buildSameAddressesMap)(exports.EVM_CHAINS_ENABLED_FOR_INTENTS, [exports.PROD_EVM_SOLVER_EXECUTOR]),
|
|
113
113
|
[enums_1.ChainId.Tron]: [exports.PROD_TRON_SOLVER_EXECUTOR],
|
|
114
114
|
},
|
|
115
|
-
[validation_1.Environment.Gasless]: (0, types_1.buildSameAddressesMap)(exports.EVM_CHAINS_ENABLED_FOR_INTENTS, [
|
|
116
|
-
exports.GASLESS_EVM_SOLVER_EXECUTOR,
|
|
117
|
-
PROD_EVM_EOA_DELEGATE, // TODO: to be deleted in the next release
|
|
118
|
-
]),
|
|
115
|
+
[validation_1.Environment.Gasless]: (0, types_1.buildSameAddressesMap)(exports.EVM_CHAINS_ENABLED_FOR_INTENTS, [exports.GASLESS_EVM_SOLVER_EXECUTOR]),
|
|
119
116
|
};
|
|
120
117
|
const METAMASK_CHAINS_BY_ENVIRONMENT = {
|
|
121
118
|
[validation_1.Environment.Dev]: exports.METAMASK_CHAINS,
|
|
@@ -136,17 +133,6 @@ exports.SOLANA_INTENT_PROGRAM_BY_ENVIRONMENT = {
|
|
|
136
133
|
[validation_1.Environment.Prod]: PROD_SOLANA_INTENT_MANAGER,
|
|
137
134
|
[validation_1.Environment.Gasless]: PROD_SOLANA_INTENT_MANAGER,
|
|
138
135
|
};
|
|
139
|
-
exports.SOLANA_DELEGATE_ADDRESSES_BY_ENVIRONMENT = {
|
|
140
|
-
[validation_1.Environment.Dev]: [
|
|
141
|
-
DEV_SOLANA_DELEGATE_ONE,
|
|
142
|
-
PROD_SOLANA_DELEGATE,
|
|
143
|
-
GASLESS_SOLANA_DELEGATE,
|
|
144
|
-
DEV_SOLANA_DELEGATE_TWO,
|
|
145
|
-
DEV_SOLANA_DELEGATE_THREE,
|
|
146
|
-
],
|
|
147
|
-
[validation_1.Environment.Prod]: [PROD_SOLANA_DELEGATE],
|
|
148
|
-
[validation_1.Environment.Gasless]: [GASLESS_SOLANA_DELEGATE],
|
|
149
|
-
};
|
|
150
136
|
exports.SOLANA_ALLOWANCE_HOLDER_BY_ENVIRONMENT = {
|
|
151
137
|
[validation_1.Environment.Dev]: PROD_SOLANA_ALLOWANCE_HOLDER,
|
|
152
138
|
[validation_1.Environment.Prod]: PROD_SOLANA_ALLOWANCE_HOLDER,
|
|
@@ -171,14 +157,17 @@ const SRC_ALLOWED_SENDERS_BY_ENVIRONMENT = {
|
|
|
171
157
|
exports.TRON_MAGIC_ANY_TRUSTED_SOLVER_ADDRESS,
|
|
172
158
|
],
|
|
173
159
|
[enums_1.ChainId.Solana]: [
|
|
174
|
-
|
|
160
|
+
PROD_SOLANA_DELEGATE,
|
|
161
|
+
GASLESS_SOLANA_DELEGATE,
|
|
162
|
+
DEV_SOLANA_DELEGATE_ONE,
|
|
163
|
+
DEV_SOLANA_DELEGATE_TWO,
|
|
164
|
+
DEV_SOLANA_DELEGATE_THREE,
|
|
175
165
|
exports.SOLANA_MAGIC_ANY_TRUSTED_SOLVER_ADDRESS,
|
|
176
166
|
],
|
|
177
167
|
},
|
|
178
168
|
[validation_1.Environment.Prod]: {
|
|
179
169
|
...(0, types_1.buildSameAddressesMap)(exports.EVM_CHAINS_ENABLED_FOR_INTENTS, [
|
|
180
170
|
exports.PROD_EVM_SOLVER_EXECUTOR,
|
|
181
|
-
exports.TEST_EVM_SOLVER_EXECUTOR, // TODO: to be deleted in the next release
|
|
182
171
|
exports.EVM_MAGIC_ANY_TRUSTED_SOLVER_ADDRESS,
|
|
183
172
|
]),
|
|
184
173
|
[enums_1.ChainId.Tron]: [
|
|
@@ -186,18 +175,17 @@ const SRC_ALLOWED_SENDERS_BY_ENVIRONMENT = {
|
|
|
186
175
|
exports.TRON_MAGIC_ANY_TRUSTED_SOLVER_ADDRESS,
|
|
187
176
|
],
|
|
188
177
|
[enums_1.ChainId.Solana]: [
|
|
189
|
-
|
|
178
|
+
PROD_SOLANA_DELEGATE,
|
|
190
179
|
exports.SOLANA_MAGIC_ANY_TRUSTED_SOLVER_ADDRESS,
|
|
191
180
|
],
|
|
192
181
|
},
|
|
193
182
|
[validation_1.Environment.Gasless]: {
|
|
194
183
|
...(0, types_1.buildSameAddressesMap)(exports.EVM_CHAINS_ENABLED_FOR_INTENTS, [
|
|
195
184
|
exports.GASLESS_EVM_SOLVER_EXECUTOR,
|
|
196
|
-
exports.TEST_EVM_SOLVER_EXECUTOR, // TODO: to be deleted in the next release
|
|
197
185
|
exports.EVM_MAGIC_ANY_TRUSTED_SOLVER_ADDRESS,
|
|
198
186
|
]),
|
|
199
187
|
[enums_1.ChainId.Solana]: [
|
|
200
|
-
|
|
188
|
+
GASLESS_SOLANA_DELEGATE,
|
|
201
189
|
exports.SOLANA_MAGIC_ANY_TRUSTED_SOLVER_ADDRESS,
|
|
202
190
|
],
|
|
203
191
|
},
|
|
@@ -248,7 +236,6 @@ function buildEnvironmentConfig(environment) {
|
|
|
248
236
|
solanaIntentProgram,
|
|
249
237
|
solanaAllowanceHolder: exports.SOLANA_ALLOWANCE_HOLDER_BY_ENVIRONMENT[environment],
|
|
250
238
|
solanaAllowanceHolderEnabled: exports.SOLANA_ALLOWANCE_HOLDER_ENABLED_BY_ENVIRONMENT[environment],
|
|
251
|
-
solanaDelegateAddresses: exports.SOLANA_DELEGATE_ADDRESSES_BY_ENVIRONMENT[environment],
|
|
252
239
|
solanaTransactionAllowedPrograms: buildTransactionAllowedPrograms(solanaIntentProgram),
|
|
253
240
|
solanaSignTransactionAllowedPrograms: buildSignTransactionAllowedPrograms(solanaIntentProgram),
|
|
254
241
|
solanaExpectedStatePdaBase58: computeStatePdaBase58(solanaIntentProgram),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment-config.js","sourceRoot":"","sources":["../../../src/whitelists/environment-config.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"environment-config.js","sourceRoot":"","sources":["../../../src/whitelists/environment-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,16 +50,13 @@ function isWhitelisted(map, chainId, address) {
|
|
|
50
50
|
// Different chains have different address formats, so we must check chain-specific list before wildcard.
|
|
51
51
|
const chainSpecific = map[chainId];
|
|
52
52
|
if (chainSpecific) {
|
|
53
|
-
|
|
54
|
-
return chainSpecific.some(a => (0, address_1.normalizeAddress)(chainId, a) === normalized);
|
|
53
|
+
return chainSpecific.some(allowed => (0, address_1.addressEquals)(chainId, allowed, address));
|
|
55
54
|
}
|
|
56
55
|
// Fallback to wildcard (chainId 0).
|
|
57
56
|
// Wildcard always uses EVM hex format — convert non-EVM addresses.
|
|
58
57
|
const wildcard = map[enums_1.ChainId.Wildcard];
|
|
59
58
|
if (!wildcard)
|
|
60
59
|
return false;
|
|
61
|
-
|
|
62
|
-
const normalized = evmAddress.toLowerCase();
|
|
63
|
-
return wildcard.some(a => a.toLowerCase() === normalized);
|
|
60
|
+
return wildcard.some(allowed => (0, address_1.isEvmHexAddress)(allowed) && (0, address_1.addressEquals)(chainId, allowed, address));
|
|
64
61
|
}
|
|
65
62
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/whitelists/types.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/whitelists/types.ts"],"names":[],"mappings":";;AAgBA,kDAKC;AAGD,sDASC;AAID,sDAkBC;AA6BD,sCA4BC;AAhHD,gDAI4B;AAC5B,0CAAsD;AAStD,8EAA8E;AAC9E,gFAAgF;AAChF,SAAgB,mBAAmB,CAC/B,MAA0B,EAC1B,OAAe;IAEf,OAAO,qBAAqB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,uEAAuE;AACvE,SAAgB,qBAAqB,CACjC,MAA0B,EAC1B,SAA4B;IAE5B,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;QAC3B,GAAG,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAC7B,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,8CAA8C;AAC9C,SAAgB,qBAAqB,CAAC,GAAG,IAAgC;IACrE,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,KAAK,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxD,IAAI,SAAS,KAAK,SAAS;gBAAE,SAAS;YAEtC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAY,CAAC;YAC9C,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5C,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;gBAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAA,uBAAa,EAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;oBAAE,SAAS;gBACjF,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;QAC7B,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AA6BD,SAAgB,aAAa,CACzB,GAAoB,EACpB,OAAgB,EAChB,OAAe;IAEf,MAAM,MAAM,GAAG,IAAA,wBAAc,EAAC,OAAO,CAAC,CAAC;IAEvC,IAAI,MAAM,KAAK,mBAAW,CAAC,MAAM,EAAE,CAAC;QAChC,iEAAiE;QACjE,kFAAkF;QAClF,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC5F,CAAC;IAED,sCAAsC;IACtC,yGAAyG;IACzG,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,aAAa,EAAE,CAAC;QAChB,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,IAAA,uBAAa,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,oCAAoC;IACpC,mEAAmE;IACnE,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,OAAO,QAAQ,CAAC,IAAI,CAChB,OAAO,CAAC,EAAE,CAAC,IAAA,yBAAe,EAAC,OAAO,CAAC,IAAI,IAAA,uBAAa,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAClF,CAAC;AACN,CAAC"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
// best-effort validation. If a value is absent from a graylist, the
|
|
4
4
|
// corresponding check is skipped rather than producing a violation.
|
|
5
5
|
import { ChainId } from "../../types/enums.js";
|
|
6
|
+
import { addressToHex } from "../../helpers/address.js";
|
|
6
7
|
// Note: addresses in this map MUST be lowercased.
|
|
7
8
|
export const TOKEN_PERMIT_METADATA = {
|
|
8
9
|
// TODO: extend this verified-only graylist with additional tokens after
|
|
@@ -52,6 +53,11 @@ export function getTokenPermitMetadata(realChainId, tokenAddress) {
|
|
|
52
53
|
const chain = TOKEN_PERMIT_METADATA[realChainId];
|
|
53
54
|
if (!chain)
|
|
54
55
|
return undefined;
|
|
55
|
-
|
|
56
|
+
try {
|
|
57
|
+
return chain[addressToHex(realChainId, tokenAddress)];
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
56
62
|
}
|
|
57
63
|
//# sourceMappingURL=token-permit-metadata.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-permit-metadata.js","sourceRoot":"","sources":["../../../../src/graylists/evm/token-permit-metadata.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,mEAAmE;AACnE,oEAAoE;AACpE,oEAAoE;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"token-permit-metadata.js","sourceRoot":"","sources":["../../../../src/graylists/evm/token-permit-metadata.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,mEAAmE;AACnE,oEAAoE;AACpE,oEAAoE;AAEpE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAgBrD,kDAAkD;AAClD,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IACzD,wEAAwE;IACxE,2EAA2E;IAC3E,uEAAuE;IACvE,kEAAkE;IAClE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,4CAA4C,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE;QAChF,4CAA4C,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,EAAE;QACtF,4CAA4C,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;KACvE;IACD,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,4CAA4C,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE;KACnF;IACD,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACf,4CAA4C,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE;KACnF;IACD,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACb,4CAA4C,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;KAC/E;IACD,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACb,4CAA4C,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;KAC/E;IACD,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,4CAA4C,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;KAC/E;IACD,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACX,4CAA4C,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;KAC/E;IACD,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACjB,4CAA4C,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;KAC/E;IACD,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACZ,4CAA4C,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE;KACnF;IACD,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACb,4CAA4C,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;KAC/E;IACD,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,4CAA4C,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE;KACnF;IACD,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACjB,4CAA4C,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE;KACnF;CACJ,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAClC,WAAoB,EACpB,YAAoB;IAEpB,MAAM,KAAK,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAE7B,IAAI,CAAC;QACD,OAAO,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC"}
|
|
@@ -4,8 +4,13 @@ import { ChainEngine, ChainId } from "../types/enums.js";
|
|
|
4
4
|
import { SYSTEM_PROGRAM } from "../whitelists/solana/index.js";
|
|
5
5
|
// Tron-specific addresses (Base58Check format)
|
|
6
6
|
export const TRON_NATIVE_ADDRESS = "T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb";
|
|
7
|
-
const EVM_HEX_ADDRESS_REGEX = /^0x[0-9a-
|
|
7
|
+
const EVM_HEX_ADDRESS_REGEX = /^0x[0-9a-fA-F]{40}$/u;
|
|
8
|
+
const EVM_ADDRESS_BYTE_LENGTH = 20;
|
|
9
|
+
const SOLANA_ADDRESS_BYTE_LENGTH = 32;
|
|
8
10
|
const TRON_ADDRESS_PREFIX = 0x41;
|
|
11
|
+
const TRON_PAYLOAD_BYTE_LENGTH = 1 + EVM_ADDRESS_BYTE_LENGTH;
|
|
12
|
+
const TRON_CHECKSUM_BYTE_LENGTH = 4;
|
|
13
|
+
const TRON_ADDRESS_BYTE_LENGTH = TRON_PAYLOAD_BYTE_LENGTH + TRON_CHECKSUM_BYTE_LENGTH;
|
|
9
14
|
export function getChainEngine(chainId) {
|
|
10
15
|
if (chainId === ChainId.Tron)
|
|
11
16
|
return ChainEngine.Tron;
|
|
@@ -17,16 +22,25 @@ export function isEvmHexAddress(address) {
|
|
|
17
22
|
return EVM_HEX_ADDRESS_REGEX.test(address);
|
|
18
23
|
}
|
|
19
24
|
export function isTronAddress(address) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
return decodeTronAddressBytes(address) !== undefined;
|
|
26
|
+
}
|
|
27
|
+
export function isTronAddressOrEvmHex(address) {
|
|
28
|
+
return isEvmHexAddress(address) || isTronAddress(address);
|
|
29
|
+
}
|
|
30
|
+
export function isSolanaAddress(address) {
|
|
31
|
+
return decodeSolanaAddressBytes(address) !== undefined;
|
|
32
|
+
}
|
|
33
|
+
// Use only for standalone semantic address fields. Encoded EIP-712, ABI and
|
|
34
|
+
// interaction fields keep their own stricter wire-format validation.
|
|
35
|
+
export function isAddressRepresentationValidForChain(chainId, address) {
|
|
36
|
+
return isAddressRepresentationValidForEngine(getChainEngine(chainId), address);
|
|
37
|
+
}
|
|
38
|
+
export function isAddressRepresentationValidForEngine(engine, address) {
|
|
39
|
+
if (engine === ChainEngine.EVM)
|
|
40
|
+
return isEvmHexAddress(address);
|
|
41
|
+
if (engine === ChainEngine.Tron)
|
|
42
|
+
return isTronAddressOrEvmHex(address);
|
|
43
|
+
return isSolanaAddress(address);
|
|
30
44
|
}
|
|
31
45
|
// Converts a 20-byte EVM hex address to Tron Base58Check format.
|
|
32
46
|
export function evmHexToTronAddress(evmAddress) {
|
|
@@ -37,83 +51,141 @@ export function evmHexToTronAddress(evmAddress) {
|
|
|
37
51
|
Uint8Array.of(TRON_ADDRESS_PREFIX),
|
|
38
52
|
hexToBytes(evmAddress),
|
|
39
53
|
]);
|
|
40
|
-
const
|
|
41
|
-
const secondHash = sha256(hexToBytes(firstHash));
|
|
42
|
-
const checksum = hexToBytes(secondHash).slice(0, 4);
|
|
54
|
+
const checksum = computeTronChecksum(payload);
|
|
43
55
|
return bs58.encode(concatBytes([payload, checksum]));
|
|
44
56
|
}
|
|
45
|
-
// Converts Tron Base58Check address to EVM hex
|
|
46
|
-
// Tron address = 0x41 (1 byte prefix) + 20 bytes address + 4 bytes checksum
|
|
47
|
-
// We extract the 20-byte address part and return as 0x-prefixed hex
|
|
57
|
+
// Converts a valid Tron Base58Check address to its 20-byte EVM hex identity.
|
|
48
58
|
export function tronAddressToEvmHex(tronAddress) {
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
59
|
+
const addressBytes = decodeTronAddressBytes(tronAddress);
|
|
60
|
+
if (addressBytes === undefined) {
|
|
61
|
+
throw new Error(`Invalid Tron Base58Check address: ${tronAddress}`);
|
|
62
|
+
}
|
|
52
63
|
return bytesToHex(addressBytes);
|
|
53
64
|
}
|
|
54
|
-
//
|
|
55
|
-
|
|
65
|
+
// Builds a canonical address-byte key using the representation rules of the
|
|
66
|
+
// given chain. Malformed values have no address identity and return undefined.
|
|
67
|
+
export function getAddressIdentityKey(chainId, address) {
|
|
56
68
|
const engine = getChainEngine(chainId);
|
|
57
|
-
return
|
|
69
|
+
return toCanonicalAddressHex(address, engine);
|
|
58
70
|
}
|
|
59
|
-
//
|
|
60
|
-
|
|
71
|
+
// Builds an address identity key using only its own value — no chainId needed.
|
|
72
|
+
export function getAddressIdentityKeyByValue(address) {
|
|
73
|
+
return toCanonicalAddressHexByValue(address);
|
|
74
|
+
}
|
|
75
|
+
// Detects the chain engine from a valid address value alone. Ambiguous 20-byte
|
|
76
|
+
// hex belongs to the EVM-compatible representation. Invalid values have no
|
|
77
|
+
// detectable chain engine.
|
|
61
78
|
export function detectChainEngine(address) {
|
|
62
|
-
if (address
|
|
79
|
+
if (isEvmHexAddress(address))
|
|
63
80
|
return ChainEngine.EVM;
|
|
64
81
|
if (isTronAddress(address))
|
|
65
82
|
return ChainEngine.Tron;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
export function normalizeAddressByValue(address) {
|
|
70
|
-
return applyEngineNormalization(address, detectChainEngine(address));
|
|
71
|
-
}
|
|
72
|
-
function applyEngineNormalization(address, engine) {
|
|
73
|
-
if (engine === ChainEngine.Tron || engine === ChainEngine.Solana) {
|
|
74
|
-
return address; // case-sensitive
|
|
75
|
-
}
|
|
76
|
-
return address.toLowerCase(); // EVM: case-insensitive
|
|
83
|
+
if (isSolanaAddress(address))
|
|
84
|
+
return ChainEngine.Solana;
|
|
85
|
+
return undefined;
|
|
77
86
|
}
|
|
78
|
-
// Compares
|
|
79
|
-
|
|
80
|
-
|
|
87
|
+
// Compares canonical address identity. Field-specific format validation must
|
|
88
|
+
// happen separately; malformed values never compare equal and never throw.
|
|
89
|
+
export function addressEquals(chainId, left, right) {
|
|
90
|
+
const engine = getChainEngine(chainId);
|
|
91
|
+
const leftCanonical = toCanonicalAddressHex(left, engine);
|
|
92
|
+
const rightCanonical = toCanonicalAddressHex(right, engine);
|
|
93
|
+
return leftCanonical !== undefined
|
|
94
|
+
&& rightCanonical !== undefined
|
|
95
|
+
&& leftCanonical === rightCanonical;
|
|
81
96
|
}
|
|
82
97
|
// Raw byte representation, used when an address flows into the intent ID
|
|
83
|
-
// keccak256 hash. EVM → 20 bytes, Tron → 20 bytes
|
|
84
|
-
// prefix and checksum), Solana → 32 bytes (base58, no checksum).
|
|
98
|
+
// keccak256 hash. EVM → 20 bytes, Tron → 20 bytes, Solana → 32 bytes.
|
|
85
99
|
export function addressToHex(chainId, address) {
|
|
86
|
-
|
|
100
|
+
const engine = getChainEngine(chainId);
|
|
101
|
+
const canonical = toCanonicalAddressHex(address, engine);
|
|
102
|
+
if (canonical === undefined) {
|
|
103
|
+
throw new Error(`Invalid ${ChainEngine[engine]} address: ${address}`);
|
|
104
|
+
}
|
|
105
|
+
return canonical;
|
|
87
106
|
}
|
|
88
107
|
// Same as addressToHex but infers the engine from the address value alone.
|
|
89
108
|
// Use when the chainId is unknown (e.g. destinationChainIds = "any").
|
|
90
109
|
export function addressToHexByValue(address) {
|
|
91
|
-
|
|
110
|
+
const canonical = toCanonicalAddressHexByValue(address);
|
|
111
|
+
if (canonical === undefined)
|
|
112
|
+
throw new Error(`Invalid address: ${address}`);
|
|
113
|
+
return canonical;
|
|
92
114
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
return address
|
|
115
|
+
// Checks if address is the native token for the given chain.
|
|
116
|
+
export function isNativeToken(address, chainId) {
|
|
117
|
+
const engine = getChainEngine(chainId);
|
|
118
|
+
if (engine === ChainEngine.Tron) {
|
|
119
|
+
// Accept strict Tron Base58Check and the equivalent 20-byte EVM hex representation.
|
|
120
|
+
return addressEquals(chainId, address, TRON_NATIVE_ADDRESS);
|
|
121
|
+
}
|
|
122
|
+
if (engine === ChainEngine.Solana) {
|
|
123
|
+
// Accept only a valid 32-byte Solana Base58 address.
|
|
124
|
+
return addressEquals(chainId, address, SYSTEM_PROGRAM);
|
|
99
125
|
}
|
|
126
|
+
// Accept only a valid 20-byte EVM hex address.
|
|
127
|
+
return isEvmHexAddress(address) && address.toLowerCase() === zeroAddress;
|
|
128
|
+
}
|
|
129
|
+
function toCanonicalAddressHex(address, engine) {
|
|
100
130
|
if (engine === ChainEngine.EVM) {
|
|
101
|
-
return address.toLowerCase();
|
|
131
|
+
return isEvmHexAddress(address) ? address.toLowerCase() : undefined;
|
|
102
132
|
}
|
|
103
133
|
if (engine === ChainEngine.Tron) {
|
|
104
|
-
|
|
134
|
+
if (isEvmHexAddress(address))
|
|
135
|
+
return address.toLowerCase();
|
|
136
|
+
const bytes = decodeTronAddressBytes(address);
|
|
137
|
+
return bytes === undefined ? undefined : bytesToHex(bytes);
|
|
105
138
|
}
|
|
106
|
-
|
|
139
|
+
const bytes = decodeSolanaAddressBytes(address);
|
|
140
|
+
return bytes === undefined ? undefined : bytesToHex(bytes);
|
|
107
141
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
142
|
+
function toCanonicalAddressHexByValue(address) {
|
|
143
|
+
if (isEvmHexAddress(address))
|
|
144
|
+
return address.toLowerCase();
|
|
145
|
+
const tronBytes = decodeTronAddressBytes(address);
|
|
146
|
+
if (tronBytes !== undefined)
|
|
147
|
+
return bytesToHex(tronBytes);
|
|
148
|
+
const solanaBytes = decodeSolanaAddressBytes(address);
|
|
149
|
+
return solanaBytes === undefined ? undefined : bytesToHex(solanaBytes);
|
|
150
|
+
}
|
|
151
|
+
function decodeTronAddressBytes(address) {
|
|
152
|
+
const decoded = decodeBase58(address);
|
|
153
|
+
if (decoded === undefined || decoded.length !== TRON_ADDRESS_BYTE_LENGTH)
|
|
154
|
+
return undefined;
|
|
155
|
+
if (decoded[0] !== TRON_ADDRESS_PREFIX)
|
|
156
|
+
return undefined;
|
|
157
|
+
const payload = decoded.slice(0, TRON_PAYLOAD_BYTE_LENGTH);
|
|
158
|
+
const checksum = decoded.slice(TRON_PAYLOAD_BYTE_LENGTH);
|
|
159
|
+
if (!bytesEqual(checksum, computeTronChecksum(payload)))
|
|
160
|
+
return undefined;
|
|
161
|
+
return payload.slice(1);
|
|
162
|
+
}
|
|
163
|
+
function decodeSolanaAddressBytes(address) {
|
|
164
|
+
const decoded = decodeBase58(address);
|
|
165
|
+
return decoded?.length === SOLANA_ADDRESS_BYTE_LENGTH ? decoded : undefined;
|
|
166
|
+
}
|
|
167
|
+
function decodeBase58(value) {
|
|
168
|
+
if (value.length === 0)
|
|
169
|
+
return undefined;
|
|
170
|
+
try {
|
|
171
|
+
return bs58.decode(value);
|
|
113
172
|
}
|
|
114
|
-
|
|
115
|
-
return
|
|
173
|
+
catch {
|
|
174
|
+
return undefined;
|
|
116
175
|
}
|
|
117
|
-
|
|
176
|
+
}
|
|
177
|
+
function computeTronChecksum(payload) {
|
|
178
|
+
const firstHash = sha256(payload);
|
|
179
|
+
const secondHash = sha256(hexToBytes(firstHash));
|
|
180
|
+
return hexToBytes(secondHash).slice(0, TRON_CHECKSUM_BYTE_LENGTH);
|
|
181
|
+
}
|
|
182
|
+
function bytesEqual(left, right) {
|
|
183
|
+
if (left.length !== right.length)
|
|
184
|
+
return false;
|
|
185
|
+
for (let i = 0; i < left.length; i++) {
|
|
186
|
+
if (left[i] !== right[i])
|
|
187
|
+
return false;
|
|
188
|
+
}
|
|
189
|
+
return true;
|
|
118
190
|
}
|
|
119
191
|
//# sourceMappingURL=address.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/helpers/address.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,UAAU,EACV,WAAW,EACX,UAAU,EACV,MAAM,EACN,WAAW,GACd,MAAM,MAAM,CAAC;AACd,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,+CAA+C;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,oCAAoC,CAAC;AAExE,MAAM,qBAAqB,GAAG,
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/helpers/address.ts"],"names":[],"mappings":"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"}
|