import {Event, SerialPayload} from '../types' import {ObjectSerializer} from './decorators' import {BaseSerializer} from './BaseSerializer' import {JSONState} from '../../../util' export class NamedEventPayload { constructor( public readonly eventName: string, public readonly event: Event, ) {} } @ObjectSerializer() export class NamedEventPayloadSerializer extends BaseSerializer }> { protected async decodeSerial(serial: { eventName: string; event: SerialPayload }): Promise { return new NamedEventPayload( serial.eventName, await this.getSerialization().decode(serial.event), ) } protected async encodeActual(actual: NamedEventPayload): Promise<{ eventName: string; event: SerialPayload }> { return { eventName: actual.eventName, event: await this.getSerialization().encode(actual.event), } } protected getName(): string { return '@extollo/lib:NamedEventPayloadSerializer' } matchActual(some: NamedEventPayload): boolean { return some instanceof NamedEventPayload } }