import { Page, PageIdentity, PageSource } from '../type';
import { NodeShiftTree, TreeShiftTree, WalkableTrees, MutableTrees } from '@pkg/doctree';
declare class OrdinalWeightPage {
    private ordinal;
    private weight;
    page: Page;
    constructor(ordinal: number, weight: number, page: Page);
    Weight(): number;
    Ordinal(): number;
    kind(): string;
    name(): string;
    title(): string;
}
export declare class WeightedTermTreeNode {
    private pageTreesNodeInstance;
    term: OrdinalWeightPage;
    constructor(pageTreesNode: PageTreesNode, term: OrdinalWeightPage);
    getPage(): [Page, boolean];
    getPages(): Page[];
    getResource(): [PageSource, boolean];
    isEmpty(): boolean;
    shift(languageIndex: number, exact: boolean): [PageTreesNode | null, boolean];
}
export interface IPageTreesNode {
    getPage(): [Page, boolean];
}
export declare class PageTreesNode implements IPageTreesNode {
    private nodes;
    constructor();
    setNode(key: PageIdentity, value: PageSource): void;
    merge(newNode: PageTreesNode): PageTreesNode;
    mergeWithLang(newNode: PageTreesNode, languageIndex: number): PageTreesNode;
    remove(k: PageIdentity): boolean;
    delete(languageIndex: number): boolean;
    isEmpty(): boolean;
    shift(languageIndex: number, exact: boolean): [PageTreesNode | null, boolean];
    getPage(): [Page, boolean];
    getPages(): Page[];
    getResource(): [PageSource, boolean];
    private markStale;
}
export declare class PageTrees {
    treePages: NodeShiftTree<PageTreesNode>;
    treeResources: NodeShiftTree<PageTreesNode>;
    treePagesResources: WalkableTrees<PageTreesNode>;
    treeTaxonomyEntries: TreeShiftTree<WeightedTermTreeNode>;
    resourceTrees: MutableTrees;
    constructor();
    createMutableTrees(): void;
    get TreePages(): NodeShiftTree<PageTreesNode>;
    get TreeResources(): NodeShiftTree<PageTreesNode>;
    get TreePagesResources(): WalkableTrees<PageTreesNode>;
    get TreeTaxonomyEntries(): TreeShiftTree<WeightedTermTreeNode>;
    get ResourceTrees(): MutableTrees;
}
export declare function newPageTreesNode(ps: PageSource): PageTreesNode;
export {};
