import { SQSMessage } from '@cumulus/aws-client/SQS';
export declare type MessageConsumerFunction = (queueUrl: string, message: SQSMessage) => Promise<void>;
/**
 * Configuration parameters for the rate-limited consumer.
 */
export interface ConsumerConstructorParams {
    /**
     * URLs of the SQS queues to poll.
     */
    queueUrls: string[];
    /**
     * Function that returns the remaining time in milliseconds before Lambda timeout.
     */
    timeRemainingFunc: () => number;
    /**
     * The visibility timeout in milliseconds used when fetching messages from the SQS queues.
     */
    visibilityTimeout: number;
    /**
     * Whether to delete messages after successful processing. Defaults to true.
     */
    deleteProcessedMessage?: boolean;
    /**
     * Maximum number of messages to process per second.
     */
    rateLimitPerSecond: number;
}
export declare class ConsumerRateLimited {
    private readonly deleteProcessedMessage;
    private readonly queueUrls;
    private readonly timeRemainingFunc;
    private readonly visibilityTimeout;
    private readonly rateLimitPerSecond;
    private readonly messageLimitPerFetch;
    private readonly waitTime;
    constructor({ queueUrls, timeRemainingFunc, visibilityTimeout, rateLimitPerSecond, deleteProcessedMessage, }: ConsumerConstructorParams);
    private processMessage;
    private processMessages;
    private fetchMessages;
    private fetchMessagesFromAllQueues;
    consume(fn: MessageConsumerFunction): Promise<number>;
}
//# sourceMappingURL=consumerRateLimited.d.ts.map