@rhinestone/sdk 2.2.2 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +35 -0
  2. package/dist/src/accounts/adapters/kernel.d.ts.map +1 -1
  3. package/dist/src/accounts/adapters/kernel.js +3 -6
  4. package/dist/src/accounts/adapters/nexus.d.ts.map +1 -1
  5. package/dist/src/accounts/adapters/nexus.js +3 -6
  6. package/dist/src/accounts/adapters/safe.d.ts.map +1 -1
  7. package/dist/src/accounts/adapters/safe.js +7 -5
  8. package/dist/src/accounts/adapters/shared.d.ts +1 -0
  9. package/dist/src/accounts/adapters/shared.d.ts.map +1 -1
  10. package/dist/src/accounts/adapters/shared.js +7 -0
  11. package/dist/src/accounts/adapters/startale.d.ts.map +1 -1
  12. package/dist/src/accounts/adapters/startale.js +2 -5
  13. package/dist/src/accounts/construction.d.ts +1 -1
  14. package/dist/src/accounts/construction.d.ts.map +1 -1
  15. package/dist/src/accounts/construction.js +63 -15
  16. package/dist/src/accounts/deployment.d.ts +13 -1
  17. package/dist/src/accounts/deployment.d.ts.map +1 -1
  18. package/dist/src/accounts/deployment.js +11 -0
  19. package/dist/src/accounts/error.d.ts +8 -1
  20. package/dist/src/accounts/error.d.ts.map +1 -1
  21. package/dist/src/accounts/error.js +9 -1
  22. package/dist/src/accounts/passkey-install.d.ts +25 -0
  23. package/dist/src/accounts/passkey-install.d.ts.map +1 -0
  24. package/dist/src/accounts/passkey-install.js +105 -0
  25. package/dist/src/api/direct-signing.d.ts.map +1 -1
  26. package/dist/src/api/direct-signing.js +112 -98
  27. package/dist/src/clients/orchestrator/client.js +1 -1
  28. package/dist/src/clients/orchestrator/mappers.d.ts +4 -3
  29. package/dist/src/clients/orchestrator/mappers.d.ts.map +1 -1
  30. package/dist/src/clients/orchestrator/mappers.js +21 -13
  31. package/dist/src/clients/orchestrator/serialization.d.ts +5 -0
  32. package/dist/src/clients/orchestrator/serialization.d.ts.map +1 -0
  33. package/dist/src/clients/orchestrator/serialization.js +11 -0
  34. package/dist/src/clients/orchestrator/wire.d.ts +15 -0
  35. package/dist/src/clients/orchestrator/wire.d.ts.map +1 -1
  36. package/dist/src/clients/orchestrator/wire.gen.d.ts +556 -39
  37. package/dist/src/clients/orchestrator/wire.gen.d.ts.map +1 -1
  38. package/dist/src/config/account.d.ts +36 -2
  39. package/dist/src/config/account.d.ts.map +1 -1
  40. package/dist/src/errors/index.d.ts +2 -2
  41. package/dist/src/errors/index.d.ts.map +1 -1
  42. package/dist/src/errors/index.js +2 -2
  43. package/dist/src/index.d.ts +1 -1
  44. package/dist/src/index.d.ts.map +1 -1
  45. package/dist/src/modules/validators/ens.d.ts.map +1 -1
  46. package/dist/src/modules/validators/ens.js +2 -1
  47. package/dist/src/modules/validators/ordering.d.ts +3 -0
  48. package/dist/src/modules/validators/ordering.d.ts.map +1 -0
  49. package/dist/src/modules/validators/ordering.js +11 -0
  50. package/dist/src/modules/validators/resolve.d.ts +3 -2
  51. package/dist/src/modules/validators/resolve.d.ts.map +1 -1
  52. package/dist/src/modules/validators/resolve.js +8 -5
  53. package/dist/src/modules/validators/smart-sessions/erc7739.d.ts +8 -0
  54. package/dist/src/modules/validators/smart-sessions/erc7739.d.ts.map +1 -0
  55. package/dist/src/modules/validators/smart-sessions/erc7739.js +17 -0
  56. package/dist/src/modules/validators/smart-sessions/resolve.d.ts.map +1 -1
  57. package/dist/src/modules/validators/smart-sessions/resolve.js +7 -6
  58. package/dist/src/modules/validators/smart-sessions/signing.d.ts +8 -0
  59. package/dist/src/modules/validators/smart-sessions/signing.d.ts.map +1 -0
  60. package/dist/src/modules/validators/smart-sessions/signing.js +146 -0
  61. package/dist/src/modules/validators/smart-sessions/types.d.ts +19 -1
  62. package/dist/src/modules/validators/smart-sessions/types.d.ts.map +1 -1
  63. package/dist/src/modules/validators/webauthn.d.ts +20 -1
  64. package/dist/src/modules/validators/webauthn.d.ts.map +1 -1
  65. package/dist/src/modules/validators/webauthn.js +58 -7
  66. package/dist/src/signing/message.d.ts +2 -0
  67. package/dist/src/signing/message.d.ts.map +1 -1
  68. package/dist/src/signing/message.js +1 -1
  69. package/dist/src/signing/protocols/erc7739.d.ts +2 -0
  70. package/dist/src/signing/protocols/erc7739.d.ts.map +1 -1
  71. package/dist/src/signing/protocols/erc7739.js +6 -24
  72. package/dist/src/signing/typed-data.d.ts.map +1 -1
  73. package/dist/src/signing/typed-data.js +5 -10
  74. package/dist/src/signing/types.d.ts +0 -4
  75. package/dist/src/signing/types.d.ts.map +1 -1
  76. package/package.json +1 -1
@@ -187,6 +187,26 @@ export interface paths {
187
187
  patch?: never;
188
188
  trace?: never;
189
189
  };
190
+ '/app-fees/withdrawal-targets': {
191
+ parameters: {
192
+ query?: never;
193
+ header?: never;
194
+ path?: never;
195
+ cookie?: never;
196
+ };
197
+ /**
198
+ * Get App-Fee Withdrawal Targets
199
+ * @description Get the enabled EVM chains and whitelisted stablecoins currently accepted for app-fee withdrawals.
200
+ */
201
+ get: operations['getAppFeeWithdrawalTargets'];
202
+ put?: never;
203
+ post?: never;
204
+ delete?: never;
205
+ options?: never;
206
+ head?: never;
207
+ patch?: never;
208
+ trace?: never;
209
+ };
190
210
  '/app-fees/withdrawals': {
191
211
  parameters: {
192
212
  query?: never;
@@ -282,6 +302,22 @@ export interface operations {
282
302
  address: string;
283
303
  decimals: number;
284
304
  };
305
+ /** @description The chain's gas asset. Lets a client name a native-value transfer without assuming ETH — a wallet on a non-ETH chain would otherwise label AVAX or BNB as ETH in every review and receipt. */
306
+ nativeToken: {
307
+ symbol: string;
308
+ /** @description Token contract address (format depends on the chain) */
309
+ address: string;
310
+ decimals: number;
311
+ };
312
+ /** @description Block explorer, or null for a chain that has none. Lets a client link a transaction on a chain it was never compiled against, instead of bundling a per-chain URL table. */
313
+ explorer: {
314
+ /** @example https://basescan.org */
315
+ url: string;
316
+ /** @example /address/ */
317
+ addressPath: string;
318
+ /** @example /tx/ */
319
+ txPath: string;
320
+ } | null;
285
321
  };
286
322
  };
287
323
  };
@@ -861,6 +897,16 @@ export interface operations {
861
897
  * @example 0x0b2c639c533813f4aa9d7837caf62653d097ff85
862
898
  */
863
899
  token: string;
900
+ /**
901
+ * @description Token symbol. `null` when the internal token registry has no entry for this address.
902
+ * @example USDC
903
+ */
904
+ symbol: string | null;
905
+ /**
906
+ * @description Token decimals. `null` when the internal token registry has no entry for this address.
907
+ * @example 6
908
+ */
909
+ decimals: number | null;
864
910
  /**
865
911
  * @description Token amount in base units
866
912
  * @example 1000000
@@ -898,6 +944,16 @@ export interface operations {
898
944
  * @example 0x0b2c639c533813f4aa9d7837caf62653d097ff85
899
945
  */
900
946
  token: string;
947
+ /**
948
+ * @description Token symbol. `null` when the internal token registry has no entry for this address.
949
+ * @example USDC
950
+ */
951
+ symbol: string | null;
952
+ /**
953
+ * @description Token decimals. `null` when the internal token registry has no entry for this address.
954
+ * @example 6
955
+ */
956
+ decimals: number | null;
901
957
  /**
902
958
  * @description Token amount in base units
903
959
  * @example 1000000
@@ -1795,6 +1851,16 @@ export interface operations {
1795
1851
  * @example 0x0b2c639c533813f4aa9d7837caf62653d097ff85
1796
1852
  */
1797
1853
  token?: string;
1854
+ /**
1855
+ * @description Token symbol. `null` when the internal token registry has no entry for this address.
1856
+ * @example USDC
1857
+ */
1858
+ symbol?: string | null;
1859
+ /**
1860
+ * @description Token decimals. `null` when the internal token registry has no entry for this address.
1861
+ * @example 6
1862
+ */
1863
+ decimals?: number | null;
1798
1864
  /**
1799
1865
  * @description Intent value in base units — delivered on the destination chain, or spent for same-chain intents (which have no persisted delivery; for same-chain swaps this is the input, not the received amount).
1800
1866
  * @example 1000000
@@ -2167,13 +2233,9 @@ export interface operations {
2167
2233
  targetExecution?: string;
2168
2234
  };
2169
2235
  authorizations?: {
2170
- /** @description EIP-7702 authorizations signed by the sponsor account. Each entry `chainId` is a CAIP-2 string (e.g. `eip155:8453`); the `0` any-chain sentinel is sent as a number. */
2236
+ /** @description EIP-7702 authorizations signed by the sponsor account. Each chain ID is either a concrete eip155 CAIP-2 string or numeric 0 for an authorization valid on any chain. */
2171
2237
  sponsor?: {
2172
- /**
2173
- * @description Chain ID for EIP-7702 delegation, 0 means it can be applied to any chain
2174
- * @example 8453
2175
- */
2176
- chainId: number;
2238
+ chainId: 0 | string;
2177
2239
  /**
2178
2240
  * @description Address of the delegate for EIP-7702 delegation
2179
2241
  * @example 0x579d5631f76126991c00fb8fe5467fa9d49e5f6a
@@ -2200,13 +2262,9 @@ export interface operations {
2200
2262
  */
2201
2263
  s: string;
2202
2264
  }[];
2203
- /** @description EIP-7702 authorizations signed by the recipient account. Each entry `chainId` is a CAIP-2 string (e.g. `eip155:8453`); the `0` any-chain sentinel is sent as a number. */
2265
+ /** @description EIP-7702 authorizations signed by the recipient account. Each chain ID is either a concrete eip155 CAIP-2 string or numeric 0 for an authorization valid on any chain. */
2204
2266
  recipient?: {
2205
- /**
2206
- * @description Chain ID for EIP-7702 delegation, 0 means it can be applied to any chain
2207
- * @example 8453
2208
- */
2209
- chainId: number;
2267
+ chainId: 0 | string;
2210
2268
  /**
2211
2269
  * @description Address of the delegate for EIP-7702 delegation
2212
2270
  * @example 0x579d5631f76126991c00fb8fe5467fa9d49e5f6a
@@ -3074,7 +3132,7 @@ export interface operations {
3074
3132
  * @example eip155:8453
3075
3133
  */
3076
3134
  destinationChainId: string;
3077
- /** @description A list of token requested on the target chain */
3135
+ /** @description A list of tokens requested on the target chain. Note `amount` may be credited against a balance already held on the destination chain — see the field for exactly when. */
3078
3136
  tokenRequests: {
3079
3137
  /**
3080
3138
  * @description The address of the requested token. Format depends on destination chain — 0x-hex for EVM, base58 SPL mint for Solana, T-address for Tron.
@@ -3083,16 +3141,11 @@ export interface operations {
3083
3141
  tokenAddress: string;
3084
3142
  /**
3085
3143
  * Format: uint256
3086
- * @description The amount of the requested token (in the smallest unit). Omit for max-out.
3144
+ * @description The amount of the requested token (in the smallest unit). Omit for max-out. IMPORTANT: for a self-send with no `destinationExecutions`, any balance of this token already held on the destination chain is CREDITED against the request, so this behaves as a target final balance and an already-satisfied request delivers nothing. The credit only applies when that destination balance is in scope as a source — pinning `sourceAssets` or `sourceChains` away from the destination chain excludes it, and then this amount is delivered in full on top of whatever is already there. Same-chain intents always have the destination balance in scope, so they always credit.
3087
3145
  * @example 1000000
3088
3146
  */
3089
3147
  amount?: string;
3090
- /**
3091
- * @description HyperCore balance class for this token request — 'spot' or 'perp'. Optional; defaults to 'perp' when destinationChainId is HyperCore. Rejected on every other destination.
3092
- * @example spot
3093
- * @enum {string}
3094
- */
3095
- balance?: 'spot' | 'perp';
3148
+ readonly balance?: unknown;
3096
3149
  }[];
3097
3150
  /** @description Account details */
3098
3151
  account: {
@@ -3153,9 +3206,9 @@ export interface operations {
3153
3206
  data: string;
3154
3207
  }[];
3155
3208
  /**
3156
- * @description Execution calls to perform before the claim on each origin chain, keyed by chain ID. Max 10 ops per chain, max 5 chains.
3209
+ * @description Execution calls to perform before the claim on each origin chain, keyed by CAIP-2 chain ID. Max 10 ops per chain, max 5 chains.
3157
3210
  * @example {
3158
- * "8453": [
3211
+ * "eip155:8453": [
3159
3212
  * {
3160
3213
  * "to": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
3161
3214
  * "value": "0",
@@ -3190,23 +3243,47 @@ export interface operations {
3190
3243
  * @example 100000
3191
3244
  */
3192
3245
  destinationGasLimit?: string;
3193
- /** @description Account access list specifying which chains and tokens an account may access */
3246
+ /** @description Account access list specifying which CAIP-2 chains and tokens an account may access */
3194
3247
  accountAccessList?: {
3195
- chainIds?: number[];
3196
- tokens?: (string | ('ETH' | 'USDC' | 'WETH' | 'USDT' | 'USDT0' | 'BNB' | 'WBNB' | 'XDAI' | 'WXDAI' | 'POL' | 'WPOL' | 'MON' | 'WMON' | 'S' | 'WS' | 'HYPE' | 'WHYPE' | 'USDG' | 'XPL' | 'WXPL' | 'AVAX' | 'WAVAX' | 'MockUSD' | 'TRX' | 'WTRX' | 'SOL' | 'WSOL'))[];
3248
+ chainIds?: string[];
3249
+ tokens?: (string | ('ETH' | 'USDC' | 'WETH' | 'USDT' | 'USDT0' | 'BNB' | 'WBNB' | 'XDAI' | 'WXDAI' | 'POL' | 'WPOL' | 'MON' | 'WMON' | 'S' | 'WS' | 'HYPE' | 'WHYPE' | 'USDG' | 'XPL' | 'WXPL' | 'AVAX' | 'WAVAX' | 'MockUSD' | 'ensUSDC' | 'TRX' | 'WTRX' | 'SOL' | 'WSOL'))[];
3250
+ /**
3251
+ * @description Tokens keyed by CAIP-2 chain ID.
3252
+ * @example {
3253
+ * "eip155:8453": [
3254
+ * "USDC"
3255
+ * ]
3256
+ * }
3257
+ */
3197
3258
  chainTokens?: {
3198
- [key: string]: (string | ('ETH' | 'USDC' | 'WETH' | 'USDT' | 'USDT0' | 'BNB' | 'WBNB' | 'XDAI' | 'WXDAI' | 'POL' | 'WPOL' | 'MON' | 'WMON' | 'S' | 'WS' | 'HYPE' | 'WHYPE' | 'USDG' | 'XPL' | 'WXPL' | 'AVAX' | 'WAVAX' | 'MockUSD' | 'TRX' | 'WTRX' | 'SOL' | 'WSOL'))[];
3259
+ [key: string]: (string | ('ETH' | 'USDC' | 'WETH' | 'USDT' | 'USDT0' | 'BNB' | 'WBNB' | 'XDAI' | 'WXDAI' | 'POL' | 'WPOL' | 'MON' | 'WMON' | 'S' | 'WS' | 'HYPE' | 'WHYPE' | 'USDG' | 'XPL' | 'WXPL' | 'AVAX' | 'WAVAX' | 'MockUSD' | 'ensUSDC' | 'TRX' | 'WTRX' | 'SOL' | 'WSOL'))[];
3199
3260
  };
3261
+ /**
3262
+ * @description Per-token maximum input amounts keyed by CAIP-2 chain ID.
3263
+ * @example {
3264
+ * "eip155:8453": {
3265
+ * "USDC": "1000000"
3266
+ * }
3267
+ * }
3268
+ */
3200
3269
  chainTokenAmounts?: {
3201
3270
  [key: string]: {
3202
3271
  [key: string]: string;
3203
3272
  };
3204
3273
  };
3205
3274
  exclude?: {
3206
- chainIds?: number[];
3207
- tokens?: (string | ('ETH' | 'USDC' | 'WETH' | 'USDT' | 'USDT0' | 'BNB' | 'WBNB' | 'XDAI' | 'WXDAI' | 'POL' | 'WPOL' | 'MON' | 'WMON' | 'S' | 'WS' | 'HYPE' | 'WHYPE' | 'USDG' | 'XPL' | 'WXPL' | 'AVAX' | 'WAVAX' | 'MockUSD' | 'TRX' | 'WTRX' | 'SOL' | 'WSOL'))[];
3275
+ chainIds?: string[];
3276
+ tokens?: (string | ('ETH' | 'USDC' | 'WETH' | 'USDT' | 'USDT0' | 'BNB' | 'WBNB' | 'XDAI' | 'WXDAI' | 'POL' | 'WPOL' | 'MON' | 'WMON' | 'S' | 'WS' | 'HYPE' | 'WHYPE' | 'USDG' | 'XPL' | 'WXPL' | 'AVAX' | 'WAVAX' | 'MockUSD' | 'ensUSDC' | 'TRX' | 'WTRX' | 'SOL' | 'WSOL'))[];
3277
+ /**
3278
+ * @description Tokens keyed by CAIP-2 chain ID.
3279
+ * @example {
3280
+ * "eip155:8453": [
3281
+ * "USDC"
3282
+ * ]
3283
+ * }
3284
+ */
3208
3285
  chainTokens?: {
3209
- [key: string]: (string | ('ETH' | 'USDC' | 'WETH' | 'USDT' | 'USDT0' | 'BNB' | 'WBNB' | 'XDAI' | 'WXDAI' | 'POL' | 'WPOL' | 'MON' | 'WMON' | 'S' | 'WS' | 'HYPE' | 'WHYPE' | 'USDG' | 'XPL' | 'WXPL' | 'AVAX' | 'WAVAX' | 'MockUSD' | 'TRX' | 'WTRX' | 'SOL' | 'WSOL'))[];
3286
+ [key: string]: (string | ('ETH' | 'USDC' | 'WETH' | 'USDT' | 'USDT0' | 'BNB' | 'WBNB' | 'XDAI' | 'WXDAI' | 'POL' | 'WPOL' | 'MON' | 'WMON' | 'S' | 'WS' | 'HYPE' | 'WHYPE' | 'USDG' | 'XPL' | 'WXPL' | 'AVAX' | 'WAVAX' | 'MockUSD' | 'ensUSDC' | 'TRX' | 'WTRX' | 'SOL' | 'WSOL'))[];
3210
3287
  };
3211
3288
  };
3212
3289
  };
@@ -3316,14 +3393,14 @@ export interface operations {
3316
3393
  signatureMode?: 'EMISSARY' | 'ERC1271' | 'EMISSARY_ERC1271' | 'ERC1271_EMISSARY' | 'EMISSARY_EXECUTION' | 'EMISSARY_EXECUTION_ERC1271' | 'ERC1271_EMISSARY_EXECUTION' | 0 | 1 | 2 | 3 | 4 | 5 | 6;
3317
3394
  appFees?: {
3318
3395
  /**
3319
- * @description App fee rate in basis points of the input value (0–10000 = 0–100%).
3396
+ * @description App fee rate in basis points (0–10000 = 0–100%). The base is the USD value of the intent, and which value depends on the intent shape: for a fixed-output intent it is the requested destination target(s), summed across `tokenRequests`; for a max-out intent it is the spendable source balance; for a destination-swap intent it is the swap input. Note the fixed-output base is the full requested target, not the delta over any balance already held.
3320
3397
  * @example 25
3321
3398
  */
3322
3399
  feeBps: number;
3323
3400
  };
3324
3401
  protocolFees?: {
3325
3402
  /**
3326
- * @description Rhinestone protocol fee rate in basis points of the input value (0–10000 = 0–100%). Collected alongside the app fee in one batched transfer and always accrues to Rhinestone; sponsor it via `sponsorSettings.protocolFees` to charge the integrator balance instead of the user.
3403
+ * @description Rhinestone protocol fee rate in basis points (0–10000 = 0–100%), on the same base as `appFees.feeBps` — see that field. Collected alongside the app fee in one batched transfer and always accrues to Rhinestone; sponsor it via `sponsorSettings.protocolFees` to charge the integrator balance instead of the user.
3327
3404
  * @example 35
3328
3405
  */
3329
3406
  feeBps: number;
@@ -3336,9 +3413,9 @@ export interface operations {
3336
3413
  */
3337
3414
  executionTokensReceived?: string[];
3338
3415
  /**
3339
- * @description Additional balances the quote should treat as available, beyond what is currently on the account. Use this to get a preliminary quote against funds you can produce by the time you submit — e.g. liquidity in a DeFi vault you will withdraw, an in-flight CEX deposit, or a parallel transfer from another wallet. Keyed by chain ID, then token address; amounts in the token's smallest unit.
3416
+ * @description Additional balances the quote should treat as available, beyond what is currently on the account. Use this to get a preliminary quote against funds you can produce by the time you submit — e.g. liquidity in a DeFi vault you will withdraw, an in-flight CEX deposit, or a parallel transfer from another wallet. Keyed by CAIP-2 chain ID, then token address; amounts in the token's smallest unit.
3340
3417
  * @example {
3341
- * "42161": {
3418
+ * "eip155:42161": {
3342
3419
  * "0xaf88d065e77c8cC2239327C5EDb3A432268e5831": "500000000"
3343
3420
  * }
3344
3421
  * }
@@ -3349,7 +3426,7 @@ export interface operations {
3349
3426
  };
3350
3427
  };
3351
3428
  /**
3352
- * @description How to rank candidate plans. `cheapest` minimizes direct USD cost. `fastest` minimizes estimated fill time (with cost tiebreaker). `best` balances both via a notional- and time-weighted shadow fee.
3429
+ * @description How to rank candidate plans. `cheapest` minimizes direct USD cost. `fastest` minimizes estimated fill time (with cost tiebreaker). `best` minimizes total USD given up: delivered-output forgone versus the best candidate, plus cost, plus the cost of waiting. Waiting is charged both in proportion to notional (0.8 bps per minute, modelling price risk on funds in flight) and as a flat $0.10 per minute independent of size, so small intents are ranked mostly on speed and large ones mostly on price. The two are equal at $1,250 of notional.
3353
3430
  * @example best
3354
3431
  * @enum {string}
3355
3432
  */
@@ -4098,7 +4175,7 @@ export interface operations {
4098
4175
  */
4099
4176
  sourceToken: string;
4100
4177
  /**
4101
- * @description Destination chain id (CAIP-2), matching the destinations `POST /quotes` accepts: EVM (`eip155:*`), the virtual `hypercore:mainnet`, or non-EVM `solana:…` / `tron:…`.
4178
+ * @description Destination chain id (CAIP-2), matching the destinations `POST /quotes` accepts: EVM (`eip155:*`), a virtual HyperCore delivery venue (`hypercore:spot` or `hypercore:perp`), or non-EVM `solana:…` / `tron:…`.
4102
4179
  * @example eip155:42161
4103
4180
  */
4104
4181
  destinationChainId: string;
@@ -4177,7 +4254,7 @@ export interface operations {
4177
4254
  protocolFees?: boolean;
4178
4255
  };
4179
4256
  /**
4180
- * @description How to rank candidate routes. `cheapest` minimizes USD cost, `fastest` minimizes fill time, `best` balances delivered output and speed.
4257
+ * @description How to rank candidate routes. `cheapest` minimizes USD cost, `fastest` minimizes fill time, `best` minimizes total USD given up — delivered-output forgone, plus cost, plus the cost of waiting (0.8 bps/min of notional for price risk plus a flat $0.10/min). Mirrors the binding `/quotes` selector, so the recommended route agrees with the one you will be quoted.
4181
4258
  * @example best
4182
4259
  * @enum {string}
4183
4260
  */
@@ -4199,6 +4276,7 @@ export interface operations {
4199
4276
  feeBps: number;
4200
4277
  };
4201
4278
  };
4279
+ readonly balance?: unknown;
4202
4280
  };
4203
4281
  };
4204
4282
  };
@@ -5043,6 +5121,441 @@ export interface operations {
5043
5121
  };
5044
5122
  };
5045
5123
  };
5124
+ getAppFeeWithdrawalTargets: {
5125
+ parameters: {
5126
+ query?: never;
5127
+ header: {
5128
+ /** @description API version. Required; pinned to this document. */
5129
+ 'x-api-version': '2026-04.blanc';
5130
+ /** @description API key. */
5131
+ 'x-api-key': string;
5132
+ };
5133
+ path?: never;
5134
+ cookie?: never;
5135
+ };
5136
+ requestBody?: never;
5137
+ responses: {
5138
+ /** @description OK */
5139
+ 200: {
5140
+ headers: {
5141
+ [name: string]: unknown;
5142
+ };
5143
+ content: {
5144
+ 'application/json': {
5145
+ targets: {
5146
+ chainId: string;
5147
+ tokens: {
5148
+ address: string;
5149
+ /** @enum {string} */
5150
+ symbol: 'USDC' | 'USDT0' | 'USDT';
5151
+ decimals: number;
5152
+ }[];
5153
+ }[];
5154
+ };
5155
+ };
5156
+ };
5157
+ /** @description Validation error */
5158
+ 400: {
5159
+ headers: {
5160
+ [name: string]: unknown;
5161
+ };
5162
+ content: {
5163
+ 'application/json': {
5164
+ /** @enum {string} */
5165
+ code: 'VALIDATION_ERROR';
5166
+ /**
5167
+ * @description Human-readable error message
5168
+ * @example Invalid input
5169
+ */
5170
+ message: string;
5171
+ /** @description Per-field validation issues */
5172
+ details?: {
5173
+ /** @description Human-readable issue description */
5174
+ message: string;
5175
+ /** @description Structured issue context (e.g. `{ path: "body.accountAddress" }`) */
5176
+ context?: {
5177
+ [key: string]: unknown;
5178
+ };
5179
+ }[];
5180
+ } | {
5181
+ /** @enum {string} */
5182
+ code: 'SIMULATION_FAILED';
5183
+ /**
5184
+ * @description Human-readable error message
5185
+ * @example Invalid input
5186
+ */
5187
+ message: string;
5188
+ /** @description Classified on-chain simulation failure details */
5189
+ details?: {
5190
+ nonce?: string;
5191
+ category: string;
5192
+ errorSelector: string;
5193
+ errorName: string;
5194
+ errorArgs?: {
5195
+ [key: string]: string;
5196
+ };
5197
+ retryable: boolean;
5198
+ /** @enum {string} */
5199
+ retryHint?: 'RE_PREPARE' | 'RETRY_LATER';
5200
+ simulations?: unknown;
5201
+ } & {
5202
+ [key: string]: unknown;
5203
+ };
5204
+ } | {
5205
+ /** @enum {string} */
5206
+ code: 'INSUFFICIENT_LIQUIDITY';
5207
+ /**
5208
+ * @description Human-readable error message
5209
+ * @example Invalid input
5210
+ */
5211
+ message: string;
5212
+ /** @description Fillable subset and unfillable remainder */
5213
+ details?: {
5214
+ /** @description Intents fillable with current liquidity */
5215
+ availableIntents: {
5216
+ [key: string]: string;
5217
+ }[];
5218
+ /** @description Token amounts that cannot be filled */
5219
+ unfillable: {
5220
+ [key: string]: string;
5221
+ };
5222
+ };
5223
+ } | {
5224
+ /** @enum {string} */
5225
+ code: 'KEY_SCOPE_DENIED';
5226
+ /**
5227
+ * @description Human-readable error message
5228
+ * @example Invalid input
5229
+ */
5230
+ message: string;
5231
+ /** @description Single-element list describing the failing scope */
5232
+ details?: {
5233
+ message: string;
5234
+ context: {
5235
+ /**
5236
+ * @description Which scope rejected the request
5237
+ * @enum {string}
5238
+ */
5239
+ scope: 'allowMainnet' | 'intents' | 'deposits';
5240
+ /** @description Minimum level the endpoint demands */
5241
+ required: boolean | ('read' | 'write');
5242
+ /** @description Level resolved on the key */
5243
+ actual: boolean | ('none' | 'read' | 'write');
5244
+ };
5245
+ }[];
5246
+ } | {
5247
+ /** @enum {string} */
5248
+ code: 'NOT_FOUND' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'CONFLICT' | 'WITHDRAWAL_IN_PROGRESS' | 'UNPROCESSABLE_CONTENT' | 'TOO_MANY_REQUESTS' | 'SETTLEMENT_QUOTE_ERROR' | 'SETTLEMENT_EXECUTION_ERROR' | 'EXTERNAL_SERVICE_TIMEOUT' | 'RELAYER_MARKET_UNAVAILABLE' | 'INTERNAL_ERROR';
5249
+ /**
5250
+ * @description Human-readable error message
5251
+ * @example Invalid input
5252
+ */
5253
+ message: string;
5254
+ };
5255
+ };
5256
+ };
5257
+ /** @description Missing or invalid API key */
5258
+ 401: {
5259
+ headers: {
5260
+ [name: string]: unknown;
5261
+ };
5262
+ content: {
5263
+ 'application/json': {
5264
+ /** @enum {string} */
5265
+ code: 'VALIDATION_ERROR';
5266
+ /**
5267
+ * @description Human-readable error message
5268
+ * @example Invalid input
5269
+ */
5270
+ message: string;
5271
+ /** @description Per-field validation issues */
5272
+ details?: {
5273
+ /** @description Human-readable issue description */
5274
+ message: string;
5275
+ /** @description Structured issue context (e.g. `{ path: "body.accountAddress" }`) */
5276
+ context?: {
5277
+ [key: string]: unknown;
5278
+ };
5279
+ }[];
5280
+ } | {
5281
+ /** @enum {string} */
5282
+ code: 'SIMULATION_FAILED';
5283
+ /**
5284
+ * @description Human-readable error message
5285
+ * @example Invalid input
5286
+ */
5287
+ message: string;
5288
+ /** @description Classified on-chain simulation failure details */
5289
+ details?: {
5290
+ nonce?: string;
5291
+ category: string;
5292
+ errorSelector: string;
5293
+ errorName: string;
5294
+ errorArgs?: {
5295
+ [key: string]: string;
5296
+ };
5297
+ retryable: boolean;
5298
+ /** @enum {string} */
5299
+ retryHint?: 'RE_PREPARE' | 'RETRY_LATER';
5300
+ simulations?: unknown;
5301
+ } & {
5302
+ [key: string]: unknown;
5303
+ };
5304
+ } | {
5305
+ /** @enum {string} */
5306
+ code: 'INSUFFICIENT_LIQUIDITY';
5307
+ /**
5308
+ * @description Human-readable error message
5309
+ * @example Invalid input
5310
+ */
5311
+ message: string;
5312
+ /** @description Fillable subset and unfillable remainder */
5313
+ details?: {
5314
+ /** @description Intents fillable with current liquidity */
5315
+ availableIntents: {
5316
+ [key: string]: string;
5317
+ }[];
5318
+ /** @description Token amounts that cannot be filled */
5319
+ unfillable: {
5320
+ [key: string]: string;
5321
+ };
5322
+ };
5323
+ } | {
5324
+ /** @enum {string} */
5325
+ code: 'KEY_SCOPE_DENIED';
5326
+ /**
5327
+ * @description Human-readable error message
5328
+ * @example Invalid input
5329
+ */
5330
+ message: string;
5331
+ /** @description Single-element list describing the failing scope */
5332
+ details?: {
5333
+ message: string;
5334
+ context: {
5335
+ /**
5336
+ * @description Which scope rejected the request
5337
+ * @enum {string}
5338
+ */
5339
+ scope: 'allowMainnet' | 'intents' | 'deposits';
5340
+ /** @description Minimum level the endpoint demands */
5341
+ required: boolean | ('read' | 'write');
5342
+ /** @description Level resolved on the key */
5343
+ actual: boolean | ('none' | 'read' | 'write');
5344
+ };
5345
+ }[];
5346
+ } | {
5347
+ /** @enum {string} */
5348
+ code: 'NOT_FOUND' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'CONFLICT' | 'WITHDRAWAL_IN_PROGRESS' | 'UNPROCESSABLE_CONTENT' | 'TOO_MANY_REQUESTS' | 'SETTLEMENT_QUOTE_ERROR' | 'SETTLEMENT_EXECUTION_ERROR' | 'EXTERNAL_SERVICE_TIMEOUT' | 'RELAYER_MARKET_UNAVAILABLE' | 'INTERNAL_ERROR';
5349
+ /**
5350
+ * @description Human-readable error message
5351
+ * @example Invalid input
5352
+ */
5353
+ message: string;
5354
+ };
5355
+ };
5356
+ };
5357
+ /** @description API key scope denied */
5358
+ 403: {
5359
+ headers: {
5360
+ [name: string]: unknown;
5361
+ };
5362
+ content: {
5363
+ 'application/json': {
5364
+ /** @enum {string} */
5365
+ code: 'VALIDATION_ERROR';
5366
+ /**
5367
+ * @description Human-readable error message
5368
+ * @example Invalid input
5369
+ */
5370
+ message: string;
5371
+ /** @description Per-field validation issues */
5372
+ details?: {
5373
+ /** @description Human-readable issue description */
5374
+ message: string;
5375
+ /** @description Structured issue context (e.g. `{ path: "body.accountAddress" }`) */
5376
+ context?: {
5377
+ [key: string]: unknown;
5378
+ };
5379
+ }[];
5380
+ } | {
5381
+ /** @enum {string} */
5382
+ code: 'SIMULATION_FAILED';
5383
+ /**
5384
+ * @description Human-readable error message
5385
+ * @example Invalid input
5386
+ */
5387
+ message: string;
5388
+ /** @description Classified on-chain simulation failure details */
5389
+ details?: {
5390
+ nonce?: string;
5391
+ category: string;
5392
+ errorSelector: string;
5393
+ errorName: string;
5394
+ errorArgs?: {
5395
+ [key: string]: string;
5396
+ };
5397
+ retryable: boolean;
5398
+ /** @enum {string} */
5399
+ retryHint?: 'RE_PREPARE' | 'RETRY_LATER';
5400
+ simulations?: unknown;
5401
+ } & {
5402
+ [key: string]: unknown;
5403
+ };
5404
+ } | {
5405
+ /** @enum {string} */
5406
+ code: 'INSUFFICIENT_LIQUIDITY';
5407
+ /**
5408
+ * @description Human-readable error message
5409
+ * @example Invalid input
5410
+ */
5411
+ message: string;
5412
+ /** @description Fillable subset and unfillable remainder */
5413
+ details?: {
5414
+ /** @description Intents fillable with current liquidity */
5415
+ availableIntents: {
5416
+ [key: string]: string;
5417
+ }[];
5418
+ /** @description Token amounts that cannot be filled */
5419
+ unfillable: {
5420
+ [key: string]: string;
5421
+ };
5422
+ };
5423
+ } | {
5424
+ /** @enum {string} */
5425
+ code: 'KEY_SCOPE_DENIED';
5426
+ /**
5427
+ * @description Human-readable error message
5428
+ * @example Invalid input
5429
+ */
5430
+ message: string;
5431
+ /** @description Single-element list describing the failing scope */
5432
+ details?: {
5433
+ message: string;
5434
+ context: {
5435
+ /**
5436
+ * @description Which scope rejected the request
5437
+ * @enum {string}
5438
+ */
5439
+ scope: 'allowMainnet' | 'intents' | 'deposits';
5440
+ /** @description Minimum level the endpoint demands */
5441
+ required: boolean | ('read' | 'write');
5442
+ /** @description Level resolved on the key */
5443
+ actual: boolean | ('none' | 'read' | 'write');
5444
+ };
5445
+ }[];
5446
+ } | {
5447
+ /** @enum {string} */
5448
+ code: 'NOT_FOUND' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'CONFLICT' | 'WITHDRAWAL_IN_PROGRESS' | 'UNPROCESSABLE_CONTENT' | 'TOO_MANY_REQUESTS' | 'SETTLEMENT_QUOTE_ERROR' | 'SETTLEMENT_EXECUTION_ERROR' | 'EXTERNAL_SERVICE_TIMEOUT' | 'RELAYER_MARKET_UNAVAILABLE' | 'INTERNAL_ERROR';
5449
+ /**
5450
+ * @description Human-readable error message
5451
+ * @example Invalid input
5452
+ */
5453
+ message: string;
5454
+ };
5455
+ };
5456
+ };
5457
+ /** @description Server error */
5458
+ 500: {
5459
+ headers: {
5460
+ [name: string]: unknown;
5461
+ };
5462
+ content: {
5463
+ 'application/json': {
5464
+ /** @enum {string} */
5465
+ code: 'VALIDATION_ERROR';
5466
+ /**
5467
+ * @description Human-readable error message
5468
+ * @example Invalid input
5469
+ */
5470
+ message: string;
5471
+ /** @description Per-field validation issues */
5472
+ details?: {
5473
+ /** @description Human-readable issue description */
5474
+ message: string;
5475
+ /** @description Structured issue context (e.g. `{ path: "body.accountAddress" }`) */
5476
+ context?: {
5477
+ [key: string]: unknown;
5478
+ };
5479
+ }[];
5480
+ } | {
5481
+ /** @enum {string} */
5482
+ code: 'SIMULATION_FAILED';
5483
+ /**
5484
+ * @description Human-readable error message
5485
+ * @example Invalid input
5486
+ */
5487
+ message: string;
5488
+ /** @description Classified on-chain simulation failure details */
5489
+ details?: {
5490
+ nonce?: string;
5491
+ category: string;
5492
+ errorSelector: string;
5493
+ errorName: string;
5494
+ errorArgs?: {
5495
+ [key: string]: string;
5496
+ };
5497
+ retryable: boolean;
5498
+ /** @enum {string} */
5499
+ retryHint?: 'RE_PREPARE' | 'RETRY_LATER';
5500
+ simulations?: unknown;
5501
+ } & {
5502
+ [key: string]: unknown;
5503
+ };
5504
+ } | {
5505
+ /** @enum {string} */
5506
+ code: 'INSUFFICIENT_LIQUIDITY';
5507
+ /**
5508
+ * @description Human-readable error message
5509
+ * @example Invalid input
5510
+ */
5511
+ message: string;
5512
+ /** @description Fillable subset and unfillable remainder */
5513
+ details?: {
5514
+ /** @description Intents fillable with current liquidity */
5515
+ availableIntents: {
5516
+ [key: string]: string;
5517
+ }[];
5518
+ /** @description Token amounts that cannot be filled */
5519
+ unfillable: {
5520
+ [key: string]: string;
5521
+ };
5522
+ };
5523
+ } | {
5524
+ /** @enum {string} */
5525
+ code: 'KEY_SCOPE_DENIED';
5526
+ /**
5527
+ * @description Human-readable error message
5528
+ * @example Invalid input
5529
+ */
5530
+ message: string;
5531
+ /** @description Single-element list describing the failing scope */
5532
+ details?: {
5533
+ message: string;
5534
+ context: {
5535
+ /**
5536
+ * @description Which scope rejected the request
5537
+ * @enum {string}
5538
+ */
5539
+ scope: 'allowMainnet' | 'intents' | 'deposits';
5540
+ /** @description Minimum level the endpoint demands */
5541
+ required: boolean | ('read' | 'write');
5542
+ /** @description Level resolved on the key */
5543
+ actual: boolean | ('none' | 'read' | 'write');
5544
+ };
5545
+ }[];
5546
+ } | {
5547
+ /** @enum {string} */
5548
+ code: 'NOT_FOUND' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'CONFLICT' | 'WITHDRAWAL_IN_PROGRESS' | 'UNPROCESSABLE_CONTENT' | 'TOO_MANY_REQUESTS' | 'SETTLEMENT_QUOTE_ERROR' | 'SETTLEMENT_EXECUTION_ERROR' | 'EXTERNAL_SERVICE_TIMEOUT' | 'RELAYER_MARKET_UNAVAILABLE' | 'INTERNAL_ERROR';
5549
+ /**
5550
+ * @description Human-readable error message
5551
+ * @example Invalid input
5552
+ */
5553
+ message: string;
5554
+ };
5555
+ };
5556
+ };
5557
+ };
5558
+ };
5046
5559
  listAppFeeWithdrawals: {
5047
5560
  parameters: {
5048
5561
  query?: never;
@@ -5068,8 +5581,10 @@ export interface operations {
5068
5581
  requestNonce: string;
5069
5582
  /** @enum {string} */
5070
5583
  status: 'PENDING' | 'COMPLETED' | 'FAILED';
5584
+ grossUsd: number | null;
5585
+ cutBps: number | null;
5071
5586
  payoutUsd: number;
5072
- targetChainId: number;
5587
+ targetChainId: string;
5073
5588
  targetToken: string;
5074
5589
  targetAmount: string;
5075
5590
  payoutAddress: string;
@@ -5496,7 +6011,7 @@ export interface operations {
5496
6011
  requestBody: {
5497
6012
  content: {
5498
6013
  'application/json': {
5499
- targetChainId: number;
6014
+ targetChainId: string;
5500
6015
  targetToken: string;
5501
6016
  };
5502
6017
  };
@@ -5941,8 +6456,10 @@ export interface operations {
5941
6456
  requestNonce: string;
5942
6457
  /** @enum {string} */
5943
6458
  status: 'PENDING' | 'COMPLETED' | 'FAILED';
6459
+ grossUsd: number | null;
6460
+ cutBps: number | null;
5944
6461
  payoutUsd: number;
5945
- targetChainId: number;
6462
+ targetChainId: string;
5946
6463
  targetToken: string;
5947
6464
  targetAmount: string;
5948
6465
  payoutAddress: string;