@0xmonaco/types 1.0.56 → 1.0.58-develop.f12e78b

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.
@@ -267,6 +267,46 @@ export interface paths {
267
267
  patch?: never;
268
268
  trace?: never;
269
269
  };
270
+ "/api/v1/accounts/self-trade-prevention": {
271
+ parameters: {
272
+ query?: never;
273
+ header?: never;
274
+ path?: never;
275
+ cookie?: never;
276
+ };
277
+ /**
278
+ * Get your self-trade-prevention default
279
+ * @description Get your self-trade-prevention default.
280
+ *
281
+ * Return the authenticated wallet's self-trade-prevention default — the mode
282
+ * applied when an order from this wallet family (every account sharing the
283
+ * wallet address, across applications) would match against the family's own
284
+ * resting order and the order itself names no override. `is_custom` is true
285
+ * when the wallet has explicitly set a default; false means the platform
286
+ * default (`CANCEL_MAKER`) is in effect.
287
+ */
288
+ get: operations["get_self_trade_prevention_default"];
289
+ /**
290
+ * Set your self-trade-prevention default
291
+ * @description Set your self-trade-prevention default.
292
+ *
293
+ * Set the authenticated wallet's self-trade-prevention default to one of
294
+ * `CANCEL_MAKER`, `CANCEL_TAKER`, `CANCEL_BOTH`, or `SKIP` (input is
295
+ * case-insensitive; responses always carry these spellings). The default is
296
+ * wallet-scoped — it covers every application and account sharing the wallet
297
+ * address — and a per-order mode always overrides it. The write is sequenced
298
+ * through the matching engine; on success the next order from the wallet
299
+ * family already resolves the new mode. Delegated-agent sessions cannot
300
+ * change it.
301
+ */
302
+ put: operations["set_self_trade_prevention_default"];
303
+ post?: never;
304
+ delete?: never;
305
+ options?: never;
306
+ head?: never;
307
+ patch?: never;
308
+ trace?: never;
309
+ };
270
310
  "/api/v1/accounts/sub-accounts": {
271
311
  parameters: {
272
312
  query?: never;
@@ -545,8 +585,21 @@ export interface paths {
545
585
  * @description Create authentication challenge.
546
586
  *
547
587
  * Generate a cryptographic challenge (nonce) for wallet-based authentication.
548
- * The user must sign the returned message with their private key to prove
549
- * ownership of the wallet.
588
+ * The wallet must authorize the returned message to prove control of the
589
+ * address. An EOA does that by signing it with its private key. A
590
+ * smart-contract wallet has no private key and instead produces a signature
591
+ * its own contract will accept, which Monaco checks under EIP-1271 — see
592
+ * Verify.
593
+ *
594
+ * The challenge is single-use and binds the session public key supplied here,
595
+ * so it authorizes exactly one keypair, once. The lifetime is 5 minutes, or
596
+ * 30 minutes for EVERY address while contract-signature login is enabled on
597
+ * the deployment — a multisig must collect owner approvals before it can
598
+ * answer, and the window is uniform rather than eligibility-specific so this
599
+ * unauthenticated endpoint cannot be used to probe which addresses hold a
600
+ * BuilderCodes payout bucket. Widening it is cheap: a longer window is a
601
+ * longer-lived offer to authorize one predetermined keypair once, never a
602
+ * longer-lived credential.
550
603
  */
551
604
  post: operations["create_challenge"];
552
605
  delete?: never;
@@ -619,6 +672,30 @@ export interface paths {
619
672
  * Verify the signed challenge message and create an authenticated session.
620
673
  * Binds the caller-provided ed25519 session public key to the new session;
621
674
  * subsequent requests are signed with the matching private key.
675
+ *
676
+ * How the signature is checked depends on the address. Almost every address
677
+ * is verified by recovering the signing key, exactly as before. EIP-1271
678
+ * verification applies only to an address that is BOTH eligible for
679
+ * contract-signature login AND has contract code deployed on chain: an
680
+ * eligible payout wallet that is an ordinary EOA is still verified by
681
+ * recovery. The two are mutually exclusive, and the request is identical
682
+ * either way — `signature` carries whatever the wallet produced, and no
683
+ * field changes. The one bound is length: a contract signature over 8192
684
+ * decoded bytes is refused as invalid rather than forwarded to the chain,
685
+ * which is far above any realistic owner set.
686
+ *
687
+ * Because deciding that requires reading the chain, this adds one
688
+ * client-visible outcome the recovery path does not have: UNAVAILABLE (REST
689
+ * 503). It is retryable and is NOT a verdict on the signature. It covers
690
+ * three cases, and an eligible address can see any of them even when it turns
691
+ * out to be an EOA, because the code lookup happens first: the chain did not
692
+ * answer, it did not answer within the deadline, or the server declined to
693
+ * ask because its own concurrent-verification capacity was full. That last
694
+ * one is local saturation rather than a chain fault, so an operator
695
+ * diagnosing it should check this service before the RPC endpoint.
696
+ *
697
+ * A rejected signature is 401, and so is a contract that rejects by
698
+ * REVERTING: that is the wallet answering "no", not a failure to ask.
622
699
  */
623
700
  post: operations["verify_signature"];
624
701
  delete?: never;
@@ -627,6 +704,180 @@ export interface paths {
627
704
  patch?: never;
628
705
  trace?: never;
629
706
  };
707
+ "/api/v1/buildercodes/config": {
708
+ parameters: {
709
+ query?: never;
710
+ header?: never;
711
+ path?: never;
712
+ cookie?: never;
713
+ };
714
+ /**
715
+ * Get your BuilderCodes program configuration
716
+ * @description Read this application's BuilderCodes program state.
717
+ *
718
+ * The application is taken from the authenticated session; there is no
719
+ * application id in the request. The caller must be the application's
720
+ * configured payout wallet. This method is gated by `buildercodes_enabled`
721
+ * like the rest of the service.
722
+ */
723
+ get: operations["get_buildercodes_config"];
724
+ put?: never;
725
+ post?: never;
726
+ delete?: never;
727
+ options?: never;
728
+ head?: never;
729
+ patch?: never;
730
+ trace?: never;
731
+ };
732
+ "/api/v1/buildercodes/payouts": {
733
+ parameters: {
734
+ query?: never;
735
+ header?: never;
736
+ path?: never;
737
+ cookie?: never;
738
+ };
739
+ /**
740
+ * List your per-trade BuilderCodes earnings
741
+ * @description List this application's per-trade BuilderCodes earnings.
742
+ *
743
+ * Newest credits are returned first. The application is taken from the
744
+ * authenticated session and cannot be selected by the caller.
745
+ */
746
+ get: operations["list_buildercode_payouts"];
747
+ put?: never;
748
+ post?: never;
749
+ delete?: never;
750
+ options?: never;
751
+ head?: never;
752
+ patch?: never;
753
+ trace?: never;
754
+ };
755
+ "/api/v1/buildercodes/payouts/summary": {
756
+ parameters: {
757
+ query?: never;
758
+ header?: never;
759
+ path?: never;
760
+ cookie?: never;
761
+ };
762
+ /**
763
+ * Summarize your BuilderCodes earnings
764
+ * @description Summarize this application's BuilderCodes earnings by token.
765
+ *
766
+ * Amounts stay separated by token because they are RAW atomic units. The
767
+ * application is taken from the authenticated session.
768
+ */
769
+ get: operations["get_buildercode_payout_summary"];
770
+ put?: never;
771
+ post?: never;
772
+ delete?: never;
773
+ options?: never;
774
+ head?: never;
775
+ patch?: never;
776
+ trace?: never;
777
+ };
778
+ "/api/v1/buildercodes/rewards/balance": {
779
+ parameters: {
780
+ query?: never;
781
+ header?: never;
782
+ path?: never;
783
+ cookie?: never;
784
+ };
785
+ /**
786
+ * Get your accrued BuilderCodes balance
787
+ * @description Read the caller's accrued BuilderCodes reward-bucket balances.
788
+ *
789
+ * The bucket is derived from the authenticated wallet under the reserved
790
+ * BuilderCodes application. Current enrollment is not required, so a former
791
+ * payout wallet can still inspect and claim what it accrued. Returns an empty
792
+ * list when no payout bucket or non-zero balance exists.
793
+ */
794
+ get: operations["get_buildercode_rewards_balance"];
795
+ put?: never;
796
+ post?: never;
797
+ delete?: never;
798
+ options?: never;
799
+ head?: never;
800
+ patch?: never;
801
+ trace?: never;
802
+ };
803
+ "/api/v1/buildercodes/rewards/claim": {
804
+ parameters: {
805
+ query?: never;
806
+ header?: never;
807
+ path?: never;
808
+ cookie?: never;
809
+ };
810
+ get?: never;
811
+ put?: never;
812
+ /**
813
+ * Claim accrued BuilderCodes payout balance
814
+ * @description Claim accrued BuilderCodes payout balance.
815
+ *
816
+ * Move accrued BuilderCodes payout balance from your reserved payout bucket
817
+ * into a trading balance under the authenticated application, making it
818
+ * withdrawable through the ordinary withdrawal flow. Ledger-only (one shared
819
+ * vault + one backend ledger) — no on-chain transaction and no gas.
820
+ *
821
+ * The bucket is resolved from the AUTHENTICATED caller's own wallet address,
822
+ * never from the request body, so a caller can only ever claim their own
823
+ * accrued balance. A wallet that has never been an enrolled frontend's payout
824
+ * address simply has an empty bucket. A wallet that USED to be a payout
825
+ * address keeps whatever it accrued back then and can still claim it —
826
+ * payout-address changes are not retroactive, so current enrollment is
827
+ * deliberately not required.
828
+ *
829
+ * The payout wallet may be an EOA or a smart-contract wallet. An EOA answers
830
+ * Monaco's signature challenge directly. A contract wallet — a multisig such
831
+ * as a Safe — holds no private key and cannot, so it authenticates by EIP-1271
832
+ * contract signature instead: Monaco asks the wallet contract whether it
833
+ * accepts the challenge. That path is deliberately narrow. It is offered only
834
+ * to a wallet that holds a BuilderCodes payout bucket, only while the
835
+ * `contract_wallet_auth_enabled` flag is on, and only where the deployment has
836
+ * a chain RPC endpoint configured. While any of those is not met, login is
837
+ * EOA-only and a contract payout wallet can neither call this endpoint nor
838
+ * withdraw afterwards, so its accrued share stays unclaimable.
839
+ *
840
+ * Delegated-agent sessions are refused: a delegated grant conveys only
841
+ * order-management authority, and this claim converts reserved balance into a
842
+ * tradeable one. The refusal happens before the feature check, so a delegated
843
+ * caller is refused whether or not BuilderCodes is enabled.
844
+ *
845
+ * Transport contracts differ, and this comment is emitted into the generated
846
+ * gRPC SDK where HTTP statuses do not exist. An insufficient payout balance
847
+ * is **HTTP 409** on REST and **FAILED_PRECONDITION** on gRPC; a refused
848
+ * caller (delegated session, or BuilderCodes disabled) is **HTTP 403** on
849
+ * REST and **PERMISSION_DENIED** on gRPC.
850
+ *
851
+ * A claim can also fail as **HTTP 503** / **UNAVAILABLE** when the matching
852
+ * engine is unreachable, restarting, or slow to answer. Treat that as an
853
+ * UNKNOWN outcome, NOT a rejection. The request is admitted to the sequencer
854
+ * before its reply is sent, so a claim that timed out in transit may still
855
+ * commit, and there is no idempotency key — a blind retry can claim a SECOND
856
+ * time. Do NOT retry automatically, and do not settle it with a balance
857
+ * read: an admitted claim can still be sitting in the sequencer queue when
858
+ * the balance is read, so an unchanged balance does not prove the claim will
859
+ * not commit. Treat the claim as PENDING rather than failed, re-check once
860
+ * the engine is healthy again, and reconcile before issuing another claim.
861
+ *
862
+ * Not every 503 is ambiguous, and the safe ones are tagged. TWO outcomes are
863
+ * refused BEFORE the claim can be admitted to the sequencer, so they left no
864
+ * durable-log or state footprint and definitely committed nothing. One is a
865
+ * deliberate maintenance block, where REST carries
866
+ * `"error": "OPERATIONS_BLOCKED"` and gRPC tags the status with
867
+ * `x-maintenance-blocked: true`. The other is a sequencer admission rejection
868
+ * when the engine is saturated, where REST carries `"code": "OVERLOADED"` and
869
+ * gRPC carries the same code in the status' error details. Both are safe to
870
+ * retry with backoff, and an overload positively wants one. Only an UNTAGGED
871
+ * availability failure — matching-engine transport, timeout and fail-closed
872
+ * paths — carries the unknown outcome.
873
+ */
874
+ post: operations["claim_buildercode_rewards"];
875
+ delete?: never;
876
+ options?: never;
877
+ head?: never;
878
+ patch?: never;
879
+ trace?: never;
880
+ };
630
881
  "/api/v1/delegated-agents": {
631
882
  parameters: {
632
883
  query?: never;
@@ -2869,6 +3120,12 @@ export interface components {
2869
3120
  clientOrderId?: string | null;
2870
3121
  /** @description Optional submission identity, distinct from clientOrderId. Use 1-64 characters from [A-Za-z0-9._:-], without whitespace. Scoped to your authenticated user/subaccount and application, shared by create and batch-create items. Retrying the same key and normalized order payload within 24 hours of the original acceptance returns the original committed submission result, even after a fill or cancellation, without executing again. A full response cache does not prevent new keyed submissions: durable responses may be evicted while exact key history remains retained. If response capacity is protected by pending durability or persistence, a new key is refused with ORDER_SUBMISSION_CAPACITY_EXCEEDED. A retry whose original response cannot currently be retrieved returns ORDER_SUBMISSION_UNAVAILABLE and never executes again. Both are HTTP 503 / gRPC UNAVAILABLE, or per-item errors in batches. Retry the same key and payload; for previously accepted keys, stay within 24 hours of the original acceptance. A capacity refusal does not accept or reserve a new key. Different payload returns IDEMPOTENCY_KEY_CONFLICT (HTTP 409 / gRPC ALREADY_EXISTS; per-item error in batches). Validation failures before acceptance do not reserve the key. The window does not extend on retries; after it expires the key may execute a new order, so never retry an unresolved submission after 24 hours. Generate a fresh key for each intended new order and retain it across transport retries. Without a key, a timeout or 5xx leaves the outcome unknown and must not be blindly retried. */
2871
3122
  idempotencyKey?: string | null;
3123
+ /**
3124
+ * @description Per-order self-trade-prevention override: how the engine resolves this order matching against one of your own resting orders (your whole wallet family, subaccounts included; the incoming order's mode governs the step and resting orders' modes are never consulted). CANCEL_MAKER cancels each of your resting orders encountered and keeps matching. CANCEL_TAKER fills third-party liquidity up to the first self-touch, then cancels the incoming order's remainder — a zero-fill CANCELLED outcome is possible. CANCEL_BOTH additionally cancels the encountered resting orders. SKIP trades around your resting orders; a remainder that would rest crossing one of your surviving orders is cancelled instead of resting. Omitted, your wallet's configured default applies, else the platform default CANCEL_MAKER. STP cancellations carry terminalReason SELF_TRADE_PREVENTION and stpCounterpartyOrderId on reads and WebSocket events. With time_in_force FOK: CANCEL_MAKER cancels your makers first and then fills or kills; CANCEL_TAKER and SKIP cancel the whole order when self is in the fill path; CANCEL_BOTH fails only this item with a per-item SELF_TRADE_NOT_ALLOWED error — the batch itself still returns 2xx / OK. An unknown value likewise fails only this item, with error.code INVALID_SELF_TRADE_PREVENTION_MODE. The requested value is echoed back as selfTradePreventionMode on order reads, absent when omitted here.
3125
+ * @example CANCEL_TAKER
3126
+ * @enum {string|null}
3127
+ */
3128
+ selfTradePreventionMode?: "CANCEL_MAKER" | "CANCEL_TAKER" | "CANCEL_BOTH" | "SKIP" | null;
2872
3129
  };
2873
3130
  BatchCreateOrdersRequest: {
2874
3131
  orders: components["schemas"]["BatchCreateOrderItem"][];
@@ -2944,10 +3201,16 @@ export interface components {
2944
3201
  */
2945
3202
  postOnly?: boolean | null;
2946
3203
  /**
2947
- * @description Client-assigned correlation handle, echoed back on order reads (detail and list) and on order WebSocket events. At most 64 characters from [A-Za-z0-9._:-]; surrounding whitespace is trimmed before storage, and a blank or whitespace-only value is treated as absent. Uniqueness is enforced only among your orders that are RESTING on the book: an item reusing a value another of your resting orders still holds fails that item alone — the batch itself returns 2xx / OK and the offending item's result slot carries error.code CLIENT_ORDER_ID_CONFLICT; no transport-level 409 / ALREADY_EXISTS is raised. An order that never rests — MARKET, IOC/FOK, or a LIMIT that fills completely on arrival — does not take the handle, and the value is released the moment any order reaches a terminal state. It is therefore NOT an idempotency key, though on this replace path a retry cannot double-execute: the request names the original order id, and the sequencer revalidates that original in memory and on the book at sequence time, so once the first replacement succeeds the original is gone and a retry is rejected with ORDER_NOT_FOUND rather than placing a second order. That code is itself ambiguous — the original may instead have filled or been cancelled — so the risk here is acting on a stale view, not duplicate execution. Reconcile a lost response against the order WebSocket stream, which carries this value on the submit acknowledgement and on fills, including for orders that never rest; order history is replica-backed and can omit an order that did land. The stream is not replayable and has no sequence number to backfill from, and its fan-out is non-persistent Core NATS: the service can re-establish an ended upstream subscription without closing your socket, so events can be missed while your connection still looks healthy. A matching event is therefore positive proof the order was accepted, but silence is NEVER evidence it was not, and no client-observable condition makes it so. Absent positive evidence the outcome is unresolved: hold and escalate rather than resubmitting. A replace item carries no order type or time-in-force and its original must still be RESTING, so the IOC/FOK and MARKET post-acceptance rejection shapes are unreachable here. Failures split by WHEN they occur, and the difference decides whether your original survives. Before sequencing: a malformed value is caught up front and rejects the whole batch with HTTP 400 / gRPC INVALID_ARGUMENT, and a per-item validation failure fails that item with no mutation and no event. A pre-cancel gate then drops two more classes before anything is cancelled — a handle conflict, and a post-only replacement that would cross the book as it will stand once this batch's originals are cancelled — so in the ordinary POST_ONLY_WOULD_CROSS case the item fails with its original still RESTING and untouched. After that the endpoint is CANCEL-FIRST: the original is cancelled in pass 1, so a residual placement failure then — a self-trade rejection, or a crossing that only became apparent in pass 2 — leaves the original CANCELLED and emits its cancellation events (terminal reason 'replaced') while the item reports the placement error and no replacement is placed. Never assume a failed item left your original resting; read results[] and the stream. Single ReplaceOrder differs: it is atomic, and a rejected replacement leaves the original untouched. Where no surface is conclusive, do not resubmit. A replacement is a new order with a new id, so it carries its own value and inherits nothing from the original — restate it to keep the handle.
3204
+ * @description Client-assigned correlation handle, echoed back on order reads (detail and list) and on order WebSocket events. At most 64 characters from [A-Za-z0-9._:-]; surrounding whitespace is trimmed before storage, and a blank or whitespace-only value is treated as absent. Uniqueness is enforced only among your orders that are RESTING on the book: an item reusing a value another of your resting orders still holds fails that item alone — the batch itself returns 2xx / OK and the offending item's result slot carries error.code CLIENT_ORDER_ID_CONFLICT; no transport-level 409 / ALREADY_EXISTS is raised. An order that never rests — MARKET, IOC/FOK, or a LIMIT that fills completely on arrival — does not take the handle, and the value is released the moment any order reaches a terminal state. It is therefore NOT an idempotency key, though on this replace path a retry cannot double-execute: the request names the original order id, and the sequencer revalidates that original in memory and on the book at sequence time, so once the first replacement succeeds the original is gone and a retry is rejected with ORDER_NOT_FOUND rather than placing a second order. That code is itself ambiguous — the original may instead have filled or been cancelled — so the risk here is acting on a stale view, not duplicate execution. Reconcile a lost response against the order WebSocket stream, which carries this value on the submit acknowledgement and on fills, including for orders that never rest; order history is replica-backed and can omit an order that did land. The stream is not replayable and has no sequence number to backfill from, and its fan-out is non-persistent Core NATS: the service can re-establish an ended upstream subscription without closing your socket, so events can be missed while your connection still looks healthy. A matching event is therefore positive proof the order was accepted, but silence is NEVER evidence it was not, and no client-observable condition makes it so. Absent positive evidence the outcome is unresolved: hold and escalate rather than resubmitting. A replace item carries no order type or time-in-force and its original must still be RESTING, so the IOC/FOK and MARKET post-acceptance rejection shapes are unreachable here. Failures split by WHEN they occur, and the difference decides whether your original survives. Before sequencing: every validation failure — a malformed value included — fails ITS ITEM alone with a structured error.code (INVALID_CLIENT_ORDER_ID for a malformed handle, the same code batch-create uses) and no mutation and no event, batch-create parity; the whole request 400s only for an empty or oversize batch. (Earlier releases rejected the whole batch for a malformed value here.) A pre-cancel gate then drops two more classes before anything is cancelled — a handle conflict, and a post-only replacement that would cross the book as it will stand once this batch's originals are cancelled — so in the ordinary POST_ONLY_WOULD_CROSS case the item fails with its original still RESTING and untouched. After that the endpoint is CANCEL-FIRST: the original is cancelled in pass 1, so a residual placement failure then — a self-trade rejection, or a crossing that only became apparent in pass 2 — leaves the original CANCELLED and emits its cancellation events (terminal reason 'replaced') while the item reports the placement error and no replacement is placed. Never assume a failed item left your original resting; read results[] and the stream. Single ReplaceOrder differs: it is atomic, and a rejected replacement leaves the original untouched. Where no surface is conclusive, do not resubmit. A replacement is a new order with a new id, so it carries its own value and inherits nothing from the original — restate it to keep the handle.
2948
3205
  * @example quote-btc-1130-a
2949
3206
  */
2950
3207
  clientOrderId?: string | null;
3208
+ /**
3209
+ * @description Per-order self-trade-prevention override for the replacement: CANCEL_MAKER, CANCEL_TAKER, CANCEL_BOTH, or SKIP (see the create-order field for the full semantics). A replacement is a new order with a new id, so it carries its own value and inherits nothing from the original — restate it to keep the override. Omitted, your wallet's configured default applies, else the platform default CANCEL_MAKER. An unknown value fails only this item, with error.code INVALID_SELF_TRADE_PREVENTION_MODE. The requested value is echoed back as selfTradePreventionMode on order reads, absent when omitted here.
3210
+ * @example CANCEL_TAKER
3211
+ * @enum {string|null}
3212
+ */
3213
+ selfTradePreventionMode?: "CANCEL_MAKER" | "CANCEL_TAKER" | "CANCEL_BOTH" | "SKIP" | null;
2951
3214
  };
2952
3215
  BatchReplaceOrdersRequest: {
2953
3216
  orders: components["schemas"]["BatchReplaceOrderItem"][];
@@ -2990,6 +3253,73 @@ export interface components {
2990
3253
  matchResult?: components["schemas"]["MatchResult"];
2991
3254
  error?: components["schemas"]["BatchReplaceError"];
2992
3255
  };
3256
+ BuildercodePayout: {
3257
+ /**
3258
+ * Format: uuid
3259
+ * @description Trade that generated this credit.
3260
+ */
3261
+ tradeId?: string | null;
3262
+ /**
3263
+ * @description Application payout address at credit time.
3264
+ * @example 0x0000000000000000000000000000000000000001
3265
+ */
3266
+ payoutAddress?: string | null;
3267
+ /**
3268
+ * @description Credit token contract address.
3269
+ * @example 0x0000000000000000000000000000000000000002
3270
+ */
3271
+ token?: string | null;
3272
+ /**
3273
+ * @description Credited amount in RAW atomic units of the token.
3274
+ * @example 1000000
3275
+ */
3276
+ amount?: string | null;
3277
+ /**
3278
+ * Format: int32
3279
+ * @description Realized whole-basis-point rate for this credit after the Monaco-floor clamp, computed from the credited amount divided by the gross protocol take and truncated down. This can be lower than the configured BuilderCodes budget.
3280
+ * @example 1000
3281
+ */
3282
+ appliedBps?: number | null;
3283
+ /**
3284
+ * Format: date-time
3285
+ * @description RFC 3339 credit timestamp.
3286
+ */
3287
+ createdAt?: string | null;
3288
+ };
3289
+ BuildercodePayoutTokenTotal: {
3290
+ /**
3291
+ * @description Credit token contract address.
3292
+ * @example 0x0000000000000000000000000000000000000002
3293
+ */
3294
+ token?: string | null;
3295
+ /**
3296
+ * @description Summed credits in RAW atomic units of this token.
3297
+ * @example 5000000
3298
+ */
3299
+ totalAmount?: string | null;
3300
+ /**
3301
+ * Format: int64
3302
+ * @description Number of credits included in this token total.
3303
+ */
3304
+ payoutCount?: number | null;
3305
+ /**
3306
+ * Format: date-time
3307
+ * @description RFC 3339 timestamp of this token's newest credit.
3308
+ */
3309
+ lastCreditedAt?: string | null;
3310
+ };
3311
+ BuildercodeRewardsBalance: {
3312
+ /**
3313
+ * @description Reward token contract address.
3314
+ * @example 0x0000000000000000000000000000000000000002
3315
+ */
3316
+ token?: string | null;
3317
+ /**
3318
+ * @description Available BuilderCodes reward balance in RAW atomic units.
3319
+ * @example 1200000
3320
+ */
3321
+ available?: string | null;
3322
+ };
2993
3323
  CancelConditionalOrderResponse: {
2994
3324
  /**
2995
3325
  * Format: uuid
@@ -3165,6 +3495,30 @@ export interface components {
3165
3495
  */
3166
3496
  reason?: string | null;
3167
3497
  };
3498
+ ClaimBuildercodeRewardsRequest: {
3499
+ /**
3500
+ * @description Payout token contract address (0x-prefixed) to claim. BuilderCodes shares accrue in the quote token of the traded pair.
3501
+ * @example 0x0000000000000000000000000000000000000002
3502
+ */
3503
+ token: string;
3504
+ /**
3505
+ * @description Amount to claim, in RAW atomic units of the token. Must be positive and no greater than the accrued payout balance.
3506
+ * @example 1000000
3507
+ */
3508
+ amount: string;
3509
+ };
3510
+ ClaimBuildercodeRewardsResponse: {
3511
+ /**
3512
+ * @description Your BuilderCodes payout-bucket balance after the claim, RAW atomic units.
3513
+ * @example 0
3514
+ */
3515
+ payoutBalance?: string | null;
3516
+ /**
3517
+ * @description Your trading balance for the token after the claim, RAW atomic units.
3518
+ * @example 1000000
3519
+ */
3520
+ tradingBalance?: string | null;
3521
+ };
3168
3522
  ClosePositionRequest: {
3169
3523
  quantity?: string | null;
3170
3524
  closeType?: string | null;
@@ -3383,6 +3737,12 @@ export interface components {
3383
3737
  clientOrderId?: string | null;
3384
3738
  /** @description Optional submission identity, distinct from clientOrderId. Use 1-64 characters from [A-Za-z0-9._:-], without whitespace. Scoped to your authenticated user/subaccount and application, shared by create and batch-create items. Retrying the same key and normalized order payload within 24 hours of the original acceptance returns the original committed submission result, even after a fill or cancellation, without executing again. A full response cache does not prevent new keyed submissions: durable responses may be evicted while exact key history remains retained. If response capacity is protected by pending durability or persistence, a new key is refused with ORDER_SUBMISSION_CAPACITY_EXCEEDED. A retry whose original response cannot currently be retrieved returns ORDER_SUBMISSION_UNAVAILABLE and never executes again. Both are HTTP 503 / gRPC UNAVAILABLE, or per-item errors in batches. Retry the same key and payload; for previously accepted keys, stay within 24 hours of the original acceptance. A capacity refusal does not accept or reserve a new key. Different payload returns IDEMPOTENCY_KEY_CONFLICT (HTTP 409 / gRPC ALREADY_EXISTS; per-item error in batches). Validation failures before acceptance do not reserve the key. The window does not extend on retries; after it expires the key may execute a new order, so never retry an unresolved submission after 24 hours. Generate a fresh key for each intended new order and retain it across transport retries. Without a key, a timeout or 5xx leaves the outcome unknown and must not be blindly retried. */
3385
3739
  idempotencyKey?: string | null;
3740
+ /**
3741
+ * @description Per-order self-trade-prevention override: how the engine resolves this order matching against one of your own resting orders (your whole wallet family, subaccounts included; the incoming order's mode governs the step and resting orders' modes are never consulted). CANCEL_MAKER cancels each of your resting orders encountered and keeps matching. CANCEL_TAKER fills third-party liquidity up to the first self-touch, then cancels the incoming order's remainder — a zero-fill CANCELLED outcome is possible. CANCEL_BOTH additionally cancels the encountered resting orders. SKIP trades around your resting orders; a remainder that would rest crossing one of your surviving orders is cancelled instead of resting. Omitted, your wallet's configured default applies, else the platform default CANCEL_MAKER. STP cancellations carry terminalReason SELF_TRADE_PREVENTION and stpCounterpartyOrderId on reads and WebSocket events. With time_in_force FOK: CANCEL_MAKER cancels your makers first and then fills or kills; CANCEL_TAKER and SKIP cancel the whole order when self is in the fill path; CANCEL_BOTH rejects the placement with SELF_TRADE_NOT_ALLOWED. The requested value is echoed back as selfTradePreventionMode on order reads, absent when omitted here.
3742
+ * @example CANCEL_TAKER
3743
+ * @enum {string|null}
3744
+ */
3745
+ selfTradePreventionMode?: "CANCEL_MAKER" | "CANCEL_TAKER" | "CANCEL_BOTH" | "SKIP" | null;
3386
3746
  };
3387
3747
  CreateOrderResponse: {
3388
3748
  /**
@@ -4003,6 +4363,46 @@ export interface components {
4003
4363
  */
4004
4364
  totalPages?: number | null;
4005
4365
  };
4366
+ GetBuildercodePayoutSummaryResponse: {
4367
+ /**
4368
+ * Format: int64
4369
+ * @description Total credit count across every token.
4370
+ */
4371
+ totalPayouts?: number | null;
4372
+ /**
4373
+ * Format: date-time
4374
+ * @description RFC 3339 timestamp of the newest credit, or null when none exists.
4375
+ */
4376
+ lastCreditedAt?: string | null;
4377
+ /** @description Per-token earnings totals. Empty when this application has no payouts. */
4378
+ byToken?: components["schemas"]["BuildercodePayoutTokenTotal"][] | null;
4379
+ };
4380
+ GetBuildercodeRewardsBalanceResponse: {
4381
+ /** @description One entry per reward token with a non-zero available balance. */
4382
+ balances?: components["schemas"]["BuildercodeRewardsBalance"][] | null;
4383
+ };
4384
+ GetBuildercodesConfigResponse: {
4385
+ /**
4386
+ * Format: uuid
4387
+ * @description Application id derived from the authenticated session.
4388
+ */
4389
+ applicationId?: string | null;
4390
+ /** @description Whether this application is currently enrolled in BuilderCodes. */
4391
+ enrolled?: boolean | null;
4392
+ /**
4393
+ * @description Current lowercase-normalized payout address, or null when none is configured.
4394
+ * @example 0x0000000000000000000000000000000000000001
4395
+ */
4396
+ payoutAddress?: string | null;
4397
+ /** @description Current BuilderCodes feature-flag state. Successful responses are true because this endpoint is gated by the flag. */
4398
+ buildercodesEnabled?: boolean | null;
4399
+ /**
4400
+ * Format: uint32
4401
+ * @description Target BuilderCodes share in basis points, computed from the fill's gross non-negative Monaco protocol take and capped by the remainder after Monaco's floor.
4402
+ * @example 1000
4403
+ */
4404
+ buildercodesBudgetBps?: number | null;
4405
+ };
4006
4406
  /** @description OHLCV candlestick data. */
4007
4407
  GetCandlesResponse: {
4008
4408
  candles?: components["schemas"]["Candle"][] | null;
@@ -4386,7 +4786,7 @@ export interface components {
4386
4786
  */
4387
4787
  tradingPairId?: string | null;
4388
4788
  /**
4389
- * @description Order type: LIMIT or MARKET
4789
+ * @description What kind of order this row is: LIMIT or MARKET for a book order, TWAP for a TWAP parent, CONDITIONAL for a price-triggered order. TWAP and CONDITIONAL appear only in responses — they name a row's kind and cannot be placed through the create-order request, which still takes LIMIT, MARKET or IOC. A row of either kind carries its kind-specific fields in `twap` or `conditional`; the fields shared by every kind (id, side, quantity, status, timestamps) are populated in place as usual.
4390
4790
  * @example LIMIT
4391
4791
  */
4392
4792
  orderType?: string | null;
@@ -4396,7 +4796,7 @@ export interface components {
4396
4796
  */
4397
4797
  side?: string | null;
4398
4798
  /**
4399
- * @description Limit price (null for market orders)
4799
+ * @description Limit price (null for market orders). For a TWAP parent this is its optional parent-level limit price, and for a conditional order the limit price its triggered order will carry (null when it triggers as a market order).
4400
4800
  * @example 35000.00
4401
4801
  */
4402
4802
  price?: string | null;
@@ -4588,12 +4988,22 @@ export interface components {
4588
4988
  * @example false
4589
4989
  */
4590
4990
  postOnly?: boolean | null;
4991
+ /** @description Present only when orderType is TWAP: the full TWAP parent, identical to what GET /api/v1/orders/twap/{twapOrderId} returns — schedule, slice counters, progress, and terminal reason. The row's shared fields mirror it: quantity is the parent's total quantity, filledQuantity its executed quantity, and status maps its state onto the order statuses. */
4992
+ twap?: components["schemas"]["TwapOrder"] | null;
4993
+ /** @description Present only when orderType is CONDITIONAL: the full conditional order, identical to what the conditional-order endpoints return — trigger price and direction, condition type, linked group, and the order it triggers into. The row's shared fields mirror it, with status mapping its state onto the order statuses. */
4994
+ conditional?: components["schemas"]["ConditionalOrder"] | null;
4591
4995
  /**
4592
4996
  * Format: int64
4593
4997
  * @description Opaque, compare-only revision counter for this order's state: the sequencer step that wrote it. A strictly higher value is strictly newer state for that order. The SAME counter is carried on every order WebSocket event and on the `orders` snapshot frame, so a reconnecting client reconciles on `(id, version)` — take the REST row when `snapshot.version >= local.version`, else keep local state. Note `>=`, not `>`: on the stream, equal versions mean the SAME STEP rather than identical state, because one step emits several events for one order (an `OrderPlaced` and then its fills) and a batch shares one step across every item. A REST row is that step's FINAL state, so it wins a tie. Between two REST reads the comparison is simpler — equal there does mean identical state. Do not read anything else into the number: it is not a count of updates, consecutive values are not expected (it is drawn from a global sequence shared by every order, so per-order values are sparse and gaps are normal), and it is not comparable across different orders. Absent means unknown: an order last written before this field existed. Fall back to a full field comparison for those rather than treating absent as version zero — and note that a comparison against an absent value is false in both directions, so an order held locally without one is never refreshed by the merge above; take the REST row unconditionally for those. Reconciling on this counter does NOT on its own close a reconnect gap: an order that filled or was cancelled while the socket was down appears in neither the resting snapshot nor the stream, so recover fills from `listUserTrades` (ordered by execution time) and resolve anything your local state believes is resting that the snapshot no longer lists with a targeted `getOrder`. Unlike `updatedAt`, this value is identical on every REST endpoint that serves the same order state, and never advances without a state change.
4594
4998
  * @example 918342
4595
4999
  */
4596
5000
  version?: number | null;
5001
+ /**
5002
+ * @description The per-order self-trade-prevention override REQUESTED when this order was placed or replaced: CANCEL_MAKER, CANCEL_TAKER, CANCEL_BOTH, or SKIP. Absent when the order carried no override — including every order placed before the field was accepted on write — even though a wallet or platform default still governed its matching. This echoes the request, not the resolved default.
5003
+ * @example CANCEL_TAKER
5004
+ * @enum {string|null}
5005
+ */
5006
+ selfTradePreventionMode?: "CANCEL_MAKER" | "CANCEL_TAKER" | "CANCEL_BOTH" | "SKIP" | null;
4597
5007
  };
4598
5008
  /** @description Orderbook snapshot with token metadata and sequence number. */
4599
5009
  GetOrderbookResponse: {
@@ -4962,6 +5372,12 @@ export interface components {
4962
5372
  * partial.
4963
5373
  */
4964
5374
  cumFees?: string | null;
5375
+ /**
5376
+ * Format: int64
5377
+ * @description Opaque, non-negative producer-owned version for this position row. Compare only within the same position; higher is newer. 0 is the unranked legacy sentinel and never participates in ordering: treat it exactly as an absent version and fall back to a full field comparison rather than ranking it as oldest. It advances on sequenced position mutations (open, add, reduce, close, funding, margin transfer, liquidation, ADL) and is shared by the persisted read, the WebSocket positions snapshot and a RANKED live position_update frame. A live frame is ranked only when it is a faithful projection of the row persisted at that sequence: in practice the fills that leave a position open. Frames that re-read live risk state after sequencing (funding, margin_added/margin_reduced) and terminal frames (which report size 0 and LIQUIDATED, while the stored row keeps its size and records CLOSED) omit the version even though the mutation did advance the persisted one, so an absent version never implies that nothing was persisted. mark_price, unrealized_pnl, liquidation_price and leverage are UNVERSIONED valuation fields re-derived from the oracle mark on every frame: the version does not advance for them (a valuation-only oracle tick persists nothing; a state-transitioning one, a breach or recovery, does restamp the account's open positions), so the merge rule is per field group — on an equal version skip the versioned fields but still take those four from the newer payload, because discarding a whole payload on an equal version freezes displayed PnL. isolated_margin is the one exception among the versioned fields: the WebSocket positions snapshot overlays it from an independent live matching-engine read rather than the versioned row, so take it from the newest payload on an equal version too or a consumer can retain stale backing. A response served from live matching-engine state reports 0 (unranked): the engine holds the state but not the version.
5378
+ * @example 918342
5379
+ */
5380
+ version?: number | null;
4965
5381
  };
4966
5382
  GetPositionRiskResponse: {
4967
5383
  positionId?: string | null;
@@ -5555,6 +5971,30 @@ export interface components {
5555
5971
  */
5556
5972
  totalPages?: number | null;
5557
5973
  };
5974
+ ListBuildercodePayoutsResponse: {
5975
+ /** @description Per-trade credits, newest first. */
5976
+ payouts?: components["schemas"]["BuildercodePayout"][] | null;
5977
+ /**
5978
+ * Format: uint32
5979
+ * @description Total payout rows for this application.
5980
+ */
5981
+ total?: number | null;
5982
+ /**
5983
+ * Format: uint32
5984
+ * @description Current page number.
5985
+ */
5986
+ page?: number | null;
5987
+ /**
5988
+ * Format: uint32
5989
+ * @description Items per page.
5990
+ */
5991
+ pageSize?: number | null;
5992
+ /**
5993
+ * Format: uint32
5994
+ * @description Total number of pages.
5995
+ */
5996
+ totalPages?: number | null;
5997
+ };
5558
5998
  ListConditionalOrdersResponse: {
5559
5999
  orders?: components["schemas"]["ConditionalOrder"][] | null;
5560
6000
  /** Format: uint32 */
@@ -6440,6 +6880,12 @@ export interface components {
6440
6880
  * partial.
6441
6881
  */
6442
6882
  cumFees?: string | null;
6883
+ /**
6884
+ * Format: int64
6885
+ * @description Opaque, non-negative producer-owned version for this position row. Compare only within the same position; higher is newer. 0 is the unranked legacy sentinel and never participates in ordering: it means the row predates this field or came from a producer that does not stamp it, so treat it exactly as an absent version and fall back to a full field comparison rather than ranking it as oldest. It advances on sequenced position mutations (open, add, reduce, close, funding, margin transfer, liquidation, ADL) and is shared by the persisted read, the WebSocket positions snapshot and a RANKED live position_update frame. A live frame is ranked only when it is a faithful projection of the row persisted at that sequence: in practice the fills that leave a position open. Frames that re-read live risk state after sequencing (funding, margin_added/margin_reduced) and terminal frames (which report size 0 and LIQUIDATED, while the stored row keeps its size and records CLOSED) omit the version even though the mutation did advance the persisted one, so an absent version never implies that nothing was persisted. mark_price, unrealized_pnl, liquidation_price and leverage are UNVERSIONED valuation fields re-derived from the oracle mark on every frame: the version does not advance for them (a valuation-only oracle tick persists nothing; a state-transitioning one, a breach or recovery, does restamp the account's open positions), so the merge rule is per field group — on an equal version skip the versioned fields but still take those four from the newer payload, because discarding a whole payload on an equal version freezes displayed PnL. isolated_margin is the one exception among the versioned fields: the WebSocket positions snapshot overlays it from an independent live matching-engine read rather than the versioned row, so take it from the newest payload on an equal version too or a consumer can retain stale backing. A response served from live matching-engine state reports 0 (unranked): the engine holds the state but not the version.
6886
+ * @example 918342
6887
+ */
6888
+ version?: number | null;
6443
6889
  };
6444
6890
  PositionHistoryEvent: {
6445
6891
  id?: string | null;
@@ -6682,10 +7128,11 @@ export interface components {
6682
7128
  };
6683
7129
  ReplaceOrderRequest: {
6684
7130
  /**
6685
- * @description Client-assigned correlation handle, echoed back on order reads (detail and list) and on order WebSocket events. At most 64 characters from [A-Za-z0-9._:-]; surrounding whitespace is trimmed before storage, and a blank or whitespace-only value is treated as absent. Uniqueness is enforced only among your orders that are RESTING on the book: a create or replace reusing a value another of your resting orders still holds is rejected with HTTP 409 / gRPC ALREADY_EXISTS and the code CLIENT_ORDER_ID_CONFLICT. An order that never rests — MARKET, IOC/FOK, or a LIMIT that fills completely on arrival — does not take the handle, and the value is released the moment any order reaches a terminal state. It is therefore NOT an idempotency key, though on this replace path a retry cannot double-execute: the request names the original order id, and the sequencer revalidates that original in memory and on the book at sequence time, so once the first replacement succeeds the original is gone and a retry is rejected with ORDER_NOT_FOUND rather than placing a second order. That code is itself ambiguous — the original may instead have filled or been cancelled — so the risk here is acting on a stale view, not duplicate execution. Reconcile a lost response against the order WebSocket stream, which carries this value on the submit acknowledgement and on fills, including for orders that never rest; order history is replica-backed and can omit an order that did land. The stream is not replayable and has no sequence number to backfill from, and its fan-out is non-persistent Core NATS: the service can re-establish an ended upstream subscription without closing your socket, so events can be missed while your connection still looks healthy. A matching event is therefore positive proof the order was accepted, but silence is NEVER evidence it was not, and no client-observable condition makes it so. Absent positive evidence the outcome is unresolved: hold and escalate rather than resubmitting. A replacement carries no order type or time-in-force and its original must still be RESTING, so the post-acceptance rejection shapes are unreachable here: the reachable failures are all pre-acceptance — malformed, post-only would cross, handle conflict, or the original no longer resting (ORDER_NOT_FOUND) — and each fails the request, emits no event and is never written to order history (an order rejected AFTER acceptance is persisted with status REJECTED, so only the pre-acceptance class is absent). Where no surface is conclusive, do not resubmit. A replacement is a new order with a new id, so it carries its own value and inherits nothing from the original — restate it to keep the handle.
6686
- * @example quote-btc-1130-a
7131
+ * @description Per-order self-trade-prevention override for the replacement: CANCEL_MAKER, CANCEL_TAKER, CANCEL_BOTH, or SKIP (see the create-order field for the full semantics). A replacement is a new order with a new id, so it carries its own value and inherits nothing from the original — restate it to keep the override. Omitted, your wallet's configured default applies, else the platform default CANCEL_MAKER. The requested value is echoed back as selfTradePreventionMode on order reads, absent when omitted here.
7132
+ * @example CANCEL_TAKER
7133
+ * @enum {string|null}
6687
7134
  */
6688
- clientOrderId?: string | null;
7135
+ selfTradePreventionMode?: "CANCEL_MAKER" | "CANCEL_TAKER" | "CANCEL_BOTH" | "SKIP" | null;
6689
7136
  /**
6690
7137
  * @description New limit price (if changing)
6691
7138
  * @example 35500.00
@@ -6706,6 +7153,11 @@ export interface components {
6706
7153
  * @example false
6707
7154
  */
6708
7155
  postOnly?: boolean | null;
7156
+ /**
7157
+ * @description Client-assigned correlation handle, echoed back on order reads (detail and list) and on order WebSocket events. At most 64 characters from [A-Za-z0-9._:-]; surrounding whitespace is trimmed before storage, and a blank or whitespace-only value is treated as absent. Uniqueness is enforced only among your orders that are RESTING on the book: a create or replace reusing a value another of your resting orders still holds is rejected with HTTP 409 / gRPC ALREADY_EXISTS and the code CLIENT_ORDER_ID_CONFLICT. An order that never rests — MARKET, IOC/FOK, or a LIMIT that fills completely on arrival — does not take the handle, and the value is released the moment any order reaches a terminal state. It is therefore NOT an idempotency key, though on this replace path a retry cannot double-execute: the request names the original order id, and the sequencer revalidates that original in memory and on the book at sequence time, so once the first replacement succeeds the original is gone and a retry is rejected with ORDER_NOT_FOUND rather than placing a second order. That code is itself ambiguous — the original may instead have filled or been cancelled — so the risk here is acting on a stale view, not duplicate execution. Reconcile a lost response against the order WebSocket stream, which carries this value on the submit acknowledgement and on fills, including for orders that never rest; order history is replica-backed and can omit an order that did land. The stream is not replayable and has no sequence number to backfill from, and its fan-out is non-persistent Core NATS: the service can re-establish an ended upstream subscription without closing your socket, so events can be missed while your connection still looks healthy. A matching event is therefore positive proof the order was accepted, but silence is NEVER evidence it was not, and no client-observable condition makes it so. Absent positive evidence the outcome is unresolved: hold and escalate rather than resubmitting. A replacement carries no order type or time-in-force and its original must still be RESTING, so the post-acceptance rejection shapes are unreachable here: the reachable failures are all pre-acceptance — malformed, post-only would cross, handle conflict, or the original no longer resting (ORDER_NOT_FOUND) — and each fails the request, emits no event and is never written to order history (an order rejected AFTER acceptance is persisted with status REJECTED, so only the pre-acceptance class is absent). Where no surface is conclusive, do not resubmit. A replacement is a new order with a new id, so it carries its own value and inherits nothing from the original — restate it to keep the handle.
7158
+ * @example quote-btc-1130-a
7159
+ */
7160
+ clientOrderId?: string | null;
6709
7161
  };
6710
7162
  ReplaceOrderResponse: {
6711
7163
  /**
@@ -6891,6 +7343,25 @@ export interface components {
6891
7343
  */
6892
7344
  priceChangePercent?: string | null;
6893
7345
  };
7346
+ SelfTradePreventionDefaultResponse: {
7347
+ /**
7348
+ * @description The wallet's effective self-trade-prevention default: `CANCEL_MAKER`, `CANCEL_TAKER`, `CANCEL_BOTH`, or `SKIP`.
7349
+ * @example CANCEL_MAKER
7350
+ */
7351
+ mode?: string | null;
7352
+ /**
7353
+ * @description True when this wallet has explicitly set a default; false when the platform default (`CANCEL_MAKER`) is in effect.
7354
+ * @example false
7355
+ */
7356
+ isCustom?: boolean | null;
7357
+ };
7358
+ SetSelfTradePreventionDefaultRequest: {
7359
+ /**
7360
+ * @description The self-trade-prevention mode applied when an order from this wallet would match the wallet family's own resting order and the order names no override: `CANCEL_MAKER` (cancel the resting order — the platform default), `CANCEL_TAKER` (cancel the incoming order), `CANCEL_BOTH`, or `SKIP` (trade around own orders). Input is case-insensitive.
7361
+ * @example SKIP
7362
+ */
7363
+ mode: string;
7364
+ };
6894
7365
  SetTraderCodeRequest: {
6895
7366
  /**
6896
7367
  * @description The custom handle to claim or edit to: `[A-Za-z0-9_]`, must start with a letter, 5–20 characters. Case is preserved on store; uniqueness is case-insensitive.
@@ -7959,7 +8430,7 @@ export interface components {
7959
8430
  */
7960
8431
  address: string;
7961
8432
  /**
7962
- * @description Wallet signature over the challenge message
8433
+ * @description Wallet authorization of the challenge message, hex with an optional 0x prefix. An EOA sends a 65-byte EIP-191 signature; a contract wallet verified under EIP-1271 sends whatever its own contract accepts, which is usually longer and need not be 65 bytes. Capped at 8192 decoded bytes (16386 characters with the prefix) — enough for well over a hundred owner slots — and a longer value is rejected as an invalid signature rather than forwarded to the chain.
7963
8434
  * @example 0x1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0
7964
8435
  */
7965
8436
  signature: string;
@@ -8058,14 +8529,21 @@ export interface operations {
8058
8529
  };
8059
8530
  content?: never;
8060
8531
  };
8061
- /** @description Internal server error */
8062
- 500: {
8532
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
8533
+ 429: {
8063
8534
  headers: {
8064
8535
  [name: string]: unknown;
8065
8536
  };
8066
8537
  content?: never;
8067
8538
  };
8068
- };
8539
+ /** @description Internal server error */
8540
+ 500: {
8541
+ headers: {
8542
+ [name: string]: unknown;
8543
+ };
8544
+ content?: never;
8545
+ };
8546
+ };
8069
8547
  };
8070
8548
  get_user_balance_by_asset: {
8071
8549
  parameters: {
@@ -8109,6 +8587,13 @@ export interface operations {
8109
8587
  };
8110
8588
  content?: never;
8111
8589
  };
8590
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
8591
+ 429: {
8592
+ headers: {
8593
+ [name: string]: unknown;
8594
+ };
8595
+ content?: never;
8596
+ };
8112
8597
  /** @description Internal server error */
8113
8598
  500: {
8114
8599
  headers: {
@@ -8159,6 +8644,13 @@ export interface operations {
8159
8644
  };
8160
8645
  content?: never;
8161
8646
  };
8647
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
8648
+ 429: {
8649
+ headers: {
8650
+ [name: string]: unknown;
8651
+ };
8652
+ content?: never;
8653
+ };
8162
8654
  /** @description Internal server error */
8163
8655
  500: {
8164
8656
  headers: {
@@ -8207,6 +8699,13 @@ export interface operations {
8207
8699
  };
8208
8700
  content?: never;
8209
8701
  };
8702
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
8703
+ 429: {
8704
+ headers: {
8705
+ [name: string]: unknown;
8706
+ };
8707
+ content?: never;
8708
+ };
8210
8709
  /** @description Internal server error */
8211
8710
  500: {
8212
8711
  headers: {
@@ -8250,6 +8749,13 @@ export interface operations {
8250
8749
  };
8251
8750
  content?: never;
8252
8751
  };
8752
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
8753
+ 429: {
8754
+ headers: {
8755
+ [name: string]: unknown;
8756
+ };
8757
+ content?: never;
8758
+ };
8253
8759
  /** @description Internal server error */
8254
8760
  500: {
8255
8761
  headers: {
@@ -8300,6 +8806,13 @@ export interface operations {
8300
8806
  };
8301
8807
  content?: never;
8302
8808
  };
8809
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
8810
+ 429: {
8811
+ headers: {
8812
+ [name: string]: unknown;
8813
+ };
8814
+ content?: never;
8815
+ };
8303
8816
  /** @description Internal server error */
8304
8817
  500: {
8305
8818
  headers: {
@@ -8351,6 +8864,13 @@ export interface operations {
8351
8864
  };
8352
8865
  content?: never;
8353
8866
  };
8867
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
8868
+ 429: {
8869
+ headers: {
8870
+ [name: string]: unknown;
8871
+ };
8872
+ content?: never;
8873
+ };
8354
8874
  /** @description Internal server error */
8355
8875
  500: {
8356
8876
  headers: {
@@ -8392,6 +8912,13 @@ export interface operations {
8392
8912
  };
8393
8913
  content?: never;
8394
8914
  };
8915
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
8916
+ 429: {
8917
+ headers: {
8918
+ [name: string]: unknown;
8919
+ };
8920
+ content?: never;
8921
+ };
8395
8922
  /** @description Internal server error */
8396
8923
  500: {
8397
8924
  headers: {
@@ -8442,6 +8969,13 @@ export interface operations {
8442
8969
  };
8443
8970
  content?: never;
8444
8971
  };
8972
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
8973
+ 429: {
8974
+ headers: {
8975
+ [name: string]: unknown;
8976
+ };
8977
+ content?: never;
8978
+ };
8445
8979
  /** @description Internal server error */
8446
8980
  500: {
8447
8981
  headers: {
@@ -8492,6 +9026,13 @@ export interface operations {
8492
9026
  };
8493
9027
  content?: never;
8494
9028
  };
9029
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
9030
+ 429: {
9031
+ headers: {
9032
+ [name: string]: unknown;
9033
+ };
9034
+ content?: never;
9035
+ };
8495
9036
  /** @description Internal server error */
8496
9037
  500: {
8497
9038
  headers: {
@@ -8542,6 +9083,13 @@ export interface operations {
8542
9083
  };
8543
9084
  content?: never;
8544
9085
  };
9086
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
9087
+ 429: {
9088
+ headers: {
9089
+ [name: string]: unknown;
9090
+ };
9091
+ content?: never;
9092
+ };
8545
9093
  /** @description Internal server error */
8546
9094
  500: {
8547
9095
  headers: {
@@ -8610,6 +9158,99 @@ export interface operations {
8610
9158
  };
8611
9159
  content?: never;
8612
9160
  };
9161
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
9162
+ 429: {
9163
+ headers: {
9164
+ [name: string]: unknown;
9165
+ };
9166
+ content?: never;
9167
+ };
9168
+ /** @description Internal server error */
9169
+ 500: {
9170
+ headers: {
9171
+ [name: string]: unknown;
9172
+ };
9173
+ content?: never;
9174
+ };
9175
+ };
9176
+ };
9177
+ get_self_trade_prevention_default: {
9178
+ parameters: {
9179
+ query?: never;
9180
+ header?: never;
9181
+ path?: never;
9182
+ cookie?: never;
9183
+ };
9184
+ requestBody?: never;
9185
+ responses: {
9186
+ /** @description OK */
9187
+ 200: {
9188
+ headers: {
9189
+ [name: string]: unknown;
9190
+ };
9191
+ content: {
9192
+ "application/json": components["schemas"]["SelfTradePreventionDefaultResponse"];
9193
+ };
9194
+ };
9195
+ /** @description Authentication required */
9196
+ 401: {
9197
+ headers: {
9198
+ [name: string]: unknown;
9199
+ };
9200
+ content?: never;
9201
+ };
9202
+ /** @description Internal server error */
9203
+ 500: {
9204
+ headers: {
9205
+ [name: string]: unknown;
9206
+ };
9207
+ content?: never;
9208
+ };
9209
+ };
9210
+ };
9211
+ set_self_trade_prevention_default: {
9212
+ parameters: {
9213
+ query?: never;
9214
+ header?: never;
9215
+ path?: never;
9216
+ cookie?: never;
9217
+ };
9218
+ requestBody: {
9219
+ content: {
9220
+ "application/json": components["schemas"]["SetSelfTradePreventionDefaultRequest"];
9221
+ };
9222
+ };
9223
+ responses: {
9224
+ /** @description OK */
9225
+ 200: {
9226
+ headers: {
9227
+ [name: string]: unknown;
9228
+ };
9229
+ content: {
9230
+ "application/json": components["schemas"]["SelfTradePreventionDefaultResponse"];
9231
+ };
9232
+ };
9233
+ /** @description Unknown mode */
9234
+ 400: {
9235
+ headers: {
9236
+ [name: string]: unknown;
9237
+ };
9238
+ content?: never;
9239
+ };
9240
+ /** @description Authentication required */
9241
+ 401: {
9242
+ headers: {
9243
+ [name: string]: unknown;
9244
+ };
9245
+ content?: never;
9246
+ };
9247
+ /** @description Delegated-agent sessions cannot change account settings */
9248
+ 403: {
9249
+ headers: {
9250
+ [name: string]: unknown;
9251
+ };
9252
+ content?: never;
9253
+ };
8613
9254
  /** @description Internal server error */
8614
9255
  500: {
8615
9256
  headers: {
@@ -8658,6 +9299,13 @@ export interface operations {
8658
9299
  };
8659
9300
  content?: never;
8660
9301
  };
9302
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
9303
+ 429: {
9304
+ headers: {
9305
+ [name: string]: unknown;
9306
+ };
9307
+ content?: never;
9308
+ };
8661
9309
  /** @description Internal server error */
8662
9310
  500: {
8663
9311
  headers: {
@@ -8777,6 +9425,13 @@ export interface operations {
8777
9425
  };
8778
9426
  content?: never;
8779
9427
  };
9428
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
9429
+ 429: {
9430
+ headers: {
9431
+ [name: string]: unknown;
9432
+ };
9433
+ content?: never;
9434
+ };
8780
9435
  /** @description Internal server error */
8781
9436
  500: {
8782
9437
  headers: {
@@ -8973,6 +9628,13 @@ export interface operations {
8973
9628
  };
8974
9629
  content?: never;
8975
9630
  };
9631
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
9632
+ 429: {
9633
+ headers: {
9634
+ [name: string]: unknown;
9635
+ };
9636
+ content?: never;
9637
+ };
8976
9638
  /** @description Internal server error */
8977
9639
  500: {
8978
9640
  headers: {
@@ -9071,6 +9733,13 @@ export interface operations {
9071
9733
  };
9072
9734
  content?: never;
9073
9735
  };
9736
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
9737
+ 429: {
9738
+ headers: {
9739
+ [name: string]: unknown;
9740
+ };
9741
+ content?: never;
9742
+ };
9074
9743
  /** @description Internal server error */
9075
9744
  500: {
9076
9745
  headers: {
@@ -9268,8 +9937,271 @@ export interface operations {
9268
9937
  };
9269
9938
  content?: never;
9270
9939
  };
9271
- /** @description Unauthorized - Invalid or missing x-server-key */
9272
- 401: {
9940
+ /** @description Unauthorized - Invalid or missing x-server-key */
9941
+ 401: {
9942
+ headers: {
9943
+ [name: string]: unknown;
9944
+ };
9945
+ content?: never;
9946
+ };
9947
+ /** @description Internal server error */
9948
+ 500: {
9949
+ headers: {
9950
+ [name: string]: unknown;
9951
+ };
9952
+ content?: never;
9953
+ };
9954
+ };
9955
+ };
9956
+ create_challenge: {
9957
+ parameters: {
9958
+ query?: never;
9959
+ header?: never;
9960
+ path?: never;
9961
+ cookie?: never;
9962
+ };
9963
+ requestBody: {
9964
+ content: {
9965
+ "application/json": components["schemas"]["ChallengeRequest"];
9966
+ };
9967
+ };
9968
+ responses: {
9969
+ /** @description OK */
9970
+ 200: {
9971
+ headers: {
9972
+ [name: string]: unknown;
9973
+ };
9974
+ content: {
9975
+ "application/json": components["schemas"]["ChallengeResponse"];
9976
+ };
9977
+ };
9978
+ /** @description Invalid request parameters */
9979
+ 400: {
9980
+ headers: {
9981
+ [name: string]: unknown;
9982
+ };
9983
+ content?: never;
9984
+ };
9985
+ /** @description Origin not allowed for this application */
9986
+ 403: {
9987
+ headers: {
9988
+ [name: string]: unknown;
9989
+ };
9990
+ content?: never;
9991
+ };
9992
+ /** @description Invalid clientId */
9993
+ 404: {
9994
+ headers: {
9995
+ [name: string]: unknown;
9996
+ };
9997
+ content?: never;
9998
+ };
9999
+ /** @description Internal server error */
10000
+ 500: {
10001
+ headers: {
10002
+ [name: string]: unknown;
10003
+ };
10004
+ content?: never;
10005
+ };
10006
+ };
10007
+ };
10008
+ refresh_session: {
10009
+ parameters: {
10010
+ query?: never;
10011
+ header?: never;
10012
+ path?: never;
10013
+ cookie?: never;
10014
+ };
10015
+ requestBody: {
10016
+ content: {
10017
+ "application/json": components["schemas"]["RefreshRequest"];
10018
+ };
10019
+ };
10020
+ responses: {
10021
+ /** @description OK */
10022
+ 200: {
10023
+ headers: {
10024
+ [name: string]: unknown;
10025
+ };
10026
+ content: {
10027
+ "application/json": components["schemas"]["RefreshResponse"];
10028
+ };
10029
+ };
10030
+ /** @description Missing, invalid, or expired session signature */
10031
+ 401: {
10032
+ headers: {
10033
+ [name: string]: unknown;
10034
+ };
10035
+ content?: never;
10036
+ };
10037
+ /** @description Session not found */
10038
+ 404: {
10039
+ headers: {
10040
+ [name: string]: unknown;
10041
+ };
10042
+ content?: never;
10043
+ };
10044
+ /** @description Internal server error */
10045
+ 500: {
10046
+ headers: {
10047
+ [name: string]: unknown;
10048
+ };
10049
+ content?: never;
10050
+ };
10051
+ };
10052
+ };
10053
+ revoke_session: {
10054
+ parameters: {
10055
+ query?: never;
10056
+ header?: never;
10057
+ path?: never;
10058
+ cookie?: never;
10059
+ };
10060
+ requestBody: {
10061
+ content: {
10062
+ "application/json": components["schemas"]["RevokeRequest"];
10063
+ };
10064
+ };
10065
+ responses: {
10066
+ /** @description OK */
10067
+ 200: {
10068
+ headers: {
10069
+ [name: string]: unknown;
10070
+ };
10071
+ content: {
10072
+ "application/json": components["schemas"]["RevokeResponse"];
10073
+ };
10074
+ };
10075
+ /** @description Request body must be empty */
10076
+ 400: {
10077
+ headers: {
10078
+ [name: string]: unknown;
10079
+ };
10080
+ content?: never;
10081
+ };
10082
+ /** @description Missing or invalid session signature */
10083
+ 401: {
10084
+ headers: {
10085
+ [name: string]: unknown;
10086
+ };
10087
+ content?: never;
10088
+ };
10089
+ /** @description Session not found */
10090
+ 404: {
10091
+ headers: {
10092
+ [name: string]: unknown;
10093
+ };
10094
+ content?: never;
10095
+ };
10096
+ /** @description Internal server error */
10097
+ 500: {
10098
+ headers: {
10099
+ [name: string]: unknown;
10100
+ };
10101
+ content?: never;
10102
+ };
10103
+ };
10104
+ };
10105
+ verify_signature: {
10106
+ parameters: {
10107
+ query?: never;
10108
+ header?: never;
10109
+ path?: never;
10110
+ cookie?: never;
10111
+ };
10112
+ requestBody: {
10113
+ content: {
10114
+ "application/json": components["schemas"]["VerifyRequest"];
10115
+ };
10116
+ };
10117
+ responses: {
10118
+ /** @description OK */
10119
+ 200: {
10120
+ headers: {
10121
+ [name: string]: unknown;
10122
+ };
10123
+ content: {
10124
+ "application/json": components["schemas"]["VerifyResponse"];
10125
+ };
10126
+ };
10127
+ /** @description Invalid request parameters, nonce expired, or already used */
10128
+ 400: {
10129
+ headers: {
10130
+ [name: string]: unknown;
10131
+ };
10132
+ content?: never;
10133
+ };
10134
+ /** @description Invalid signature */
10135
+ 401: {
10136
+ headers: {
10137
+ [name: string]: unknown;
10138
+ };
10139
+ content?: never;
10140
+ };
10141
+ /** @description Origin not allowed for this application */
10142
+ 403: {
10143
+ headers: {
10144
+ [name: string]: unknown;
10145
+ };
10146
+ content?: never;
10147
+ };
10148
+ /** @description Invalid nonce or clientId */
10149
+ 404: {
10150
+ headers: {
10151
+ [name: string]: unknown;
10152
+ };
10153
+ content?: never;
10154
+ };
10155
+ /** @description Internal server error */
10156
+ 500: {
10157
+ headers: {
10158
+ [name: string]: unknown;
10159
+ };
10160
+ content?: never;
10161
+ };
10162
+ /** @description Contract-wallet (EIP-1271) verification could not be completed for an eligible address: the chain did not answer, did not answer within the deadline, or the server was at its concurrent-verification capacity and declined to ask. Retryable, and not a verdict on the signature. */
10163
+ 503: {
10164
+ headers: {
10165
+ [name: string]: unknown;
10166
+ };
10167
+ content?: never;
10168
+ };
10169
+ };
10170
+ };
10171
+ get_buildercodes_config: {
10172
+ parameters: {
10173
+ query?: never;
10174
+ header?: never;
10175
+ path?: never;
10176
+ cookie?: never;
10177
+ };
10178
+ requestBody?: never;
10179
+ responses: {
10180
+ /** @description OK */
10181
+ 200: {
10182
+ headers: {
10183
+ [name: string]: unknown;
10184
+ };
10185
+ content: {
10186
+ "application/json": components["schemas"]["GetBuildercodesConfigResponse"];
10187
+ };
10188
+ };
10189
+ /** @description Authentication required */
10190
+ 401: {
10191
+ headers: {
10192
+ [name: string]: unknown;
10193
+ };
10194
+ content?: never;
10195
+ };
10196
+ /** @description Refused: BuilderCodes is disabled, the caller is delegated, or the caller is not this application's payout wallet (gRPC: PERMISSION_DENIED) */
10197
+ 403: {
10198
+ headers: {
10199
+ [name: string]: unknown;
10200
+ };
10201
+ content?: never;
10202
+ };
10203
+ /** @description Authenticated application not found (gRPC: NOT_FOUND) */
10204
+ 404: {
9273
10205
  headers: {
9274
10206
  [name: string]: unknown;
9275
10207
  };
@@ -9284,18 +10216,19 @@ export interface operations {
9284
10216
  };
9285
10217
  };
9286
10218
  };
9287
- create_challenge: {
10219
+ list_buildercode_payouts: {
9288
10220
  parameters: {
9289
- query?: never;
10221
+ query?: {
10222
+ /** @description Page number (1-indexed) */
10223
+ page?: number;
10224
+ /** @description Items per page (max 100) */
10225
+ pageSize?: number;
10226
+ };
9290
10227
  header?: never;
9291
10228
  path?: never;
9292
10229
  cookie?: never;
9293
10230
  };
9294
- requestBody: {
9295
- content: {
9296
- "application/json": components["schemas"]["ChallengeRequest"];
9297
- };
9298
- };
10231
+ requestBody?: never;
9299
10232
  responses: {
9300
10233
  /** @description OK */
9301
10234
  200: {
@@ -9303,24 +10236,31 @@ export interface operations {
9303
10236
  [name: string]: unknown;
9304
10237
  };
9305
10238
  content: {
9306
- "application/json": components["schemas"]["ChallengeResponse"];
10239
+ "application/json": components["schemas"]["ListBuildercodePayoutsResponse"];
9307
10240
  };
9308
10241
  };
9309
- /** @description Invalid request parameters */
10242
+ /** @description Invalid pagination */
9310
10243
  400: {
9311
10244
  headers: {
9312
10245
  [name: string]: unknown;
9313
10246
  };
9314
10247
  content?: never;
9315
10248
  };
9316
- /** @description Origin not allowed for this application */
10249
+ /** @description Authentication required */
10250
+ 401: {
10251
+ headers: {
10252
+ [name: string]: unknown;
10253
+ };
10254
+ content?: never;
10255
+ };
10256
+ /** @description Refused: BuilderCodes is disabled, the caller is delegated, or the caller is not this application's payout wallet (gRPC: PERMISSION_DENIED) */
9317
10257
  403: {
9318
10258
  headers: {
9319
10259
  [name: string]: unknown;
9320
10260
  };
9321
10261
  content?: never;
9322
10262
  };
9323
- /** @description Invalid clientId */
10263
+ /** @description Authenticated application not found (gRPC: NOT_FOUND) */
9324
10264
  404: {
9325
10265
  headers: {
9326
10266
  [name: string]: unknown;
@@ -9336,18 +10276,14 @@ export interface operations {
9336
10276
  };
9337
10277
  };
9338
10278
  };
9339
- refresh_session: {
10279
+ get_buildercode_payout_summary: {
9340
10280
  parameters: {
9341
10281
  query?: never;
9342
10282
  header?: never;
9343
10283
  path?: never;
9344
10284
  cookie?: never;
9345
10285
  };
9346
- requestBody: {
9347
- content: {
9348
- "application/json": components["schemas"]["RefreshRequest"];
9349
- };
9350
- };
10286
+ requestBody?: never;
9351
10287
  responses: {
9352
10288
  /** @description OK */
9353
10289
  200: {
@@ -9355,17 +10291,24 @@ export interface operations {
9355
10291
  [name: string]: unknown;
9356
10292
  };
9357
10293
  content: {
9358
- "application/json": components["schemas"]["RefreshResponse"];
10294
+ "application/json": components["schemas"]["GetBuildercodePayoutSummaryResponse"];
9359
10295
  };
9360
10296
  };
9361
- /** @description Missing, invalid, or expired session signature */
10297
+ /** @description Authentication required */
9362
10298
  401: {
9363
10299
  headers: {
9364
10300
  [name: string]: unknown;
9365
10301
  };
9366
10302
  content?: never;
9367
10303
  };
9368
- /** @description Session not found */
10304
+ /** @description Refused: BuilderCodes is disabled, the caller is delegated, or the caller is not this application's payout wallet (gRPC: PERMISSION_DENIED) */
10305
+ 403: {
10306
+ headers: {
10307
+ [name: string]: unknown;
10308
+ };
10309
+ content?: never;
10310
+ };
10311
+ /** @description Authenticated application not found (gRPC: NOT_FOUND) */
9369
10312
  404: {
9370
10313
  headers: {
9371
10314
  [name: string]: unknown;
@@ -9381,18 +10324,14 @@ export interface operations {
9381
10324
  };
9382
10325
  };
9383
10326
  };
9384
- revoke_session: {
10327
+ get_buildercode_rewards_balance: {
9385
10328
  parameters: {
9386
10329
  query?: never;
9387
10330
  header?: never;
9388
10331
  path?: never;
9389
10332
  cookie?: never;
9390
10333
  };
9391
- requestBody: {
9392
- content: {
9393
- "application/json": components["schemas"]["RevokeRequest"];
9394
- };
9395
- };
10334
+ requestBody?: never;
9396
10335
  responses: {
9397
10336
  /** @description OK */
9398
10337
  200: {
@@ -9400,25 +10339,18 @@ export interface operations {
9400
10339
  [name: string]: unknown;
9401
10340
  };
9402
10341
  content: {
9403
- "application/json": components["schemas"]["RevokeResponse"];
9404
- };
9405
- };
9406
- /** @description Request body must be empty */
9407
- 400: {
9408
- headers: {
9409
- [name: string]: unknown;
10342
+ "application/json": components["schemas"]["GetBuildercodeRewardsBalanceResponse"];
9410
10343
  };
9411
- content?: never;
9412
10344
  };
9413
- /** @description Missing or invalid session signature */
10345
+ /** @description Authentication required */
9414
10346
  401: {
9415
10347
  headers: {
9416
10348
  [name: string]: unknown;
9417
10349
  };
9418
10350
  content?: never;
9419
10351
  };
9420
- /** @description Session not found */
9421
- 404: {
10352
+ /** @description Refused: BuilderCodes is disabled or the caller is delegated (gRPC: PERMISSION_DENIED) */
10353
+ 403: {
9422
10354
  headers: {
9423
10355
  [name: string]: unknown;
9424
10356
  };
@@ -9433,7 +10365,7 @@ export interface operations {
9433
10365
  };
9434
10366
  };
9435
10367
  };
9436
- verify_signature: {
10368
+ claim_buildercode_rewards: {
9437
10369
  parameters: {
9438
10370
  query?: never;
9439
10371
  header?: never;
@@ -9442,7 +10374,7 @@ export interface operations {
9442
10374
  };
9443
10375
  requestBody: {
9444
10376
  content: {
9445
- "application/json": components["schemas"]["VerifyRequest"];
10377
+ "application/json": components["schemas"]["ClaimBuildercodeRewardsRequest"];
9446
10378
  };
9447
10379
  };
9448
10380
  responses: {
@@ -9452,32 +10384,32 @@ export interface operations {
9452
10384
  [name: string]: unknown;
9453
10385
  };
9454
10386
  content: {
9455
- "application/json": components["schemas"]["VerifyResponse"];
10387
+ "application/json": components["schemas"]["ClaimBuildercodeRewardsResponse"];
9456
10388
  };
9457
10389
  };
9458
- /** @description Invalid request parameters, nonce expired, or already used */
10390
+ /** @description Invalid token or amount */
9459
10391
  400: {
9460
10392
  headers: {
9461
10393
  [name: string]: unknown;
9462
10394
  };
9463
10395
  content?: never;
9464
10396
  };
9465
- /** @description Invalid signature */
10397
+ /** @description Authentication required */
9466
10398
  401: {
9467
10399
  headers: {
9468
10400
  [name: string]: unknown;
9469
10401
  };
9470
10402
  content?: never;
9471
10403
  };
9472
- /** @description Origin not allowed for this application */
10404
+ /** @description Refused: BuilderCodes is not enabled, or the caller is a delegated-agent session (gRPC: PERMISSION_DENIED) */
9473
10405
  403: {
9474
10406
  headers: {
9475
10407
  [name: string]: unknown;
9476
10408
  };
9477
10409
  content?: never;
9478
10410
  };
9479
- /** @description Invalid nonce or clientId */
9480
- 404: {
10411
+ /** @description Insufficient BuilderCodes payout balance, including a wallet that never accrued one (gRPC: FAILED_PRECONDITION) */
10412
+ 409: {
9481
10413
  headers: {
9482
10414
  [name: string]: unknown;
9483
10415
  };
@@ -9490,6 +10422,13 @@ export interface operations {
9490
10422
  };
9491
10423
  content?: never;
9492
10424
  };
10425
+ /** @description Matching engine unavailable or slow to answer. Outcome UNKNOWN, not a rejection — the claim may still commit and there is no idempotency key, so treat it as pending and do not retry automatically; a balance read does not settle it, because an admitted claim may still be queued. Two tagged cases are the exception, both refused before the claim can be admitted and so provably non-committing, and both safe to retry: a maintenance block (`error: OPERATIONS_BLOCKED`; gRPC metadata `x-maintenance-blocked: true`) and a sequencer overload (`code: OVERLOADED`) (gRPC: UNAVAILABLE) */
10426
+ 503: {
10427
+ headers: {
10428
+ [name: string]: unknown;
10429
+ };
10430
+ content?: never;
10431
+ };
9493
10432
  };
9494
10433
  };
9495
10434
  list_delegated_agents: {
@@ -9524,6 +10463,13 @@ export interface operations {
9524
10463
  };
9525
10464
  content?: never;
9526
10465
  };
10466
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
10467
+ 429: {
10468
+ headers: {
10469
+ [name: string]: unknown;
10470
+ };
10471
+ content?: never;
10472
+ };
9527
10473
  /** @description Internal server error */
9528
10474
  500: {
9529
10475
  headers: {
@@ -9610,6 +10556,13 @@ export interface operations {
9610
10556
  };
9611
10557
  content?: never;
9612
10558
  };
10559
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
10560
+ 429: {
10561
+ headers: {
10562
+ [name: string]: unknown;
10563
+ };
10564
+ content?: never;
10565
+ };
9613
10566
  /** @description Internal server error */
9614
10567
  500: {
9615
10568
  headers: {
@@ -9754,6 +10707,13 @@ export interface operations {
9754
10707
  };
9755
10708
  content?: never;
9756
10709
  };
10710
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
10711
+ 429: {
10712
+ headers: {
10713
+ [name: string]: unknown;
10714
+ };
10715
+ content?: never;
10716
+ };
9757
10717
  /** @description Internal server error */
9758
10718
  500: {
9759
10719
  headers: {
@@ -9887,6 +10847,13 @@ export interface operations {
9887
10847
  };
9888
10848
  content?: never;
9889
10849
  };
10850
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
10851
+ 429: {
10852
+ headers: {
10853
+ [name: string]: unknown;
10854
+ };
10855
+ content?: never;
10856
+ };
9890
10857
  /** @description Internal server error */
9891
10858
  500: {
9892
10859
  headers: {
@@ -9938,6 +10905,13 @@ export interface operations {
9938
10905
  };
9939
10906
  content?: never;
9940
10907
  };
10908
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
10909
+ 429: {
10910
+ headers: {
10911
+ [name: string]: unknown;
10912
+ };
10913
+ content?: never;
10914
+ };
9941
10915
  /** @description Internal server error */
9942
10916
  500: {
9943
10917
  headers: {
@@ -9973,6 +10947,13 @@ export interface operations {
9973
10947
  "application/json": components["schemas"]["ListMarginAccountsResponse"];
9974
10948
  };
9975
10949
  };
10950
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
10951
+ 429: {
10952
+ headers: {
10953
+ [name: string]: unknown;
10954
+ };
10955
+ content?: never;
10956
+ };
9976
10957
  };
9977
10958
  };
9978
10959
  get_margin_account_summary: {
@@ -10002,6 +10983,13 @@ export interface operations {
10002
10983
  "application/json": components["schemas"]["GetMarginAccountSummaryResponse"];
10003
10984
  };
10004
10985
  };
10986
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
10987
+ 429: {
10988
+ headers: {
10989
+ [name: string]: unknown;
10990
+ };
10991
+ content?: never;
10992
+ };
10005
10993
  };
10006
10994
  };
10007
10995
  transfer_collateral_to_margin_account: {
@@ -10108,6 +11096,13 @@ export interface operations {
10108
11096
  "application/json": components["schemas"]["GetMarginAccountMovementsResponse"];
10109
11097
  };
10110
11098
  };
11099
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
11100
+ 429: {
11101
+ headers: {
11102
+ [name: string]: unknown;
11103
+ };
11104
+ content?: never;
11105
+ };
10111
11106
  };
10112
11107
  };
10113
11108
  simulate_order_risk: {
@@ -10138,6 +11133,13 @@ export interface operations {
10138
11133
  "application/json": components["schemas"]["SimulateOrderRiskResponse"];
10139
11134
  };
10140
11135
  };
11136
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
11137
+ 429: {
11138
+ headers: {
11139
+ [name: string]: unknown;
11140
+ };
11141
+ content?: never;
11142
+ };
10141
11143
  };
10142
11144
  };
10143
11145
  get_available_collateral: {
@@ -10160,6 +11162,13 @@ export interface operations {
10160
11162
  "application/json": components["schemas"]["GetAvailableCollateralResponse"];
10161
11163
  };
10162
11164
  };
11165
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
11166
+ 429: {
11167
+ headers: {
11168
+ [name: string]: unknown;
11169
+ };
11170
+ content?: never;
11171
+ };
10163
11172
  };
10164
11173
  };
10165
11174
  get_parent_margin_account_summary: {
@@ -10183,6 +11192,13 @@ export interface operations {
10183
11192
  "application/json": components["schemas"]["GetMarginAccountSummaryResponse"];
10184
11193
  };
10185
11194
  };
11195
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
11196
+ 429: {
11197
+ headers: {
11198
+ [name: string]: unknown;
11199
+ };
11200
+ content?: never;
11201
+ };
10186
11202
  };
10187
11203
  };
10188
11204
  transfer_collateral_to_parent_margin_account: {
@@ -10271,6 +11287,13 @@ export interface operations {
10271
11287
  "application/json": components["schemas"]["GetMarginAccountMovementsResponse"];
10272
11288
  };
10273
11289
  };
11290
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
11291
+ 429: {
11292
+ headers: {
11293
+ [name: string]: unknown;
11294
+ };
11295
+ content?: never;
11296
+ };
10274
11297
  };
10275
11298
  };
10276
11299
  simulate_parent_margin_order_risk: {
@@ -10295,6 +11318,13 @@ export interface operations {
10295
11318
  "application/json": components["schemas"]["SimulateOrderRiskResponse"];
10296
11319
  };
10297
11320
  };
11321
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
11322
+ 429: {
11323
+ headers: {
11324
+ [name: string]: unknown;
11325
+ };
11326
+ content?: never;
11327
+ };
10298
11328
  };
10299
11329
  };
10300
11330
  transfer_collateral_to_risk_bucket: {
@@ -10350,6 +11380,13 @@ export interface operations {
10350
11380
  "application/json": components["schemas"]["SimulateOrderRiskResponse"];
10351
11381
  };
10352
11382
  };
11383
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
11384
+ 429: {
11385
+ headers: {
11386
+ [name: string]: unknown;
11387
+ };
11388
+ content?: never;
11389
+ };
10353
11390
  };
10354
11391
  };
10355
11392
  list_all_funding_history: {
@@ -10947,6 +11984,13 @@ export interface operations {
10947
11984
  };
10948
11985
  content?: never;
10949
11986
  };
11987
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
11988
+ 429: {
11989
+ headers: {
11990
+ [name: string]: unknown;
11991
+ };
11992
+ content?: never;
11993
+ };
10950
11994
  /** @description Internal server error */
10951
11995
  500: {
10952
11996
  headers: {
@@ -11349,6 +12393,13 @@ export interface operations {
11349
12393
  "application/json": components["schemas"]["ListConditionalOrdersResponse"];
11350
12394
  };
11351
12395
  };
12396
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
12397
+ 429: {
12398
+ headers: {
12399
+ [name: string]: unknown;
12400
+ };
12401
+ content?: never;
12402
+ };
11352
12403
  };
11353
12404
  };
11354
12405
  get_conditional_order: {
@@ -11372,6 +12423,13 @@ export interface operations {
11372
12423
  "application/json": components["schemas"]["ConditionalOrder"];
11373
12424
  };
11374
12425
  };
12426
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
12427
+ 429: {
12428
+ headers: {
12429
+ [name: string]: unknown;
12430
+ };
12431
+ content?: never;
12432
+ };
11375
12433
  };
11376
12434
  };
11377
12435
  cancel_conditional_order: {
@@ -11444,6 +12502,13 @@ export interface operations {
11444
12502
  };
11445
12503
  content?: never;
11446
12504
  };
12505
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
12506
+ 429: {
12507
+ headers: {
12508
+ [name: string]: unknown;
12509
+ };
12510
+ content?: never;
12511
+ };
11447
12512
  /** @description Internal server error */
11448
12513
  500: {
11449
12514
  headers: {
@@ -11553,6 +12618,13 @@ export interface operations {
11553
12618
  };
11554
12619
  content?: never;
11555
12620
  };
12621
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
12622
+ 429: {
12623
+ headers: {
12624
+ [name: string]: unknown;
12625
+ };
12626
+ content?: never;
12627
+ };
11556
12628
  /** @description Internal server error */
11557
12629
  500: {
11558
12630
  headers: {
@@ -11660,6 +12732,13 @@ export interface operations {
11660
12732
  };
11661
12733
  content?: never;
11662
12734
  };
12735
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
12736
+ 429: {
12737
+ headers: {
12738
+ [name: string]: unknown;
12739
+ };
12740
+ content?: never;
12741
+ };
11663
12742
  /** @description Internal server error */
11664
12743
  500: {
11665
12744
  headers: {
@@ -11718,6 +12797,13 @@ export interface operations {
11718
12797
  };
11719
12798
  content?: never;
11720
12799
  };
12800
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
12801
+ 429: {
12802
+ headers: {
12803
+ [name: string]: unknown;
12804
+ };
12805
+ content?: never;
12806
+ };
11721
12807
  /** @description Internal server error */
11722
12808
  500: {
11723
12809
  headers: {
@@ -11850,6 +12936,13 @@ export interface operations {
11850
12936
  };
11851
12937
  content?: never;
11852
12938
  };
12939
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
12940
+ 429: {
12941
+ headers: {
12942
+ [name: string]: unknown;
12943
+ };
12944
+ content?: never;
12945
+ };
11853
12946
  /** @description Internal server error */
11854
12947
  500: {
11855
12948
  headers: {
@@ -12035,6 +13128,13 @@ export interface operations {
12035
13128
  };
12036
13129
  content?: never;
12037
13130
  };
13131
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
13132
+ 429: {
13133
+ headers: {
13134
+ [name: string]: unknown;
13135
+ };
13136
+ content?: never;
13137
+ };
12038
13138
  /** @description Internal server error */
12039
13139
  500: {
12040
13140
  headers: {
@@ -12125,6 +13225,13 @@ export interface operations {
12125
13225
  "application/json": components["schemas"]["ListPositionsResponse"];
12126
13226
  };
12127
13227
  };
13228
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
13229
+ 429: {
13230
+ headers: {
13231
+ [name: string]: unknown;
13232
+ };
13233
+ content?: never;
13234
+ };
12128
13235
  };
12129
13236
  };
12130
13237
  batch_close_all_positions: {
@@ -12180,6 +13287,13 @@ export interface operations {
12180
13287
  "application/json": components["schemas"]["ListPositionHistoryResponse"];
12181
13288
  };
12182
13289
  };
13290
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
13291
+ 429: {
13292
+ headers: {
13293
+ [name: string]: unknown;
13294
+ };
13295
+ content?: never;
13296
+ };
12183
13297
  };
12184
13298
  };
12185
13299
  get_position: {
@@ -12203,6 +13317,13 @@ export interface operations {
12203
13317
  "application/json": components["schemas"]["GetPositionResponse"];
12204
13318
  };
12205
13319
  };
13320
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
13321
+ 429: {
13322
+ headers: {
13323
+ [name: string]: unknown;
13324
+ };
13325
+ content?: never;
13326
+ };
12206
13327
  };
12207
13328
  };
12208
13329
  close_position: {
@@ -12281,6 +13402,13 @@ export interface operations {
12281
13402
  };
12282
13403
  content?: never;
12283
13404
  };
13405
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
13406
+ 429: {
13407
+ headers: {
13408
+ [name: string]: unknown;
13409
+ };
13410
+ content?: never;
13411
+ };
12284
13412
  /** @description Internal server error */
12285
13413
  500: {
12286
13414
  headers: {
@@ -12311,6 +13439,13 @@ export interface operations {
12311
13439
  "application/json": components["schemas"]["GetPositionRiskResponse"];
12312
13440
  };
12313
13441
  };
13442
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
13443
+ 429: {
13444
+ headers: {
13445
+ [name: string]: unknown;
13446
+ };
13447
+ content?: never;
13448
+ };
12314
13449
  };
12315
13450
  };
12316
13451
  attach_position_tp_sl: {
@@ -12642,6 +13777,13 @@ export interface operations {
12642
13777
  };
12643
13778
  content?: never;
12644
13779
  };
13780
+ /** @description Read rate limit exceeded — every authenticated read draws one request from the account's read budget; retry after the interval in details.retryAfter */
13781
+ 429: {
13782
+ headers: {
13783
+ [name: string]: unknown;
13784
+ };
13785
+ content?: never;
13786
+ };
12645
13787
  /** @description Internal server error */
12646
13788
  500: {
12647
13789
  headers: {