@rhinestone/sdk 2.0.0-beta.45 → 2.0.0-beta.47

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 (31) hide show
  1. package/dist/src/accounts/adapters/nexus.d.ts +0 -1
  2. package/dist/src/accounts/adapters/nexus.d.ts.map +1 -1
  3. package/dist/src/accounts/adapters/nexus.js +3 -18
  4. package/dist/src/accounts/types.d.ts +4 -4
  5. package/dist/src/accounts/types.d.ts.map +1 -1
  6. package/dist/src/actions/runtime.d.ts.map +1 -1
  7. package/dist/src/actions/runtime.js +2 -5
  8. package/dist/src/actions/smart-sessions.d.ts +5 -5
  9. package/dist/src/actions/smart-sessions.d.ts.map +1 -1
  10. package/dist/src/actions/smart-sessions.js +7 -7
  11. package/dist/src/api/account.d.ts +3 -3
  12. package/dist/src/api/account.d.ts.map +1 -1
  13. package/dist/src/api/account.js +13 -11
  14. package/dist/src/api/signer-selection.js +1 -1
  15. package/dist/src/clients/orchestrator/client.js +1 -1
  16. package/dist/src/clients/orchestrator/public.d.ts +13 -1
  17. package/dist/src/clients/orchestrator/public.d.ts.map +1 -1
  18. package/dist/src/clients/orchestrator/types.d.ts +4 -0
  19. package/dist/src/clients/orchestrator/types.d.ts.map +1 -1
  20. package/dist/src/clients/orchestrator/wire.gen.d.ts +695 -1
  21. package/dist/src/clients/orchestrator/wire.gen.d.ts.map +1 -1
  22. package/dist/src/config/account.d.ts +20 -6
  23. package/dist/src/config/account.d.ts.map +1 -1
  24. package/dist/src/config/input.d.ts +1 -1
  25. package/dist/src/config/input.d.ts.map +1 -1
  26. package/dist/src/config/resolve.js +1 -1
  27. package/dist/src/index.d.ts +1 -1
  28. package/dist/src/index.d.ts.map +1 -1
  29. package/dist/src/transactions/user-operations/prepare.d.ts.map +1 -1
  30. package/dist/src/transactions/user-operations/prepare.js +2 -4
  31. package/package.json +1 -1
@@ -147,6 +147,26 @@ export interface paths {
147
147
  patch?: never;
148
148
  trace?: never;
149
149
  };
150
+ '/quotes/estimate': {
151
+ parameters: {
152
+ query?: never;
153
+ header?: never;
154
+ path?: never;
155
+ cookie?: never;
156
+ };
157
+ get?: never;
158
+ put?: never;
159
+ /**
160
+ * Create Indicative Quote
161
+ * @description Computes an indicative (non-binding) quote: ranked route estimates with per-route cost breakdown and fill time. Unlike `POST /quotes`, it returns no `intentId`, `signData`, or `expiresAt` — it cannot be submitted to `POST /intents`. Use it for pre-quote UX (price previews, route discovery) without persisting an intent.
162
+ */
163
+ post: operations['createQuoteEstimate'];
164
+ delete?: never;
165
+ options?: never;
166
+ head?: never;
167
+ patch?: never;
168
+ trace?: never;
169
+ };
150
170
  '/app-fees/balances': {
151
171
  parameters: {
152
172
  query?: never;
@@ -3283,6 +3303,11 @@ export interface operations {
3283
3303
  * @default false
3284
3304
  */
3285
3305
  swapFees?: boolean;
3306
+ /**
3307
+ * @description Whether to sponsor the Rhinestone protocol fee (`options.protocolFees`) for the intent. When `true`, the fee is charged to the integrator's sponsorship balance instead of carved from the user, without the sponsorship surcharge.
3308
+ * @default false
3309
+ */
3310
+ protocolFees?: boolean;
3286
3311
  };
3287
3312
  /**
3288
3313
  * @description How the user's intent signature will be verified onchain. `ECDSA` for plain EOA signatures; `ERC1271_EMISSARY` for smart-account signatures verified via TheCompact emissary delegation. The orchestrator picks a default based on `account.accountType` — only set this if you need to override.
@@ -3302,6 +3327,13 @@ export interface operations {
3302
3327
  */
3303
3328
  feeBps: number;
3304
3329
  };
3330
+ protocolFees?: {
3331
+ /**
3332
+ * @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.
3333
+ * @example 35
3334
+ */
3335
+ feeBps: number;
3336
+ };
3305
3337
  /**
3306
3338
  * @description Tokens that will be received by EOA executions. These will be swept to the recipient account.
3307
3339
  * @example [
@@ -3592,7 +3624,20 @@ export interface operations {
3592
3624
  */
3593
3625
  sponsored: boolean;
3594
3626
  };
3595
- /** @description Rhinestone's surcharge on the sponsored fee, charged to the sponsor. 0 when the intent is not sponsored. */
3627
+ /** @description Rhinestone protocol fee (`options.protocolFees`). `sponsored: true` when the integrator sponsorship balance pays it instead of the user. */
3628
+ protocol: {
3629
+ /**
3630
+ * @description Total cost of this category in USD, regardless of who pays.
3631
+ * @example 0.029
3632
+ */
3633
+ usd: number;
3634
+ /**
3635
+ * @description True when a sponsor absorbs some or all of this category. The user-vs-sponsor split is not surfaced.
3636
+ * @example false
3637
+ */
3638
+ sponsored: boolean;
3639
+ };
3640
+ /** @description Rhinestone's surcharge on the sponsored relayer coverage, charged to the sponsor. 0 when the intent is not sponsored. Pure surcharge — a sponsored protocol fee is shown on `protocol`, never here. */
3596
3641
  sponsorSurcharge: {
3597
3642
  /**
3598
3643
  * @description Total cost of this category in USD, regardless of who pays.
@@ -4027,6 +4072,655 @@ export interface operations {
4027
4072
  };
4028
4073
  };
4029
4074
  };
4075
+ createQuoteEstimate: {
4076
+ parameters: {
4077
+ query?: never;
4078
+ header: {
4079
+ /** @description API version. Required; pinned to this document. */
4080
+ 'x-api-version': '2026-04.blanc';
4081
+ /** @description API key. */
4082
+ 'x-api-key': string;
4083
+ };
4084
+ path?: never;
4085
+ cookie?: never;
4086
+ };
4087
+ requestBody: {
4088
+ content: {
4089
+ 'application/json': {
4090
+ /**
4091
+ * @description `exactIn` fixes the deposited `amountIn` and estimates the delivered output; `exactOut` fixes the desired `amountOut` and estimates the required input.
4092
+ * @example exactIn
4093
+ * @enum {string}
4094
+ */
4095
+ direction: 'exactIn' | 'exactOut';
4096
+ /**
4097
+ * @description Source chain id (CAIP-2, eip155)
4098
+ * @example eip155:8453
4099
+ */
4100
+ sourceChainId: string;
4101
+ /**
4102
+ * @description Source token address
4103
+ * @example 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913
4104
+ */
4105
+ sourceToken: string;
4106
+ /**
4107
+ * @description Destination chain id (CAIP-2), matching the destinations `POST /quotes` accepts: EVM (`eip155:*`), the virtual `hypercore:mainnet`, or non-EVM `solana:…` / `tron:…`.
4108
+ * @example eip155:42161
4109
+ */
4110
+ destinationChainId: string;
4111
+ /**
4112
+ * @description Destination token address — EVM `0x…`, Solana base58 mint, or Tron T-address.
4113
+ * @example 0xaf88d065e77c8cc2239327c5edb3a432268e5831
4114
+ */
4115
+ destinationToken: string;
4116
+ /**
4117
+ * Format: uint256
4118
+ * @description Deposited amount in the source token's smallest unit. Required for (and only valid with) `direction: exactIn`.
4119
+ * @example 1000000
4120
+ */
4121
+ amountIn?: string;
4122
+ /**
4123
+ * Format: uint256
4124
+ * @description Desired delivered amount in the destination token's smallest unit. Required for (and only valid with) `direction: exactOut`.
4125
+ * @example 1000000
4126
+ */
4127
+ amountOut?: string;
4128
+ /**
4129
+ * @description Account the route would execute against. Settlement layers filter on account type, so declaring it yields an estimate that matches what `POST /quotes` would plan. Defaults to `EOA` — the more restrictive of the two — so an undeclared caller is never shown smart-account-only routes.
4130
+ * @example SMART_ACCOUNT
4131
+ * @enum {string}
4132
+ */
4133
+ accountType?: 'EOA' | 'SMART_ACCOUNT';
4134
+ /**
4135
+ * @description Whether the smart account is already deployed on the source chain. An undeployed account pays one-time setup gas, so declaring it avoids over-charging repeat users. Defaults to undeployed (charges setup) for a smart account when omitted — the conservative direction. Ignored for EOAs.
4136
+ * @example true
4137
+ */
4138
+ accountDeployed?: boolean;
4139
+ /** @description Optional estimate tuning knobs */
4140
+ options?: {
4141
+ /**
4142
+ * @description Which settlement layers the estimate may rank. `{ include: [...] }` (allow-list) or `{ exclude: [...] }` (deny-list). Default unset = all layers eligible.
4143
+ * @example {
4144
+ * "exclude": [
4145
+ * "RELAY"
4146
+ * ]
4147
+ * }
4148
+ */
4149
+ settlementLayers?: {
4150
+ include: ('ACROSS' | 'ECO' | 'RELAY' | 'OFT' | 'NEAR' | 'RHINO' | 'CCTP')[];
4151
+ } | {
4152
+ exclude: ('ACROSS' | 'ECO' | 'RELAY' | 'OFT' | 'NEAR' | 'RHINO' | 'CCTP')[];
4153
+ };
4154
+ /**
4155
+ * @description Which fee categories to treat as sponsored. Sponsored categories are absorbed by the sponsor and do not reduce the delivered amount.
4156
+ * @example {
4157
+ * "gas": true,
4158
+ * "bridgeFees": true,
4159
+ * "swapFees": false
4160
+ * }
4161
+ */
4162
+ sponsorSettings?: {
4163
+ /**
4164
+ * @description Whether to sponsor gas for the intent
4165
+ * @default false
4166
+ * @example true
4167
+ */
4168
+ gas?: boolean;
4169
+ /**
4170
+ * @description Whether to sponsor bridge fees for the intent
4171
+ * @default false
4172
+ */
4173
+ bridgeFees?: boolean;
4174
+ /**
4175
+ * @description Whether to sponsor swap fees for the intent
4176
+ * @default false
4177
+ */
4178
+ swapFees?: boolean;
4179
+ /**
4180
+ * @description Whether to sponsor the Rhinestone protocol fee (`options.protocolFees`) for the intent. When `true`, the fee is charged to the integrator's sponsorship balance instead of carved from the user, without the sponsorship surcharge.
4181
+ * @default false
4182
+ */
4183
+ protocolFees?: boolean;
4184
+ };
4185
+ /**
4186
+ * @description How to rank candidate routes. `cheapest` minimizes USD cost, `fastest` minimizes fill time, `best` balances delivered output and speed.
4187
+ * @example best
4188
+ * @enum {string}
4189
+ */
4190
+ selectionStrategy?: 'cheapest' | 'fastest' | 'best';
4191
+ /** @description Integrator app fee applied to the estimate */
4192
+ appFees?: {
4193
+ /**
4194
+ * @description App fee rate in basis points of the input value (0–10000 = 0–100%).
4195
+ * @example 25
4196
+ */
4197
+ feeBps: number;
4198
+ };
4199
+ /** @description Rhinestone protocol fee applied to the estimate */
4200
+ protocolFees?: {
4201
+ /**
4202
+ * @description Rhinestone protocol fee rate in basis points of the input value (0–10000 = 0–100%). Carved from the user unless `sponsorSettings.protocolFees` is set.
4203
+ * @example 5
4204
+ */
4205
+ feeBps: number;
4206
+ };
4207
+ };
4208
+ };
4209
+ };
4210
+ };
4211
+ responses: {
4212
+ /** @description OK */
4213
+ 200: {
4214
+ headers: {
4215
+ [name: string]: unknown;
4216
+ };
4217
+ content: {
4218
+ 'application/json': {
4219
+ /** @description Indicative route estimates, best-first. Empty when no route is available. */
4220
+ routes: {
4221
+ /**
4222
+ * @description Settlement layer this estimate is for
4223
+ * @example ACROSS
4224
+ * @enum {string}
4225
+ */
4226
+ settlementLayer: 'INTENT_EXECUTOR' | 'SAME_CHAIN' | 'ACROSS' | 'ECO' | 'RELAY' | 'OFT' | 'NEAR' | 'RHINO' | 'CCTP';
4227
+ /**
4228
+ * @description `exact` for formula-priced layers; `approximated` for solver-market layers estimated from a typical-fee table.
4229
+ * @example exact
4230
+ * @enum {string}
4231
+ */
4232
+ accuracy: 'exact' | 'approximated';
4233
+ /**
4234
+ * @description `over_capacity` when the delivered notional exceeds the known liquidity ceiling for this route; such routes rank below fillable ones.
4235
+ * @example ok
4236
+ * @enum {string}
4237
+ */
4238
+ status: 'ok' | 'over_capacity';
4239
+ /** @description A single (chain, token) leg with amount, price, and metadata */
4240
+ input: {
4241
+ /**
4242
+ * @description Chain where this token leg settles
4243
+ * @example eip155:8453
4244
+ */
4245
+ chainId: string;
4246
+ /**
4247
+ * @description ERC-20 contract address for this token
4248
+ * @example 0xaf88d065e77c8cc2239327c5edb3a432268e5831
4249
+ */
4250
+ tokenAddress: string;
4251
+ /**
4252
+ * @description Token symbol. `null` when the internal token registry has no entry for this address.
4253
+ * @example USDC
4254
+ */
4255
+ symbol: string | null;
4256
+ /**
4257
+ * @description Token decimals. `null` when the internal token registry has no entry for this address.
4258
+ * @example 6
4259
+ */
4260
+ decimals: number | null;
4261
+ /** @description Unit price in USD. `null` when the price oracle has no data for this token. */
4262
+ price: {
4263
+ /**
4264
+ * @description Unit price in USD
4265
+ * @example 1
4266
+ */
4267
+ usd: number;
4268
+ } | null;
4269
+ /**
4270
+ * Format: uint256
4271
+ * @description Token amount in the token's smallest unit
4272
+ * @example 1050000
4273
+ */
4274
+ amount: string;
4275
+ };
4276
+ /** @description A single (chain, token) leg with amount, price, and metadata */
4277
+ output: {
4278
+ /**
4279
+ * @description Chain where this token leg settles (CAIP-2, any namespace)
4280
+ * @example eip155:8453
4281
+ */
4282
+ chainId: string;
4283
+ /**
4284
+ * @description Contract address of the delivered token (EVM 0x or non-EVM base58)
4285
+ * @example 0xaf88d065e77c8cc2239327c5edb3a432268e5831
4286
+ */
4287
+ tokenAddress: string;
4288
+ /**
4289
+ * @description Token symbol. `null` when the internal token registry has no entry for this address.
4290
+ * @example USDC
4291
+ */
4292
+ symbol: string | null;
4293
+ /**
4294
+ * @description Token decimals. `null` when the internal token registry has no entry for this address.
4295
+ * @example 6
4296
+ */
4297
+ decimals: number | null;
4298
+ /** @description Unit price in USD. `null` when the price oracle has no data for this token. */
4299
+ price: {
4300
+ /**
4301
+ * @description Unit price in USD
4302
+ * @example 1
4303
+ */
4304
+ usd: number;
4305
+ } | null;
4306
+ /**
4307
+ * Format: uint256
4308
+ * @description Token amount in the token's smallest unit
4309
+ * @example 1050000
4310
+ */
4311
+ amount: string;
4312
+ };
4313
+ /** @description Aggregate route fees with per-category breakdown */
4314
+ fees: {
4315
+ /** @description Full route cost in USD, regardless of who pays. Equal to `sum(breakdown.*.usd)` modulo rounding. */
4316
+ total: {
4317
+ /**
4318
+ * @description USD-denominated value
4319
+ * @example 0.029
4320
+ */
4321
+ usd: number;
4322
+ };
4323
+ /** @description Per-category fee breakdown */
4324
+ breakdown: {
4325
+ /** @description Aggregate gas cost (destination fill, swap execution, origin gas) */
4326
+ gas: {
4327
+ /**
4328
+ * @description Total cost of this category in USD, regardless of who pays.
4329
+ * @example 0.029
4330
+ */
4331
+ usd: number;
4332
+ /**
4333
+ * @description True when a sponsor absorbs some or all of this category. The user-vs-sponsor split is not surfaced.
4334
+ * @example false
4335
+ */
4336
+ sponsored: boolean;
4337
+ };
4338
+ /** @description Aggregate settlement-layer bridge cost */
4339
+ bridge: {
4340
+ /**
4341
+ * @description Total cost of this category in USD, regardless of who pays.
4342
+ * @example 0.029
4343
+ */
4344
+ usd: number;
4345
+ /**
4346
+ * @description True when a sponsor absorbs some or all of this category. The user-vs-sponsor split is not surfaced.
4347
+ * @example false
4348
+ */
4349
+ sponsored: boolean;
4350
+ };
4351
+ /** @description Aggregate solver swap commission */
4352
+ swap: {
4353
+ /**
4354
+ * @description Total cost of this category in USD, regardless of who pays.
4355
+ * @example 0.029
4356
+ */
4357
+ usd: number;
4358
+ /**
4359
+ * @description True when a sponsor absorbs some or all of this category. The user-vs-sponsor split is not surfaced.
4360
+ * @example false
4361
+ */
4362
+ sponsored: boolean;
4363
+ };
4364
+ /** @description Aggregate integrator app fee */
4365
+ app: {
4366
+ /**
4367
+ * @description Total cost of this category in USD, regardless of who pays.
4368
+ * @example 0.029
4369
+ */
4370
+ usd: number;
4371
+ /**
4372
+ * @description True when a sponsor absorbs some or all of this category. The user-vs-sponsor split is not surfaced.
4373
+ * @example false
4374
+ */
4375
+ sponsored: boolean;
4376
+ };
4377
+ /** @description Rhinestone protocol fee (`options.protocolFees`). `sponsored: true` when the integrator sponsorship balance pays it instead of the user. */
4378
+ protocol: {
4379
+ /**
4380
+ * @description Total cost of this category in USD, regardless of who pays.
4381
+ * @example 0.029
4382
+ */
4383
+ usd: number;
4384
+ /**
4385
+ * @description True when a sponsor absorbs some or all of this category. The user-vs-sponsor split is not surfaced.
4386
+ * @example false
4387
+ */
4388
+ sponsored: boolean;
4389
+ };
4390
+ /** @description Rhinestone's surcharge on the sponsored relayer coverage, charged to the sponsor. 0 when the intent is not sponsored. Pure surcharge — a sponsored protocol fee is shown on `protocol`, never here. */
4391
+ sponsorSurcharge: {
4392
+ /**
4393
+ * @description Total cost of this category in USD, regardless of who pays.
4394
+ * @example 0.029
4395
+ */
4396
+ usd: number;
4397
+ /**
4398
+ * @description True when a sponsor absorbs some or all of this category. The user-vs-sponsor split is not surfaced.
4399
+ * @example false
4400
+ */
4401
+ sponsored: boolean;
4402
+ };
4403
+ };
4404
+ };
4405
+ /** @description Estimated fill time for the route */
4406
+ estimatedFillTime: {
4407
+ /**
4408
+ * @description Typical end-to-end fill time for this route in seconds. Directional, not guaranteed.
4409
+ * @example 3
4410
+ */
4411
+ seconds: number;
4412
+ };
4413
+ }[];
4414
+ /**
4415
+ * @description Set when `routes` is empty and there is a single explanatory reason.
4416
+ * @enum {string}
4417
+ */
4418
+ unavailableReason?: 'unsupported_token' | 'no_route_support' | 'no_price' | 'below_minimum';
4419
+ };
4420
+ };
4421
+ };
4422
+ /** @description Invalid request parameters */
4423
+ 400: {
4424
+ headers: {
4425
+ [name: string]: unknown;
4426
+ };
4427
+ content: {
4428
+ 'application/json': {
4429
+ /** @enum {string} */
4430
+ code: 'VALIDATION_ERROR';
4431
+ /**
4432
+ * @description Human-readable error message
4433
+ * @example Invalid input
4434
+ */
4435
+ message: string;
4436
+ /** @description Per-field validation issues */
4437
+ details?: {
4438
+ /** @description Human-readable issue description */
4439
+ message: string;
4440
+ /** @description Structured issue context (e.g. `{ path: "body.accountAddress" }`) */
4441
+ context?: {
4442
+ [key: string]: unknown;
4443
+ };
4444
+ }[];
4445
+ } | {
4446
+ /** @enum {string} */
4447
+ code: 'SIMULATION_FAILED';
4448
+ /**
4449
+ * @description Human-readable error message
4450
+ * @example Invalid input
4451
+ */
4452
+ message: string;
4453
+ /** @description Classified on-chain simulation failure details */
4454
+ details?: {
4455
+ nonce?: string;
4456
+ category: string;
4457
+ errorSelector: string;
4458
+ errorName: string;
4459
+ errorArgs?: {
4460
+ [key: string]: string;
4461
+ };
4462
+ retryable: boolean;
4463
+ /** @enum {string} */
4464
+ retryHint?: 'RE_PREPARE' | 'RETRY_LATER';
4465
+ simulations?: unknown;
4466
+ } & {
4467
+ [key: string]: unknown;
4468
+ };
4469
+ } | {
4470
+ /** @enum {string} */
4471
+ code: 'INSUFFICIENT_LIQUIDITY';
4472
+ /**
4473
+ * @description Human-readable error message
4474
+ * @example Invalid input
4475
+ */
4476
+ message: string;
4477
+ /** @description Fillable subset and unfillable remainder */
4478
+ details?: {
4479
+ /** @description Intents fillable with current liquidity */
4480
+ availableIntents: {
4481
+ [key: string]: string;
4482
+ }[];
4483
+ /** @description Token amounts that cannot be filled */
4484
+ unfillable: {
4485
+ [key: string]: string;
4486
+ };
4487
+ };
4488
+ } | {
4489
+ /** @enum {string} */
4490
+ code: 'KEY_SCOPE_DENIED';
4491
+ /**
4492
+ * @description Human-readable error message
4493
+ * @example Invalid input
4494
+ */
4495
+ message: string;
4496
+ /** @description Single-element list describing the failing scope */
4497
+ details?: {
4498
+ message: string;
4499
+ context: {
4500
+ /**
4501
+ * @description Which scope rejected the request
4502
+ * @enum {string}
4503
+ */
4504
+ scope: 'allowMainnet' | 'intents' | 'deposits';
4505
+ /** @description Minimum level the endpoint demands */
4506
+ required: boolean | ('read' | 'write');
4507
+ /** @description Level resolved on the key */
4508
+ actual: boolean | ('none' | 'read' | 'write');
4509
+ };
4510
+ }[];
4511
+ } | {
4512
+ /** @enum {string} */
4513
+ code: 'NOT_FOUND' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'CONFLICT' | 'WITHDRAWAL_IN_PROGRESS' | 'WITHDRAWAL_FINALIZATION_PENDING' | 'UNPROCESSABLE_CONTENT' | 'TOO_MANY_REQUESTS' | 'SETTLEMENT_QUOTE_ERROR' | 'SETTLEMENT_EXECUTION_ERROR' | 'EXTERNAL_SERVICE_TIMEOUT' | 'RELAYER_MARKET_UNAVAILABLE' | 'INTERNAL_ERROR';
4514
+ /**
4515
+ * @description Human-readable error message
4516
+ * @example Invalid input
4517
+ */
4518
+ message: string;
4519
+ };
4520
+ };
4521
+ };
4522
+ /** @description API key scope denied */
4523
+ 403: {
4524
+ headers: {
4525
+ [name: string]: unknown;
4526
+ };
4527
+ content: {
4528
+ 'application/json': {
4529
+ /** @enum {string} */
4530
+ code: 'VALIDATION_ERROR';
4531
+ /**
4532
+ * @description Human-readable error message
4533
+ * @example Invalid input
4534
+ */
4535
+ message: string;
4536
+ /** @description Per-field validation issues */
4537
+ details?: {
4538
+ /** @description Human-readable issue description */
4539
+ message: string;
4540
+ /** @description Structured issue context (e.g. `{ path: "body.accountAddress" }`) */
4541
+ context?: {
4542
+ [key: string]: unknown;
4543
+ };
4544
+ }[];
4545
+ } | {
4546
+ /** @enum {string} */
4547
+ code: 'SIMULATION_FAILED';
4548
+ /**
4549
+ * @description Human-readable error message
4550
+ * @example Invalid input
4551
+ */
4552
+ message: string;
4553
+ /** @description Classified on-chain simulation failure details */
4554
+ details?: {
4555
+ nonce?: string;
4556
+ category: string;
4557
+ errorSelector: string;
4558
+ errorName: string;
4559
+ errorArgs?: {
4560
+ [key: string]: string;
4561
+ };
4562
+ retryable: boolean;
4563
+ /** @enum {string} */
4564
+ retryHint?: 'RE_PREPARE' | 'RETRY_LATER';
4565
+ simulations?: unknown;
4566
+ } & {
4567
+ [key: string]: unknown;
4568
+ };
4569
+ } | {
4570
+ /** @enum {string} */
4571
+ code: 'INSUFFICIENT_LIQUIDITY';
4572
+ /**
4573
+ * @description Human-readable error message
4574
+ * @example Invalid input
4575
+ */
4576
+ message: string;
4577
+ /** @description Fillable subset and unfillable remainder */
4578
+ details?: {
4579
+ /** @description Intents fillable with current liquidity */
4580
+ availableIntents: {
4581
+ [key: string]: string;
4582
+ }[];
4583
+ /** @description Token amounts that cannot be filled */
4584
+ unfillable: {
4585
+ [key: string]: string;
4586
+ };
4587
+ };
4588
+ } | {
4589
+ /** @enum {string} */
4590
+ code: 'KEY_SCOPE_DENIED';
4591
+ /**
4592
+ * @description Human-readable error message
4593
+ * @example Invalid input
4594
+ */
4595
+ message: string;
4596
+ /** @description Single-element list describing the failing scope */
4597
+ details?: {
4598
+ message: string;
4599
+ context: {
4600
+ /**
4601
+ * @description Which scope rejected the request
4602
+ * @enum {string}
4603
+ */
4604
+ scope: 'allowMainnet' | 'intents' | 'deposits';
4605
+ /** @description Minimum level the endpoint demands */
4606
+ required: boolean | ('read' | 'write');
4607
+ /** @description Level resolved on the key */
4608
+ actual: boolean | ('none' | 'read' | 'write');
4609
+ };
4610
+ }[];
4611
+ } | {
4612
+ /** @enum {string} */
4613
+ code: 'NOT_FOUND' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'CONFLICT' | 'WITHDRAWAL_IN_PROGRESS' | 'WITHDRAWAL_FINALIZATION_PENDING' | 'UNPROCESSABLE_CONTENT' | 'TOO_MANY_REQUESTS' | 'SETTLEMENT_QUOTE_ERROR' | 'SETTLEMENT_EXECUTION_ERROR' | 'EXTERNAL_SERVICE_TIMEOUT' | 'RELAYER_MARKET_UNAVAILABLE' | 'INTERNAL_ERROR';
4614
+ /**
4615
+ * @description Human-readable error message
4616
+ * @example Invalid input
4617
+ */
4618
+ message: string;
4619
+ };
4620
+ };
4621
+ };
4622
+ /** @description Server error */
4623
+ 500: {
4624
+ headers: {
4625
+ [name: string]: unknown;
4626
+ };
4627
+ content: {
4628
+ 'application/json': {
4629
+ /** @enum {string} */
4630
+ code: 'VALIDATION_ERROR';
4631
+ /**
4632
+ * @description Human-readable error message
4633
+ * @example Invalid input
4634
+ */
4635
+ message: string;
4636
+ /** @description Per-field validation issues */
4637
+ details?: {
4638
+ /** @description Human-readable issue description */
4639
+ message: string;
4640
+ /** @description Structured issue context (e.g. `{ path: "body.accountAddress" }`) */
4641
+ context?: {
4642
+ [key: string]: unknown;
4643
+ };
4644
+ }[];
4645
+ } | {
4646
+ /** @enum {string} */
4647
+ code: 'SIMULATION_FAILED';
4648
+ /**
4649
+ * @description Human-readable error message
4650
+ * @example Invalid input
4651
+ */
4652
+ message: string;
4653
+ /** @description Classified on-chain simulation failure details */
4654
+ details?: {
4655
+ nonce?: string;
4656
+ category: string;
4657
+ errorSelector: string;
4658
+ errorName: string;
4659
+ errorArgs?: {
4660
+ [key: string]: string;
4661
+ };
4662
+ retryable: boolean;
4663
+ /** @enum {string} */
4664
+ retryHint?: 'RE_PREPARE' | 'RETRY_LATER';
4665
+ simulations?: unknown;
4666
+ } & {
4667
+ [key: string]: unknown;
4668
+ };
4669
+ } | {
4670
+ /** @enum {string} */
4671
+ code: 'INSUFFICIENT_LIQUIDITY';
4672
+ /**
4673
+ * @description Human-readable error message
4674
+ * @example Invalid input
4675
+ */
4676
+ message: string;
4677
+ /** @description Fillable subset and unfillable remainder */
4678
+ details?: {
4679
+ /** @description Intents fillable with current liquidity */
4680
+ availableIntents: {
4681
+ [key: string]: string;
4682
+ }[];
4683
+ /** @description Token amounts that cannot be filled */
4684
+ unfillable: {
4685
+ [key: string]: string;
4686
+ };
4687
+ };
4688
+ } | {
4689
+ /** @enum {string} */
4690
+ code: 'KEY_SCOPE_DENIED';
4691
+ /**
4692
+ * @description Human-readable error message
4693
+ * @example Invalid input
4694
+ */
4695
+ message: string;
4696
+ /** @description Single-element list describing the failing scope */
4697
+ details?: {
4698
+ message: string;
4699
+ context: {
4700
+ /**
4701
+ * @description Which scope rejected the request
4702
+ * @enum {string}
4703
+ */
4704
+ scope: 'allowMainnet' | 'intents' | 'deposits';
4705
+ /** @description Minimum level the endpoint demands */
4706
+ required: boolean | ('read' | 'write');
4707
+ /** @description Level resolved on the key */
4708
+ actual: boolean | ('none' | 'read' | 'write');
4709
+ };
4710
+ }[];
4711
+ } | {
4712
+ /** @enum {string} */
4713
+ code: 'NOT_FOUND' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'CONFLICT' | 'WITHDRAWAL_IN_PROGRESS' | 'WITHDRAWAL_FINALIZATION_PENDING' | 'UNPROCESSABLE_CONTENT' | 'TOO_MANY_REQUESTS' | 'SETTLEMENT_QUOTE_ERROR' | 'SETTLEMENT_EXECUTION_ERROR' | 'EXTERNAL_SERVICE_TIMEOUT' | 'RELAYER_MARKET_UNAVAILABLE' | 'INTERNAL_ERROR';
4714
+ /**
4715
+ * @description Human-readable error message
4716
+ * @example Invalid input
4717
+ */
4718
+ message: string;
4719
+ };
4720
+ };
4721
+ };
4722
+ };
4723
+ };
4030
4724
  getAppFeeBalances: {
4031
4725
  parameters: {
4032
4726
  query?: never;