import type { Readable } from 'node:stream';
import type { S3 } from '@aws-sdk/client-s3';
import type { PayloadStoreTypes, SerializedPayload } from '@message-queue-toolkit/core';
export type S3AwareDependencies = {
    s3?: S3;
};
export type MessageQueuePayloadOffloadingConfig = {
    s3PayloadOffloadingBucket?: string;
    messageSizeThreshold: number;
};
export declare function resolvePayloadStoreConfig(dependencies: S3AwareDependencies, config?: MessageQueuePayloadOffloadingConfig): {
    store: S3PayloadStore;
    messageSizeThreshold: number;
} | undefined;
export type S3PayloadStoreDependencies = {
    s3: S3;
};
export type S3PayloadStoreConfiguration = {
    bucketName: string;
    keyPrefix?: string;
};
export declare class S3PayloadStore implements PayloadStoreTypes {
    private s3;
    private readonly config;
    constructor({ s3 }: S3PayloadStoreDependencies, config: S3PayloadStoreConfiguration);
    storePayload(payload: SerializedPayload): Promise<string>;
    retrievePayload(key: string): Promise<Readable | null>;
    deletePayload(key: string): Promise<void>;
}
