import { default as joi } from 'joi';
import type { Serializable } from '@nhtio/serialization/types';
import type { ConnectionStatus, KyooConfigurationOptions } from '.';
import type { KyooConnectionToAdapterBus } from '../utils/connection_to_adapter_bus';
import type { KyooJob, KyooJobToEnqueue, KyooWorkable } from '../job';
import type { SQSClientConfig } from '@aws-sdk/client-sqs';
/**
 * The configuration interface of SQSClient class constructor that set the region, credentials and other options.
 * @see {@link https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-sqs/Interface/SQSClientConfig/}
 */
export interface SQSAdapterConfiguration extends SQSClientConfig {
}
export declare const sqsAdapterConfigurationSchema: joi.ObjectSchema<any>;
/** @private */
export declare class SQSAdapter {
    #private;
    /**
     * @private
     */
    constructor(configuration: SQSAdapterConfiguration, bus: KyooConnectionToAdapterBus, options: KyooConfigurationOptions);
    connect(_signal?: AbortSignal): Promise<boolean>;
    disconnect(terminate?: boolean): Promise<void>;
    get connectionStatus(): ConnectionStatus;
    get queues(): any;
    get jobs(): {
        enqueue: (queue: string, ...jobs: KyooJobToEnqueue[]) => Promise<boolean | boolean[]>;
        purge: (queue: string) => Promise<void>;
        next: <T = Serializable>(queue: string, noAck?: boolean, rejectable?: boolean, onDispositioned?: (disposition: "ack" | "nack") => void) => Promise<KyooWorkable<T> | undefined>;
        enqueued: (queue: string) => Promise<number>;
        fetch: <T = Serializable>(queue: string, count: number) => Promise<Array<KyooJob<T>>>;
    };
}
