UNPKG

@openade/pel

Version:

Punto di Elaborazione (Elaboration Point) - Server library for managing PEMs and communicating with ADE

73 lines 3.66 kB
import type { CorrispettiviEsito, CorrispettiviGiornalieri, DocumentoCommerciale, ElaborationPointCensus, ElaborationPointStatusInfo, EmissionPointCensus, EmissionPointStatusInfo, Journal } from '@openade/common'; export interface QueryFilter { vatNumber?: string; emissionPointId?: string; elaborationPointId?: string; dateFrom?: string; dateTo?: string; status?: string; documentType?: string; limit?: number; offset?: number; } export interface AuditLogEntry { entityType: string; entityId: string; action: string; timestamp: string; userId?: string; metadata?: Record<string, unknown>; } export interface QueryResult<T> { items: T[]; data: T[]; total: number; hasMore: boolean; } export interface IDatabase { saveEmissionPoint(census: EmissionPointCensus): Promise<void>; getEmissionPoint(vatNumber: string, emissionPointId: string): Promise<EmissionPointCensus | null>; updateEmissionPointStatus(vatNumber: string, emissionPointId: string, status: EmissionPointStatusInfo): Promise<void>; listEmissionPoints(filter: QueryFilter): Promise<QueryResult<EmissionPointCensus>>; deleteEmissionPoint(vatNumber: string, emissionPointId: string): Promise<void>; saveElaborationPoint(census: ElaborationPointCensus): Promise<void>; getElaborationPoint(vatNumber: string, elaborationPointId: string): Promise<ElaborationPointCensus | null>; updateElaborationPointStatus(vatNumber: string, elaborationPointId: string, status: ElaborationPointStatusInfo): Promise<void>; listElaborationPoints(filter: QueryFilter): Promise<QueryResult<ElaborationPointCensus>>; saveDailyReceipts(receipts: CorrispettiviGiornalieri): Promise<void>; getDailyReceipts(vatNumber: string, emissionPointId: string, date: string): Promise<CorrispettiviGiornalieri | null>; saveDailyReceiptsOutcome(outcome: CorrispettiviEsito): Promise<void>; getDailyReceiptsOutcome(vatNumber: string, emissionPointId: string, date: string): Promise<CorrispettiviEsito | null>; listDailyReceipts(filter: QueryFilter): Promise<QueryResult<CorrispettiviGiornalieri>>; saveDocument(document: DocumentoCommerciale): Promise<void>; getDocument(vatNumber: string, emissionPointId: string, documentNumber: string): Promise<DocumentoCommerciale | null>; getDocumentByHash?(hash: string): Promise<DocumentoCommerciale | null>; listDocuments(filter: QueryFilter): Promise<QueryResult<DocumentoCommerciale>>; deleteDocument(vatNumber: string, emissionPointId: string, documentNumber: string): Promise<void>; saveJournal(journal: Journal): Promise<void>; getJournal(vatNumber: string, emissionPointId: string, date: string): Promise<Journal | null>; listJournals(filter: QueryFilter): Promise<QueryResult<Journal>>; getAuditTrail(entityType: string, entityId: string, dateFrom?: string, dateTo?: string): Promise<AuditLogEntry[]>; saveAuditLog(entry: { timestamp: string; entityType: string; entityId: string; action: string; userId?: string; metadata?: Record<string, unknown>; }): Promise<void>; isHealthy(): Promise<boolean>; close(): Promise<void>; beginTransaction?(): Promise<void>; commitTransaction?(): Promise<void>; rollbackTransaction?(): Promise<void>; } export interface DatabaseConfig { type: 'postgres' | 'mysql' | 'mongodb' | 'sqlite' | 'custom'; connection: string | Record<string, unknown>; poolSize?: number; timeout?: number; logging?: boolean; options?: Record<string, unknown>; } //# sourceMappingURL=database.interface.d.ts.map