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+
}