import type { Options } from 'amqplib';
import type { AMQPPublisherOptions } from './AbstractAmqpPublisher.ts';
import { AbstractAmqpPublisher } from './AbstractAmqpPublisher.ts';
import type { AMQPDependencies, AMQPTopicCreationConfig, AMQPTopicLocator, AMQPTopicPublisherConfig } from './AbstractAmqpService.ts';
export type AMQPTopicPublisherOptions<MessagePayloadType extends object> = Omit<AMQPPublisherOptions<MessagePayloadType, AMQPTopicCreationConfig, AMQPTopicLocator>, 'creationConfig'> & {
    exchange: string;
};
export type AmqpTopicMessageOptions = {
    routingKey?: string;
    publishOptions?: Options.Publish;
};
export declare abstract class AbstractAmqpTopicPublisher<MessagePayloadType extends object> extends AbstractAmqpPublisher<MessagePayloadType, AmqpTopicMessageOptions, AMQPTopicPublisherConfig, AMQPTopicPublisherConfig> {
    constructor(dependencies: AMQPDependencies, options: AMQPTopicPublisherOptions<MessagePayloadType>);
    protected publishInternal(message: Buffer, options: Omit<AmqpTopicMessageOptions, 'routingKey'> & {
        routingKey: string;
    }): void;
    protected resolveTopicOrQueue(): string;
    protected createMissingEntities(): Promise<void>;
}
