@openade/fe
Version:
Fatturazione Elettronica - Electronic Invoicing for Sistema di Interscambio (SDI)
86 lines • 2.76 kB
TypeScript
import type { FatturaElettronica } from '@openade/common';
import type { IStorage } from './storage.interface';
export interface ArchiveConfig {
fileStorage: IStorage;
archiveDir: string;
retentionDays?: number;
compression?: boolean;
encryption?: boolean;
format?: 'zip' | 'tar' | 'custom';
metadataFile?: string;
indexFile?: string;
}
export interface ArchiveMetadata {
id: string;
name: string;
createdAt: string;
periodStart: string;
periodEnd: string;
invoiceCount: number;
totalSize: number;
checksum: string;
compressed: boolean;
encrypted: boolean;
format: string;
retentionDate: string;
}
export interface ArchiveEntry {
filename: string;
invoiceId: string;
invoiceDate: string;
customerVatNumber?: string;
amount: number;
size: number;
checksum: string;
archiveDate: string;
}
export interface ArchiveResult {
archiveId: string;
success: boolean;
invoiceCount: number;
archiveSize: number;
error?: string;
metadata?: ArchiveMetadata;
}
export declare class ArchiveManager {
private config;
private compressionService;
private encryptionService;
constructor(config: ArchiveConfig);
initialize(): Promise<void>;
createArchive(invoices: Array<{
invoice: FatturaElettronica;
filename: string;
xmlContent: string;
}>, archiveName: string, periodStart: string, periodEnd: string): Promise<ArchiveResult>;
private archiveInvoice;
listArchives(): Promise<ArchiveMetadata[]>;
getArchive(archiveId: string): Promise<ArchiveMetadata | null>;
extractArchive(archiveId: string, extractPath: string): Promise<boolean>;
deleteArchive(archiveId: string): Promise<boolean>;
cleanupExpiredArchives(): Promise<number>;
private generateArchiveId;
private ensureArchiveDirectory;
private calculateFileChecksum;
private calculateArchiveChecksum;
private calculateRetentionDate;
private saveArchiveMetadata;
private saveArchiveIndex;
private loadArchiveMetadata;
private findArchivePath;
private copyArchiveContents;
private removeDirectory;
private compressArchive;
private encryptArchive;
private extractInvoiceId;
private extractInvoiceDate;
private extractCustomerVatNumber;
private extractInvoiceAmount;
}
export declare function createArchiveManager(config: ArchiveConfig): ArchiveManager;
export declare function archiveInvoices(invoices: Array<{
invoice: FatturaElettronica;
filename: string;
xmlContent: string;
}>, archiveName: string, periodStart: string, periodEnd: string, config: ArchiveConfig): Promise<ArchiveResult>;
//# sourceMappingURL=archive.manager.d.ts.map