@debridge-finance/borderless-validation-sdk 0.0.9 → 0.0.11
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 +20 -7
- package/dist/cjs/graylists/evm/token-permit-metadata.js +39 -6
- package/dist/cjs/graylists/evm/token-permit-metadata.js.map +1 -1
- package/dist/cjs/helpers/address.js +6 -0
- package/dist/cjs/helpers/address.js.map +1 -1
- package/dist/cjs/helpers/evm-intent-id.js +18 -14
- package/dist/cjs/helpers/evm-intent-id.js.map +1 -1
- package/dist/cjs/helpers/evm-trade-amounts.js +2 -1
- package/dist/cjs/helpers/evm-trade-amounts.js.map +1 -1
- package/dist/cjs/helpers/quote-mode.js +23 -0
- package/dist/cjs/helpers/quote-mode.js.map +1 -0
- package/dist/cjs/helpers/synthetic-native-wrap.js +13 -13
- package/dist/cjs/helpers/synthetic-native-wrap.js.map +1 -1
- package/dist/cjs/helpers/zod.js +55 -0
- package/dist/cjs/helpers/zod.js.map +1 -1
- package/dist/cjs/types/request.js +69 -54
- package/dist/cjs/types/request.js.map +1 -1
- package/dist/cjs/types/response.js +67 -66
- package/dist/cjs/types/response.js.map +1 -1
- package/dist/cjs/types/validation.js +5 -5
- package/dist/cjs/types/validation.js.map +1 -1
- package/dist/cjs/validations/accumulative-token.js +7 -1
- package/dist/cjs/validations/accumulative-token.js.map +1 -1
- package/dist/cjs/validations/cost-token.js +14 -4
- package/dist/cjs/validations/cost-token.js.map +1 -1
- package/dist/cjs/validations/echo-fields.js +8 -0
- package/dist/cjs/validations/echo-fields.js.map +1 -1
- package/dist/cjs/validations/evm-caveats.js +4 -3
- package/dist/cjs/validations/evm-caveats.js.map +1 -1
- package/dist/cjs/validations/evm-op-budget.js +14 -7
- package/dist/cjs/validations/evm-op-budget.js.map +1 -1
- package/dist/cjs/validations/evm-op-hook.js +19 -1
- package/dist/cjs/validations/evm-op-hook.js.map +1 -1
- package/dist/cjs/validations/evm-op-wrap.js +10 -4
- package/dist/cjs/validations/evm-op-wrap.js.map +1 -1
- package/dist/cjs/validations/evm-permit.js +4 -3
- package/dist/cjs/validations/evm-permit.js.map +1 -1
- package/dist/cjs/validations/evm-required-actions.js +3 -3
- package/dist/cjs/validations/evm-required-actions.js.map +1 -1
- package/dist/cjs/validations/evm-sign712-metamask.js +4 -3
- package/dist/cjs/validations/evm-sign712-metamask.js.map +1 -1
- package/dist/cjs/validations/evm-sign712.js +2 -2
- package/dist/cjs/validations/evm-sign712.js.map +1 -1
- package/dist/cjs/validations/evm-sign7702.js +2 -1
- package/dist/cjs/validations/evm-sign7702.js.map +1 -1
- package/dist/cjs/validations/external-call.js +15 -23
- package/dist/cjs/validations/external-call.js.map +1 -1
- package/dist/cjs/validations/hooks-common.js +82 -44
- package/dist/cjs/validations/hooks-common.js.map +1 -1
- package/dist/cjs/validations/intent-destinations.js +42 -16
- package/dist/cjs/validations/intent-destinations.js.map +1 -1
- package/dist/cjs/validations/intent-tokens.js +37 -25
- package/dist/cjs/validations/intent-tokens.js.map +1 -1
- package/dist/cjs/validations/intent.js +24 -10
- package/dist/cjs/validations/intent.js.map +1 -1
- 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 +35 -14
- package/dist/cjs/validations/solana-hook.js.map +1 -1
- package/dist/cjs/validations/solana-op-budget.js +28 -12
- package/dist/cjs/validations/solana-op-budget.js.map +1 -1
- package/dist/cjs/validations/solana-op-wrap.js +10 -5
- package/dist/cjs/validations/solana-op-wrap.js.map +1 -1
- package/dist/cjs/validations/solana-required-actions.js +3 -3
- package/dist/cjs/validations/solana-required-actions.js.map +1 -1
- package/dist/cjs/validations/solana-transaction.js +81 -45
- package/dist/cjs/validations/solana-transaction.js.map +1 -1
- package/dist/cjs/validations/trade-grouping.js +20 -3
- package/dist/cjs/validations/trade-grouping.js.map +1 -1
- package/dist/cjs/validations/trades.js +75 -109
- package/dist/cjs/validations/trades.js.map +1 -1
- package/dist/cjs/validator.js +98 -52
- package/dist/cjs/validator.js.map +1 -1
- package/dist/cjs/whitelists/environment-config.js +89 -56
- package/dist/cjs/whitelists/environment-config.js.map +1 -1
- package/dist/cjs/whitelists/evm/index.js +3 -1
- package/dist/cjs/whitelists/evm/index.js.map +1 -1
- package/dist/cjs/whitelists/solana/intent-signature.js +6 -10
- package/dist/cjs/whitelists/solana/intent-signature.js.map +1 -1
- package/dist/esm/graylists/evm/token-permit-metadata.js +39 -6
- package/dist/esm/graylists/evm/token-permit-metadata.js.map +1 -1
- package/dist/esm/helpers/address.js +6 -0
- package/dist/esm/helpers/address.js.map +1 -1
- package/dist/esm/helpers/evm-intent-id.js +18 -14
- package/dist/esm/helpers/evm-intent-id.js.map +1 -1
- package/dist/esm/helpers/evm-trade-amounts.js +2 -1
- package/dist/esm/helpers/evm-trade-amounts.js.map +1 -1
- package/dist/esm/helpers/quote-mode.js +17 -0
- package/dist/esm/helpers/quote-mode.js.map +1 -0
- package/dist/esm/helpers/synthetic-native-wrap.js +13 -13
- package/dist/esm/helpers/synthetic-native-wrap.js.map +1 -1
- package/dist/esm/helpers/zod.js +47 -0
- package/dist/esm/helpers/zod.js.map +1 -1
- package/dist/esm/types/request.js +69 -54
- package/dist/esm/types/request.js.map +1 -1
- package/dist/esm/types/response.js +67 -66
- package/dist/esm/types/response.js.map +1 -1
- package/dist/esm/types/validation.js +5 -5
- package/dist/esm/types/validation.js.map +1 -1
- package/dist/esm/validations/accumulative-token.js +7 -1
- package/dist/esm/validations/accumulative-token.js.map +1 -1
- package/dist/esm/validations/cost-token.js +14 -4
- package/dist/esm/validations/cost-token.js.map +1 -1
- package/dist/esm/validations/echo-fields.js +8 -0
- package/dist/esm/validations/echo-fields.js.map +1 -1
- package/dist/esm/validations/evm-caveats.js +4 -3
- package/dist/esm/validations/evm-caveats.js.map +1 -1
- package/dist/esm/validations/evm-op-budget.js +14 -7
- package/dist/esm/validations/evm-op-budget.js.map +1 -1
- package/dist/esm/validations/evm-op-hook.js +19 -1
- package/dist/esm/validations/evm-op-hook.js.map +1 -1
- package/dist/esm/validations/evm-op-wrap.js +10 -4
- package/dist/esm/validations/evm-op-wrap.js.map +1 -1
- package/dist/esm/validations/evm-permit.js +4 -3
- package/dist/esm/validations/evm-permit.js.map +1 -1
- package/dist/esm/validations/evm-required-actions.js +3 -3
- package/dist/esm/validations/evm-required-actions.js.map +1 -1
- package/dist/esm/validations/evm-sign712-metamask.js +1 -1
- package/dist/esm/validations/evm-sign712-metamask.js.map +1 -1
- package/dist/esm/validations/evm-sign712.js +2 -2
- package/dist/esm/validations/evm-sign712.js.map +1 -1
- package/dist/esm/validations/evm-sign7702.js +2 -1
- package/dist/esm/validations/evm-sign7702.js.map +1 -1
- package/dist/esm/validations/external-call.js +15 -23
- package/dist/esm/validations/external-call.js.map +1 -1
- package/dist/esm/validations/hooks-common.js +83 -45
- package/dist/esm/validations/hooks-common.js.map +1 -1
- package/dist/esm/validations/intent-destinations.js +43 -17
- package/dist/esm/validations/intent-destinations.js.map +1 -1
- package/dist/esm/validations/intent-tokens.js +37 -25
- package/dist/esm/validations/intent-tokens.js.map +1 -1
- package/dist/esm/validations/intent.js +24 -10
- package/dist/esm/validations/intent.js.map +1 -1
- 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 +35 -14
- package/dist/esm/validations/solana-hook.js.map +1 -1
- package/dist/esm/validations/solana-op-budget.js +28 -12
- package/dist/esm/validations/solana-op-budget.js.map +1 -1
- package/dist/esm/validations/solana-op-wrap.js +10 -5
- package/dist/esm/validations/solana-op-wrap.js.map +1 -1
- package/dist/esm/validations/solana-required-actions.js +3 -3
- package/dist/esm/validations/solana-required-actions.js.map +1 -1
- package/dist/esm/validations/solana-transaction.js +81 -45
- package/dist/esm/validations/solana-transaction.js.map +1 -1
- package/dist/esm/validations/trade-grouping.js +21 -4
- package/dist/esm/validations/trade-grouping.js.map +1 -1
- package/dist/esm/validations/trades.js +75 -109
- package/dist/esm/validations/trades.js.map +1 -1
- package/dist/esm/validator.js +99 -53
- package/dist/esm/validator.js.map +1 -1
- package/dist/esm/whitelists/environment-config.js +84 -52
- package/dist/esm/whitelists/environment-config.js.map +1 -1
- package/dist/esm/whitelists/evm/index.js +1 -0
- package/dist/esm/whitelists/evm/index.js.map +1 -1
- package/dist/esm/whitelists/solana/intent-signature.js +4 -9
- package/dist/esm/whitelists/solana/intent-signature.js.map +1 -1
- package/dist/types/graylists/evm/token-permit-metadata.d.ts +2 -2
- package/dist/types/graylists/evm/token-permit-metadata.d.ts.map +1 -1
- package/dist/types/helpers/address.d.ts.map +1 -1
- package/dist/types/helpers/evm-trade-amounts.d.ts.map +1 -1
- package/dist/types/helpers/quote-mode.d.ts +6 -0
- package/dist/types/helpers/quote-mode.d.ts.map +1 -0
- package/dist/types/helpers/synthetic-native-wrap.d.ts.map +1 -1
- package/dist/types/helpers/zod.d.ts +9 -0
- package/dist/types/helpers/zod.d.ts.map +1 -1
- package/dist/types/types/request.d.ts +159 -159
- package/dist/types/types/request.d.ts.map +1 -1
- package/dist/types/types/response.d.ts +456 -456
- package/dist/types/types/response.d.ts.map +1 -1
- package/dist/types/types/validation.d.ts +5 -4
- package/dist/types/types/validation.d.ts.map +1 -1
- package/dist/types/validations/accumulative-token.d.ts +1 -1
- package/dist/types/validations/accumulative-token.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-op-budget.d.ts +1 -1
- package/dist/types/validations/evm-op-budget.d.ts.map +1 -1
- package/dist/types/validations/evm-op-wrap.d.ts +1 -1
- package/dist/types/validations/evm-op-wrap.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/evm-sign712-metamask.d.ts +1 -0
- package/dist/types/validations/evm-sign712-metamask.d.ts.map +1 -1
- package/dist/types/validations/evm-sign7702.d.ts.map +1 -1
- package/dist/types/validations/external-call.d.ts +2 -2
- package/dist/types/validations/external-call.d.ts.map +1 -1
- package/dist/types/validations/hooks-common.d.ts.map +1 -1
- package/dist/types/validations/intent-destinations.d.ts +3 -3
- 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/intent.d.ts +1 -1
- package/dist/types/validations/intent.d.ts.map +1 -1
- package/dist/types/validations/required-actions.d.ts.map +1 -1
- package/dist/types/validations/solana-op-budget.d.ts +1 -1
- package/dist/types/validations/solana-op-budget.d.ts.map +1 -1
- package/dist/types/validations/solana-op-wrap.d.ts +1 -1
- package/dist/types/validations/solana-op-wrap.d.ts.map +1 -1
- package/dist/types/validations/solana-required-actions.d.ts +1 -1
- package/dist/types/validations/solana-required-actions.d.ts.map +1 -1
- package/dist/types/validations/solana-transaction.d.ts +2 -2
- package/dist/types/validations/solana-transaction.d.ts.map +1 -1
- package/dist/types/validations/trade-grouping.d.ts +2 -0
- package/dist/types/validations/trade-grouping.d.ts.map +1 -1
- package/dist/types/validator.d.ts.map +1 -1
- package/dist/types/whitelists/environment-config.d.ts +17 -0
- package/dist/types/whitelists/environment-config.d.ts.map +1 -1
- package/dist/types/whitelists/evm/index.d.ts +1 -0
- package/dist/types/whitelists/evm/index.d.ts.map +1 -1
- package/dist/types/whitelists/solana/intent-signature.d.ts +1 -0
- package/dist/types/whitelists/solana/intent-signature.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -58,7 +58,13 @@ if (!result.ok) {
|
|
|
58
58
|
### API
|
|
59
59
|
|
|
60
60
|
```ts
|
|
61
|
-
createValidator(config:
|
|
61
|
+
createValidator(config: ValidatorConfig): Validator
|
|
62
|
+
|
|
63
|
+
type ValidatorConfig = {
|
|
64
|
+
environment: Environment;
|
|
65
|
+
allowLegacyHookV1?: boolean;
|
|
66
|
+
validateSolverExecutorAddress?: boolean;
|
|
67
|
+
};
|
|
62
68
|
|
|
63
69
|
type Validator = {
|
|
64
70
|
validate(url: string, request: object, response: object): ValidationResult;
|
|
@@ -105,8 +111,9 @@ The SDK is designed to run **between** receiving the API response and presenting
|
|
|
105
111
|
import { Environment } from "@debridge-finance/borderless-validation-sdk";
|
|
106
112
|
```
|
|
107
113
|
|
|
108
|
-
- `Environment.Prod` — production.
|
|
109
|
-
- `Environment.
|
|
114
|
+
- `Environment.Prod` — production without gasless features.
|
|
115
|
+
- `Environment.Gasless` — production with gasless features.
|
|
116
|
+
- `Environment.Dev` — developer environment (also known as Stage).
|
|
110
117
|
|
|
111
118
|
Pass the same environment your app is already configured for — don't make it user-selectable.
|
|
112
119
|
|
|
@@ -118,7 +125,7 @@ const response = await fetch(url, { ... });
|
|
|
118
125
|
const result = validator.validate(url, request, response);
|
|
119
126
|
```
|
|
120
127
|
|
|
121
|
-
The `url` argument is
|
|
128
|
+
The `url` argument is accepted for API compatibility and future endpoint checks. Pass the same string you handed to `fetch`; do not rely on URL validation until it is explicitly enabled in a release.
|
|
122
129
|
|
|
123
130
|
### 4. Handling violations
|
|
124
131
|
|
|
@@ -131,7 +138,7 @@ On `result.ok === false`:
|
|
|
131
138
|
|
|
132
139
|
### 5. Browser compatibility
|
|
133
140
|
|
|
134
|
-
The SDK is published as both CJS and ESM and uses only browser-compatible APIs (no `fs`, `crypto`, `Buffer`, `process`).
|
|
141
|
+
The SDK is published as both CJS and ESM and uses only browser-compatible APIs (no `fs`, `crypto`, `Buffer`, `process`).
|
|
135
142
|
|
|
136
143
|
Tree-shaking: the ESM build preserves named exports. Importing only `createValidator` will not pull in unused validators.
|
|
137
144
|
|
|
@@ -153,11 +160,17 @@ Full type declarations ship in `dist/types/`. `ValidatorConfig`, `ValidationResu
|
|
|
153
160
|
## Development
|
|
154
161
|
|
|
155
162
|
See [`CLAUDE.md`](./CLAUDE.md) for project conventions, validation rules, and security guidelines.
|
|
163
|
+
See [`src/README.md`](./src/README.md) for an overview of the source code structure and validation flow.
|
|
156
164
|
|
|
157
165
|
- Unit tests: `npm test`
|
|
158
|
-
-
|
|
166
|
+
- Unit test coverage: `npm run coverage`
|
|
159
167
|
- E2E tests (hit the staging API): `npm run test:e2e`
|
|
160
|
-
-
|
|
168
|
+
- E2E coverage: `npm run coverage:e2e`
|
|
169
|
+
- Full build: `npm run build`
|
|
170
|
+
- Build ESM only: `npm run build:esm`
|
|
171
|
+
- Build CJS only: `npm run build:cjs`
|
|
172
|
+
- Build type declarations only: `npm run build:types`
|
|
173
|
+
- Clean build output: `npm run clean`
|
|
161
174
|
|
|
162
175
|
## License
|
|
163
176
|
|
|
@@ -6,17 +6,50 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.TOKEN_PERMIT_METADATA = void 0;
|
|
8
8
|
exports.getTokenPermitMetadata = getTokenPermitMetadata;
|
|
9
|
-
// Note: addresses in this map MUST be lowercased.
|
|
10
9
|
const enums_1 = require("../../types/enums");
|
|
10
|
+
// Note: addresses in this map MUST be lowercased.
|
|
11
11
|
exports.TOKEN_PERMIT_METADATA = {
|
|
12
|
-
// TODO:
|
|
12
|
+
// TODO: extend this verified-only graylist with additional tokens after
|
|
13
|
+
// checking the exact token contract on the exact chain. Unknown tokens, or
|
|
14
|
+
// unverified fields such as version, must stay absent so the SDK skips
|
|
15
|
+
// best-effort metadata checks instead of risking false positives.
|
|
13
16
|
[enums_1.ChainId.Ethereum]: {
|
|
14
|
-
"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48": { name: "USD Coin", version: "2" },
|
|
15
|
-
"0x6b175474e89094c44da98b954eedeac495271d0f": { name: "Dai Stablecoin", version: "1" },
|
|
16
|
-
"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9": { name: "Aave Token"
|
|
17
|
+
"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48": { name: "USD Coin", version: "2" },
|
|
18
|
+
"0x6b175474e89094c44da98b954eedeac495271d0f": { name: "Dai Stablecoin", version: "1" },
|
|
19
|
+
"0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9": { name: "Aave Token" },
|
|
20
|
+
},
|
|
21
|
+
[enums_1.ChainId.Optimism]: {
|
|
22
|
+
"0x0b2c639c533813f4aa9d7837caf62653d097ff85": { name: "USD Coin", version: "2" },
|
|
23
|
+
},
|
|
24
|
+
[enums_1.ChainId.Polygon]: {
|
|
25
|
+
"0x3c499c542cef5e3811e1192ce70d8cc03d5c3359": { name: "USD Coin", version: "2" },
|
|
26
|
+
},
|
|
27
|
+
[enums_1.ChainId.Monad]: {
|
|
28
|
+
"0x754704bc059f8c67012fed69bc8a327a5aafb603": { name: "USDC", version: "2" },
|
|
29
|
+
},
|
|
30
|
+
[enums_1.ChainId.Sonic]: {
|
|
31
|
+
"0x29219dd400f2bf60e5a23d13be72b486d4038894": { name: "USDC", version: "2" },
|
|
32
|
+
},
|
|
33
|
+
[enums_1.ChainId.HyperEVM]: {
|
|
34
|
+
"0xb88339cb7199b77e23db6e890353e22632ba630f": { name: "USDC", version: "2" },
|
|
35
|
+
},
|
|
36
|
+
[enums_1.ChainId.Sei]: {
|
|
37
|
+
"0xe15fc38f6d8c56af07bbcbe3baf5708a2bf42392": { name: "USDC", version: "2" },
|
|
38
|
+
},
|
|
39
|
+
[enums_1.ChainId.Injective]: {
|
|
40
|
+
"0xa00c59ff5a080d2b954d0c75e46e22a0c371235a": { name: "USDC", version: "2" },
|
|
41
|
+
},
|
|
42
|
+
[enums_1.ChainId.Base]: {
|
|
43
|
+
"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913": { name: "USD Coin", version: "2" },
|
|
44
|
+
},
|
|
45
|
+
[enums_1.ChainId.Linea]: {
|
|
46
|
+
"0x176211869ca2b568f2a7d4ee941e073a821ee1ff": { name: "USDC", version: "2" },
|
|
17
47
|
},
|
|
18
48
|
[enums_1.ChainId.Arbitrum]: {
|
|
19
|
-
"0xaf88d065e77c8cc2239327c5edb3a432268e5831": { name: "USD Coin", version: "2" },
|
|
49
|
+
"0xaf88d065e77c8cc2239327c5edb3a432268e5831": { name: "USD Coin", version: "2" },
|
|
50
|
+
},
|
|
51
|
+
[enums_1.ChainId.Avalanche]: {
|
|
52
|
+
"0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e": { name: "USD Coin", version: "2" },
|
|
20
53
|
},
|
|
21
54
|
};
|
|
22
55
|
function getTokenPermitMetadata(realChainId, tokenAddress) {
|
|
@@ -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;;;
|
|
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;;;AAgEpE,wDAOC;AArED,6CAA4C;AAgB5C,kDAAkD;AACrC,QAAA,qBAAqB,GAA2B;IACzD,wEAAwE;IACxE,2EAA2E;IAC3E,uEAAuE;IACvE,kEAAkE;IAClE,CAAC,eAAO,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,eAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,4CAA4C,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE;KACnF;IACD,CAAC,eAAO,CAAC,OAAO,CAAC,EAAE;QACf,4CAA4C,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE;KACnF;IACD,CAAC,eAAO,CAAC,KAAK,CAAC,EAAE;QACb,4CAA4C,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;KAC/E;IACD,CAAC,eAAO,CAAC,KAAK,CAAC,EAAE;QACb,4CAA4C,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;KAC/E;IACD,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,4CAA4C,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;KAC/E;IACD,CAAC,eAAO,CAAC,GAAG,CAAC,EAAE;QACX,4CAA4C,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;KAC/E;IACD,CAAC,eAAO,CAAC,SAAS,CAAC,EAAE;QACjB,4CAA4C,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;KAC/E;IACD,CAAC,eAAO,CAAC,IAAI,CAAC,EAAE;QACZ,4CAA4C,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE;KACnF;IACD,CAAC,eAAO,CAAC,KAAK,CAAC,EAAE;QACb,4CAA4C,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE;KAC/E;IACD,CAAC,eAAO,CAAC,QAAQ,CAAC,EAAE;QAChB,4CAA4C,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE;KACnF;IACD,CAAC,eAAO,CAAC,SAAS,CAAC,EAAE;QACjB,4CAA4C,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE;KACnF;CACJ,CAAC;AAEF,SAAgB,sBAAsB,CAClC,WAAoB,EACpB,YAAoB;IAEpB,MAAM,KAAK,GAAG,6BAAqB,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -88,6 +88,12 @@ function addressToHexByValue(address) {
|
|
|
88
88
|
return applyEngineToHex(address, detectChainEngine(address));
|
|
89
89
|
}
|
|
90
90
|
function applyEngineToHex(address, engine) {
|
|
91
|
+
// API address parsing treats 0x-prefixed values as raw hex for every
|
|
92
|
+
// chain, including Tron. Preserve that behavior before engine-specific
|
|
93
|
+
// human-readable decoding.
|
|
94
|
+
if (address.startsWith("0x")) {
|
|
95
|
+
return address.toLowerCase();
|
|
96
|
+
}
|
|
91
97
|
if (engine === enums_1.ChainEngine.EVM) {
|
|
92
98
|
return address.toLowerCase();
|
|
93
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/helpers/address.ts"],"names":[],"mappings":";;;;;;AAQA,wCAIC;AAED,sCAOC;AAKD,kDAKC;AAGD,4CAGC;AAID,8CAIC;AAGD,0DAEC;AAUD,sCAEC;AAKD,oCAEC;AAID,kDAEC;
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/helpers/address.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,24 +12,28 @@ function computeIntentId(intent) {
|
|
|
12
12
|
return (0, viem_1.keccak256)(encoded);
|
|
13
13
|
}
|
|
14
14
|
function convertToIntentStruct(intent) {
|
|
15
|
+
const intentRealChainId = (0, subscription_to_chain_id_1.resolveChainId)(intent.intentChainId) ?? intent.intentChainId;
|
|
15
16
|
return {
|
|
16
17
|
intentChainId: intent.intentChainId,
|
|
17
|
-
intentOwner: intent.intentOwner,
|
|
18
|
+
intentOwner: (0, address_1.addressToHex)(intentRealChainId, intent.intentOwner),
|
|
18
19
|
receiverDetails: convertAllowedAddresses(intent.receiverDetails),
|
|
19
|
-
inputToken: convertInputTokens(intent.inputToken),
|
|
20
|
-
giveToken: convertGiveTokens(intent.giveToken),
|
|
21
|
-
takeToken: convertTakeTokens(intent.takeToken),
|
|
20
|
+
inputToken: convertInputTokens(intentRealChainId, intent.inputToken),
|
|
21
|
+
giveToken: convertGiveTokens(intentRealChainId, intent.giveToken),
|
|
22
|
+
takeToken: convertTakeTokens(intent.takeToken, intentRealChainId),
|
|
22
23
|
expirationTimestamp: BigInt(intent.expirationTimestamp),
|
|
23
24
|
intentTimestamp: BigInt(intent.intentTimestamp),
|
|
24
|
-
srcAllowedSender: (intent.srcAllowedSender ?? [])
|
|
25
|
+
srcAllowedSender: (intent.srcAllowedSender ?? [])
|
|
26
|
+
.map(address => (0, address_1.addressToHex)(intentRealChainId, address)),
|
|
25
27
|
executionMetadata: (intent.executionMetadata ?? viem_1.zeroHash),
|
|
26
28
|
isAnyDlnMetadataAllowed: !intent.dlnMetadata,
|
|
27
29
|
dlnMetadata: (intent.dlnMetadata ?? "0x"),
|
|
28
30
|
externalCallHash: (intent.externalCallHash ?? viem_1.zeroHash),
|
|
29
31
|
combinedInteractions: "0x",
|
|
30
|
-
allowedCancelBeneficiary:
|
|
32
|
+
allowedCancelBeneficiary: intent.allowedCancelBeneficiary
|
|
33
|
+
? (0, address_1.addressToHex)(intentRealChainId, intent.allowedCancelBeneficiary)
|
|
34
|
+
: viem_1.zeroAddress,
|
|
31
35
|
dstAuthorityAddress: convertAllowedAddresses(intent.dstAuthorityAddress),
|
|
32
|
-
intentAuthority: intent.intentAuthority,
|
|
36
|
+
intentAuthority: (0, address_1.addressToHex)(intentRealChainId, intent.intentAuthority),
|
|
33
37
|
};
|
|
34
38
|
}
|
|
35
39
|
// Encodes addresses as raw bytes — non-EVM strings can't be passed as-is.
|
|
@@ -49,32 +53,32 @@ function convertAllowedAddresses(details) {
|
|
|
49
53
|
return { allowedAddress, chains, isAnyChain };
|
|
50
54
|
});
|
|
51
55
|
}
|
|
52
|
-
function convertInputTokens(tokens) {
|
|
56
|
+
function convertInputTokens(intentRealChainId, tokens) {
|
|
53
57
|
if (!tokens)
|
|
54
58
|
return [];
|
|
55
59
|
return tokens.map(t => ({
|
|
56
|
-
token: t.address,
|
|
60
|
+
token: (0, address_1.addressToHex)(intentRealChainId, t.address),
|
|
57
61
|
minPartialAmount: (0, integer_1.parseIntegerString)(t.minPartialAmount),
|
|
58
62
|
maxPartialAmount: (0, integer_1.parseIntegerString)(t.maxPartialAmount),
|
|
59
63
|
budget: (0, integer_1.parseIntegerString)(t.constraintBudget),
|
|
60
64
|
}));
|
|
61
65
|
}
|
|
62
|
-
function convertGiveTokens(tokens) {
|
|
66
|
+
function convertGiveTokens(intentRealChainId, tokens) {
|
|
63
67
|
if (!tokens)
|
|
64
68
|
return [];
|
|
65
69
|
return tokens.map(t => ({
|
|
66
|
-
inputToken: t.inputTokenAddress,
|
|
67
|
-
giveToken: t.giveTokenAddress,
|
|
70
|
+
inputToken: (0, address_1.addressToHex)(intentRealChainId, t.inputTokenAddress),
|
|
71
|
+
giveToken: (0, address_1.addressToHex)(intentRealChainId, t.giveTokenAddress),
|
|
68
72
|
numerator: (0, integer_1.parseIntegerString)(t.numerator),
|
|
69
73
|
denominator: Number(t.denominator),
|
|
70
74
|
}));
|
|
71
75
|
}
|
|
72
76
|
// Encode addresses as raw bytes — non-EVM strings can't be passed as-is.
|
|
73
|
-
function convertTakeTokens(tokens) {
|
|
77
|
+
function convertTakeTokens(tokens, intentRealChainId) {
|
|
74
78
|
return tokens.map(t => {
|
|
75
79
|
const realChainId = (0, subscription_to_chain_id_1.resolveChainId)(t.takeTokenChainId) ?? t.takeTokenChainId;
|
|
76
80
|
return {
|
|
77
|
-
giveToken: t.fromTokenAddress,
|
|
81
|
+
giveToken: (0, address_1.addressToHex)(intentRealChainId, t.fromTokenAddress),
|
|
78
82
|
takeTokenChain: t.takeTokenChainId,
|
|
79
83
|
takeToken: (0, address_1.addressToHex)(realChainId, t.takeTokenAddress),
|
|
80
84
|
numerator: (0, integer_1.parseIntegerString)(t.numerator),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evm-intent-id.js","sourceRoot":"","sources":["../../../src/helpers/evm-intent-id.ts"],"names":[],"mappings":";;AAOA,0CAIC;AAXD,+BAA6E;AAE7E,2DAA+D;AAC/D,uCAA8D;AAC9D,qFAAwE;AACxE,uCAA+C;AAE/C,SAAgB,eAAe,CAAC,MAAsB;IAClD,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,IAAA,0BAAmB,EAAC,4CAAwB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,OAAO,IAAA,gBAAS,EAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAsB;IACjD,OAAO;QACH,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,WAAW,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"evm-intent-id.js","sourceRoot":"","sources":["../../../src/helpers/evm-intent-id.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,13 +40,14 @@ function sumTradeAmounts(trades, tokenAddress, realChainId, responseTrades) {
|
|
|
40
40
|
try {
|
|
41
41
|
sum += (0, integer_1.parseIntegerString)(responseAmount);
|
|
42
42
|
}
|
|
43
|
-
catch {
|
|
43
|
+
catch (error) {
|
|
44
44
|
return {
|
|
45
45
|
violations: [{
|
|
46
46
|
code: types_1.ViolationCode.TradeAmountInvalid,
|
|
47
47
|
message: "response.trades[].srcChainTokenIn.amount is not a valid number",
|
|
48
48
|
path: `response.trades[${i}].srcChainTokenIn.amount`,
|
|
49
49
|
actual: responseAmount,
|
|
50
|
+
details: error,
|
|
50
51
|
}],
|
|
51
52
|
};
|
|
52
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evm-trade-amounts.js","sourceRoot":"","sources":["../../../src/helpers/evm-trade-amounts.ts"],"names":[],"mappings":";;AA2BA,
|
|
1
|
+
{"version":3,"file":"evm-trade-amounts.js","sourceRoot":"","sources":["../../../src/helpers/evm-trade-amounts.ts"],"names":[],"mappings":";;AA2BA,0CAmDC;AA9ED,oCAMkB;AAClB,uCAA6C;AAC7C,2CAAyD;AACzD,uCAA+C;AAO/C,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,6EAA6E;AAC7E,EAAE;AACF,8EAA8E;AAC9E,4EAA4E;AAC5E,qEAAqE;AACrE,6EAA6E;AAC7E,6EAA6E;AAC7E,+CAA+C;AAC/C,SAAgB,eAAe,CAC3B,MAAsB,EACtB,YAAoB,EACpB,WAAoB,EACpB,cAA6C;IAE7C,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,6FAA6F;IAC7F,MAAM,aAAa,GAAG,IAAA,sCAA0B,EAAC,YAAY,EAAE,WAAW,CAAC,IAAI,YAAY,CAAC;IAC5F,MAAM,UAAU,GAAG,IAAA,0BAAgB,EAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAEhE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,kBAAkB,GAAG,IAAA,sCAA0B,EAAC,KAAK,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAC1F,MAAM,oBAAoB,GAAG,IAAA,0BAAgB,EACzC,WAAW,EAAE,kBAAkB,IAAI,KAAK,CAAC,eAAe,CAC3D,CAAC;QACF,IAAI,oBAAoB,KAAK,UAAU,EAAE,CAAC;YACtC,SAAS;QACb,CAAC;QAED,UAAU,GAAG,IAAI,CAAC;QAClB,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QACxC,qEAAqE;QACrE,uBAAuB;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;YACjB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QAED,MAAM,cAAc,GAAG,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC;QAC5D,IAAI,CAAC;YACD,GAAG,IAAI,IAAA,4BAAkB,EAAC,cAAc,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO;gBACH,UAAU,EAAE,CAAC;wBACT,IAAI,EAAE,qBAAa,CAAC,kBAAkB;wBACtC,OAAO,EACH,gEAAgE;wBACpE,IAAI,EAAE,mBAAmB,CAAC,0BAA0B;wBACpD,MAAM,EAAE,cAAc;wBACtB,OAAO,EAAE,KAAK;qBACjB,CAAC;aACL,CAAC;QACN,CAAC;IACL,CAAC;IAED,oDAAoD;IACpD,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IAEpC,OAAO,EAAE,GAAG,EAAE,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasAllExecutionAddresses = hasAllExecutionAddresses;
|
|
4
|
+
exports.hasAnyExecutionAddress = hasAnyExecutionAddress;
|
|
5
|
+
exports.isQuoteModeRequest = isQuoteModeRequest;
|
|
6
|
+
exports.hasUnverifiableQuoteGrouping = hasUnverifiableQuoteGrouping;
|
|
7
|
+
function hasAllExecutionAddresses(trade) {
|
|
8
|
+
return trade.srcChainAuthorityAddress !== undefined
|
|
9
|
+
&& trade.dstChainTokenOutRecipient !== undefined
|
|
10
|
+
&& trade.dstChainAuthorityAddress !== undefined;
|
|
11
|
+
}
|
|
12
|
+
function hasAnyExecutionAddress(trade) {
|
|
13
|
+
return trade.srcChainAuthorityAddress !== undefined
|
|
14
|
+
|| trade.dstChainTokenOutRecipient !== undefined
|
|
15
|
+
|| trade.dstChainAuthorityAddress !== undefined;
|
|
16
|
+
}
|
|
17
|
+
function isQuoteModeRequest(trades) {
|
|
18
|
+
return !trades.every(hasAllExecutionAddresses);
|
|
19
|
+
}
|
|
20
|
+
function hasUnverifiableQuoteGrouping(trades) {
|
|
21
|
+
return isQuoteModeRequest(trades) && trades.some(hasAnyExecutionAddress);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=quote-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quote-mode.js","sourceRoot":"","sources":["../../../src/helpers/quote-mode.ts"],"names":[],"mappings":";;AAEA,4DAIC;AAED,wDAIC;AAED,gDAEC;AAED,oEAEC;AAlBD,SAAgB,wBAAwB,CAAC,KAAmB;IACxD,OAAO,KAAK,CAAC,wBAAwB,KAAK,SAAS;WAC5C,KAAK,CAAC,yBAAyB,KAAK,SAAS;WAC7C,KAAK,CAAC,wBAAwB,KAAK,SAAS,CAAC;AACxD,CAAC;AAED,SAAgB,sBAAsB,CAAC,KAAmB;IACtD,OAAO,KAAK,CAAC,wBAAwB,KAAK,SAAS;WAC5C,KAAK,CAAC,yBAAyB,KAAK,SAAS;WAC7C,KAAK,CAAC,wBAAwB,KAAK,SAAS,CAAC;AACxD,CAAC;AAED,SAAgB,kBAAkB,CAAC,MAA+B;IAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACnD,CAAC;AAED,SAAgB,4BAA4B,CAAC,MAA+B;IACxE,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -11,14 +11,15 @@ exports.SYNTHETIC_NATIVE_WRAP_INTENT_ID = "wrap";
|
|
|
11
11
|
// In this path the response intent is only a container for the Wrap action; it
|
|
12
12
|
// is not a normal signed intent and intentionally has a minimal token shape.
|
|
13
13
|
function isSyntheticNativeWrapBundle(request, response) {
|
|
14
|
-
if (!isSyntheticNativeWrapRequest(request))
|
|
15
|
-
return false;
|
|
16
14
|
if (response.trades.length !== 1 || response.intents.length !== 1)
|
|
17
15
|
return false;
|
|
18
|
-
|
|
16
|
+
const responseHasSyntheticWrapMarkers = (response.trades[0].relatedIntentId === exports.SYNTHETIC_NATIVE_WRAP_INTENT_ID
|
|
19
17
|
&& response.intents[0].intent.intentId === exports.SYNTHETIC_NATIVE_WRAP_INTENT_ID);
|
|
18
|
+
if (!responseHasSyntheticWrapMarkers)
|
|
19
|
+
return false;
|
|
20
|
+
return isSyntheticNativeWrapRequest(request, responseHasSyntheticWrapMarkers);
|
|
20
21
|
}
|
|
21
|
-
function isSyntheticNativeWrapRequest(request) {
|
|
22
|
+
function isSyntheticNativeWrapRequest(request, responseHasSyntheticWrapMarkers) {
|
|
22
23
|
if (request.enableAccountAbstraction)
|
|
23
24
|
return false;
|
|
24
25
|
if (request.trades.length !== 1)
|
|
@@ -38,19 +39,18 @@ function isSyntheticNativeWrapRequest(request) {
|
|
|
38
39
|
return false;
|
|
39
40
|
if (!(0, address_1.addressEquals)(realChainId, wrapped, trade.dstChainTokenOut))
|
|
40
41
|
return false;
|
|
41
|
-
return authorityMatchesRecipient(
|
|
42
|
+
return authorityMatchesRecipient(trade, realChainId, responseHasSyntheticWrapMarkers);
|
|
42
43
|
}
|
|
43
|
-
function authorityMatchesRecipient(
|
|
44
|
-
const trade = request.trades[0];
|
|
44
|
+
function authorityMatchesRecipient(trade, realChainId, responseHasSyntheticWrapMarkers) {
|
|
45
45
|
if (trade.srcChainAuthorityAddress === undefined && trade.dstChainTokenOutRecipient === undefined) {
|
|
46
46
|
return true;
|
|
47
47
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return false;
|
|
51
|
-
if (trade.srcChainAuthorityAddress === undefined || trade.dstChainTokenOutRecipient === undefined) {
|
|
52
|
-
return false;
|
|
48
|
+
if (trade.srcChainAuthorityAddress !== undefined && trade.dstChainTokenOutRecipient !== undefined) {
|
|
49
|
+
return (0, address_1.addressEquals)(realChainId, trade.srcChainAuthorityAddress, trade.dstChainTokenOutRecipient);
|
|
53
50
|
}
|
|
54
|
-
|
|
51
|
+
// Quote-mode requests may omit one execution-side address. A synthetic
|
|
52
|
+
// wrap-marked response proves the missing address was resolved to the same
|
|
53
|
+
// execution identity before the response was built.
|
|
54
|
+
return responseHasSyntheticWrapMarkers;
|
|
55
55
|
}
|
|
56
56
|
//# sourceMappingURL=synthetic-native-wrap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"synthetic-native-wrap.js","sourceRoot":"","sources":["../../../src/helpers/synthetic-native-wrap.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"synthetic-native-wrap.js","sourceRoot":"","sources":["../../../src/helpers/synthetic-native-wrap.ts"],"names":[],"mappings":";;;AAgBA,kEAaC;AA7BD,oCAMkB;AAClB,uCAAyE;AACzE,2CAAyD;AACzD,qFAAwE;AAE3D,QAAA,+BAA+B,GAAG,MAAM,CAAC;AAEtD,2EAA2E;AAC3E,+EAA+E;AAC/E,6EAA6E;AAC7E,SAAgB,2BAA2B,CACvC,OAA8B,EAC9B,QAAgC;IAEhC,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEhF,MAAM,+BAA+B,GAAG,CACpC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,KAAK,uCAA+B;WACnE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,KAAK,uCAA+B,CAC7E,CAAC;IACF,IAAI,CAAC,+BAA+B;QAAE,OAAO,KAAK,CAAC;IAEnD,OAAO,4BAA4B,CAAC,OAAO,EAAE,+BAA+B,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,4BAA4B,CACjC,OAA8B,EAC9B,+BAAwC;IAExC,IAAI,OAAO,CAAC,wBAAwB;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAE9C,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAExD,MAAM,WAAW,GAAG,IAAA,yCAAc,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACrD,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,IAAA,wBAAc,EAAC,WAAW,CAAC,KAAK,mBAAW,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAClE,IAAI,CAAC,IAAA,uBAAa,EAAC,KAAK,CAAC,eAAe,EAAE,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAErE,MAAM,OAAO,GAAG,IAAA,sCAA0B,EAAC,KAAK,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAC/E,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,CAAC,IAAA,uBAAa,EAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,gBAAgB,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/E,OAAO,yBAAyB,CAAC,KAAK,EAAE,WAAW,EAAE,+BAA+B,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,yBAAyB,CAC9B,KAAmB,EACnB,WAAoB,EACpB,+BAAwC;IAExC,IAAI,KAAK,CAAC,wBAAwB,KAAK,SAAS,IAAI,KAAK,CAAC,yBAAyB,KAAK,SAAS,EAAE,CAAC;QAChG,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,KAAK,CAAC,wBAAwB,KAAK,SAAS,IAAI,KAAK,CAAC,yBAAyB,KAAK,SAAS,EAAE,CAAC;QAChG,OAAO,IAAA,uBAAa,EAChB,WAAW,EACX,KAAK,CAAC,wBAAwB,EAC9B,KAAK,CAAC,yBAAyB,CAClC,CAAC;IACN,CAAC;IAED,uEAAuE;IACvE,2EAA2E;IAC3E,oDAAoD;IACpD,OAAO,+BAA+B,CAAC;AAC3C,CAAC"}
|
package/dist/cjs/helpers/zod.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.formatPath = formatPath;
|
|
4
|
+
exports.nullAsUndefined = nullAsUndefined;
|
|
5
|
+
exports.nullableOptional = nullableOptional;
|
|
6
|
+
exports.apiBoolean = apiBoolean;
|
|
7
|
+
exports.apiBooleanSchema = apiBooleanSchema;
|
|
8
|
+
exports.optionalApiBooleanSchema = optionalApiBooleanSchema;
|
|
9
|
+
exports.defaultedApiBooleanSchema = defaultedApiBooleanSchema;
|
|
10
|
+
exports.apiStringSchema = apiStringSchema;
|
|
11
|
+
exports.apiNumberSchema = apiNumberSchema;
|
|
12
|
+
const zod_1 = require("zod");
|
|
4
13
|
function formatPath(segments) {
|
|
5
14
|
return segments.reduce((result, segment) => {
|
|
6
15
|
if (typeof segment === "number")
|
|
@@ -9,4 +18,50 @@ function formatPath(segments) {
|
|
|
9
18
|
return result ? `${result}.${key}` : key;
|
|
10
19
|
}, "");
|
|
11
20
|
}
|
|
21
|
+
function nullAsUndefined(value) {
|
|
22
|
+
return value === null ? undefined : value;
|
|
23
|
+
}
|
|
24
|
+
function nullableOptional(schema) {
|
|
25
|
+
return zod_1.z.preprocess(nullAsUndefined, schema.optional());
|
|
26
|
+
}
|
|
27
|
+
function apiBoolean(value) {
|
|
28
|
+
if (value === undefined)
|
|
29
|
+
return undefined;
|
|
30
|
+
if (value === null)
|
|
31
|
+
return null;
|
|
32
|
+
return Boolean(value);
|
|
33
|
+
}
|
|
34
|
+
function apiBooleanSchema() {
|
|
35
|
+
return zod_1.z.preprocess(apiBoolean, zod_1.z.boolean());
|
|
36
|
+
}
|
|
37
|
+
function optionalApiBooleanSchema() {
|
|
38
|
+
return zod_1.z.preprocess(value => value === null ? undefined : apiBoolean(value), zod_1.z.boolean().optional());
|
|
39
|
+
}
|
|
40
|
+
function defaultedApiBooleanSchema(defaultValue) {
|
|
41
|
+
return zod_1.z.preprocess(apiBoolean, zod_1.z.boolean().optional()).default(defaultValue);
|
|
42
|
+
}
|
|
43
|
+
function apiScalarString(value) {
|
|
44
|
+
if (value === undefined || value === null)
|
|
45
|
+
return value;
|
|
46
|
+
if (typeof value === "string")
|
|
47
|
+
return value;
|
|
48
|
+
if (typeof value === "number" || typeof value === "boolean")
|
|
49
|
+
return String(value);
|
|
50
|
+
return value;
|
|
51
|
+
}
|
|
52
|
+
function apiStringSchema() {
|
|
53
|
+
return zod_1.z.preprocess(apiScalarString, zod_1.z.string());
|
|
54
|
+
}
|
|
55
|
+
function apiNumber(value) {
|
|
56
|
+
if (value === undefined || value === null)
|
|
57
|
+
return value;
|
|
58
|
+
if (typeof value === "number")
|
|
59
|
+
return value;
|
|
60
|
+
if (typeof value === "string" || typeof value === "boolean")
|
|
61
|
+
return Number(value);
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
function apiNumberSchema() {
|
|
65
|
+
return zod_1.z.preprocess(apiNumber, zod_1.z.number());
|
|
66
|
+
}
|
|
12
67
|
//# sourceMappingURL=zod.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zod.js","sourceRoot":"","sources":["../../../src/helpers/zod.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"zod.js","sourceRoot":"","sources":["../../../src/helpers/zod.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,20 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.BundleCreationRequestSchema = exports.RequestTradeSchema = exports.RequestMetadataEntrySchema = exports.RequestCostTokenSchema = exports.RequestHookSchema = exports.RequestHookV1Schema = exports.RequestHookV2Schema = exports.RequestPlaceholderSchema = exports.RequestGasCompensationInfoSchema = void 0;
|
|
4
4
|
exports.isRequestHookV2 = isRequestHookV2;
|
|
5
5
|
const zod_1 = require("zod");
|
|
6
|
+
const zod_2 = require("../helpers/zod");
|
|
6
7
|
const enums_1 = require("./enums");
|
|
7
8
|
exports.RequestGasCompensationInfoSchema = zod_1.z.object({
|
|
8
|
-
tokenAddress:
|
|
9
|
+
tokenAddress: (0, zod_2.apiStringSchema)(),
|
|
9
10
|
chainId: zod_1.z.number(),
|
|
10
|
-
sender:
|
|
11
|
+
sender: (0, zod_2.apiStringSchema)(),
|
|
11
12
|
});
|
|
12
13
|
// tokenAddress and address are required only for eager placeholders.
|
|
13
14
|
// Deferred placeholders are filled at submit time, so trade-group fields are not needed.
|
|
14
15
|
exports.RequestPlaceholderSchema = zod_1.z.object({
|
|
15
|
-
nameVariable:
|
|
16
|
-
tokenAddress:
|
|
17
|
-
address:
|
|
18
|
-
additionalAmount:
|
|
19
|
-
type: zod_1.z.enum(enums_1.PlaceholderType)
|
|
16
|
+
nameVariable: (0, zod_2.apiStringSchema)(),
|
|
17
|
+
tokenAddress: (0, zod_2.nullableOptional)((0, zod_2.apiStringSchema)()),
|
|
18
|
+
address: (0, zod_2.nullableOptional)((0, zod_2.apiStringSchema)()),
|
|
19
|
+
additionalAmount: (0, zod_2.nullableOptional)((0, zod_2.apiStringSchema)()),
|
|
20
|
+
type: (0, zod_2.nullableOptional)(zod_1.z.enum(enums_1.PlaceholderType)),
|
|
20
21
|
}).superRefine((placeholder, ctx) => {
|
|
21
22
|
const isEager = placeholder.type === undefined || placeholder.type === enums_1.PlaceholderType.Eager;
|
|
22
23
|
if (!isEager)
|
|
@@ -38,37 +39,51 @@ exports.RequestPlaceholderSchema = zod_1.z.object({
|
|
|
38
39
|
});
|
|
39
40
|
exports.RequestHookV2Schema = zod_1.z.object({
|
|
40
41
|
chainId: zod_1.z.number(),
|
|
41
|
-
from:
|
|
42
|
-
to:
|
|
43
|
-
data:
|
|
44
|
-
value:
|
|
45
|
-
isAtomic:
|
|
42
|
+
from: (0, zod_2.apiStringSchema)(),
|
|
43
|
+
to: (0, zod_2.nullableOptional)((0, zod_2.apiStringSchema)()),
|
|
44
|
+
data: (0, zod_2.apiStringSchema)(),
|
|
45
|
+
value: (0, zod_2.nullableOptional)((0, zod_2.apiStringSchema)()),
|
|
46
|
+
isAtomic: (0, zod_2.apiBooleanSchema)(),
|
|
46
47
|
placeHolders: zod_1.z.array(exports.RequestPlaceholderSchema),
|
|
47
|
-
gasCompensationInfo: exports.RequestGasCompensationInfoSchema
|
|
48
|
-
type: zod_1.z.enum(enums_1.BundleHookType)
|
|
49
|
-
gasLimit:
|
|
48
|
+
gasCompensationInfo: (0, zod_2.nullableOptional)(exports.RequestGasCompensationInfoSchema),
|
|
49
|
+
type: (0, zod_2.nullableOptional)(zod_1.z.enum(enums_1.BundleHookType)),
|
|
50
|
+
gasLimit: (0, zod_2.nullableOptional)((0, zod_2.apiStringSchema)()),
|
|
50
51
|
});
|
|
51
52
|
exports.RequestHookV1Schema = zod_1.z.object({
|
|
52
53
|
chainId: zod_1.z.number(),
|
|
53
|
-
from:
|
|
54
|
-
to:
|
|
55
|
-
data:
|
|
56
|
-
value:
|
|
57
|
-
isAtomic:
|
|
58
|
-
tokenAddress:
|
|
59
|
-
preparePreRequiredActions:
|
|
60
|
-
additionalAmountForPlaceholder:
|
|
61
|
-
allowedSender:
|
|
62
|
-
version: zod_1.z.string()
|
|
54
|
+
from: (0, zod_2.apiStringSchema)(),
|
|
55
|
+
to: (0, zod_2.apiStringSchema)(),
|
|
56
|
+
data: (0, zod_2.apiStringSchema)(),
|
|
57
|
+
value: (0, zod_2.apiStringSchema)(),
|
|
58
|
+
isAtomic: (0, zod_2.apiBooleanSchema)(),
|
|
59
|
+
tokenAddress: (0, zod_2.apiStringSchema)(),
|
|
60
|
+
preparePreRequiredActions: (0, zod_2.optionalApiBooleanSchema)(),
|
|
61
|
+
additionalAmountForPlaceholder: (0, zod_2.nullableOptional)((0, zod_2.apiStringSchema)()),
|
|
62
|
+
allowedSender: (0, zod_2.nullableOptional)((0, zod_2.apiStringSchema)()),
|
|
63
|
+
version: (0, zod_2.nullableOptional)(zod_1.z.string()),
|
|
63
64
|
});
|
|
64
65
|
exports.RequestHookSchema = zod_1.z.union([exports.RequestHookV2Schema, exports.RequestHookV1Schema]);
|
|
65
66
|
function isRequestHookV2(hook) {
|
|
66
67
|
return "placeHolders" in hook;
|
|
67
68
|
}
|
|
68
69
|
exports.RequestCostTokenSchema = zod_1.z.object({
|
|
69
|
-
chainId:
|
|
70
|
-
tokenAddress:
|
|
70
|
+
chainId: (0, zod_2.apiNumberSchema)(),
|
|
71
|
+
tokenAddress: (0, zod_2.apiStringSchema)(),
|
|
71
72
|
});
|
|
73
|
+
// The API applies field-specific string transforms for these two trade flags.
|
|
74
|
+
// Generic request booleans use API-compatible Boolean() coercion below; these
|
|
75
|
+
// fields keep their custom API semantics instead.
|
|
76
|
+
const RequestPrependOperatingExpensesSchema = zod_1.z.preprocess(value => value === null ? undefined : typeof value === "string" ? value !== "false" : value, zod_1.z.boolean().optional());
|
|
77
|
+
const RequestPtpSchema = zod_1.z.preprocess(value => value === null ? undefined : typeof value === "string" ? value === "true" : value, zod_1.z.boolean().optional());
|
|
78
|
+
// Explicit null has the same wire semantics as an omitted expirationTimestamp:
|
|
79
|
+
// the server chooses the effective bundle/on-chain expiration values.
|
|
80
|
+
const RequestExpirationTimestampSchema = (0, zod_2.nullableOptional)(zod_1.z.number());
|
|
81
|
+
// Some request fields are normalized by the API before validation. Mirror only
|
|
82
|
+
// those compatibility conversions at the schema boundary; semantic validators
|
|
83
|
+
// still check the normalized values below.
|
|
84
|
+
const RequestOptionalAmountStringSchema = (0, zod_2.nullableOptional)((0, zod_2.apiStringSchema)());
|
|
85
|
+
const RequestTradeReferralCodeSchema = (0, zod_2.nullableOptional)(zod_1.z.union([zod_1.z.number(), zod_1.z.string()]));
|
|
86
|
+
const RequestHookListSchema = zod_1.z.preprocess(value => value ? value : undefined, zod_1.z.array(exports.RequestHookSchema).optional());
|
|
72
87
|
// Free-form integrator metadata. Echoed back in the response unchanged;
|
|
73
88
|
// validated for round-trip equality.
|
|
74
89
|
exports.RequestMetadataEntrySchema = zod_1.z.object({
|
|
@@ -88,40 +103,40 @@ exports.RequestTradeSchema = zod_1.z.object({
|
|
|
88
103
|
srcChainTokenInAmount: zod_1.z.string(),
|
|
89
104
|
dstChainId: zod_1.z.number(),
|
|
90
105
|
dstChainTokenOut: zod_1.z.string(),
|
|
91
|
-
dstChainTokenOutAmount:
|
|
92
|
-
srcChainAuthorityAddress: zod_1.z.string()
|
|
93
|
-
dstChainTokenOutRecipient: zod_1.z.string()
|
|
94
|
-
dstChainAuthorityAddress: zod_1.z.string()
|
|
95
|
-
partnerFeeBps: zod_1.z.number()
|
|
96
|
-
allowedTaker: zod_1.z.string()
|
|
97
|
-
dlnHook: zod_1.z.string()
|
|
98
|
-
prependOperatingExpenses:
|
|
99
|
-
ptp:
|
|
100
|
-
dlnMetadata: zod_1.z.string()
|
|
101
|
-
referralCode:
|
|
102
|
-
srcAllowedCancelBeneficiary: zod_1.z.string()
|
|
106
|
+
dstChainTokenOutAmount: RequestOptionalAmountStringSchema,
|
|
107
|
+
srcChainAuthorityAddress: (0, zod_2.nullableOptional)(zod_1.z.string()),
|
|
108
|
+
dstChainTokenOutRecipient: (0, zod_2.nullableOptional)(zod_1.z.string()),
|
|
109
|
+
dstChainAuthorityAddress: (0, zod_2.nullableOptional)(zod_1.z.string()),
|
|
110
|
+
partnerFeeBps: (0, zod_2.nullableOptional)(zod_1.z.number()),
|
|
111
|
+
allowedTaker: (0, zod_2.nullableOptional)(zod_1.z.string()),
|
|
112
|
+
dlnHook: (0, zod_2.nullableOptional)(zod_1.z.string()),
|
|
113
|
+
prependOperatingExpenses: RequestPrependOperatingExpensesSchema,
|
|
114
|
+
ptp: RequestPtpSchema,
|
|
115
|
+
dlnMetadata: (0, zod_2.nullableOptional)(zod_1.z.string()),
|
|
116
|
+
referralCode: RequestTradeReferralCodeSchema,
|
|
117
|
+
srcAllowedCancelBeneficiary: (0, zod_2.nullableOptional)(zod_1.z.string()),
|
|
103
118
|
// Field is intentionally absent from the public API schema but is accepted
|
|
104
119
|
// by the server and round-trips into the response intent. Security-critical
|
|
105
120
|
// for execution-mode validation.
|
|
106
|
-
srcAllowedSender: zod_1.z.string()
|
|
121
|
+
srcAllowedSender: (0, zod_2.nullableOptional)(zod_1.z.string()),
|
|
107
122
|
});
|
|
108
123
|
exports.BundleCreationRequestSchema = zod_1.z.object({
|
|
109
124
|
requestId: zod_1.z.string(),
|
|
110
|
-
expirationTimestamp:
|
|
111
|
-
enableAccountAbstraction:
|
|
112
|
-
isAtomic:
|
|
125
|
+
expirationTimestamp: RequestExpirationTimestampSchema,
|
|
126
|
+
enableAccountAbstraction: (0, zod_2.apiBooleanSchema)(),
|
|
127
|
+
isAtomic: (0, zod_2.defaultedApiBooleanSchema)(true),
|
|
113
128
|
tradingAlgorithm: zod_1.z.enum(enums_1.TradingAlgorithm).optional().default(enums_1.TradingAlgorithm.Market),
|
|
114
|
-
approveAmountFlag: zod_1.z.enum(enums_1.ApproveAmountFlag)
|
|
115
|
-
approvalMode: zod_1.z.enum(enums_1.ApprovalMode)
|
|
116
|
-
useRefill:
|
|
117
|
-
userId: zod_1.z.string()
|
|
118
|
-
referralCode: zod_1.z.number()
|
|
129
|
+
approveAmountFlag: (0, zod_2.nullableOptional)(zod_1.z.enum(enums_1.ApproveAmountFlag)),
|
|
130
|
+
approvalMode: (0, zod_2.nullableOptional)(zod_1.z.enum(enums_1.ApprovalMode)),
|
|
131
|
+
useRefill: (0, zod_2.optionalApiBooleanSchema)(),
|
|
132
|
+
userId: (0, zod_2.nullableOptional)(zod_1.z.string()),
|
|
133
|
+
referralCode: (0, zod_2.nullableOptional)(zod_1.z.number()),
|
|
119
134
|
trades: zod_1.z.array(exports.RequestTradeSchema),
|
|
120
|
-
preHooks:
|
|
121
|
-
postHooks:
|
|
122
|
-
costToken: exports.RequestCostTokenSchema
|
|
123
|
-
clientMetadata: zod_1.z.array(exports.RequestMetadataEntrySchema)
|
|
124
|
-
totalDstAmount: zod_1.z.string()
|
|
125
|
-
allowPartialFill:
|
|
135
|
+
preHooks: RequestHookListSchema,
|
|
136
|
+
postHooks: RequestHookListSchema,
|
|
137
|
+
costToken: (0, zod_2.nullableOptional)(exports.RequestCostTokenSchema),
|
|
138
|
+
clientMetadata: (0, zod_2.nullableOptional)(zod_1.z.array(exports.RequestMetadataEntrySchema)),
|
|
139
|
+
totalDstAmount: (0, zod_2.nullableOptional)(zod_1.z.string()),
|
|
140
|
+
allowPartialFill: (0, zod_2.optionalApiBooleanSchema)(),
|
|
126
141
|
});
|
|
127
142
|
//# sourceMappingURL=request.js.map
|