import { AbstractTokenizer, type IRandomAccessTokenizer, type IReadChunkOptions, type IRandomAccessFileInfo } from 'strtok3';
import type { IContentRangeType, IHeadRequestInfo, IRangeRequestClient } from './types.js';
interface IRangeRequestTokenizerOptions {
    fileInfo: IHeadRequestInfo;
    minimumChunkSize: number;
    abortSignal?: AbortSignal;
}
/**
 * RangeRequestTokenizer is tokenizer which is an adapter for range-request clients.
 * Typically, HTTP clients implementing the HTTP Range Requests (https://tools.ietf.org/html/rfc7233)
 *
 * Inspired by "XHR Reader"  written by António Afonso
 * https://github.com/aadsm/jsmediatags/blob/master/src/XhrFileReader.js
 */
export declare class RangeRequestTokenizer extends AbstractTokenizer implements IRandomAccessTokenizer {
    private rangeRequestClient;
    private options;
    private _fileData;
    readonly fileInfo: IRandomAccessFileInfo;
    constructor(rangeRequestClient: IRangeRequestClient, options: IRangeRequestTokenizerOptions);
    setPosition(position: number): void;
    /**
     * Read portion from stream
     * @param uint8array - Target `Uint8Array`
     * @param options - Additional read options
     * @returns Promise with number of bytes read
     */
    readBuffer(uint8array: Uint8Array, options?: IReadChunkOptions): Promise<number>;
    /**
     * Peek (read ahead) buffer from tokenizer
     * @param uint8array - Target `Uint8Array` to fill with data peek from the tokenizer-stream
     * @param options - Additional read options
     * @returns Promise with number of bytes read
     */
    peekBuffer(uint8array: Uint8Array, options?: IReadChunkOptions): Promise<number>;
    /**
     * Ignore number of bytes, advances the pointer in under tokenizer-stream.
     * @param length - Number of bytes to skip (ignore)
     * @return actual number of bytes ignored
     */
    ignore(length: number): Promise<number>;
    abort(): Promise<void>;
    supportsRandomAccess(): boolean;
    private loadRange;
}
export declare function roundRange(range: [number, number], minimumChunkSize: number): [number, number];
/**
 * Convert HTTP range header value to IContentRangeType
 * @param contentRange - content range
 */
export declare function parseContentRange(contentRange: string): IContentRangeType;
export {};
