Skip to main content
A signed taker intent is a pre-authorized conditional order. You sign the exit parameters ahead of time, submit them to the indexer, and the TP/SL executor settles the trade when the mark-price trigger is satisfied. This is how take-profit / stop-loss orders work on TrueCurrent. You can create the signed exit when opening a position or later, while the position is already open.
Current trigger orders are reduce-only close-position orders. Set margin to "0" and use the EIP-712 v2 path only. TakerStream conditional orders must carry conditional_order_sign_mode="v2" and conditional_order_evm_chain_id; the SDK helper sets those when you pass sign_mode="v2" and evm_chain_id.

When to use signed intents

Use a signed intent when you cannot be online to submit at the exact trigger moment, but you can decide the trigger and exit constraints in advance.
  • Take profit: exit long when mark price is greater than or equal to target, or exit short when mark price is less than or equal to target.
  • Stop loss: exit long when mark price is less than or equal to stop, or exit short when mark price is greater than or equal to stop.
If you want to trade immediately while online, use AcceptQuote.

End-to-end flow

The trigger is not latched. If the mark price moves back before the transaction lands, the contract can reject the settlement as trigger_not_satisfied.

Conditional order body

These fields are sent to the indexer and contract. The v2 signature covers the SignedTakerIntent typed-data fields; chain_id, contract_address, evm_chain_id, and unfilled_action are wire/runtime fields.

EIP-712 domain

Signed intents use the same domain separator as maker quotes: The domain chainId is the EVM chain ID, not the Cosmos chain ID.

Sign and submit a conditional order

Use sign_conditional_order_v2 from injective-rfq-toolkit to produce the EIP-712 v2 digest signature, then submit via TakerStreamClient.send_conditional_order. The helper returns a 0x-prefixed 65-byte signature; pass it through unchanged.
The signed values you pass to sign_conditional_order_v2 and the values in the order_body you submit must match exactly. Any drift (different price string, different lane_version, different evm_chain_id) will fail signature recovery at the indexer or contract. For REST submissions, include the same signing mode explicitly:

Trigger types

Mapping trigger to intent (the direction field is the closing direction, opposite to the open position): The contract re-evaluates the mark-price trigger during settlement. If mark moves back before the executor’s transaction lands, the contract rejects with trigger_not_satisfied; the executor should retry according to its trigger-order policy.

Epochs and lanes

Before signing, read the current epoch and lane_version for the taker. A signed intent is valid only for the exact values it signs.
  • CancelAllIntents increments the taker’s epoch and invalidates every outstanding intent for that taker.
  • CancelIntentLane increments the lane version for one (taker, market_id, subaccount_nonce) lane.
  • Successful settlement also advances the lane version, making trigger intents one-shot by construction.

Common failures


Next

Last modified on June 2, 2026