export interface PubSubLike { topic: (name: string) => { publishMessage: (options: MessageOptions) => any } subscription: ( name: string, options?: SubscriptionOptions ) => { on(event: string, listener: (...args: any[]) => void): any removeAllListeners: () => any } } export type SubscriptionOptionsLike = { batching?: { maxMessages?: number } } export type MessageOptionsLike = { json?: any } export interface MessageLike { ack(): void nack(): void attributes: Record data: Buffer deliveryAttempt: number id: string length: number orderingKey?: string publishTime: Date } export type SubscriptionLike = ReturnType['subscription']>