@0xmonaco/types 1.0.82 → 1.0.85

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.
@@ -27,7 +27,7 @@ export interface AuthAPI extends BaseAPI {
27
27
  * relationship. Has no effect when the user already exists.
28
28
  * @returns Promise resolving to the authentication state (including the session keypair)
29
29
  */
30
- authenticate(clientId: string, referralCode?: string): Promise<AuthState>;
30
+ authenticate(clientId: string, referralCode?: string, inviteCode?: string): Promise<AuthState>;
31
31
  /**
32
32
  * Signs a challenge message using the wallet client.
33
33
  *
@@ -75,7 +75,18 @@ export interface AuthAPI extends BaseAPI {
75
75
  * recorded at first sign-up only.
76
76
  * @returns Promise resolving to the authentication state
77
77
  */
78
- verifySignature(address: string, signature: string, nonce: string, clientId: string, session: SessionCredentials, referralCode?: string): Promise<AuthState>;
78
+ verifySignature(address: string, signature: string, nonce: string, clientId: string, session: SessionCredentials, referralCode?: string, inviteCode?: string): Promise<AuthState>;
79
+ /**
80
+ * Mint one available Mainnet invite code immediately, without admin review.
81
+ * Each call consumes a slot; read the allowance with {@link listInviteCodes}.
82
+ */
83
+ requestInviteCodes(): Promise<InviteCodeRequestSummary>;
84
+ /**
85
+ * Read the wallet's invite allowance and the codes it minted, newest first.
86
+ * Read-only: never consumes a slot, and recovers a code whose mint response
87
+ * was lost. Refused for delegated-agent sessions.
88
+ */
89
+ listInviteCodes(): Promise<InviteCodeList>;
79
90
  /**
80
91
  * Refreshes the current session's expiry. The request is signed with the
81
92
  * active session key (set via {@link setSessionKeypair}). For a delegated
@@ -98,3 +109,58 @@ export interface AuthAPI extends BaseAPI {
98
109
  setWalletClient(walletClient: unknown): void;
99
110
  }
100
111
  export type { ApplicationInfo, AuthState, ChallengeResponse, SessionCredentials, SessionRefreshResponse, User, } from "./responses";
112
+ export interface InviteCodeRequestSummary {
113
+ mainnetVolumeUsd: string;
114
+ eligibleMilestones: number;
115
+ pendingMilestones: number[];
116
+ issuedMilestones: number[];
117
+ redeemedMilestones: number[];
118
+ newlyRequestedMilestones: number[];
119
+ /** Newly minted bearer code; absent when the allowance is exhausted. Never log it. */
120
+ code?: string;
121
+ codeId?: string;
122
+ /** Slot 0 is the initial code; N is the Nth 250,000 USDC milestone. */
123
+ mintedMilestone?: number;
124
+ totalAllowance: number;
125
+ availableCodes: number;
126
+ revokedMilestones: number[];
127
+ }
128
+ /** One code the wallet minted or was issued. */
129
+ export interface InviteCodeEntry {
130
+ codeId: string;
131
+ /** Slot 0 is the initial code; N is the Nth 250,000 USDC milestone. */
132
+ milestone: number;
133
+ /** `issued`, `redeemed` or `revoked`. */
134
+ status: string;
135
+ /** Bearer code, present only while issued and unredeemed. Never log it. */
136
+ code?: string;
137
+ /** RFC 3339 creation time. */
138
+ createdAt: string;
139
+ /** RFC 3339 redemption time; absent until redeemed. */
140
+ redeemedAt?: string;
141
+ }
142
+ /** The wallet's invite allowance and its codes, from `listInviteCodes()`. */
143
+ export interface InviteCodeList {
144
+ mainnetVolumeUsd: string;
145
+ eligibleMilestones: number;
146
+ totalAllowance: number;
147
+ availableCodes: number;
148
+ codes: InviteCodeEntry[];
149
+ }
150
+ /**
151
+ * Stable codes on a refused sign-in (deactivation applies in either mode), read
152
+ * from `APIError.serverCode` (REST error envelope `code`, gRPC
153
+ * `google.rpc.ErrorInfo` reason in the `auth.0xmonaco.com` domain). These are
154
+ * HTTP 403. ACCOUNT_DEACTIVATED also survives signed-request authentication
155
+ * and WebSocket authentication/revalidation. Expired or revoked sessions still
156
+ * require a fresh sign-in; a wallet without a grant receives INVITE_CODE_REQUIRED.
157
+ */
158
+ export declare const INVITE_ERROR_CODES: {
159
+ /** The signing account is deactivated. */
160
+ readonly ACCOUNT_DEACTIVATED: "ACCOUNT_DEACTIVATED";
161
+ /** The wallet has no Mainnet access grant and no invite code was supplied: show code entry. */
162
+ readonly INVITE_CODE_REQUIRED: "INVITE_CODE_REQUIRED";
163
+ /** The invite code was not accepted (wrong, already redeemed, revoked, or issued by a deactivated wallet; deliberately indistinguishable). */
164
+ readonly INVITE_CODE_INVALID: "INVITE_CODE_INVALID";
165
+ };
166
+ export type InviteErrorCode = (typeof INVITE_ERROR_CODES)[keyof typeof INVITE_ERROR_CODES];
@@ -4,3 +4,19 @@
4
4
  * Types for wallet authentication operations including challenge creation,
5
5
  * signature verification, and session lifecycle.
6
6
  */
7
+ /**
8
+ * Stable codes on a refused sign-in (deactivation applies in either mode), read
9
+ * from `APIError.serverCode` (REST error envelope `code`, gRPC
10
+ * `google.rpc.ErrorInfo` reason in the `auth.0xmonaco.com` domain). These are
11
+ * HTTP 403. ACCOUNT_DEACTIVATED also survives signed-request authentication
12
+ * and WebSocket authentication/revalidation. Expired or revoked sessions still
13
+ * require a fresh sign-in; a wallet without a grant receives INVITE_CODE_REQUIRED.
14
+ */
15
+ export const INVITE_ERROR_CODES = {
16
+ /** The signing account is deactivated. */
17
+ ACCOUNT_DEACTIVATED: "ACCOUNT_DEACTIVATED",
18
+ /** The wallet has no Mainnet access grant and no invite code was supplied: show code entry. */
19
+ INVITE_CODE_REQUIRED: "INVITE_CODE_REQUIRED",
20
+ /** The invite code was not accepted (wrong, already redeemed, revoked, or issued by a deactivated wallet; deliberately indistinguishable). */
21
+ INVITE_CODE_INVALID: "INVITE_CODE_INVALID",
22
+ };
@@ -99,6 +99,10 @@ export interface Candlestick {
99
99
  i: string;
100
100
  /** Number of trades */
101
101
  n: number;
102
+ /** One-sided LONG open interest in normalized base-asset units, sampled at or before the candle end */
103
+ openInterestBase?: string | null;
104
+ /** One-sided LONG quote-asset notional paired with the same sample price; null when the base quantity or paired price is unavailable */
105
+ openInterestNotional?: string | null;
102
106
  }
103
107
  /**
104
108
  * Supported candlestick intervals
@@ -162,11 +162,11 @@ export interface Position {
162
162
  * comparison rather than ranking it as oldest.
163
163
  *
164
164
  * The merge rule is PER FIELD GROUP, never per payload. On an EQUAL version
165
- * skip the versioned fields as an idempotent redelivery — EXCEPT
166
- * `isolatedMargin`, which the WebSocket positions snapshot overlays from an
167
- * independent live matching-engine read rather than from the versioned row,
168
- * so it can reflect a later command than the version names and must be
169
- * taken from the newer payload. Also still take
165
+ * skip the versioned fields as an idempotent redelivery — EXCEPT on a
166
+ * WebSocket positions snapshot row, which wins the tie on every field: it
167
+ * is built from live matching-engine state under the persisted row's
168
+ * version, so it can reflect a later command than the version names. Also
169
+ * still take
170
170
  * `markPrice`, `unrealizedPnl`, `liquidationPrice`, `leverage`,
171
171
  * `maintenanceMarginRequired` and `initialMarginRequired` from the newer
172
172
  * payload: those six are re-derived on every read rather than served from
@@ -358,8 +358,11 @@ export interface TpSlLeg {
358
358
  * legs of the same condition type — they are cancelled in the same engine
359
359
  * step that creates this one, so moving a take-profit or stop-loss is a
360
360
  * single call. Fixed-`quantity` legs never participate (laddered partial
361
- * exits stack), a superseded leg's OCO sibling stays active, and legs
362
- * attached to an entry order are excluded on both sides.
361
+ * exits stack), and a superseded leg's OCO sibling stays active. An entry
362
+ * order's full-close legs compete for the same slot once armed, and the leg
363
+ * set most recently wins: this attach retires an armed entry-order leg, and a
364
+ * leg still pending on an unfilled order is cancelled instead of armed when
365
+ * that order fills.
363
366
  */
364
367
  closePosition?: boolean;
365
368
  timeInForce?: Extract<TimeInForce, "GTC" | "IOC">;
@@ -42,7 +42,7 @@ export interface SDKConfig {
42
42
  * - "local": http://localhost:8080
43
43
  * - "development": https://develop.apimonaco.xyz
44
44
  * - "staging": https://staging.apimonaco.xyz
45
- * - "mainnet": https://api.monaco.xyz
45
+ * - "mainnet": https://apimonaco.xyz
46
46
  *
47
47
  * Only "mainnet" uses the Sei mainnet chain. All other networks use Sei testnet.
48
48
  * `network` always selects the chain; supply {@link apiUrl} / {@link wsUrl}
@@ -177,9 +177,14 @@ export interface MonacoSDK {
177
177
  * Complete authentication flow
178
178
  * @param clientId - The client ID for authentication
179
179
  * @param options - Optional configuration for login
180
+ * @param options.connectWebSocket - Auto-connect WebSocket after login (default: false)
181
+ * @param options.inviteCode - Optional case-sensitive Mainnet invite code. Needed while Mainnet
182
+ * Invite Mode is on for any wallet without a Mainnet access grant, existing accounts included;
183
+ * a wallet that already has access never needs it.
180
184
  */
181
185
  login(clientId: string, options?: {
182
186
  connectWebSocket?: boolean;
187
+ inviteCode?: string;
183
188
  }): Promise<AuthState>;
184
189
  /**
185
190
  * Create and adopt an owner-scoped delegated session.
@@ -10,7 +10,7 @@
10
10
  * - "local": http://localhost:8080
11
11
  * - "development": https://develop.apimonaco.xyz
12
12
  * - "staging": https://staging.apimonaco.xyz
13
- * - "mainnet": https://api.monaco.xyz
13
+ * - "mainnet": https://apimonaco.xyz
14
14
  */
15
15
  export type Network = "mainnet" | "development" | "staging" | "local";
16
16
  /**
@@ -104,6 +104,8 @@ export type WebSocketErrorCode =
104
104
  "AUTH_REQUIRED"
105
105
  /** The `Authenticate` handshake was rejected; the connection is closed after this frame. */
106
106
  | "AUTH_FAILED"
107
+ /** The account is deactivated; the connection closes and must not automatically reconnect. */
108
+ | "ACCOUNT_DEACTIVATED"
107
109
  /** The per-user concurrent-connection cap was reached; this connection is closed after the frame. */
108
110
  | "CONNECTION_LIMIT"
109
111
  /** The per-connection subscription-cardinality cap was reached. */
@@ -168,9 +170,9 @@ export interface WebSocketReauthenticationInfo {
168
170
  /**
169
171
  * The `Error` frame code that ended the connection: `SESSION_INVALID` (the
170
172
  * session was revoked or expired after the handshake) or `AUTH_FAILED` (the
171
- * `Authenticate` handshake itself was rejected).
173
+ * `Authenticate` handshake itself was rejected), or `ACCOUNT_DEACTIVATED`.
172
174
  */
173
- code: "SESSION_INVALID" | "AUTH_FAILED";
175
+ code: "SESSION_INVALID" | "AUTH_FAILED" | "ACCOUNT_DEACTIVATED";
174
176
  /** Human-readable description from the `Error` frame; for logging and display, never for branching. */
175
177
  message: string;
176
178
  /** WebSocket close code of the connection that was lost (1008 for `SESSION_INVALID`). */
@@ -2,7 +2,8 @@
2
2
  * Account WebSocket Event Types
3
3
  *
4
4
  * Types for real-time account-level margin updates: equity, collateral, free
5
- * collateral, margin ratio, and maintenance requirement for a margin account.
5
+ * collateral, margin ratio, maintenance requirement, initial margin required,
6
+ * withdrawable collateral, and realized PnL for a margin account.
6
7
  *
7
8
  * This is an authenticated channel - requires the signed session-key handshake.
8
9
  * Detected broadcast lag closes the connection with 1013 and requires resync.
@@ -84,6 +85,30 @@ export interface AccountEventData {
84
85
  marginRatio: string;
85
86
  /** Maintenance margin required to keep the account solvent (decimal string) */
86
87
  maintenanceRequirement: string;
88
+ /**
89
+ * Initial margin required by the account's open positions and resting
90
+ * orders (decimal string). The same value as the margin-account REST row's
91
+ * `initialMarginRequired`, so placing or cancelling a resting order moves it.
92
+ *
93
+ * The three margin fields are optional only so a frame from an older server
94
+ * still parses: every current frame and snapshot row carries them. Treat
95
+ * `undefined` as unknown, never as zero.
96
+ */
97
+ initialMarginRequired?: string;
98
+ /**
99
+ * The largest amount a withdrawal or transfer out of this margin account
100
+ * will accept (decimal string): the margin-account REST row's
101
+ * `withdrawableCollateral`. Floored at zero and rounded toward zero at 6
102
+ * decimal places, so a transfer of exactly this amount is accepted.
103
+ */
104
+ withdrawableCollateral?: string;
105
+ /**
106
+ * Realized PnL settled to the margin account plus net funding (decimal
107
+ * string): the margin-account REST row's `realizedPnl`. Realized PnL still
108
+ * held by an open risk bucket is not included; the margin-account PnL
109
+ * endpoint reports that part.
110
+ */
111
+ realizedPnl?: string;
87
112
  /** Timestamp when the account state was updated (ISO 8601) */
88
113
  updatedAt: string;
89
114
  }
@@ -2,7 +2,8 @@
2
2
  * Account WebSocket Event Types
3
3
  *
4
4
  * Types for real-time account-level margin updates: equity, collateral, free
5
- * collateral, margin ratio, and maintenance requirement for a margin account.
5
+ * collateral, margin ratio, maintenance requirement, initial margin required,
6
+ * withdrawable collateral, and realized PnL for a margin account.
6
7
  *
7
8
  * This is an authenticated channel - requires the signed session-key handshake.
8
9
  * Detected broadcast lag closes the connection with 1013 and requires resync.
@@ -158,10 +158,11 @@ export interface CommonOrderEventData {
158
158
  * `"ADL"` or `"COPY"` (a copy trading order the engine placed for one of
159
159
  * your follows).
160
160
  *
161
- * Absent means **not reported**, never `"USER"`: the key is omitted until
162
- * the event's producer fills it, and `"USER"` is sent explicitly once it
163
- * does. Widened past {@link OrderOrigin} because the parser passes an
164
- * unrecognized value through rather than dropping the frame.
161
+ * Every order event carries it, `"USER"` included, so it agrees with REST
162
+ * `getOrder` and the `orders` snapshot row. Absent means **not reported**
163
+ * (a server predating the field), never `"USER"`. Widened past
164
+ * {@link OrderOrigin} because the parser passes an unrecognized value
165
+ * through rather than dropping the frame.
165
166
  * Wire: `origin`.
166
167
  */
167
168
  origin?: OrderOrigin | (string & {});
@@ -175,12 +175,12 @@ export interface PositionEventData {
175
175
  * Fall back to a full field comparison rather than ranking it lowest.
176
176
  *
177
177
  * The merge rule is PER FIELD GROUP, never per frame. On a higher version
178
- * apply everything. On an EQUAL version skip the versioned fields as an
179
- * idempotent redelivery — EXCEPT `isolatedMargin`, which the subscribe-time
180
- * snapshot overlays from an independent live matching-engine read rather
181
- * than from the versioned row, so it can reflect a later command than the
182
- * version names and must be taken from the newer payload or you retain
183
- * stale backing. Also still take `markPrice`, `unrealizedPnl`,
178
+ * apply everything. On an EQUAL version skip a live frame's versioned
179
+ * fields as an idempotent redelivery, but take every field of a
180
+ * subscribe-time snapshot row: the snapshot is built from live
181
+ * matching-engine state under the persisted row's version, so it can
182
+ * reflect a later command than the version names, and skipping it keeps
183
+ * the values the reconnect was meant to correct. Also still take `markPrice`, `unrealizedPnl`,
184
184
  * `liquidationPrice`, `leverage`, `maintenanceMarginRequired` and
185
185
  * `initialMarginRequired` from the newer frame: those six are re-derived
186
186
  * per frame rather than served from the versioned row, carry no version,
@@ -211,7 +211,7 @@ export interface PositionEventData {
211
211
  * still open plus the funding its partial closes settled. A terminal frame
212
212
  * carries the closed position's whole-life total, the same `fundingPaid` a
213
213
  * REST read of the closed position returns. The subscribe-time snapshot
214
- * carries the REST value for the same row.
214
+ * carries the value the position's live frames carry.
215
215
  *
216
216
  * Absent means UNKNOWN, never zero: the server cannot account for every
217
217
  * earlier reduction yet (a value would understate it), or a deployment
@@ -31,6 +31,7 @@
31
31
  */
32
32
  import type { Candlestick } from "../market";
33
33
  import type { OrderSide, OrderType, SelfTradePreventionMode, TimeInForce, TradingMode } from "../trading";
34
+ import type { OrderOrigin } from "./events/orders-events";
34
35
  /**
35
36
  * Receives one channel's complete subscribe-time state.
36
37
  *
@@ -82,8 +83,8 @@ export type OHLCVSnapshotCandle = Omit<Candlestick, "s">;
82
83
  * `Option` serialized WITHOUT `skip_serializing_if`, so the key is always
83
84
  * present and carries `null` when unset — hence `| null` rather than `?`.
84
85
  * `clientOrderId`, `selfTradePreventionMode`, `parentOrderId`, `postOnly`,
85
- * `expirationDate`, `triggerPrice`, `positionSide` and `version` are the fields
86
- * the server omits outright, so they are the `?`s.
86
+ * `expirationDate`, `triggerPrice`, `positionSide`, `version` and `origin` are
87
+ * the fields the server omits outright, so they are the `?`s.
87
88
  *
88
89
  * The value unions are widened (`Union | (string & {})`) for the same reason
89
90
  * the order event's are: the parser hands an unrecognized value through rather
@@ -195,4 +196,12 @@ export interface OrderSnapshotItem {
195
196
  * before the field existed reports. Absent means unknown, never zero.
196
197
  */
197
198
  version?: number;
199
+ /**
200
+ * What placed the order: `"USER"`, `"LIQUIDATION"`, `"SYSTEM"`, `"ADL"` or
201
+ * `"COPY"`, as REST `getOrder` returns it and as every live order event
202
+ * carries it. Omitted, not `null`, when the server does not report it (a
203
+ * server predating the field); absent means not reported, never `"USER"`.
204
+ * Wire: `origin`.
205
+ */
206
+ origin?: OrderOrigin | (string & {});
198
207
  }
@@ -10,6 +10,6 @@
10
10
  * hand-written SDK surface. CI regenerates it and fails on a diff, identical to
11
11
  * the `schema.ts` wire-types tripwire (MON-1476), so it can never go stale.
12
12
  */
13
- export declare const OPERATION_IDS: readonly ["add_follow_position_margin", "attach_position_tp_sl", "batch_cancel_all", "batch_cancel_all_by_pair", "batch_cancel_orders", "batch_close_all_positions", "batch_create_orders", "batch_replace_orders", "cancel_conditional_order", "cancel_order", "cancel_twap_order", "check_trader_code_availability", "claim_buildercode_rewards", "claim_managed_market_lease", "clear_trader_code", "close_all_copy_positions", "close_follow_positions", "close_position", "close_sub_account", "create_challenge", "create_delegated_session", "create_order", "create_sub_account", "create_sub_account_limit", "create_twap_order", "delete_sub_account_limit", "get_application_config", "get_application_stats", "get_available_collateral", "get_buildercode_payout_summary", "get_buildercode_rewards_balance", "get_buildercodes_config", "get_candles", "get_conditional_order", "get_faucet_info", "get_follow", "get_funding_state", "get_index_price", "get_lead_trader", "get_margin_account_movements", "get_margin_account_pnl", "get_margin_account_summary", "get_mark_price", "get_market_metadata", "get_market_stats", "get_my_fee_tier", "get_my_lead_trader", "get_my_referral_downline", "get_my_referral_position", "get_my_referral_tree", "get_my_trader_code", "get_open_interest", "get_order_by_id", "get_orderbook_snapshot", "get_orders", "get_parent_margin_account_movements", "get_parent_margin_account_summary", "get_perp_market_config", "get_perp_market_summary", "get_portfolio_assets", "get_portfolio_chart", "get_portfolio_margin", "get_portfolio_performance", "get_portfolio_realized_pnl", "get_portfolio_stats", "get_portfolio_summary", "get_position", "get_position_pnl_history", "get_position_risk", "get_pulse", "get_rewards_balance", "get_screener", "get_self_trade_prevention_default", "get_sub_account_limits", "get_sweeper_chains", "get_trade_by_id", "get_trader_code_info", "get_trades", "get_trading_pair_by_id", "get_twap_order", "get_twap_order_tca", "get_user_balance_by_asset", "get_user_balances", "get_user_movements", "get_user_profile", "get_user_trades", "get_withdrawal", "health_check", "initiate_withdrawal", "list_all_funding_history", "list_application_balances", "list_application_movements", "list_application_orders", "list_application_users", "list_builder_fee_changes", "list_buildercode_payouts", "list_conditional_orders", "list_delegated_agent_owners", "list_delegated_agents", "list_follow_leader_positions", "list_funding_history", "list_funding_payments", "list_lead_trader_closed_trades", "list_lead_trader_open_positions", "list_lead_traders", "list_managed_market_assignments", "list_margin_accounts", "list_my_followers", "list_my_follows", "list_pending_withdrawals", "list_position_history", "list_positions", "list_sub_accounts_with_balances", "list_trading_pairs", "list_twap_order_slices", "list_twap_orders", "mint_tokens", "pitpass_check_trader_code_availability", "pitpass_clear_trader_code", "pitpass_get_my_referral_downline", "pitpass_get_my_referral_position", "pitpass_get_my_referral_tree", "pitpass_get_my_trader_code", "pitpass_get_rewards_balance", "pitpass_get_trader_code_info", "pitpass_set_trader_code", "pitpass_transfer_rewards", "preview_follow", "refresh_managed_market_quotes", "refresh_session", "register_deposit_address", "replace_order", "revoke_delegated_agent", "revoke_session", "set_builder_fee", "set_self_trade_prevention_default", "set_trader_code", "simulate_fees", "simulate_order_risk", "simulate_parent_margin_order_risk", "simulate_risk_bucket_order_risk", "stop_follow", "submit_whitelist", "transfer_collateral", "transfer_collateral_from_margin_account", "transfer_collateral_from_parent_margin_account", "transfer_collateral_from_sub_account", "transfer_collateral_to_margin_account", "transfer_collateral_to_parent_margin_account", "transfer_collateral_to_risk_bucket", "transfer_collateral_to_sub_account", "transfer_rewards", "update_sub_account_limit", "upsert_delegated_agent", "upsert_follow", "upsert_lead_trader", "verify_signature"];
13
+ export declare const OPERATION_IDS: readonly ["add_follow_position_margin", "attach_position_tp_sl", "batch_cancel_all", "batch_cancel_all_by_pair", "batch_cancel_orders", "batch_close_all_positions", "batch_create_orders", "batch_replace_orders", "cancel_conditional_order", "cancel_order", "cancel_twap_order", "check_trader_code_availability", "claim_buildercode_rewards", "claim_managed_market_lease", "clear_trader_code", "close_all_copy_positions", "close_follow_positions", "close_position", "close_sub_account", "create_challenge", "create_delegated_session", "create_order", "create_sub_account", "create_sub_account_limit", "create_twap_order", "delete_sub_account_limit", "get_application_config", "get_application_stats", "get_available_collateral", "get_buildercode_payout_summary", "get_buildercode_rewards_balance", "get_buildercodes_config", "get_candles", "get_conditional_order", "get_faucet_info", "get_follow", "get_funding_state", "get_index_price", "get_lead_trader", "get_margin_account_movements", "get_margin_account_pnl", "get_margin_account_summary", "get_mark_price", "get_market_metadata", "get_market_stats", "get_my_fee_tier", "get_my_lead_trader", "get_my_referral_downline", "get_my_referral_position", "get_my_referral_tree", "get_my_trader_code", "get_open_interest", "get_order_by_id", "get_orderbook_snapshot", "get_orders", "get_parent_margin_account_movements", "get_parent_margin_account_summary", "get_perp_market_config", "get_perp_market_summary", "get_portfolio_assets", "get_portfolio_chart", "get_portfolio_margin", "get_portfolio_performance", "get_portfolio_realized_pnl", "get_portfolio_stats", "get_portfolio_summary", "get_position", "get_position_pnl_history", "get_position_risk", "get_pulse", "get_rewards_balance", "get_screener", "get_self_trade_prevention_default", "get_sub_account_limits", "get_sweeper_chains", "get_trade_by_id", "get_trader_code_info", "get_trades", "get_trading_pair_by_id", "get_twap_order", "get_twap_order_tca", "get_user_balance_by_asset", "get_user_balances", "get_user_movements", "get_user_profile", "get_user_trades", "get_withdrawal", "health_check", "initiate_withdrawal", "list_all_funding_history", "list_application_balances", "list_application_movements", "list_application_orders", "list_application_users", "list_builder_fee_changes", "list_buildercode_payouts", "list_conditional_orders", "list_delegated_agent_owners", "list_delegated_agents", "list_follow_leader_positions", "list_funding_history", "list_funding_payments", "list_invite_codes", "list_lead_trader_closed_trades", "list_lead_trader_open_positions", "list_lead_traders", "list_managed_market_assignments", "list_margin_accounts", "list_my_followers", "list_my_follows", "list_pending_withdrawals", "list_position_history", "list_positions", "list_sub_accounts_with_balances", "list_trading_pairs", "list_twap_order_slices", "list_twap_orders", "mint_tokens", "pitpass_check_trader_code_availability", "pitpass_clear_trader_code", "pitpass_get_my_referral_downline", "pitpass_get_my_referral_position", "pitpass_get_my_referral_tree", "pitpass_get_my_trader_code", "pitpass_get_rewards_balance", "pitpass_get_trader_code_info", "pitpass_set_trader_code", "pitpass_transfer_rewards", "preview_follow", "refresh_managed_market_quotes", "refresh_session", "register_deposit_address", "replace_order", "request_invite_codes", "revoke_delegated_agent", "revoke_session", "set_builder_fee", "set_self_trade_prevention_default", "set_trader_code", "simulate_fees", "simulate_order_risk", "simulate_parent_margin_order_risk", "simulate_risk_bucket_order_risk", "stop_follow", "submit_whitelist", "transfer_collateral", "transfer_collateral_from_margin_account", "transfer_collateral_from_parent_margin_account", "transfer_collateral_from_sub_account", "transfer_collateral_to_margin_account", "transfer_collateral_to_parent_margin_account", "transfer_collateral_to_risk_bucket", "transfer_collateral_to_sub_account", "transfer_rewards", "update_sub_account_limit", "upsert_delegated_agent", "upsert_follow", "upsert_lead_trader", "verify_signature"];
14
14
  /** Union of every OpenAPI operationId in the spec. */
15
15
  export type OperationId = (typeof OPERATION_IDS)[number];
@@ -113,6 +113,7 @@ export const OPERATION_IDS = [
113
113
  "list_follow_leader_positions",
114
114
  "list_funding_history",
115
115
  "list_funding_payments",
116
+ "list_invite_codes",
116
117
  "list_lead_trader_closed_trades",
117
118
  "list_lead_trader_open_positions",
118
119
  "list_lead_traders",
@@ -143,6 +144,7 @@ export const OPERATION_IDS = [
143
144
  "refresh_session",
144
145
  "register_deposit_address",
145
146
  "replace_order",
147
+ "request_invite_codes",
146
148
  "revoke_delegated_agent",
147
149
  "revoke_session",
148
150
  "set_builder_fee",
@@ -1562,6 +1562,51 @@ export interface paths {
1562
1562
  patch?: never;
1563
1563
  trace?: never;
1564
1564
  };
1565
+ "/api/v1/invite-codes": {
1566
+ parameters: {
1567
+ query?: never;
1568
+ header?: never;
1569
+ path?: never;
1570
+ cookie?: never;
1571
+ };
1572
+ /**
1573
+ * List my Mainnet invite codes
1574
+ * @description List the authenticated wallet's invite allowance and the codes it minted.
1575
+ *
1576
+ * Read-only: never mints or consumes an allowance slot, so a client can poll
1577
+ * it to show progress and to recover a code whose mint response was lost.
1578
+ */
1579
+ get: operations["list_invite_codes"];
1580
+ put?: never;
1581
+ post?: never;
1582
+ delete?: never;
1583
+ options?: never;
1584
+ head?: never;
1585
+ patch?: never;
1586
+ trace?: never;
1587
+ };
1588
+ "/api/v1/invite-codes/requests": {
1589
+ parameters: {
1590
+ query?: never;
1591
+ header?: never;
1592
+ path?: never;
1593
+ cookie?: never;
1594
+ };
1595
+ get?: never;
1596
+ put?: never;
1597
+ /**
1598
+ * Mint one Mainnet invite code
1599
+ * @description Mint one invite code from the authenticated wallet's available allowance.
1600
+ * Every active wallet has one initial code plus one per 250,000 USDC of executed
1601
+ * Mainnet USDC volume since the configured launch. Revocation never refunds a slot.
1602
+ */
1603
+ post: operations["request_invite_codes"];
1604
+ delete?: never;
1605
+ options?: never;
1606
+ head?: never;
1607
+ patch?: never;
1608
+ trace?: never;
1609
+ };
1565
1610
  "/api/v1/managed-markets/assignments": {
1566
1611
  parameters: {
1567
1612
  query?: never;
@@ -2329,7 +2374,8 @@ export interface paths {
2329
2374
  * @description Get user orders.
2330
2375
  *
2331
2376
  * Get orders for the authenticated user with pagination and optional
2332
- * filtering by status and trading pair.
2377
+ * filtering by status and trading pair. A TWAP order's slices are not
2378
+ * listed here; read them from ListTwapOrderSlices.
2333
2379
  */
2334
2380
  get: operations["get_orders"];
2335
2381
  put?: never;
@@ -4641,6 +4687,16 @@ export interface components {
4641
4687
  * @example 1699800059999
4642
4688
  */
4643
4689
  closeTimestampMs?: string | null;
4690
+ /**
4691
+ * @description One-sided LONG open interest in base-asset units, from the latest sample at or before the candle end. Null when no sample is available.
4692
+ * @example 125.5
4693
+ */
4694
+ openInterestBase?: string | null;
4695
+ /**
4696
+ * @description One-sided LONG open-interest notional in quote-asset units, calculated using the price paired with the same sample as open_interest_base. Present only when the paired base quantity and price are available; otherwise null.
4697
+ * @example 4412600.00
4698
+ */
4699
+ openInterestNotional?: string | null;
4644
4700
  };
4645
4701
  ChallengeRequest: {
4646
4702
  /**
@@ -6564,7 +6620,7 @@ export interface components {
6564
6620
  */
6565
6621
  batchId?: string | null;
6566
6622
  /**
6567
- * @description Stable terminal cause for a cancelled order: USER_REQUESTED, REPLACED, LIQUIDATION, INSUFFICIENT_MARGIN, REDUCE_ONLY_EXHAUSTED, POSITION_CLOSED, OCO_SIBLING_TRIGGERED, SELF_TRADE_PREVENTION, AUTO_DELEVERAGING, PRICE_BAND, SLIPPAGE_TOLERANCE, or SYSTEM. AUTO_DELEVERAGING means auto-deleveraging closed the position your risk bucket held and this resting order was cancelled with it; you were deleveraged as a counterparty, not liquidated. PRICE_BAND means the exchange's protective price band stopped the order and its remainder was cancelled; SLIPPAGE_TOLERANCE means your own slippageToleranceBps did.
6623
+ * @description Stable terminal cause for a cancelled order: USER_REQUESTED, REPLACED, LIQUIDATION, INSUFFICIENT_MARGIN, REDUCE_ONLY_EXHAUSTED, POSITION_CLOSED, OCO_SIBLING_TRIGGERED, SELF_TRADE_PREVENTION, AUTO_DELEVERAGING, PRICE_BAND, SLIPPAGE_TOLERANCE, or SYSTEM. AUTO_DELEVERAGING means auto-deleveraging closed the position your risk bucket held and this resting order was cancelled with it; you were deleveraged as a counterparty, not liquidated. PRICE_BAND means the exchange's protective price band stopped the order and its remainder was cancelled, or, on a resting perp order, that the mark moved the order past the band, where no taker may trade with it; SLIPPAGE_TOLERANCE means your own slippageToleranceBps did.
6568
6624
  * @example REDUCE_ONLY_EXHAUSTED
6569
6625
  */
6570
6626
  terminalReason?: string | null;
@@ -7025,7 +7081,7 @@ export interface components {
7025
7081
  cumFees?: string | null;
7026
7082
  /**
7027
7083
  * Format: int64
7028
- * @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. Ranked live frames include fills, non-zero funding settlements, terminal closes/liquidations/ADL, direct isolated-position margin adds/reductions, and copy-position margin adds; each uses captured post-command state, and terminal frames retain the stored size and exact CLOSED/LIQUIDATED classification. After restart, a terminal frame rebuilt from legacy reduction history omits the version when that history lacks the margin fields needed to reconstruct complete lifetime allocated margin. Cross-risk-bucket ALLOCATE/RELEASE and copy follow/stop refreshes use margin_added/margin_reduced but omit the version because those commands write no position rows. Wallet IN/OUT and plain isolated allocation send no position frame. Transfer and funding frames use captured post-command state and are released only after durable acknowledgement. mark_price, unrealized_pnl, liquidation_price, leverage, maintenance_margin_required and initial_margin_required are UNVERSIONED valuation fields, re-derived per payload rather than served from the versioned row: the version does not advance for them (five move with the oracle mark; leverage does not, being opening notional over posted margin, but the live surfaces derive it while the persisted row serves its stored column, so it can still disagree at an unchanged version) (a valuation-only oracle tick persists nothing; a state-transitioning one, a breach or recovery, persists the account's snapshot and restamps the positions it changed), so the merge rule is per field group — on an equal version skip the versioned fields but still take all six from the newer payload, because discarding a whole payload on an equal version freezes displayed PnL and can leave a stale margin requirement on screen. 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. The version advances exactly when the row's versioned content changed at that sequence, a change undone within one persistence batch included; a position a command left unchanged keeps its version, so a RANKED live frame for an untouched sibling of a filled position can carry a higher version than the persisted row while describing identical content — rank it as newer, and nothing changes. A response served from live matching-engine state reports 0 (unranked): the engine holds the state but not the version.
7084
+ * @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. Ranked live frames include fills, non-zero funding settlements, terminal closes/liquidations/ADL, direct isolated-position margin adds/reductions, and copy-position margin adds; each uses captured post-command state, and terminal frames retain the stored size and exact CLOSED/LIQUIDATED classification. After restart, a terminal frame rebuilt from legacy reduction history omits the version when that history lacks the margin fields needed to reconstruct complete lifetime allocated margin. Cross-risk-bucket ALLOCATE/RELEASE and copy follow/stop refreshes use margin_added/margin_reduced but omit the version because those commands write no position rows. Wallet IN/OUT and plain isolated allocation send no position frame. Transfer and funding frames use captured post-command state and are released only after durable acknowledgement. mark_price, unrealized_pnl, liquidation_price, leverage, maintenance_margin_required and initial_margin_required are UNVERSIONED valuation fields, re-derived per payload rather than served from the versioned row: the version does not advance for them (five move with the oracle mark; leverage does not, being opening notional over posted margin, but the live surfaces derive it while the persisted row serves its stored column, so it can still disagree at an unchanged version) (a valuation-only oracle tick persists nothing; a state-transitioning one, a breach or recovery, persists the account's snapshot and restamps the positions it changed), so the merge rule is per field group — on an equal version skip the versioned fields but still take all six from the newer payload, because discarding a whole payload on an equal version freezes displayed PnL and can leave a stale margin requirement on screen. A WebSocket positions snapshot row wins an equal-version tie on every field: it is built from live matching-engine state under the persisted row's version, so it can reflect a later command than that version names. Take all of it on an equal version; an equal-version live frame stays an idempotent redelivery. The version advances exactly when the row's versioned content changed at that sequence, a change undone within one persistence batch included; a position a command left unchanged keeps its version, so a RANKED live frame for an untouched sibling of a filled position can carry a higher version than the persisted row while describing identical content — rank it as newer, and nothing changes. A response served from live matching-engine state reports 0 (unranked): the engine holds the state but not the version.
7029
7085
  * @example 918342
7030
7086
  */
7031
7087
  version?: number | null;
@@ -7421,6 +7477,36 @@ export interface components {
7421
7477
  */
7422
7478
  source?: string | null;
7423
7479
  };
7480
+ InviteCode: {
7481
+ /**
7482
+ * Format: uuid
7483
+ * @description Identifier of the code.
7484
+ */
7485
+ codeId?: string | null;
7486
+ /**
7487
+ * Format: int32
7488
+ * @description Allowance slot: 0 for the initial code, N for the Nth 250,000 USDC milestone.
7489
+ * @example 0
7490
+ */
7491
+ milestone?: number | null;
7492
+ /**
7493
+ * @description Lifecycle status: issued, redeemed or revoked.
7494
+ * @example issued
7495
+ */
7496
+ status?: string | null;
7497
+ /** @description The 10-character case-sensitive bearer code, present only while it is issued and unredeemed. Store securely; never log it. */
7498
+ code?: string | null;
7499
+ /**
7500
+ * Format: date-time
7501
+ * @description RFC 3339 time the code was created.
7502
+ */
7503
+ createdAt?: string | null;
7504
+ /**
7505
+ * Format: date-time
7506
+ * @description RFC 3339 time the code was redeemed; absent until then.
7507
+ */
7508
+ redeemedAt?: string | null;
7509
+ };
7424
7510
  /** @description Current followers and the collateral they have allocated. Window-free. */
7425
7511
  LeadTraderFollowSummary: {
7426
7512
  /**
@@ -7931,6 +8017,33 @@ export interface components {
7931
8017
  */
7932
8018
  totalCapped?: boolean | null;
7933
8019
  };
8020
+ ListInviteCodesResponse: {
8021
+ /**
8022
+ * @description Executed Mainnet USDC quote notional since the configured production launch, counting maker and taker wallets at 1 USDC = 1 USD. Zero until volume rewards and the launch timestamp are configured.
8023
+ * @example 250000.00
8024
+ */
8025
+ mainnetVolumeUsd?: string | null;
8026
+ /**
8027
+ * Format: int32
8028
+ * @description Number of completed Mainnet volume milestones of 250,000 USDC each.
8029
+ * @example 1
8030
+ */
8031
+ eligibleMilestones?: number | null;
8032
+ /**
8033
+ * Format: int32
8034
+ * @description One initial code plus the number of completed Mainnet volume milestones of 250,000 USDC each; zero without active Mainnet access.
8035
+ * @example 2
8036
+ */
8037
+ totalAllowance?: number | null;
8038
+ /**
8039
+ * Format: int32
8040
+ * @description Allowance slots not yet minted. Revoked slots remain consumed.
8041
+ * @example 1
8042
+ */
8043
+ availableCodes?: number | null;
8044
+ /** @description Codes this wallet minted or was issued, newest first. */
8045
+ codes?: components["schemas"]["InviteCode"][] | null;
8046
+ };
7934
8047
  ListLeadTraderClosedTradesResponse: {
7935
8048
  closedTrades?: components["schemas"]["ClosedTrade"][] | null;
7936
8049
  /** @description Cursor for the next page; empty when there are no more. */
@@ -9040,7 +9153,7 @@ export interface components {
9040
9153
  cumFees?: string | null;
9041
9154
  /**
9042
9155
  * Format: int64
9043
- * @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. Ranked live frames include fills, non-zero funding settlements, terminal closes/liquidations/ADL, direct isolated-position margin adds/reductions, and copy-position margin adds; each uses captured post-command state, and terminal frames retain the stored size and exact CLOSED/LIQUIDATED classification. After restart, a terminal frame rebuilt from legacy reduction history omits the version when that history lacks the margin fields needed to reconstruct complete lifetime allocated margin. Cross-risk-bucket ALLOCATE/RELEASE and copy follow/stop refreshes use margin_added/margin_reduced but omit the version because those commands write no position rows. Wallet IN/OUT and plain isolated allocation send no position frame. Transfer and funding frames use captured post-command state and are released only after durable acknowledgement. mark_price, unrealized_pnl, liquidation_price, leverage, maintenance_margin_required and initial_margin_required are UNVERSIONED valuation fields, re-derived per payload rather than served from the versioned row: the version does not advance for them (five move with the oracle mark; leverage does not, being opening notional over posted margin, but the live surfaces derive it while the persisted row serves its stored column, so it can still disagree at an unchanged version) (a valuation-only oracle tick persists nothing; a state-transitioning one, a breach or recovery, persists the account's snapshot and restamps the positions it changed), so the merge rule is per field group — on an equal version skip the versioned fields but still take all six from the newer payload, because discarding a whole payload on an equal version freezes displayed PnL and can leave a stale margin requirement on screen. 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. The version advances exactly when the row's versioned content changed at that sequence, a change undone within one persistence batch included; a position a command left unchanged keeps its version, so a RANKED live frame for an untouched sibling of a filled position can carry a higher version than the persisted row while describing identical content — rank it as newer, and nothing changes. A response served from live matching-engine state reports 0 (unranked): the engine holds the state but not the version.
9156
+ * @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. Ranked live frames include fills, non-zero funding settlements, terminal closes/liquidations/ADL, direct isolated-position margin adds/reductions, and copy-position margin adds; each uses captured post-command state, and terminal frames retain the stored size and exact CLOSED/LIQUIDATED classification. After restart, a terminal frame rebuilt from legacy reduction history omits the version when that history lacks the margin fields needed to reconstruct complete lifetime allocated margin. Cross-risk-bucket ALLOCATE/RELEASE and copy follow/stop refreshes use margin_added/margin_reduced but omit the version because those commands write no position rows. Wallet IN/OUT and plain isolated allocation send no position frame. Transfer and funding frames use captured post-command state and are released only after durable acknowledgement. mark_price, unrealized_pnl, liquidation_price, leverage, maintenance_margin_required and initial_margin_required are UNVERSIONED valuation fields, re-derived per payload rather than served from the versioned row: the version does not advance for them (five move with the oracle mark; leverage does not, being opening notional over posted margin, but the live surfaces derive it while the persisted row serves its stored column, so it can still disagree at an unchanged version) (a valuation-only oracle tick persists nothing; a state-transitioning one, a breach or recovery, persists the account's snapshot and restamps the positions it changed), so the merge rule is per field group — on an equal version skip the versioned fields but still take all six from the newer payload, because discarding a whole payload on an equal version freezes displayed PnL and can leave a stale margin requirement on screen. A WebSocket positions snapshot row wins an equal-version tie on every field: it is built from live matching-engine state under the persisted row's version, so it can reflect a later command than that version names. Take all of it on an equal version; an equal-version live frame stays an idempotent redelivery. The version advances exactly when the row's versioned content changed at that sequence, a change undone within one persistence batch included; a position a command left unchanged keeps its version, so a RANKED live frame for an untouched sibling of a filled position can carry a higher version than the persisted row while describing identical content — rank it as newer, and nothing changes. A response served from live matching-engine state reports 0 (unranked): the engine holds the state but not the version.
9044
9157
  * @example 918342
9045
9158
  */
9046
9159
  version?: number | null;
@@ -9651,6 +9764,65 @@ export interface components {
9651
9764
  updatedFields?: components["schemas"]["UpdatedFields"];
9652
9765
  matchResult?: components["schemas"]["MatchResult"];
9653
9766
  };
9767
+ RequestInviteCodesRequest: Record<string, never>;
9768
+ RequestInviteCodesResponse: {
9769
+ /**
9770
+ * @description Executed Mainnet USDC quote notional since the configured production launch, counting maker and taker wallets at 1 USDC = 1 USD. Zero until volume rewards and the launch timestamp are configured.
9771
+ * @example 250000.00
9772
+ */
9773
+ mainnetVolumeUsd?: string | null;
9774
+ /**
9775
+ * Format: int32
9776
+ * @description Number of completed Mainnet volume milestones of 250,000 USDC each.
9777
+ * @example 1
9778
+ */
9779
+ eligibleMilestones?: number | null;
9780
+ /**
9781
+ * @description Previously pending milestones, retained for compatibility. Self-service minting creates an issued code immediately.
9782
+ * @example [
9783
+ * 1
9784
+ * ]
9785
+ */
9786
+ pendingMilestones?: number[] | null;
9787
+ /**
9788
+ * @description Issued allowance slots. Slot 0 is the initial code; slot N is the Nth 250,000 USDC volume milestone.
9789
+ * @example []
9790
+ */
9791
+ issuedMilestones?: number[] | null;
9792
+ /**
9793
+ * @description Milestones whose issued code has been redeemed.
9794
+ * @example []
9795
+ */
9796
+ redeemedMilestones?: number[] | null;
9797
+ /**
9798
+ * @description The single allowance slot minted by this call, or an empty array when no allowance remains. Every call may consume the next available slot.
9799
+ * @example [
9800
+ * 0
9801
+ * ]
9802
+ */
9803
+ newlyRequestedMilestones?: number[] | null;
9804
+ /** @description The newly minted 10-character case-sensitive bearer code. Absent when no allowance remains. Store securely; never log it. */
9805
+ code?: string | null;
9806
+ /** @description Identifier of the newly minted code; absent when no allowance remains. */
9807
+ codeId?: string | null;
9808
+ /**
9809
+ * Format: int32
9810
+ * @description Consumed allowance slot: 0 for the initial code, N for the Nth 250,000 USDC milestone.
9811
+ */
9812
+ mintedMilestone?: number | null;
9813
+ /**
9814
+ * Format: int32
9815
+ * @description One initial code plus the number of completed Mainnet volume milestones of 250,000 USDC each.
9816
+ */
9817
+ totalAllowance?: number | null;
9818
+ /**
9819
+ * Format: int32
9820
+ * @description Unconsumed allowance after this call. Revoked slots remain consumed.
9821
+ */
9822
+ availableCodes?: number | null;
9823
+ /** @description Revoked allowance slots; they cannot be minted again. */
9824
+ revokedMilestones?: number[] | null;
9825
+ };
9654
9826
  RevokeDelegatedAgentResponse: {
9655
9827
  /**
9656
9828
  * @description Revocation status
@@ -10425,8 +10597,11 @@ export interface components {
10425
10597
  * a take-profit or stop-loss is one call with no window in which the
10426
10598
  * position holds both levels or neither. Fixed-quantity legs never
10427
10599
  * participate — laddered partial exits stack — and a superseded leg's
10428
- * OCO sibling is left active rather than dropped. Legs attached to an entry
10429
- * order are excluded on both sides.
10600
+ * OCO sibling is left active rather than dropped. An entry order's
10601
+ * full-close legs compete for the same slot once armed: the leg set most
10602
+ * recently wins. So an attach retires an armed entry-order leg, leaves one
10603
+ * still pending on an unfilled order alone, and when that order fills its
10604
+ * leg is cancelled instead of armed if this attach came later.
10430
10605
  */
10431
10606
  closePosition?: boolean | null;
10432
10607
  };
@@ -11369,6 +11544,11 @@ export interface components {
11369
11544
  * @example 0x1234567890abcdef1234567890abcdef12345678
11370
11545
  */
11371
11546
  referralCode?: string | null;
11547
+ /**
11548
+ * @description Optional Mainnet invite code. Exactly 10 case-sensitive ASCII letters or digits. Required while Mainnet Invite Mode is enabled for any wallet without a Mainnet access grant, including existing accounts that never received one; ignored while Invite Mode is off and unnecessary once the wallet has access. A missing code is refused with 403 and code INVITE_CODE_REQUIRED; a wrong, redeemed or revoked code, or an unused code whose issuer is deactivated, with 403 and code INVITE_CODE_INVALID. A deactivated signing account is refused with 403 and code ACCOUNT_DEACTIVATED.
11549
+ * @example aB3dE5gH7J
11550
+ */
11551
+ inviteCode?: string | null;
11372
11552
  };
11373
11553
  VerifyResponse: {
11374
11554
  /**
@@ -13224,7 +13404,7 @@ export interface operations {
13224
13404
  };
13225
13405
  content?: never;
13226
13406
  };
13227
- /** @description Origin not allowed for this application */
13407
+ /** @description Origin not allowed for this application; the account or wallet is deactivated; or Mainnet Invite Mode is on and the wallet has no access grant and supplied no valid invite code. Auth refusals carry a stable code (REST error envelope code; gRPC google.rpc.ErrorInfo reason, domain auth.0xmonaco.com): ACCOUNT_DEACTIVATED for a deactivated signing account, INVITE_CODE_REQUIRED when no code was supplied, and INVITE_CODE_INVALID for a wrong, already redeemed or revoked code, or an unused code whose issuer is deactivated. No account identity or administrative deactivation reason is disclosed. Unused invites become usable again after issuer reactivation */
13228
13408
  403: {
13229
13409
  headers: {
13230
13410
  [name: string]: unknown;
@@ -13238,7 +13418,7 @@ export interface operations {
13238
13418
  };
13239
13419
  content?: never;
13240
13420
  };
13241
- /** @description Authentication rate limit exceeded — challenge and verify share one per-client-address budget (60 requests/min sustained, burst 120), checked before the signature; retry after the interval in details.retryAfter */
13421
+ /** @description Authentication rate limit exceeded — challenge and verify share one per-client-address budget (60 requests/min sustained, burst 120), checked before the signature; or, while Mainnet Invite Mode is on, invite-code attempts from this wallet or client address are in their cooldown. Retry after the interval in details.retryAfter */
13242
13422
  429: {
13243
13423
  headers: {
13244
13424
  [name: string]: unknown;
@@ -13252,7 +13432,7 @@ export interface operations {
13252
13432
  };
13253
13433
  content?: never;
13254
13434
  };
13255
- /** @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. */
13435
+ /** @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; or an invite code could not be validated now (validation at capacity, or no trusted client address). Retryable, and not a verdict on the signature or the code. */
13256
13436
  503: {
13257
13437
  headers: {
13258
13438
  [name: string]: unknown;
@@ -15208,6 +15388,120 @@ export interface operations {
15208
15388
  };
15209
15389
  };
15210
15390
  };
15391
+ list_invite_codes: {
15392
+ parameters: {
15393
+ query?: never;
15394
+ header?: never;
15395
+ path?: never;
15396
+ cookie?: never;
15397
+ };
15398
+ requestBody?: never;
15399
+ responses: {
15400
+ /** @description OK */
15401
+ 200: {
15402
+ headers: {
15403
+ [name: string]: unknown;
15404
+ };
15405
+ content: {
15406
+ "application/json": components["schemas"]["ListInviteCodesResponse"];
15407
+ };
15408
+ };
15409
+ /** @description Authentication required */
15410
+ 401: {
15411
+ headers: {
15412
+ [name: string]: unknown;
15413
+ };
15414
+ content?: never;
15415
+ };
15416
+ /** @description Delegated-agent sessions cannot read the owner's invite codes; deactivated signing accounts receive ACCOUNT_DEACTIVATED */
15417
+ 403: {
15418
+ headers: {
15419
+ [name: string]: unknown;
15420
+ };
15421
+ content?: never;
15422
+ };
15423
+ /** @description Request rate limit exceeded */
15424
+ 429: {
15425
+ headers: {
15426
+ [name: string]: unknown;
15427
+ };
15428
+ content?: never;
15429
+ };
15430
+ /** @description Internal server error */
15431
+ 500: {
15432
+ headers: {
15433
+ [name: string]: unknown;
15434
+ };
15435
+ content?: never;
15436
+ };
15437
+ /** @description Mainnet invite access is temporarily unavailable */
15438
+ 503: {
15439
+ headers: {
15440
+ [name: string]: unknown;
15441
+ };
15442
+ content?: never;
15443
+ };
15444
+ };
15445
+ };
15446
+ request_invite_codes: {
15447
+ parameters: {
15448
+ query?: never;
15449
+ header?: never;
15450
+ path?: never;
15451
+ cookie?: never;
15452
+ };
15453
+ requestBody: {
15454
+ content: {
15455
+ "application/json": components["schemas"]["RequestInviteCodesRequest"];
15456
+ };
15457
+ };
15458
+ responses: {
15459
+ /** @description OK */
15460
+ 200: {
15461
+ headers: {
15462
+ [name: string]: unknown;
15463
+ };
15464
+ content: {
15465
+ "application/json": components["schemas"]["RequestInviteCodesResponse"];
15466
+ };
15467
+ };
15468
+ /** @description Authentication required */
15469
+ 401: {
15470
+ headers: {
15471
+ [name: string]: unknown;
15472
+ };
15473
+ content?: never;
15474
+ };
15475
+ /** @description Active Mainnet access is required to mint a code; delegated-agent sessions cannot mint the owner's codes; deactivated signing accounts receive ACCOUNT_DEACTIVATED */
15476
+ 403: {
15477
+ headers: {
15478
+ [name: string]: unknown;
15479
+ };
15480
+ content?: never;
15481
+ };
15482
+ /** @description Request rate limit exceeded */
15483
+ 429: {
15484
+ headers: {
15485
+ [name: string]: unknown;
15486
+ };
15487
+ content?: never;
15488
+ };
15489
+ /** @description Internal server error */
15490
+ 500: {
15491
+ headers: {
15492
+ [name: string]: unknown;
15493
+ };
15494
+ content?: never;
15495
+ };
15496
+ /** @description Invite encryption is not configured or generation is temporarily at capacity */
15497
+ 503: {
15498
+ headers: {
15499
+ [name: string]: unknown;
15500
+ };
15501
+ content?: never;
15502
+ };
15503
+ };
15504
+ };
15211
15505
  list_managed_market_assignments: {
15212
15506
  parameters: {
15213
15507
  query?: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xmonaco/types",
3
- "version": "1.0.82",
3
+ "version": "1.0.85",
4
4
  "type": "module",
5
5
  "homepage": "https://docs.0xmonaco.com/sdk/typescript",
6
6
  "main": "./dist/index.js",
@@ -16,7 +16,7 @@
16
16
  "lint": "biome lint ."
17
17
  },
18
18
  "dependencies": {
19
- "@0xmonaco/contracts": "1.0.82",
19
+ "@0xmonaco/contracts": "1.0.85",
20
20
  "zod": "^4.1.12"
21
21
  },
22
22
  "peerDependencies": {