import { Model, InferAttributes, InferCreationAttributes, CreationOptional, NonAttribute, ModelStatic } from "vr-migrations"; import type { User } from "./user.models"; import { UserRole } from "./securityClearance.models"; export interface DeviceSessionPayload { sessionId: string; startedAt: number; expiresAt: number; userId: string; tokenVersion: number; deviceSerialNumber: string; minutesGranted: number; } export declare const EVENT_ACTIONS: readonly ["USER_READ", "USER_CREATED", "ADMIN_CREATED", "PROFILE_COMPLETED", "USER_UPDATED", "USER_DELETED", "USER_SUSPENDED", "USER_BANNED", "USER_VERIFIED", "USER_UPGRADED_TO_RIDER", "USERS_LISTED", "RIDER_PASSWORD_SET", "RIDER_LOGIN_FAILED", "RIDER_LOGGED_IN", "PASSENGER_PASSWORD_SET", "PASSENGER_LOGIN_FAILED", "PASSENGER_LOGGED_IN", "PASSENGER_REGISTERED_GOOGLE", "PASSENGER_LOGGED_IN_GOOGLE", "PASSENGER_PROFILE_COMPLETED", "ADMIN_FORGOT_PASSWORD", "ADMIN_LOGGED_IN", "ADMIN_LOGGED_OUT", "PASSENGER_ACCOUNT_DEACTIVATED", "PASSENGER_ACCOUNT_DELETED", "AGENT_CREATED_RIDER", "AGENT_UPDATED_RIDER", "ADMIN_CREATED_USER", "ADMIN_UPDATED_USER", "ADMIN_CHANGED_PASSWORD", "ADMIN_RESET_USER_PASSWORD", "ADMIN_BULK_PASSWORD_RESET", "SUPER_ADMIN_PASSWORD_CHANGED", "SUPER_ADMIN_CHANGED_USER_ACCOUNT_STATUS", "SUPER_ADMIN_UPDATED_USER", "SUPER_ADMIN_CREATED_USER", "PRODUCT_CREATED", "PRODUCT_READ", "PRODUCT_UPDATED", "PRODUCT_DELETED", "PRODUCTS_LISTED", "PRODUCTS_ACTIVATED", "PRODUCTS_DEACTIVATED", "PRODUCT_STOCK_SET_MANUALLY", "PRODUCT_STOCK_INCREMENTED", "PRODUCT_STOCK_DECREMENTED", "PRICING_CREATED", "PRICING_READ", "PRICING_UPDATED", "PRICING_DELETED", "DEVICES_CREATED", "DEVICES_BULK_CREATED", "DEVICES_ASSIGNED", "DEVICES_READ", "DEVICES_UPDATED", "DEVICES_LISTED", "DEVICES_LOCKED", "DEVICES_UNLOCKED", "DEVICES_DISABLED", "DEVICES_ENABLED", "DEVICES_REACTIVATED", "DEVICES_DELETED_SOFTLY", "DEVICES_DELETED_PERMANENTLY", "DEVICES_UNLOCKED_PERMANENTLY", "DEVICES_REPOSSESSED", "SUPER_ADMIN_LOCKED_ALL_DEVICES", "DEVICE_PAYMENT_PLAN_CREATED", "DEVICE_PAYMENT_PLAN_READ", "DEVICE_PAYMENT_PLAN_UPDATED", "DEVICE_PAYMENT_PLAN_MARKED_DEFAULTED", "DEVICE_PAYMENT_PLAN_SOFT_DELETED", "DEVICE_PAYMENT_PLAN_DELETED_PERMANENTLY", "PAYMENT_RECORDED", "PAYMENT_READ", "PAYMENTS_LISTED", "TRANSACTION_READ", "TRANSACTIONS_LISTED", "EVENT_LOG_READ", "EVENT_LOGS_LISTED", "SECURITY_CLEARANCE_MANAGED", "DEVICE_LOCK_OVERRIDDEN", "SESSION_EXTENDED", "APP_SPECS_CREATED", "APP_SPECS_UPDATED", "APP_SPECS_ACTIVATED"]; export type EventAction = (typeof EVENT_ACTIONS)[number]; export interface EventLogAttributes { id: string; actorType: UserRole; actorId: string | null; action: EventAction; entity: string; entityId: string | null; metadata: Record; ipAddress: string | null; userAgent: string | null; deviceSession?: DeviceSessionPayload | null; authTokenVersion?: number; createdAt: Date; actor?: User; } export interface EventLogCreationAttributes extends Omit { id?: string; metadata?: Record; actorType: UserRole; deviceSession?: DeviceSessionPayload | null; authTokenVersion?: number; } export declare class EventLog extends Model, InferCreationAttributes> implements EventLogAttributes { id: CreationOptional; actorType: UserRole; actorId: CreationOptional; action: EventAction; entity: string; entityId: CreationOptional; metadata: CreationOptional>; ipAddress: CreationOptional; userAgent: CreationOptional; deviceSession: CreationOptional; authTokenVersion: CreationOptional; readonly createdAt: CreationOptional; actor?: NonAttribute; static initialize(sequelize: any): void; static associate(models: Record>): void; static logEvent(data: Omit): Promise; static getUserEvents(userId: string, limit?: number): Promise; static getEntityEvents(entity: string, entityId: string, limit?: number): Promise; getSummary(): string; } export type EventLogModel = typeof EventLog;