import { type IRangeRequestClient, type IRangeRequestResponse } from '@tokenizer/range';
import { type GetObjectRequest, GetObjectCommand } from '@aws-sdk/client-s3';
type ByteRangeRequest = [number, number];
export interface S3RequestResponse {
    ContentType?: string;
    ContentRange?: string;
    Body?: unknown;
}
export interface S3RequestClient {
    send(command: GetObjectCommand, options?: {
        abortSignal?: AbortSignal;
    }): Promise<S3RequestResponse>;
}
/**
 * Use S3-client to execute actual HTTP-requests.
 */
export declare class S3Request implements IRangeRequestClient {
    private s3;
    private objRequest;
    private readonly abortController;
    constructor(s3: S3RequestClient, objRequest: GetObjectRequest);
    /**
     * Concatenate given array of Uint8Arrays
     * @param arrays Array of Uint8Arrays
     */
    private static mergeUint8Arrays;
    buildArrayBuffer(response: S3RequestResponse): Promise<Uint8Array>;
    getResponse(_method: string | undefined, range: ByteRangeRequest): Promise<IRangeRequestResponse>;
    /**
     * Do a ranged request
     * @param range Range request
     */
    getRangedRequest(range: ByteRangeRequest): Promise<S3RequestResponse>;
    abort(): void;
}
export {};
