import { KafkaConfig, ConsumerConfig } from 'kafkajs';
import { BrokerConfig, BatchConfig, ProducerConfig, ProducerMap, PublicationConfig, PublicationMap, SchemaId, SchemaRegistryConfig, SchemaSubject, SubscriptionConfig, SubscriptionMap, TopicConfig } from './types';
export interface ConfigProducer {
    kafka: string;
    producer?: Omit<ProducerConfig, 'batch'>;
    batch?: BatchConfig;
}
export interface ConfigSubscription extends SubscriptionConfig {
    kafka: string;
    consumer: ConsumerConfig;
    topics: TopicConfig[];
}
export interface ConfigPublication extends PublicationConfig {
    producer: string;
    schema?: SchemaId | SchemaSubject;
}
export interface Config {
    namespace: string;
    kafka: Record<string, KafkaConfig>;
    schemaRegistry?: SchemaRegistryConfig;
    producers: Record<string, ConfigProducer>;
    publications: Record<string, ConfigPublication>;
    subscriptions: Record<string, ConfigSubscription>;
}
export declare const buildKafka: (config: KafkaConfig, clientId: string) => KafkaConfig;
export declare const buildProducers: (producers: ProducerMap, kafka: string, { batch: batchDefaults, ...defaults }?: Partial<ProducerConfig>) => Config['producers'];
export declare const buildPublications: (publications: PublicationMap, producer?: string) => Config['publications'];
export declare const buildSubscriptions: (subscriptions: SubscriptionMap, groupPrefix: string, kafka: string, defaults?: Partial<ConsumerConfig>) => Config['subscriptions'];
export declare const buildSchemaRegistry: (config?: string | SchemaRegistryConfig) => SchemaRegistryConfig | undefined;
export declare const buildConfig: ({ namespace, defaults, config, schemaRegistry, producers, publications, subscriptions, }: BrokerConfig) => Config;
//# sourceMappingURL=buildConfig.d.ts.map