import { Event } from './backend/models';
import { JsMsg, JetStreamClient } from 'nats';
import { EventConfig } from '.';
export interface BatchSubscriberEvent<ParentEvent extends Event<string>> {
    input: ParentEvent['data'];
    jsMsg: JsMsg;
    fail: (error: Error) => Promise<void>;
}
export declare type BatchEventHandler<ParentEvent extends Event<string>> = ({ config, events, }: {
    config: EventConfig;
    events: BatchSubscriberEvent<ParentEvent>[];
}) => Promise<any>;
export declare type SubscribeBatch = <ParentEvent extends Event<string>>({ subject, batchEventHandlers, }: {
    subject: ParentEvent['subject'];
    batchEventHandlers: BatchEventHandler<ParentEvent>[];
}) => Promise<void>;
export declare const SubscriberBatch: ({ clientGroup, js, batch, expires, }: {
    clientGroup: string;
    js: JetStreamClient;
    batch: number;
    expires: number;
}) => SubscribeBatch;
