UNPKG

invoice-craft

Version:

Customizable, browser-first invoice PDF generator library with modern TypeScript API

51 lines (50 loc) 2.12 kB
import type { InvoicePlugin, InvoiceData, ValidationResult } from "../core/types"; export declare class PluginManager { private plugins; private hooks; register(plugin: InvoicePlugin): void; unregister(pluginName: string): boolean; getPlugin(name: string): InvoicePlugin | undefined; getAllPlugins(): InvoicePlugin[]; executeBeforeRender(invoice: InvoiceData): Promise<InvoiceData>; executeAfterRender(pdf: any): Promise<any>; executeBeforeValidation(invoice: InvoiceData): Promise<InvoiceData>; executeAfterValidation(validationResult: ValidationResult): Promise<ValidationResult>; clear(): void; } export declare const pluginManager: PluginManager; export declare function createPlugin(config: { name: string; version?: string; beforeRender?: (invoice: InvoiceData) => InvoiceData | Promise<InvoiceData>; afterRender?: (pdf: any) => any | Promise<any>; beforeValidation?: (invoice: InvoiceData) => InvoiceData | Promise<InvoiceData>; afterValidation?: (result: ValidationResult) => ValidationResult | Promise<ValidationResult>; }): InvoicePlugin; export declare const builtInPlugins: { autoNumbering: InvoicePlugin; currencyFormatter: InvoicePlugin; dateValidator: InvoicePlugin; taxCalculator: InvoicePlugin; addressFormatter: InvoicePlugin; validationEnhancer: InvoicePlugin; logoOptimizer: InvoicePlugin; auditTrail: InvoicePlugin; }; export declare function registerBuiltInPlugins(): void; export declare function createPluginChain(plugins: InvoicePlugin[]): { executeBeforeRender: (invoice: InvoiceData) => Promise<InvoiceData>; executeAfterRender: (pdf: any) => Promise<any>; executeBeforeValidation: (invoice: InvoiceData) => Promise<InvoiceData>; executeAfterValidation: (result: ValidationResult) => Promise<ValidationResult>; }; export declare function validatePlugin(plugin: InvoicePlugin): { isValid: boolean; errors: string[]; }; export declare function getPluginInfo(plugin: InvoicePlugin): { name: string; version: string; hooks: string[]; description?: string; };