Review message-schema evolution

src/order-paid-types.tsTypeScript
@@ -0,0 +1,43 @@
1+export interface PaymentEvent {
2+ eventId: string;
3+ orderId: string;
4+ totalCents: number;
5+ note?: string;
6+}
7+
8+export interface ConsumerCapabilities {
9+ allConsumersSupportV2(): Promise<boolean>;
10+}
11+
12+export interface MessageIds {
13+ next(): string;
14+}
15+
16+export interface MessagePublisher {
17+ publish(rawEnvelope: string): Promise<void>;
18+}
19+
20+export interface QueuedEnvelope {
21+ raw: string;
22+ deliveryCount: number;
23+}
24+
25+export interface MessageQueue {
26+ ack(message: QueuedEnvelope): Promise<void>;
27+ nack(message: QueuedEnvelope): Promise<void>;
28+}
29+
30+export interface Quarantine {
31+ save(input: { messageId: string; rawEnvelope: string }): Promise<void>;
32+}
33+
34+export interface OrderPaidV2 {
35+ orderId: string;
36+ amount: { currency: "USD"; minorUnits: number };
37+ note?: string;
38+ extensions: Readonly<Record<string, unknown>>;
39+}
40+
41+export interface OrderPaidProcessor {
42+ process(messageId: string, payload: OrderPaidV2): Promise<void>;
43+}