also accepts text shorthand — a plain string, or { content, role?, style? } without type, is a text node
Optionaldocumentpassed straight into new jsPDF(options) — orientation/format/unit etc. (omit = jsPDF's own default, a4/portrait/mm)
OptionalfontOptionalmarginsOptionalnumericOptionalpageOptionalpageOptionalpagea lightweight page-number annotation drawn inside the page margin — doesn't reduce content area (unlike pageHeader/pageFooter); true for the default (bottom-left), a position string, or a full object
Optionalthemeready-made colour scheme (preset name or a Theme object) — drives every table fill; omit = the default blue/grey look
OptionaltypographyOptionalwatermarka preset { text: 'DRAFT', ... } or a full render callback (escape hatch)
Full layer 3: pass a ReportNode tree directly (text/stack/section/signature/table freely mixed, including a SectionNode[] from ReportRegistry.build) — the facade still wires up jsPDF/RenderEngine/finalize exactly like the single-table config, just without composing the tree for you.