/// <reference path="../../adonis-typings/index.d.ts" />
/// <reference types="node" />
/// <reference types="node" />
import * as fsExtra from 'fs-extra';
import { RouterContract } from '@ioc:Adonis/Core/Route';
import { Visibility, DriveFileStats, ContentHeaders, LocalDriverConfig, LocalDriverContract, DirectoryListingContract, LocalDriveListItem } from '@ioc:Adonis/Core/Drive';
/**
 * Local driver interacts with the local file system
 */
export declare class LocalDriver implements LocalDriverContract {
    private diskName;
    private config;
    private router;
    private routeName;
    /**
     * Reference to the underlying adapter. Which is
     * fs-extra
     */
    adapter: typeof fsExtra;
    /**
     * Name of the driver
     */
    name: 'local';
    /**
     * Path prefixer used for prefixing paths with disk root
     */
    private prefixer;
    constructor(diskName: string, config: LocalDriverConfig, router: RouterContract);
    /**
     * Make absolute path to a given location
     */
    makePath(location: string): string;
    /**
     * Returns the file contents as a buffer. The buffer return
     * value allows you to self choose the encoding when
     * converting the buffer to a string.
     */
    get(location: string): Promise<Buffer>;
    /**
     * Returns the file contents as a stream
     */
    getStream(location: string): Promise<NodeJS.ReadableStream>;
    /**
     * A boolean to find if the location path exists or not
     */
    exists(location: string): Promise<boolean>;
    /**
     * Not supported
     */
    getVisibility(_: string): Promise<Visibility>;
    /**
     * Returns the file stats
     */
    getStats(location: string): Promise<DriveFileStats>;
    /**
     * Returns a signed URL for a given location path
     */
    getSignedUrl(location: string, options?: ContentHeaders & {
        expiresIn?: string | number;
    }): Promise<string>;
    /**
     * Returns a URL for a given location path
     */
    getUrl(location: string): Promise<string>;
    /**
     * Write string|buffer contents to a destination. The missing
     * intermediate directories will be created (if required).
     */
    put(location: string, contents: Buffer | string): Promise<void>;
    /**
     * Write a stream to a destination. The missing intermediate
     * directories will be created (if required).
     */
    putStream(location: string, contents: NodeJS.ReadableStream): Promise<void>;
    /**
     * Not supported
     */
    setVisibility(_: string, __: string): Promise<void>;
    /**
     * Remove a given location path
     */
    delete(location: string): Promise<void>;
    /**
     * Copy a given location path from the source to the desination.
     * The missing intermediate directories will be created (if required)
     */
    copy(source: string, destination: string): Promise<void>;
    /**
     * Move a given location path from the source to the desination.
     * The missing intermediate directories will be created (if required)
     */
    move(source: string, destination: string): Promise<void>;
    /**
     * Return a listing directory iterator for given location.
     */
    list(location: string): DirectoryListingContract<this, LocalDriveListItem>;
}
