import { Template as NunjucksTemplate } from 'nunjucks';
import { Page } from '../Page';
import { VariableProcessor } from '../variables/VariableProcessor';
import { ExternalManager } from '../External/ExternalManager';
import { SiteLinkManager } from '../html/SiteLinkManager';
import { PluginManager } from '../plugins/PluginManager';
import type { FrontMatter } from '../plugins/Plugin';
import { SiteConfig, SiteConfigPage } from './SiteConfig';
import { LayoutManager } from '../Layout';
export type PageCreationConfig = {
    externalScripts: string[];
    frontmatter: FrontMatter;
    layout?: string;
    pageSrc: string;
    searchable: boolean;
    faviconUrl?: string;
    glob?: string;
    globExclude?: string;
    title?: string;
    fileExtension?: string;
};
export type AddressablePage = {
    frontmatter?: FrontMatter;
    layout?: string;
    searchable?: string | boolean;
    src: string;
    externalScripts?: string[];
    faviconUrl?: string;
    title?: string;
    fileExtension?: string;
};
/**
 * Manages the lifecycle and configuration of pages within the site.
 * Handles page creation, collection of addressable pages, and dependency tracking.
 */
export declare class SitePagesManager {
    rootPath: string;
    outputPath: string;
    pageTemplatePath: string;
    pageTemplate: NunjucksTemplate;
    pages: Page[];
    addressablePages: AddressablePage[];
    addressablePagesSource: string[];
    siteConfig: SiteConfig;
    variableProcessor: VariableProcessor;
    pluginManager: PluginManager;
    siteLinkManager: SiteLinkManager;
    externalManager: ExternalManager;
    layoutManager: LayoutManager;
    baseUrlMap: Set<string>;
    isDevMode: boolean;
    constructor(rootPath: string, outputPath: string, isDevMode: boolean);
    setBaseUrlMap(baseUrlMap: Set<string>): void;
    /**
     * Create a Page object from the site and page creation config.
     */
    createPage(config: PageCreationConfig): Page;
    /**
     * Updates the paths to be traversed as addressable pages and returns a list of filepaths to be deleted
     */
    updateAddressablePages(): string[];
    getPageGlobPaths(page: SiteConfigPage, pagesExclude: string[]): string[];
    /**
     * Collects the paths to be traversed as addressable pages
     */
    collectAddressablePages(): void;
    /**
     * Creates new pages and replaces the original pages with the updated version
     */
    updatePages(pagesToUpdate: AddressablePage[]): void;
    /**
     * Checks if a specified file path is a dependency of a page
     * @param filePath file path to check
     * @returns whether the file path is a dependency of any of the site's pages
     */
    isDependencyOfPage(filePath: string): boolean;
    /**
     * Checks if a specified file path satisfies a src or glob in any of the page configurations.
     * @param filePath file path to check
     * @returns whether the file path satisfies any glob
     */
    isFilepathAPage(filePath: string): boolean;
    getFavIconUrl(): string | undefined;
    /**
     * Maps an array of addressable pages to an array of Page object
     */
    mapAddressablePagesToPages(addressablePages: AddressablePage[], faviconUrl: string | undefined): void;
    /**
     * Creates and returns a new Page with the given page config details and favicon url
     * @param page config
     * @param faviconUrl of the page
     */
    createNewPage(page: AddressablePage, faviconUrl: string | undefined): Page;
}
//# sourceMappingURL=SitePagesManager.d.ts.map