# Trigger

`import { Trigger } from "destack:simulation/scenario";`

Scenario trigger controls.

```ds title="Trigger"
export struct Trigger {
    on: EventKind | undefined;
    activation: { kind: "immediate" } | { kind: "atTime"; timeNanos: uint64 } | { kind: "afterCallCount"; calls: uint64 };
    lifetime: { kind: "untilDisabled" } | { kind: "duration"; duration: Duration } | { kind: "callCount"; calls: uint64 };
    activationPpm: uint32;
    probabilityPpm: uint32;
    maxOccurrences: uint64;
    cooldown: Duration;
    burst: uint32;
    intervalHits: uint64;
    skipHits: uint64;
    predicate: Predicate;
}
```

[language/library/src/simulation/scenario/trigger.ds:47:70](https://github.com/destack-sh/destack/blob/main/language/library/src/simulation/scenario/trigger.ds#L47-L70)

## Members

### `on: EventKind | undefined`

Event kind for this trigger.

### `activation: { kind: "immediate" } | { kind: "atTime"; timeNanos: uint64 } | { kind: "afterCallCount"; calls: uint64 }`

Activation window for this trigger.

### `lifetime: { kind: "untilDisabled" } | { kind: "duration"; duration: Duration } | { kind: "callCount"; calls: uint64 }`

Lifetime window for this trigger.

### `activationPpm: uint32`

Activation probability in parts per million.

### `probabilityPpm: uint32`

Fire probability in parts per million.

### `maxOccurrences: uint64`

Maximum number of action firings.

### `cooldown: Duration`

Cooldown duration between firings.

### `burst: uint32`

Number of firings per trigger hit.

### `intervalHits: uint64`

Trigger cadence interval in matching hits.

### `skipHits: uint64`

Number of matching hits to skip before cadence starts.

### `predicate: Predicate`

Custom attempt predicate.
