import type { ResourceIdentifier } from '../../http/representation/ResourceIdentifier';
import type { FileIdentifierMapper, ResourceLink } from './FileIdentifierMapper';
/**
 * Base class for {@link FileIdentifierMapper} implementations.
 */
export declare class BaseFileIdentifierMapper implements FileIdentifierMapper {
    protected readonly logger: import("../..").Logger;
    protected readonly baseRequestURI: string;
    protected readonly rootFilepath: string;
    protected readonly unknownMediaTypeExtension = "unknown";
    private readonly metadataSuffix;
    constructor(base: string, rootFilepath: string);
    /**
     * Maps the given resource identifier / URL to a file path.
     * Determines the content type if none was provided.
     * For containers the content-type input is ignored.
     * @param identifier - The input identifier.
     * @param isMetadata - If we need the data or metadata file path.
     * @param contentType - The content-type provided with the request.
     *
     * @returns A ResourceLink with all the necessary metadata.
     */
    mapUrlToFilePath(identifier: ResourceIdentifier, isMetadata: boolean, contentType?: string): Promise<ResourceLink>;
    /**
     * Maps the given container identifier to a file path,
     * possibly making alterations to the direct translation.
     * @param identifier - The input identifier.
     * @param filePath - The direct translation of the identifier onto the file path.
     *
     * @returns A ResourceLink with all the necessary metadata.
     */
    protected mapUrlToContainerPath(identifier: ResourceIdentifier, filePath: string): Promise<ResourceLink>;
    /**
     * Maps the given document identifier to a file path,
     * possibly making alterations to the direct translation
     * (for instance, based on its content type)).
     * Determines the content type if none was provided.
     * @param identifier - The input identifier.
     * @param filePath - The direct translation of the identifier onto the file path.
     * @param contentType - The content-type provided with the request.
     *
     * @returns A ResourceLink with all the necessary metadata.
     */
    protected mapUrlToDocumentPath(identifier: ResourceIdentifier, filePath: string, contentType?: string): Promise<ResourceLink>;
    /**
     * Determines the content type from the document identifier.
     * @param identifier - The input identifier.
     * @param contentType - The content-type provided with the request.
     *
     * @returns The content type of the document.
     */
    protected getContentTypeFromUrl(identifier: ResourceIdentifier, contentType?: string): Promise<string>;
    /**
     * Maps the given file path to a URL and determines its content type.
     * @param filePath - The input file path.
     * @param isContainer - If the path corresponds to a file.
     *
     * @returns A ResourceLink with all the necessary metadata.
     */
    mapFilePathToUrl(filePath: string, isContainer: boolean): Promise<ResourceLink>;
    /**
     * Maps the given container path to a URL and determines its content type.
     * @param relative - The relative container path.
     *
     * @returns A ResourceLink with all the necessary metadata.
     */
    protected getContainerUrl(relative: string): Promise<string>;
    /**
     * Maps the given document path to a URL and determines its content type.
     * @param relative - The relative document path.
     *
     * @returns A ResourceLink with all the necessary metadata.
     */
    protected getDocumentUrl(relative: string): Promise<string>;
    /**
     * Determines the content type from the relative path.
     * @param filePath - The file path of the document.
     *
     * @returns The content type of the document.
     */
    protected getContentTypeFromPath(filePath: string): Promise<string>;
    /**
     * Get the absolute file path based on the rootFilepath.
     * @param path - The relative file path.
     *
     * @returns Absolute path of the file.
     */
    protected getAbsolutePath(path: string): string;
    /**
     * Strips the baseRequestURI from the identifier.
     * @param identifier - Incoming identifier.
     *
     * @throws {@link NotFoundHttpError}
     * If the identifier does not match the baseRequestURI.
     *
     * @returns A string representing the relative path.
     */
    protected getRelativePath(identifier: ResourceIdentifier): string;
    /**
     * Check if the given relative path is valid.
     *
     * @throws {@link BadRequestHttpError}
     * If the relative path is invalid.
     *
     * @param path - A relative path, as generated by {@link getRelativePath}.
     * @param identifier - A resource identifier.
     */
    protected validateRelativePath(path: string, identifier: ResourceIdentifier): void;
    /**
     * Checks if the given path is a metadata path.
     */
    protected isMetadataPath(path: string): boolean;
}
