Skip to main content

Changelog

v20.0.0

devnet:
mainnet:

This release activates RFQ markets on mainnet and makes fee configuration aware of market type and execution mode. Existing CLOB order placement remains compatible, but RFQ, fee-administration, liquidation, and raw protobuf integrations must migrate to the v20 shapes below.

  • BREAKING protobuf, RFQ requests: RfqPlaceOnly.base and the nested FillType and PartialFill messages are removed. Send size, optional minimal_fill, and optional is_reduce_only directly on RfqPlaceOnly. RfqTrade now carries optional minimum_size, maximum_size, and is_reduce_only directly.
  • BREAKING protobuf, RFQ results: RfqFillStatus and FillRFQResult.status are removed. Determine whether a real execution occurred from the optional execution payload. Sampling responses omit it.
  • BREAKING protobuf, fee administration: replace AddFeeTier, UpdateFeeTier, and UpdateAccountsTier with AddFeeTierType, UpdateFeeTierType, and UpdateAccountsFeeTierTypeMode. The replacement FeeTierTypeConfig has separate CLOB and RFQ maker and taker rates for each market type. Regenerate protobuf bindings because the new action and receipt cases use new field numbers.
  • BREAKING protobuf, liquidations: TakeAllPositionsResult now contains a repeated takers list. Each taker entry contains its account ID, balances, positions, and order updates. Consumers must iterate the list instead of reading one top-level taker.
  • protobuf: SetBackstopAccount and its receipt now include market_mode, and the Error enum adds CONFIG.
  • API: market-live responses can include separate rfq and clob sections. Historical order rows now include clientOrderId, and GET /account/{account_id}/orders/open returns current open-order history records. These additions do not remove the existing account or market routes.
  • BREAKING TypeScript SDK: RFQ partial-fill sizes are decimal values, NordUser.takePositions() returns takers, and fee-tier admin methods use the new market-type-aware protobuf actions. Upgrade to @n1xyz/nord-ts@0.7.4 before submitting v20 RFQ, liquidation, or fee-administration actions.

To migrate, regenerate protobuf code from the v20 schema, update exhaustive action and receipt switches for the new cases, replace the removed RFQ wrapper messages, and add fixtures for multi-taker liquidation receipts. Applications that only read existing CLOB account, market, orderbook, and WebSocket fields do not need a wire-format migration.

nord-ts version: 0.7.4

v19.0.0

devnet:
mainnet:

This release includes breaking changes to atomic actions as well as backend support for our upcoming RFQ feature.

  • BREAKING protobuf: Atomic V2 is removed. Action.atomic_v2, AtomicV2, AtomicSubactionV2, and AtomicPlacementRequest are no longer available. Regenerate your protobuf bindings and send Action.atomic.
    • Put each AtomicSubaction directly in Atomic.actions.
    • Replace delegator_account_id with target_account_id. (field number remains 32)
    • Move ReduceOrderLiquidation.target_account_id to its parent AtomicSubaction.
    • For self-targeted actions, omit target_account_id and use_key.
    • For vault actions, use vault_account_id as the target and set use_key = true.
    • For liquidation actions, use the liquidation account ID as the target and leave use_key unset or false.
  • BREAKING protobuf: VAULT_PREVIOUS_EPOCH_WITHDRAWALS_NOT_PAYABLE is removed from the Error enum.
  • protobuf: SpecialAccount now includes CLAIM_VAULT. VaultSyncEpochsReceipt now includes vault_account_id.
  • BREAKING ts: Atomic subactions now use targetAccountId and useKey. Remove delegatorAccountId and placement.
  • BREAKING ts: Use await nord.getProtonClient(). Direct access through nord.protonClient is no longer available. Proton initialization now starts on first use.
  • BREAKING api: GET /account/system now returns { actionId, feeVault, claimVault }. It previously returned the fee-vault balance array.
  • api: Trade and order history responses now include marketMode.
  • ws: Account fills keys now use orderId:makerId:rawPrice. Code that reads Object.values(fills) continues to work. Code that looks up fills by key must change.

nord-ts version: 0.7.3

v18.0.0

devnet:
mainnet:

  • BREAKING: api: GET /account/{account_id} now returns open-order clientOrderId as string | null instead of number | null.
  • BREAKING: api: WebSocket client_order_id, taker_client_order_id[], and deprecated sender_tracking_id values now serialize as numeric strings instead of numbers.
  • Added RefreshSession to allow a session to refresh itself up to some maximum deadline while maintaining the same session ID.
  • Added SelfRevoke to allow a session to revoke itself.
  • CreateSession now accepts an optional refresh_deadline parameter and returns the effective expiry and refresh deadline.
  • ts: NordUser.refreshSession() now returns { sessionId, expiry, refreshDeadline? } instead of void.
  • api: GET /user/{pubkey} session objects now include optional refreshDeadline.

nord-ts version: 0.7.0 to 0.7.2

v17.0.0

devnet:
mainnet:

  • atomic actions are expanding: trigger add/edit/remove is moving into atomic actions
  • trigger history pagination now supports sub_action_id
  • increased action timestamp staleness threshold from 60s to 120s
  • relaxed oracle unfreeze price-change threshold from 0.5% to ~1.33% per timestamp unit
  • added referrer tracking, i.e. builder codes
  • added taker-side client order ID to WebSocket messages
  • rate now has two buckets: /action and all other endpoints. we will be announcing new rate limits as we adjust them
  • introduced vaults. see docs for api. briefly:
  • HTTP:
    • GET /vaults/*
    • GET /account/{account_id}/vault-user-states
    • GET /account/{account_id}/history/vault/*
  • WS:
    • subscribe with vault@{vault_id}
    • receives Vault update payload with latest full vault state

nord-ts v0.5.1:

  • adds centralized math utilities and updated trading function types
  • adds trigger add/edit/remove support in atomics

nord-ts v0.6.0:

  • introduces ActionsV2 with the new placement interface instead of delegator_id
  • placement must now be explicit, see the module docs
  • user actions for deposit and withdrawing to/from vaults
  • on refresh session you can specify expiry timestamp

both v0.5.1 and v0.6.0 are compatbile with v17 of nord.

These materials are provided for informational purposes only and do not constitute financial, investment, legal, or tax advice, or an offer or solicitation to buy or sell any asset. Trading digital assets and derivatives involves substantial risk, including the possible loss of some or all capital. Products may not be available in all jurisdictions. Users are responsible for evaluating suitability and complying with applicable laws.