PostOnly violation) do not revert the transaction — that particular order will simply
be skipped or partially placed. Cancelled price levels and sizes will be returned explicitly in the
update event.
** NOTE **
- Bulk Order Placements with a non-increasing
sequence_numberwill be rejected. - Order updates that reduce size will maintain its position in the matching queue, order updates that increase size will be moved to the end of the matching queue.
signer- The account signersubaccount- The Trading Account objectmarket- The PerpMarket objectsequence_number- The monotonically increasing number associated with this orderbid_prices-`vector<u64>`- Array of bid prices in chain unitsbid_sizes-`vector<u64>`- Array of bid sizes in chain unitsask_prices-`vector<u64>`- Array of ask prices in chain unitsask_sizes-`vector<u64>`- Array of ask sizes in chain unitsbuilder_address- Optional builder address`<Option<address>>`builder_fees- Optional builder fee`<Option<u64>>`, in units of 0.0001% (basis points × 100; e.g.1000= 10 bps = 0.1%, the protocol maximum). The TypeScript SDK takes basis points and does this conversion for you
Time in Force
Bulk Orders are Post-Only limit orders.Constraints
The transaction aborts unless all of the following hold:- At most 40 price levels per side
bid_pricesstrictly descending (best bid first) andask_pricesstrictly ascending (best ask first)- The best bid is below the best ask; no zero sizes; at least one side non-empty
sequence_numberis greater than zero and greater than the previous bulk order’s for this market; a non-increasing sequence number is rejected without aborting the transaction — a rejection event is emitted and the previous ladder stays in place, so check the event rather than the transaction status

