import type { PageDimensions, DocumentOptions, MarginValues, IDocument } from "./types";
import type { Theme } from "./theme";
import { HeaderContainer, FooterContainer, type BaseElement, type TextElement, type RectElement, type ImageElement, type ContainerElement, type TableElement, type CreateContainerOptions, type CreateTextOptions, type CreateRectOptions, type CreateImageOptions, type CreateTableOptions } from "./elements";
interface FontInfo {
    name: string;
    path: string;
    registered: boolean;
    variable?: boolean;
}
interface ImageInfo {
    name: string;
    path: string;
    width: number;
    height: number;
}
export declare class Document implements IDocument {
    pages: Page[];
    page_width: number;
    page_height: number;
    margin: MarginValues;
    fonts: Map<string, FontInfo>;
    images: Map<string, ImageInfo>;
    pdf_doc: any;
    default_theme: Theme | null;
    parse_markdown: boolean;
    constructor(options?: DocumentOptions);
    get_page_dimensions(options?: DocumentOptions): PageDimensions;
    set_theme(theme: Theme): void;
    create_page(theme?: Theme): Page;
    add_page(): Page;
    load_font_sync(name: string, file_path: string, variable?: boolean): void;
    load_font(name: string, file_path: string, variable?: boolean): Promise<void>;
    load_image_sync(name: string, file_path: string): void;
    load_image(name: string, file_path: string): Promise<void>;
    get_font(name: string): FontInfo | undefined;
    get_image(name: string): ImageInfo | undefined;
    set_pdf_doc(pdoc: any): void;
    get_pdf_doc(): any;
    private register_all_fonts;
    prepare_pdf(): Promise<any>;
    render_to(file_path: string): Promise<void>;
    build(file_path: string): Promise<void>;
}
export declare class Page {
    header: HeaderContainer | null;
    footer: FooterContainer | null;
    root_elements: BaseElement[];
    on_render: ((pdoc: any) => void) | null;
    private owner;
    private theme;
    constructor(owner: Document, theme?: Theme);
    header_container(options?: CreateContainerOptions): HeaderContainer;
    footer_container(options?: CreateContainerOptions): FooterContainer;
    text(options: CreateTextOptions): TextElement;
    rect(options: CreateRectOptions): RectElement;
    image(options: CreateImageOptions): ImageElement;
    table(options: CreateTableOptions): TableElement;
    create_container(options?: CreateContainerOptions): ContainerElement;
    add(...elements: BaseElement[]): this;
    get_width(): number;
    get_height(): number;
    get_content_width(): number;
    get_content_height(): number;
    get_margin_left(): number;
    get_margin_right(): number;
    get_margin_top(): number;
    get_margin_bottom(): number;
    private resolve_style;
}
export { Theme, create_theme } from "./theme";
export { Vector, vector, type VectorLike } from "../lib/vector";
