# TypedEventEmitter

`class` in `event-emitter` · v0.1.0-next.0

<https://docs.seedcord.org/packages/event-emitter/0.1.0-next.0/classes/typed-event-emitter>

Typed, cross-runtime event emitter with per-event tuple payloads.

```ts
class TypedEventEmitter<TEvents extends EventMap<TEvents>>
```

## Methods

### emit

```ts
public emit<TEventKey>(
    event: TEventKey,
    args: TEvents[TEventKey]
): boolean
```

Emits an event, invoking each listener with the payload tuple. Returns true when the event had listeners.

### eventNames

```ts
public eventNames(): EventKey<TEvents>[]
```

Returns the event names with at least one listener.

### listenerCount

```ts
public listenerCount<TEventKey>(event: TEventKey): number
```

Counts the listeners registered for an event.

### off

```ts
public off<TEventKey>(
    event: TEventKey,
    listener: (...args: TEvents[TEventKey]) => void
): this
```

Removes a previously registered listener.

### on

```ts
public on<TEventKey>(
    event: TEventKey,
    listener: (...args: TEvents[TEventKey]) => void
): this
```

Registers a persistent listener for an event.

### once

```ts
public once<TEventKey>(
    event: TEventKey,
    listener: (...args: TEvents[TEventKey]) => void
): this
```

Registers a listener removed after its first invocation.

### removeAllListeners

```ts
public removeAllListeners(
    event?: EventKey<TEvents>
): this
```

Removes every listener for an event, or for all events when no event is given.

### removeListener

```ts
public removeListener<TEventKey>(
    event: TEventKey,
    listener: (...args: TEvents[TEventKey]) => void
): this
```

Alias of [`off`](/packages/event-emitter/0.1.0-next.0/classes/typed-event-emitter#off).

### waitFor

```ts
public async waitFor<TEventKey>(
    event: TEventKey,
    options?: WaitForOptions<TEvents[TEventKey]>
): Promise<TEvents[TEventKey]>
```

Waits for the next emission of an event, resolving with its payload tuple. With a filter, resolves on the first payload the filter accepts.
