import { ConsumerParams, MessageContext, ScheduleParams } from '../utils/types';
import { IEvent, IMessage } from '@vtexlab/planner-contracts/build/types/utils/types';
import { PublishCommandOutput } from '@aws-sdk/client-sns';
import { Span } from '@opentelemetry/api';
import { SendMessageCommandOutput } from '@aws-sdk/client-sqs';
import { CreateScheduleCommandOutput, DeleteScheduleCommandOutput, UpdateScheduleCommandOutput } from '@aws-sdk/client-scheduler';
export declare function publishMessage<TMessage extends IEvent>(topicName: string, message: TMessage, callback?: (output: PublishCommandOutput, span: Span | undefined) => void, errorCallback?: (error: any, span: Span | undefined) => void): Promise<string | undefined>;
export declare function sendMessage<TMessage extends IMessage>(queueName: string, contentMessage: TMessage, params?: {}, callback?: (output: SendMessageCommandOutput, span: Span | undefined) => void, errorCallback?: (error: any, span: Span | undefined) => void): Promise<string | undefined>;
export declare function redeliveryMessage<TMessage extends IMessage>(queueName: string, message: MessageContext<TMessage>, delaySeconds: number, params?: {}, stoppedCondition?: (startsAt: Date, currentAt: Date, attempt: number) => boolean, callback?: (output: SendMessageCommandOutput, span: Span | undefined) => void, errorCallback?: (error: any, span: Span | undefined) => void): Promise<string | undefined>;
export declare namespace schedule {
    function send<TMessage extends IEvent>(scheduleParams: ScheduleParams<TMessage>, callback?: (output: CreateScheduleCommandOutput, span: Span | undefined) => void, errorCallback?: (error: any, span: Span | undefined) => void): Promise<CreateScheduleCommandOutput>;
    function get(id: string, callback?: (output: DeleteScheduleCommandOutput, span: Span | undefined) => void, errorCallback?: (error: any, span: Span | undefined) => void): Promise<{
        id: string;
        message: any;
        scheduleDate: Date;
        topicName: string;
    } | undefined>;
    function update<TMessage extends IEvent>(scheduleParams: ScheduleParams<TMessage>, callback?: (output: UpdateScheduleCommandOutput, span: Span | undefined) => void, errorCallback?: (error: any, span: Span | undefined) => void): Promise<UpdateScheduleCommandOutput>;
    function remove(id: string, callback?: (output: DeleteScheduleCommandOutput, span: Span | undefined) => void, errorCallback?: (error: any, span: Span | undefined) => void): Promise<DeleteScheduleCommandOutput>;
}
export declare function handleConsumerMessage<TMessage extends IMessage>(params: ConsumerParams<TMessage>): import("sqs-consumer").Consumer;
