```ts
/**
 * An append-only log of timestamped events.
 */
export class EventLog {
  #events: Event[] = [];

  /** Append one event. */
  record(event: Event): void {
    this.#events.push(event);
  }

  /** Every event at or after the given timestamp, in insertion order. */
  since(timestamp: number): EventEmitter<Event> {
    const filteredEvents = this.#events.filter((event) => event.timestamp >= timestamp);
    for (const ev of filteredEvents) {
      yield ev;
      }
    }
  }
}
```