import { IEventBus } from '@nestjs/cqrs/dist/interfaces';
import { StorableEvent, UserAwareEventInterface } from './types/types';
import { ViewEventBus } from './view/view-event-bus';
import { DistributedLockService } from './distributed-lock.service';
import { EventstoreInterface } from '@nestjs-cqrs-eventsourcing/core/src/eventstore/eventstore.interface';
export type StoreEventBusOptions = {
    getUserId?: (request: unknown) => unknown;
    parseUserId?: (userId: unknown) => unknown;
};
export declare class StoreEventBus<EventBase extends StorableEvent = StorableEvent> implements IEventBus<EventBase> {
    private readonly viewEventBus;
    private readonly eventStore;
    private readonly dls;
    private readonly options?;
    constructor(viewEventBus: ViewEventBus, eventStore: EventstoreInterface, dls: DistributedLockService, options?: StoreEventBusOptions);
    publish<T extends UserAwareEventInterface, TContext = unknown>(_event: T, _context?: TContext): Promise<void>;
    publishAll<TEvent extends EventBase, TContext = unknown>(events: TEvent[], request?: TContext): Promise<void>;
    private getAggregateId;
    private storeEvent;
    private getUserId;
}
