import { Base, Opts } from "./aws-base";
import AWS_SQS from "aws-sdk/clients/sqs";
export interface SenderOpts extends Opts {
  queue: string;
  fifo?: boolean;
}
export interface ReceiverOpts extends Opts {
  queue: string;
  pollInterval: number;
  backoffInterval: number;
  msgProcesser: (msgs: AWS_SQS.Message[]) => Promise<number[]>;
}
export declare class Sender extends Base {
  private readonly _queue;
  private _sqs;
  private _fifo;
  constructor(name: string, opts: SenderOpts);
  start(): Promise<boolean>;
  injectMessage(msg: string): Promise<boolean>;
  sendMessage(
    msg: string,
    attribs?: AWS_SQS.MessageBodyAttributeMap,
    msgGroupID?: string,
  ): Promise<boolean>;
  stop(): Promise<void>;
  healthCheck(): Promise<boolean>;
}
export declare class Receiver extends Base {
  private readonly _queue;
  private _sqs;
  private _pollInterval;
  private _backoffInterval;
  private _nowReceiving;
  private _stopNow;
  private _processMessages;
  constructor(name: string, opts: ReceiverOpts);
  start(): Promise<boolean>;
  private startReceiving;
  injectMessages(msgs: string): Promise<number>;
  private receiveMessage;
  stop(): Promise<void>;
  private stopReceiving;
  healthCheck(): Promise<boolean>;
}
