import { Resolver } from './resolver';
import { ResolvedEntry } from './types';
import { CancellationToken } from './cancellation';
export interface ResolverHost {
    /**
     * Get the canonical url for this resource
     *
     * This might involve traversing symlinks or following redirects. The idea is to provide
     * an optional mechanism for hosts dereference links to the canonical form.
     */
    getCanonicalUrl(_resolver: Resolver, url: URL, options?: {
        token?: CancellationToken;
    }): Promise<URL>;
    /**
     * Get the URL that should be treated as the resolution root for this host
     */
    getResolveRoot(resolver: Resolver, url: URL, options?: {
        token?: CancellationToken;
    }): Promise<URL>;
    /**
     * List the entries that are children of the given url, assuming this refers to a directory
     */
    listEntries(resolver: Resolver, url: URL, options?: {
        token?: CancellationToken;
    }): Promise<ResolvedEntry[]>;
    /**
     * Read the content of a url as a file and produce a buffer
     */
    readFileContent(resolver: Resolver, url: URL, options?: {
        token?: CancellationToken;
    }): Promise<ArrayBuffer>;
}
export declare abstract class AbstractResolverHost implements ResolverHost {
    getCanonicalUrl(_resolver: Resolver, url: URL): Promise<URL>;
    abstract getResolveRoot(resolver: Resolver, url: URL, options?: {
        token?: CancellationToken;
    }): Promise<URL>;
    abstract listEntries(resolver: Resolver, url: URL, options?: {
        token?: CancellationToken;
    }): Promise<ResolvedEntry[]>;
    abstract readFileContent(resolver: Resolver, url: URL, options?: {
        token?: CancellationToken;
    }): Promise<ArrayBuffer>;
}
//# sourceMappingURL=host.d.ts.map