import { IncomingMessage } from '../types';
import { ERRORS, HttpError } from '../utils';
import { File, FileInit, FilePart, FileQuery } from './file';
import { LocalMetaStorageOptions } from './local-meta-storage';
import { MetaStorage } from './meta-storage';
import { BaseStorage, BaseStorageOptions } from './storage';
export declare class DiskFile extends File {
}
export type DiskStorageOptions = BaseStorageOptions<DiskFile> & {
    /**
     * Uploads directory
     * @defaultValue './files'
     */
    directory?: string;
    /**
     * Configuring metafile storage on the local disk
     * @example
     * ```ts
     * const storage = new DiskStorage({
     *   directory: 'upload',
     *   metaStorageConfig: { directory: '/tmp/upload-metafiles', prefix: '.' }
     * });
     * ```
     */
    metaStorageConfig?: LocalMetaStorageOptions;
};
/**
 * Local Disk Storage
 */
export declare class DiskStorage extends BaseStorage<DiskFile> {
    config: DiskStorageOptions;
    checksumTypes: string[];
    directory: string;
    meta: MetaStorage<DiskFile>;
    constructor(config?: DiskStorageOptions);
    normalizeError(err: Error): HttpError;
    accessCheck(): Promise<void>;
    create(req: IncomingMessage, fileInit: FileInit): Promise<DiskFile>;
    write(part: FilePart | FileQuery): Promise<DiskFile>;
    delete({ id }: FileQuery): Promise<DiskFile[]>;
    /**
     * Returns path for the uploaded file
     */
    getFilePath(filename: string): string;
    protected _write(part: FilePart & File): Promise<[number, ERRORS?]>;
}
