import type { Node } from 'postcss-value-parser'; import type { Fragment } from "./fragments.js"; import type { Page } from "./pages.js"; import type { Float } from "./layout.js"; export declare const SIDES: string[]; export declare const CORNERS: string[]; export declare const HORIZONTAL_MARGIN_BOXES: string[]; export declare const VERTICAL_MARGIN_BOXES: string[]; export type Pseudo = "before" | "after" | "marker"; export declare const PSEUDOS: Pseudo[]; type MarginContent = { [key: string]: C; }; export declare class PageMarginContent { readonly start: MarginContent; first: MarginContent; last: MarginContent; } interface Leader { pseudo: string; element: HTMLElement; pattern: string; } export interface TargetCounter { element: HTMLElement; pseudo: Pseudo; varName: string; style?: string; } export declare class GCPMContext { rawPageCounters: boolean; /** * Map of floats by float-call */ floats: Map; /** * Map of floats by float-call */ pendingFloats: Float[]; /** * Map of leaders. */ leaders: Map; /** * The global string sets of the pagination. */ stringSets: MarginContent; /** * The string sets of the current page. */ pageStringSets: PageMarginContent; /** * The global running elements of the pagination. */ runnings: MarginContent; /** * The running elements of the current page. */ pageRunnings: PageMarginContent; bookmarks: Set; countersAllocatedText: Record; targetCounters: { [id: string]: { [counterName: string]: TargetCounter[]; }; }; targetsCounters: TargetCounter[]; disconnectedDocFrag: DocumentFragment; constructor(disconnectedDocFrag: DocumentFragment, rawPageCounters: boolean); initialize(source: HTMLElement): void; } export declare function prepareGcpm(element: Element, style: CSSStyleDeclaration, ctx: GCPMContext): void; export declare function parsePseudosVals(element: HTMLElement, pseudo: Pseudo, ctx: GCPMContext): void; export declare function createBookmarks(doc: Document, ctx: GCPMContext): Element; export declare function setBookmarkLabels(bookmarksRoot: Element): Promise; export interface PageLabels { [pageNumber: number]: PageLabel; } export interface PageLabel { prefix?: string; style?: string; start?: number; } export declare function getPageLabels(pages: Page[], ctx: GCPMContext): PageLabels; /** * Sets the content of the margins of a page * @param page * @param context */ export declare function setMarginContents(page: Page, ctx: GCPMContext): void; export declare function setPageTargetCounters(page: Fragment, dest: HTMLElement, ctx: GCPMContext): void; export declare function setPageTargetCounters2(page: Fragment, pageScopesElems: Record, ctx: GCPMContext): void; export declare function setTargetCounters(ctx: GCPMContext, pages: Fragment[]): void; export declare function setTargetsCounters(ctx: GCPMContext): void; export declare function setLeaders(ctx: GCPMContext): void; export declare function isFloatCall(elem: Element): boolean; export {};