import { IConsumedMessageRepository, IDomainEventRepository, IInboundMessageMapper, IMessageConsumer, IMessageProducer, IOutboundMessageMapper, ISnapshotRepository, ITransactionManager, type Constructor } from "@dugongjs/core";
import type { ModuleMetadata } from "@nestjs/common";
import type { ILoggerFactory } from "../logger/i-logger-factory.js";
export type DugongAdapters = {
    imports?: ModuleMetadata["imports"];
    providers?: ModuleMetadata["providers"];
    loggerFactory?: Constructor<ILoggerFactory>;
    transactionManager?: Constructor<ITransactionManager>;
    domainEventRepository?: Constructor<IDomainEventRepository>;
    snapshotRepository?: Constructor<ISnapshotRepository>;
    consumedMessageRepository?: Constructor<IConsumedMessageRepository>;
    messageConsumer?: Constructor<IMessageConsumer<any>>;
    inboundMessageMapper?: Constructor<IInboundMessageMapper<any>>;
    messageProducer?: Constructor<IMessageProducer<any>>;
    outboundMessageMapper?: Constructor<IOutboundMessageMapper<any>>;
};
export type DugongAdapterFactory = () => DugongAdapters;
export declare class DugongAdapterBuilder {
    private adapters;
    register(adapter: DugongAdapters | DugongAdapterFactory): this;
    registerMany(...adapters: (DugongAdapters | DugongAdapterFactory)[]): this;
    build(): DugongAdapters;
}
