export declare enum ReportSendType { daily = 1, weekly = 2, monthly = 3 } export declare enum TimeRange { DAY = 1, WEEK = 7, MONTH = 30, YEAR = 365, LAST_7_DAYS = 77, LAST_15_DAYS = 15, LAST_30_DAYS = 3030, LAST_60_DAYS = 60, CUSTOM = 0 } export declare enum ScheduledReportStatus { ACTIVE = "ACTIVE", PAUSED = "PAUSED", FINISHED = "FINISHED", FAILED = "FAILED", DELETED = "DELETED" } export declare enum ScheduledReportFormat { XLSX = "XLSX", CSV = "CSV", JSONL = "JSONL", PDF = "PDF" } export declare enum ScheduledReportDeliveryType { EMAIL = "EMAIL", DOWNLOAD_CENTER = "DOWNLOAD_CENTER", WEBHOOK = "WEBHOOK" } export declare enum ScheduledReportExecutionStatus { QUEUED = "QUEUED", RUNNING = "RUNNING", SUCCESS = "SUCCESS", FAILED = "FAILED", CANCELLED = "CANCELLED" } export declare enum ScheduledReportProcessorStatus { ACCEPTED = "ACCEPTED", SKIPPED = "SKIPPED", COMPLETED = "COMPLETED", FAILED = "FAILED" } export interface ScheduledReportRecipient { email: string; name?: string; userId?: string; } export interface ScheduledReportDelivery { type: ScheduledReportDeliveryType; recipients?: ScheduledReportRecipient[]; webhookUrl?: string; subjectTemplate?: string; messageTemplate?: string; attachFile?: boolean; } export interface ScheduledReportRuntimeOptions { format: ScheduledReportFormat; timezone: string; includeDetail?: boolean; businessHoursOnly?: boolean; fieldNameKeys?: string[]; includeTimeline?: boolean; includeSlaHistory?: boolean; retentionDays?: number; maxRows?: number; } export interface ScheduledReportProcessorContext { scheduledReportId: string; executionId: string; reportModule: string; reportName: string; timeRange: TimeRange; filter: string; options: ScheduledReportRuntimeOptions; requestedAt: Date; requestedBy?: string; } export interface ScheduledReportProcessorResult { status: ScheduledReportProcessorStatus; fileName?: string; downloadUrl?: string; rowCount?: number; warningCount?: number; warnings?: string[]; error?: string; summary?: string; } export interface ScheduledReportExecution { id: string; scheduledReportId: string; status: ScheduledReportExecutionStatus; startedAt: Date; finishedAt?: Date | null; fileName?: string; downloadUrl?: string; rowCount?: number; warningCount?: number; error?: string | null; triggeredBy: 'SCHEDULE' | 'MANUAL' | 'RETRY'; } export interface ScheduledReportQuery { reportModule?: string; reportName?: string; status?: ScheduledReportStatus; search?: string; createdBy?: string; limit?: number; cursor?: string; } export interface ScheduledReportPage { items: ScheduledReport[]; nextCursor?: string; hasMore: boolean; } export interface CreateScheduledReportDto { title: string; description?: string; reportModule: string; reportName: string; timeRange: TimeRange; filter: string; startAt: Date; endsAt?: Date | null; neverEnds?: boolean; sendType: ReportSendType; sendOnMonday?: boolean; sendOnTuesday?: boolean; sendOnWednesday?: boolean; sendOnThursday?: boolean; sendOnFriday?: boolean; sendOnSaturday?: boolean; sendOnSunday?: boolean; dayOfMonth?: number; dayOfWeek?: number; sendTo?: string; delivery?: ScheduledReportDelivery; options?: ScheduledReportRuntimeOptions; summary?: string; } export interface UpdateScheduledReportDto extends Partial { status?: ScheduledReportStatus; } export interface ScheduledReportApi { query(request: ScheduledReportQuery): Promise; get(id: string): Promise; create(payload: CreateScheduledReportDto): Promise; update(id: string, payload: UpdateScheduledReportDto): Promise; delete(id: string): Promise; runNow(id: string): Promise; pause(id: string): Promise; resume(id: string): Promise; executions(id: string, limit?: number): Promise; } export interface ScheduledReport { id: string; title: string; description: string; reportModule: string; reportName: string; timeRange: TimeRange; filter: string; startAt: Date; endsAt?: Date | null; neverEnds: boolean; sendType: ReportSendType; sendOnMonday: boolean; sendOnTuesday: boolean; sendOnWednesday: boolean; sendOnThursday: boolean; sendOnFriday: boolean; sendOnSaturday: boolean; sendOnSunday: boolean; /** * 1 a 31 indica el día del mes que se enviará el reporte * 0 indica el último día del mes */ dayOfMonth: number; /** 1= lunes ... 7 = domingo */ dayOfWeek: number; /** * emails separated by semicolon ; */ sendTo: string; lastSent?: Date | null; lastSentSuccess: boolean; lastSentError?: string | null; finished: boolean; summary: string; nextSend: Date; status?: ScheduledReportStatus; delivery?: ScheduledReportDelivery; options?: ScheduledReportRuntimeOptions; lastExecution?: ScheduledReportExecution | null; createdBy: string; createdAt: Date; updatedAt: Date | null; updatedBy: string | null; deletedAt?: Date | null; deletedBy?: string | null; }