# EventBridgeBaseClass API

The base class to be extended by event bridge implementations

---
Canonical: /handbook/api/classes/_purista_core.EventBridgeBaseClass/
Source: core/EventBridge/EventBridgeBaseClass.impl.ts
Format: Markdown for agents
---

The base class to be extended by event bridge implementations

Package: `@purista/core`

## Signature

```typescript
class EventBridgeBaseClass<ConfigType>
```

## Members

### Constructors

- `new constructor<ConfigType>(name: string, config: mapped)`

### Properties

- `capabilities: EventBridgeCapabilities`
- `config: Complete<EventBridgeConfig<ConfigType>>`
- `defaultCommandTimeout: number`
- `inFlightExecutions: InFlightExecutionTracker`
- `instanceId: string`
- `logger: Logger`
- `metricsRecorder: PuristaMetricsRecorder`
- `name: string`
- `traceProvider: NodeTracerProvider`

### Methods

- `destroy(): Promise<void>`
- `getInFlightExecutionCount(): number`
- `getInFlightExecutionCounts(): InFlightExecutionCounts`
- `getPausedSubscriptionConsumers(): PausedSubscriptionConsumersByRegistrationKey`
- `getTracer(): Tracer` — Returns open telemetry tracer of this service
- `openStream<Chunk, Final>(_input: Omit<StreamOpenRequest, "id" | "messageType" | "timestamp" | "correlationId">, _ttl?: number): Promise<StreamHandle<Chunk, Final>>`
- `registerStream(_address: EBMessageAddress, _cb: (message: StreamMessage) => Promise<void>, _metadata: StreamDefinitionMetadataBase, _eventBridgeConfig: DefinitionEventBridgeConfig): Promise<string>`
- `resumeSubscriptionConsumer(_registrationKey: string): Promise<void>`
- `runInFlight<T>(fn: () => Promise<T>, kind: "stream" | "command" | "subscription" | "generic"): Promise<T>`
- `start(): Promise<void>`
- `startActiveSpan<F>(name: string, opts: SpanOptions, context: Context | undefined, fn: (span: Span) => Promise<F>): Promise<F>` — Start a child span for opentelemetry tracking
- `unregisterStream(_address: EBMessageAddress): Promise<void>`
- `waitForInFlightDrain(timeoutMs: number): Promise<boolean>`
- `wrapInSpan<F>(name: string, opts: SpanOptions, fn: (span: Span) => Promise<F>, context?: Context): Promise<F>` — Start span for opentelemetry tracking on same level.
The created span will not become the "active" span within opentelemetry!
