import { PdfStyle, PageSize, PageOrientation, PageMode, PageLayout, ImageSource, PdfPaintContext, DocumentProps, PageProps, ViewProps, TextProps, ImageProps, LinkProps, CanvasProps, NoteProps } from './types';

export declare const DESTROYED_NODES: WeakSet<PdfBaseElement>;
/**
 * Base class for all PDF elements
 */
export declare class PdfBaseElement {
    readonly isPdfElement = true;
    debugName?: string;
    parentElement: PdfBaseElement | null;
    children: PdfBaseElement[];
    isConnected: boolean;
    get parentNode(): PdfBaseElement | null;
    removeChild(child: PdfBaseElement): void;
    appendChild(child: PdfBaseElement): void;
    remove(): void;
    get childNodes(): PdfBaseElement[];
    /**
     * Serialize element to a plain object for PDF generation
     */
    toJSON(): Record<string, any>;
}
/**
 * Comment/placeholder element (invisible)
 */
export declare class PdfComment extends PdfBaseElement {
    readonly isPdfComment = true;
    text: string;
    constructor(text?: string);
    toJSON(): Record<string, any>;
}
/**
 * Fragment element for grouping
 */
export declare class PdfFragment extends PdfBaseElement {
    readonly isPdfFragment = true;
    constructor();
    toJSON(): Record<string, any>;
}
/**
 * Text node element
 */
export declare class PdfTextNode extends PdfBaseElement {
    readonly isPdfTextNode = true;
    textContent: string;
    constructor(text?: string);
    toJSON(): Record<string, any>;
}
/**
 * Document element - root container for PDF
 */
export declare class PdfDocument extends PdfBaseElement {
    readonly isPdfDocument = true;
    props: DocumentProps;
    constructor();
    get title(): string | undefined;
    set title(value: string | undefined);
    get author(): string | undefined;
    set author(value: string | undefined);
    get subject(): string | undefined;
    set subject(value: string | undefined);
    get keywords(): string | undefined;
    set keywords(value: string | undefined);
    get creator(): string | undefined;
    set creator(value: string | undefined);
    get producer(): string | undefined;
    set producer(value: string | undefined);
    get pdfVersion(): string | undefined;
    set pdfVersion(value: string | undefined);
    get language(): string | undefined;
    set language(value: string | undefined);
    get pageMode(): PageMode | undefined;
    set pageMode(value: PageMode | undefined);
    get pageLayout(): PageLayout | undefined;
    set pageLayout(value: PageLayout | undefined);
    get onRender(): ((blob: Blob) => void) | undefined;
    set onRender(value: ((blob: Blob) => void) | undefined);
    toJSON(): Record<string, any>;
}
/**
 * Page element - represents a single page in the PDF
 */
export declare class PdfPage extends PdfBaseElement {
    readonly isPdfPage = true;
    props: PageProps;
    constructor();
    get size(): PageSize;
    set size(value: PageSize);
    get orientation(): PageOrientation;
    set orientation(value: PageOrientation);
    get wrap(): boolean;
    set wrap(value: boolean);
    get style(): PdfStyle | PdfStyle[] | undefined;
    set style(value: PdfStyle | PdfStyle[] | undefined);
    get debug(): boolean;
    set debug(value: boolean);
    get dpi(): number;
    set dpi(value: number);
    get id(): string | undefined;
    set id(value: string | undefined);
    toJSON(): Record<string, any>;
}
/**
 * View element - layout container (like a div)
 */
export declare class PdfView extends PdfBaseElement {
    readonly isPdfView = true;
    props: ViewProps;
    constructor();
    get wrap(): boolean;
    set wrap(value: boolean);
    get style(): PdfStyle | PdfStyle[] | undefined;
    set style(value: PdfStyle | PdfStyle[] | undefined);
    get debug(): boolean;
    set debug(value: boolean);
    get fixed(): boolean;
    set fixed(value: boolean);
    get id(): string | undefined;
    set id(value: string | undefined);
    toJSON(): Record<string, any>;
}
/**
 * Text element - displays text content
 */
export declare class PdfText extends PdfBaseElement {
    readonly isPdfText = true;
    props: TextProps;
    constructor();
    get wrap(): boolean;
    set wrap(value: boolean);
    get style(): PdfStyle | PdfStyle[] | undefined;
    set style(value: PdfStyle | PdfStyle[] | undefined);
    get debug(): boolean;
    set debug(value: boolean);
    get fixed(): boolean;
    set fixed(value: boolean);
    get id(): string | undefined;
    set id(value: string | undefined);
    /**
     * Get the text content from children
     */
    getTextContent(): string;
    toJSON(): Record<string, any>;
}
/**
 * Image element - displays images
 */
export declare class PdfImage extends PdfBaseElement {
    readonly isPdfImage = true;
    props: ImageProps;
    constructor();
    get src(): ImageSource | undefined;
    set src(value: ImageSource | undefined);
    get source(): ImageSource | undefined;
    set source(value: ImageSource | undefined);
    get style(): PdfStyle | PdfStyle[] | undefined;
    set style(value: PdfStyle | PdfStyle[] | undefined);
    get debug(): boolean;
    set debug(value: boolean);
    get fixed(): boolean;
    set fixed(value: boolean);
    get cache(): boolean;
    set cache(value: boolean);
    toJSON(): Record<string, any>;
}
/**
 * Link element - creates hyperlinks
 */
export declare class PdfLink extends PdfBaseElement {
    readonly isPdfLink = true;
    props: LinkProps;
    constructor();
    get src(): string | undefined;
    set src(value: string | undefined);
    get wrap(): boolean;
    set wrap(value: boolean);
    get style(): PdfStyle | PdfStyle[] | undefined;
    set style(value: PdfStyle | PdfStyle[] | undefined);
    get debug(): boolean;
    set debug(value: boolean);
    get fixed(): boolean;
    set fixed(value: boolean);
    toJSON(): Record<string, any>;
}
/**
 * Canvas element - for custom drawing
 */
export declare class PdfCanvas extends PdfBaseElement {
    readonly isPdfCanvas = true;
    props: CanvasProps;
    private _paint?;
    constructor();
    get style(): PdfStyle | PdfStyle[] | undefined;
    set style(value: PdfStyle | PdfStyle[] | undefined);
    get paint(): ((ctx: PdfPaintContext, width: number, height: number) => void) | undefined;
    set paint(value: ((ctx: PdfPaintContext, width: number, height: number) => void) | undefined);
    get debug(): boolean;
    set debug(value: boolean);
    get fixed(): boolean;
    set fixed(value: boolean);
    toJSON(): Record<string, any>;
}
/**
 * Note element - creates annotations
 */
export declare class PdfNote extends PdfBaseElement {
    readonly isPdfNote = true;
    props: NoteProps;
    content: string;
    constructor();
    get style(): PdfStyle | PdfStyle[] | undefined;
    set style(value: PdfStyle | PdfStyle[] | undefined);
    get fixed(): boolean;
    set fixed(value: boolean);
    toJSON(): Record<string, any>;
}
/**
 * Type guard functions
 */
export declare function isPdfElement(node: unknown): node is PdfBaseElement;
export declare function isPdfDocument(node: unknown): node is PdfDocument;
export declare function isPdfPage(node: unknown): node is PdfPage;
export declare function isPdfView(node: unknown): node is PdfView;
export declare function isPdfText(node: unknown): node is PdfText;
export declare function isPdfTextNode(node: unknown): node is PdfTextNode;
export declare function isPdfImage(node: unknown): node is PdfImage;
export declare function isPdfLink(node: unknown): node is PdfLink;
export declare function isPdfCanvas(node: unknown): node is PdfCanvas;
export declare function isPdfNote(node: unknown): node is PdfNote;
export declare function isPdfComment(node: unknown): node is PdfComment;
export declare function isPdfFragment(node: unknown): node is PdfFragment;
