/**
 * S3 attachment storage driver.
 */
export default class S3AttachmentStorageDriver {
    /**
     * Runs constructor.
     * @param {object} args - Options.
     * @param {Record<string, ?>} [args.options] - Driver options.
     */
    constructor({ options }: {
        options?: Record<string, any> | undefined;
    });
    options: Record<string, any>;
    _clientPromise: Promise<{
        DeleteObjectCommand: any;
        GetObjectCommand: any;
        PutObjectCommand: any;
        S3Client: any;
        getSignedUrl: any;
    }> | null;
    /**
     * Runs bucket.
     * @returns {string} - S3 bucket name.
     */
    bucket(): string;
    /**
     * Runs signed url expires in.
     * @returns {number} - Signed URL expiration in seconds.
     */
    signedUrlExpiresIn(): number;
    /**
     * Runs s3 runtime.
     * @returns {Promise<{S3Client: ?, PutObjectCommand: ?, GetObjectCommand: ?, DeleteObjectCommand: ?, getSignedUrl: ?}>} - S3 runtime.
     */
    s3Runtime(): Promise<{
        S3Client: unknown;
        PutObjectCommand: unknown;
        GetObjectCommand: unknown;
        DeleteObjectCommand: unknown;
        getSignedUrl: unknown;
    }>;
    /**
     * Runs client.
     * @returns {Promise<?>} - S3 client.
     */
    client(): Promise<unknown>;
    _client: any;
    /**
     * Runs write.
     * @param {object} args - Write args.
     * @param {string} args.attachmentId - Attachment id.
     * @param {{contentBuffer: Buffer, contentType: string | null, filename: string}} args.input - Normalized attachment input.
     * @returns {Promise<{storageKey: string}>} - Storage key.
     */
    write({ attachmentId, input }: {
        attachmentId: string;
        input: {
            contentBuffer: Buffer;
            contentType: string | null;
            filename: string;
        };
    }): Promise<{
        storageKey: string;
    }>;
    /**
     * Runs read.
     * @param {object} args - Read args.
     * @param {string} args.storageKey - Storage key.
     * @returns {Promise<Buffer>} - Attachment bytes.
     */
    read({ storageKey }: {
        storageKey: string;
    }): Promise<Buffer>;
    /**
     * Runs delete.
     * @param {object} args - Delete args.
     * @param {string} args.storageKey - Storage key.
     * @returns {Promise<void>} - Resolves when deleted.
     */
    delete({ storageKey }: {
        storageKey: string;
    }): Promise<void>;
    /**
     * Runs url.
     * @param {object} args - URL args.
     * @param {string} args.storageKey - Storage key.
     * @returns {Promise<string>} - Signed URL.
     */
    url({ storageKey }: {
        storageKey: string;
    }): Promise<string>;
}
//# sourceMappingURL=s3.d.ts.map