invoice-craft
Version:
Customizable, browser-first invoice PDF generator library with modern TypeScript API
51 lines (50 loc) • 2.12 kB
TypeScript
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;
};