import type { Root } from 'myst-spec';
import type { Plugin } from 'unified';
import { VFile } from 'vfile';
import type { CitationRenderer } from 'citation-js-utils';
import type { MessageInfo, GenericNode } from 'myst-common';
import { SourceFileKind } from 'myst-spec-ext';
import type { Handler, IJatsSerializer, Options, StateData, Element, Attributes, ArticleContent, DocumentOptions, FrontmatterWithParts } from './types.js';
export declare class JatsSerializer implements IJatsSerializer {
    file: VFile;
    data: StateData;
    handlers: Record<string, Handler>;
    mdast: Root;
    stack: Element[];
    footnotes: Element[];
    expressions: Element[];
    referenceOrder: string[];
    opts: Options;
    constructor(file: VFile, mdast: Root, opts?: Options);
    render(ignoreParts?: boolean): this;
    top(): Element;
    warn(message: string, node?: GenericNode, source?: string, opts?: MessageInfo): void;
    error(message: string, node?: GenericNode, source?: string, opts?: MessageInfo): void;
    pushNode(el?: Element): Element | undefined;
    text(text?: string): Element | undefined;
    renderChildren(node: GenericNode | GenericNode[]): void;
    renderInline(node: GenericNode, name: string, attributes?: Attributes): void;
    addLeaf(name: string, attributes?: Attributes): void;
    openNode(name: string, attributes?: Attributes, isLeaf?: boolean): void;
    closeNode(): Element | undefined;
    elements(): Element[];
}
export declare class JatsDocument {
    file: VFile;
    options: DocumentOptions;
    content: ArticleContent;
    constructor(file: VFile, content: ArticleContent, opts?: DocumentOptions);
    article(articleType?: string, specificUse?: string): Element;
    frontStub(frontmatter?: FrontmatterWithParts, state?: IJatsSerializer, notebookRep?: boolean): Element[];
    subArticleState(content: ArticleContent, notebookRep: boolean): IJatsSerializer;
    subArticle(subArticleState: IJatsSerializer, content: ArticleContent, notebookRep: boolean): Element;
    body(state?: JatsSerializer): Element;
}
export declare function writeJats(file: VFile, content: ArticleContent, opts?: DocumentOptions): VFile;
declare const plugin: Plugin<[
    SourceFileKind,
    FrontmatterWithParts?,
    CitationRenderer?,
    string?,
    DocumentOptions?
], Root, VFile>;
export default plugin;
//# sourceMappingURL=index.d.ts.map