import * as database from "../database/index.js";
import * as business from "./index.js";
/**
 * Base type for common document properties across different document types.
 */
export type TDocumentEnvelope<TYPE extends string, FIELDS> = {
    /**
     * Document type identifier
     */
    type: TYPE;
    /**
     * Unique identifier for the document
     */
    id: string;
    /**
     * Document creation/issuance date as a Unix timestamp
     */
    date: number;
    /**
     * Document status in its lifecycle
     */
    status: string;
    /**
     * Version information for the document
     */
    versionInfo: {
        /**
         * Should follow semVer format
         */
        version: string;
        /**
         * Type of version (draft vs final)
         */
        type: "draft" | "final";
        /**
         * When this version was last modified
         */
        lastModified?: number;
        /**
         * Version history for tracking changes
         */
        history?: {
            version: string;
            modifiedAt: number;
            modifiedBy?: string;
            changeDescription?: string;
        }[];
    };
    /**
     * Primary language of the document
     */
    language: string;
    /**
     * The text displayed at the top of the document, often a greeting or introduction
     */
    topText?: string;
    /**
     * The text displayed at the bottom of the document, often a signature or conclusion
     */
    bottomText?: string;
    /**
     * Formatting/branding information
     */
    appearance?: {
        /**
         * URL to the logo to be displayed on the document
         */
        logoUrl?: string;
        /**
         * Primary color for document styling
         */
        accentColor?: string;
        /**
         * Font family for the document
         */
        fontFamily?: string;
    };
    /**
     * References to PDF versions of the document
     */
    pdf?: business.IPdf;
    /**
     * PDF attachments are additional PDFs attached to the document
     */
    pdfAttachments?: business.IPdf[];
    /**
     * Track document lifecycle actions
     */
    objectActions?: database.IObjectAction[];
} & FIELDS;
