import { Model, InferAttributes, InferCreationAttributes, CreationOptional, ModelStatic } from "vr-migrations"; export declare const LOG_LEVELS: readonly ["INFO", "WARNING", "ERROR", "DEBUG"]; export type LogLevel = (typeof LOG_LEVELS)[number]; export declare const LOG_CATEGORIES: readonly ["SYSTEM", "DATABASE", "CRONJOB", "PAYMENT", "DEVICE", "AUTH", "USER", "API", "SECURITY"]; export type LogCategory = (typeof LOG_CATEGORIES)[number]; export interface SystemLogAttributes { id: string; level: LogLevel; category: LogCategory; message: string; details: Record | null; source: string | null; ipAddress: string | null; userAgent: string | null; timestamp: Date; createdAt: Date; updatedAt: Date; } export interface SystemLogCreationAttributes extends Omit { id?: string; details?: Record | null; timestamp?: Date; } type SystemLogOptions = Partial>; export declare class SystemLog extends Model, InferCreationAttributes> implements SystemLogAttributes { id: CreationOptional; level: LogLevel; category: LogCategory; message: string; details: CreationOptional | null>; source: CreationOptional; ipAddress: CreationOptional; userAgent: CreationOptional; timestamp: CreationOptional; readonly createdAt: CreationOptional; readonly updatedAt: CreationOptional; static initialize(sequelize: any): void; static associate(models: Record>): void; static createLog(data: Omit): Promise; static logError(message: string, options?: SystemLogOptions): Promise; static logWarning(message: string, options?: SystemLogOptions): Promise; static logInfo(message: string, options?: SystemLogOptions): Promise; static logDebug(message: string, options?: SystemLogOptions): Promise; static getLogs(options: { level?: LogLevel; category?: LogCategory; fromDate?: Date; toDate?: Date; limit?: number; offset?: number; orderBy?: "timestamp" | "createdAt"; orderDirection?: "ASC" | "DESC"; }): Promise<{ rows: SystemLog[]; count: number; }>; static cleanOldLogs(daysToKeep?: number): Promise; } export type SystemLogModel = typeof SystemLog; export {};