import { Checksum, UploadxFile } from '../storages';
import { Headers, IncomingMessage, ServerResponse } from '../types';
import { BaseHandler, UploadxOptions } from './base-handler';
export declare function rangeParser(rangeHeader?: string): {
    start: number;
    size: number;
};
/**
 * [X-headers protocol implementation](https://github.com/kukhariev/node-uploadx/blob/master/proto.md#requests-overview)
 */
export declare class Uploadx<TFile extends UploadxFile> extends BaseHandler<TFile> {
    static RESUME_STATUS_CODE: number;
    /**
     * Create File from request and send a file url to client
     */
    post(req: IncomingMessage, res: ServerResponse): Promise<TFile>;
    patch(req: IncomingMessage, res: ServerResponse): Promise<TFile>;
    /**
     * Write a chunk to file or/and return chunk offset
     */
    put(req: IncomingMessage, res: ServerResponse): Promise<TFile>;
    /**
     * Delete upload
     */
    delete(req: IncomingMessage, res: ServerResponse): Promise<TFile>;
    getId(req: IncomingMessage): string;
    buildHeaders(file: UploadxFile, headers?: Headers): Headers;
    /**
     * Build file url from request
     */
    buildFileUrl(req: IncomingMessage & {
        originalUrl?: string;
    }, file: UploadxFile & {
        GCSUploadURI?: string;
    }): string;
    getMetadata(req: IncomingMessage): Promise<Record<any, any>>;
    extractChecksum(req: IncomingMessage): Checksum;
}
/**
 * Basic express wrapper
 * @example
 * ```ts
 * app.use('/files', uploadx({directory: '/tmp', maxUploadSize: '250GB'}));
 * ```
 */
export declare function uploadx<TFile extends UploadxFile>(options?: UploadxOptions<TFile>): (req: IncomingMessage, res: ServerResponse) => void;
export declare namespace uploadx {
    var upload: <TFile extends UploadxFile>(options?: UploadxOptions<TFile>) => (req: IncomingMessage, res: ServerResponse, next?: (() => void) | undefined) => void;
}
