> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polynode.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Combo Lifecycle Event

> Split, merge, redeem, convert, wrap, unwrap, and related combo lifecycle actions.

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.

```json theme={null}
{
  "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:

```json theme={null}
{
  "action": "subscribe",
  "type": "combos",
  "filters": {
    "event_types": ["combo_lifecycle"]
  }
}
```

Filter by lifecycle action:

```json theme={null}
{
  "action": "subscribe",
  "type": "combos",
  "filters": {
    "event_types": ["combo_lifecycle"],
    "action": "Redeem"
  }
}
```

AutoRedeemer redemptions can be consumed through the combo lifecycle stream:

```json theme={null}
{
  "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

<ResponseField name="data.action" type="string" required>
  Combo lifecycle action.
</ResponseField>

<ResponseField name="data.user" type="string">
  Wallet that initiated or received the lifecycle action.
</ResponseField>

<ResponseField name="data.log_index" type="number">
  Receipt log index for confirmed lifecycle events.
</ResponseField>

<ResponseField name="data.combo_condition_id" type="string">
  Combo condition ID when available.
</ResponseField>

<ResponseField name="data.condition_ids" type="string[]">
  Condition IDs involved in the lifecycle action.
</ResponseField>

<ResponseField name="data.event_ids" type="string[]">
  Event IDs for combo legs when available.
</ResponseField>

<ResponseField name="data.module_id" type="number">
  Combo module ID. Common values are `1` for binary, `2` for negative-risk, and `3` for combinatorial legs.
</ResponseField>

<ResponseField name="data.module_name" type="string">
  Human-readable module name when available.
</ResponseField>

<ResponseField name="data.yes_position_id" type="string">
  YES combo position ID when the lifecycle action creates or affects a combo position.
</ResponseField>

<ResponseField name="data.no_position_id" type="string">
  NO combo position ID when the lifecycle action creates or affects a combo position.
</ResponseField>

<ResponseField name="data.position_ids" type="string[]">
  Position IDs involved in the lifecycle action.
</ResponseField>

<ResponseField name="data.source_position_ids" type="string[]">
  Positions consumed by the action.
</ResponseField>

<ResponseField name="data.destination_position_ids" type="string[]">
  Positions created by the action.
</ResponseField>

<ResponseField name="data.legs" type="object[]">
  Enriched legs when available. AutoRedeemer redemptions can be emitted without legs when the receipt includes the wallet, condition ID, and payout directly.
</ResponseField>

<ResponseField name="data.amount_e6" type="string">
  Raw six-decimal amount.
</ResponseField>

<ResponseField name="data.amount_usdc" type="number">
  USDC-normalized amount.
</ResponseField>

<ResponseField name="data.payout_e6" type="string">
  Exact raw payout in six-decimal USDC units for redeem actions.
</ResponseField>

<ResponseField name="data.payout_usdc" type="number">
  USDC-normalized payout for redeem actions when available.
</ResponseField>

<ResponseField name="data.side" type="string">
  Combo side when available. Values: `YES` or `NO`.
</ResponseField>

<ResponseField name="data.confirmed_transfers" type="object[]">
  Position transfer logs decoded from the confirmed receipt.
</ResponseField>
