///
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']>;