import { QueryParamTypeMap } from "../../domain/definitions/types/QueryParam";
import { InternalPageDefinition, PublicPageDefinition } from "./types/PageDefinition";
import { IPageConfig } from "./interfaces/IPageConfig";
/**
 * Manages the relationship between public and internal page definitions.
 * Provides functionality for storing, retrieving, and creating page definitions.
 */
export declare class PageDefinitionManager {
    /**
     * Maps public page definitions to their internal counterparts.
     */
    private static readonly _internalToPublicMap;
    /**
     * Associates a public page definition with its internal representation.
     * @template RelativeUrl The relative URL path type.
     * @template TParamTypeMap The query parameter type mapping.
     * @param {PublicPageDefinition<RelativeUrl, TParamTypeMap>} publicDef The public page definition.
     * @param {InternalPageDefinition<RelativeUrl, TParamTypeMap>} internalDef The internal page definition.
     */
    static storeInternalDefinition<RelativeUrl extends string, TParamTypeMap extends QueryParamTypeMap>(publicDef: PublicPageDefinition<RelativeUrl, TParamTypeMap>, internalDef: InternalPageDefinition<RelativeUrl, TParamTypeMap>): void;
    /**
     * Retrieves the internal page definition associated with a public definition.
     * @template RelativeUrl The relative URL path type.
     * @template TParamTypeMap The query parameter type mapping.
     * @param {PublicPageDefinition<RelativeUrl, TParamTypeMap>} publicDef The public page definition.
     * @returns {InternalPageDefinition<RelativeUrl, TParamTypeMap> | undefined} The corresponding internal page definition, if it exists.
     */
    static getInternalDefinition<RelativeUrl extends string, TParamTypeMap extends QueryParamTypeMap>(publicDef: PublicPageDefinition<RelativeUrl, TParamTypeMap>): InternalPageDefinition<RelativeUrl, TParamTypeMap> | undefined;
    /**
     * Creates a new internal page definition from the provided configuration.
     * @template RelativeUrl The relative URL path type.
     * @template TParamTypeMap The query parameter type mapping.
     * @param {IPageConfig<RelativeUrl, TParamTypeMap>} config The page configuration.
     * @returns {InternalPageDefinition<RelativeUrl, TParamTypeMap>} A new internal page definition.
     */
    static createInternalDefinition<RelativeUrl extends string, TParamTypeMap extends QueryParamTypeMap = never>(config: IPageConfig<RelativeUrl, TParamTypeMap>): InternalPageDefinition<RelativeUrl, TParamTypeMap>;
    /**
     * Creates a public interface for a page definition from its internal representation.
     * @template RelativeUrl The relative URL path type.
     * @template TParamTypeMap The query parameter type mapping.
     * @param {InternalPageDefinition<RelativeUrl, TParamTypeMap>} internalPageDef The internal page definition to wrap.
     * @returns {PublicPageDefinition<RelativeUrl, TParamTypeMap>} A public interface for interacting with the page definition.
     */
    static createPublicDefinition<RelativeUrl extends string, TParamTypeMap extends QueryParamTypeMap = never>(internalPageDef: InternalPageDefinition<RelativeUrl, TParamTypeMap>): PublicPageDefinition<RelativeUrl, TParamTypeMap>;
}
