import { CSSProperties } from 'react';
import { Designer, Form, Viewer } from '@pdfme/ui';
import { Template, Font } from '@pdfme/common';
export interface ArchbasePdfBuilderRef {
    /** Generate a PDF from the current template + inputs and return its bytes. */
    generatePdf(): Promise<Uint8Array>;
    /** Return the current pdfme instance (Designer | Form | Viewer) if available. */
    getInstance(): Designer | Form | Viewer | null;
}
export interface ArchbasePdfBuilderProps<T = unknown> {
    /** Which pdfme UI to render. */
    mode?: 'designer' | 'form' | 'viewer';
    /** The pdfme template object. */
    template: Template;
    /**
     * Optional Archbase DataSource – used in `form` mode to populate inputs
     * from the current record.
     */
    dataSource?: any;
    /** Field path inside the data source record. */
    dataField?: string;
    /**
     * Standalone inputs for `form` / `viewer` mode.
     * Each element maps schema field names to string values.
     */
    inputs?: Record<string, string>[];
    /** Fired whenever the designer changes the template. */
    onTemplateChange?: (template: Template) => void;
    /** Fired when `generatePdf` completes. */
    onGenerate?: (pdf: Uint8Array) => void;
    /**
     * Additional pdfme schema plugins.
     * Defaults to `[text, image, barcodes]`.
     */
    plugins?: Record<string, any>;
    /** Custom font configuration forwarded to pdfme. */
    font?: Font;
    /** Container height. */
    height?: string | number;
    /** Container width. */
    width?: string | number;
    /** Optional label rendered above the builder (uses Mantine Input.Wrapper). */
    label?: string;
    /** Optional description rendered below the label. */
    description?: string;
    /** Extra inline styles applied to the outer wrapper. */
    style?: CSSProperties;
    /** Extra CSS class name applied to the outer wrapper. */
    className?: string;
}
export declare const ArchbasePdfBuilder: <T = unknown>(props: ArchbasePdfBuilderProps<T> & {
    ref?: React.Ref<ArchbasePdfBuilderRef>;
}) => React.ReactElement | null;
