import { TransactionalMessage } from '../../message/transactional-message';
import { ReplicationConcurrencyController } from './concurrency-controller';
export type ReplicationMultiConcurrencyType = 'mutex' | 'semaphore' | 'full-concurrency' | 'segment-mutex';
/**
 * Use different mutex controllers depending on the desired concurrency level
 * for different messages. If a semaphore concurrency controller should be used,
 * the `maxSemaphoreParallelism` should be set.
 * @param getConcurrencyType Implements the logic which concurrency controller should be used e.g. based on the aggregate and message type
 * @returns The controller to acquire and release the mutex
 */
export declare const createReplicationMultiConcurrencyController: (getConcurrencyType: (message: TransactionalMessage) => ReplicationMultiConcurrencyType, settings?: {
    maxSemaphoreParallelism?: number;
}) => ReplicationConcurrencyController;
//# sourceMappingURL=create-multi-concurrency-controller.d.ts.map