Skip to main content
Emitted for combo lifecycle actions when the event can be represented with enriched legs. AutoRedeemer redemption confirmations can also be emitted without legs when the receipt itself provides the user wallet, condition ID, exact payout, normalized payout, module name, and log index.
{
  "type": "combo_lifecycle",
  "timestamp": 1781054112400,
  "data": {
    "event_type": "combo_lifecycle",
    "tx_hash": "0xabc...",
    "status": "confirmed",
    "detected_at": 1781054112400,
    "block_number": 88232739,
    "log_index": 44,
    "action": "Redeem",
    "user": "0xUser...",
    "combo_condition_id": "0xcombo...",
    "condition_ids": ["0xcombo..."],
    "module_id": 3,
    "module_name": "CombinatorialModule",
    "position_ids": ["123..."],
    "source_position_ids": ["123..."],
    "leg_position_ids": ["111...", "222..."],
    "legs": [
      {
        "position_id": "111...",
        "leg_outcome_label": "Yes",
        "market": {
          "title": "Will Team A win?",
          "slug": "will-team-a-win"
        }
      }
    ],
    "amount_e6": "1000000",
    "amount_usdc": 1,
    "payout_e6": "1000000",
    "payout_usdc": 1
  }
}

Actions

action can be: Prepare, Split, Merge, HorizontalSplit, HorizontalMerge, Convert, Redeem, Wrap, Unwrap, Transfer, Compress, Extract, Inject, ConvertToYesBasket, or MergeFromYesBasket.

Subscribing

Lifecycle events are not included in the default combos preset. Request them explicitly:
{
  "action": "subscribe",
  "type": "combos",
  "filters": {
    "event_types": ["combo_lifecycle"]
  }
}
Filter by lifecycle action:
{
  "action": "subscribe",
  "type": "combos",
  "filters": {
    "event_types": ["combo_lifecycle"],
    "action": "Redeem"
  }
}
AutoRedeemer redemptions can be consumed through the combo lifecycle stream:
{
  "type": "combo_lifecycle",
  "data": {
    "event_type": "combo_lifecycle",
    "tx_hash": "0x...",
    "status": "confirmed",
    "block_number": 88462228,
    "log_index": 27,
    "action": "Redeem",
    "user": "0xde0a3c61f87da595b215f88254a9473e6152f102",
    "condition_ids": ["0xd7e68ef0dfabc386f97ffdc330ecff4908cda4d08c5fc5931503f1e60cac0dfe"],
    "module_name": "AutoRedeemer",
    "payout_e6": "4500000000",
    "payout_usdc": 4500,
    "diagnostics": {
      "decoded_function": "AutoRedeemer.NegRiskRedemption"
    }
  }
}

Fields

data.action
string
required
Combo lifecycle action.
data.user
string
Wallet that initiated or received the lifecycle action.
data.log_index
number
Receipt log index for confirmed lifecycle events.
data.combo_condition_id
string
Combo condition ID when available.
data.condition_ids
string[]
Condition IDs involved in the lifecycle action.
data.event_ids
string[]
Event IDs for combo legs when available.
data.module_id
number
Combo module ID. Common values are 1 for binary, 2 for negative-risk, and 3 for combinatorial legs.
data.module_name
string
Human-readable module name when available.
data.yes_position_id
string
YES combo position ID when the lifecycle action creates or affects a combo position.
data.no_position_id
string
NO combo position ID when the lifecycle action creates or affects a combo position.
data.position_ids
string[]
Position IDs involved in the lifecycle action.
data.source_position_ids
string[]
Positions consumed by the action.
data.destination_position_ids
string[]
Positions created by the action.
data.legs
object[]
Enriched legs when available. AutoRedeemer redemptions can be emitted without legs when the receipt includes the wallet, condition ID, and payout directly.
data.amount_e6
string
Raw six-decimal amount.
data.amount_usdc
number
USDC-normalized amount.
data.payout_e6
string
Exact raw payout in six-decimal USDC units for redeem actions.
data.payout_usdc
number
USDC-normalized payout for redeem actions when available.
data.side
string
Combo side when available. Values: YES or NO.
data.confirmed_transfers
object[]
Position transfer logs decoded from the confirmed receipt.