import { ServiceBusClient, TopicClient, SubscriptionClient, QueueClient, Sender, Receiver, SendableMessageInfo } from "@azure/service-bus";
export interface ArrayOf<T> {
    [name: string]: T;
}
export interface ServiceBusClientExt extends ServiceBusClient {
    topicClients: TopicClientExt[];
    subscriptionClients: SubscriptionClientExt[];
    queueClients: QueueClientExt[];
}
export interface TopicClientExt extends TopicClient {
    sender: Sender;
}
export interface QueueClientExt extends QueueClient {
    sender: Sender;
}
export interface SubscriptionClientExt extends SubscriptionClient {
    receiver: Receiver;
}
export interface AzureServiceBusSenderInt {
    maxBatch(): number;
    sendToTopic(topicName: string, message: SendableMessageInfo): Promise<void>;
    sendBatchToTopic(topicName: string, messages: SendableMessageInfo[], moreProperties?: any): Promise<void>;
    sendToQueue(queueName: string, message: SendableMessageInfo): Promise<void>;
    sendBatchToQueue(queueName: string, messages: SendableMessageInfo[], moreProperties?: any): Promise<void>;
}
export declare class AzureServiceBusSender implements AzureServiceBusSenderInt {
    private senderName;
    private connectionString;
    private busClient;
    constructor(senderName: string, connectionString: string);
    maxBatch(): number;
    private ensureClient;
    private ensureTopicSender;
    private injectMessage;
    sendToTopic(topicName: string, message: SendableMessageInfo): Promise<void>;
    sendBatchToTopic(topicName: string, messages: SendableMessageInfo[], moreProperties?: any): Promise<void>;
    createSubscriptionReceiver(topicName: string, subscriptionName: string): Receiver;
    private ensureQueueSender;
    sendToQueue(queueName: string, message: SendableMessageInfo): Promise<void>;
    sendBatchToQueue(queueName: string, messages: SendableMessageInfo[], moreProperties?: any): Promise<void>;
    cleanup(): Promise<void>;
}
