import { Model, InferAttributes, InferCreationAttributes, CreationOptional, NonAttribute, ModelStatic } from "vr-migrations"; import type { User } from "./user.models"; export declare const USER_ROLES: readonly ["RIDER", "PASSENGER", "ADMIN", "AGENT", "SUPER_ADMIN"]; export type UserRole = (typeof USER_ROLES)[number]; export declare enum Permission { READ_USER = "READ_USER", UPDATE_USER = "UPDATE_USER", UPDATE_ADMIN_PROFILE = "UPDATE_ADMIN_PROFILE", UPDATE_AGENT_PROFILE = "UPDATE_AGENT_PROFILE", UPDATE_SUPER_ADMIN_PROFILE = "UPDATE_SUPER_ADMIN_PROFILE", LIST_USERS = "LIST_USERS", CREATE_PRODUCT = "CREATE_PRODUCT", READ_PRODUCT = "READ_PRODUCT", UPDATE_PRODUCT = "UPDATE_PRODUCT", DELETE_PRODUCT = "DELETE_PRODUCT", LIST_PRODUCTS = "LIST_PRODUCTS", ASSIGN_DEVICE = "ASSIGN_DEVICE", READ_DEVICE = "READ_DEVICE", UPDATE_DEVICE = "UPDATE_DEVICE", LIST_DEVICES = "LIST_DEVICES", REPOSSESS_DEVICE = "REPOSSESS_DEVICE", CREATE_DEVICE_PAYMENT_PLAN = "CREATE_DEVICE_PAYMENT_PLAN", READ_DEVICE_PAYMENT_PLAN = "READ_DEVICE_PAYMENT_PLAN", UPDATE_DEVICE_PAYMENT_PLAN = "UPDATE_DEVICE_PAYMENT_PLAN", MARK_PAYMENT_DEFAULT = "MARK_PAYMENT_DEFAULT", CREATE_PAYMENT = "CREATE_PAYMENT", READ_PAYMENT = "READ_PAYMENT", LIST_PAYMENTS = "LIST_PAYMENTS", READ_TRANSACTION = "READ_TRANSACTION", LIST_TRANSACTIONS = "LIST_TRANSACTIONS", READ_EVENT_LOG = "READ_EVENT_LOG", LIST_EVENT_LOGS = "LIST_EVENT_LOGS", MANAGE_SECURITY_CLEARANCE = "MANAGE_SECURITY_CLEARANCE", OVERRIDE_DEVICE_LOCK = "OVERRIDE_DEVICE_LOCK" } export interface SecurityClearanceAttributes { id: string; role: UserRole; description: string | null; level: number; permissions: Permission[]; isDefault: boolean; createdAt: Date; updatedAt: Date; users?: User[]; } export interface SecurityClearanceCreationAttributes extends Omit { id?: string; permissions?: Permission[]; isDefault?: boolean; description?: string | null; } export declare class SecurityClearance extends Model, InferCreationAttributes> implements SecurityClearanceAttributes { id: CreationOptional; role: UserRole; description: CreationOptional; level: number; permissions: CreationOptional; isDefault: CreationOptional; createdAt: CreationOptional; updatedAt: CreationOptional; users?: NonAttribute; static initialize(sequelize: any): void; static associate(models: Record>): void; hasPermission(permission: Permission): boolean; addPermission(permission: Permission): Promise; removePermission(permission: Permission): Promise; setAsDefault(): Promise; removeAsDefault(): Promise; getRoleDisplayName(): string; static getDefaultClearance(): Promise; static findByRole(role: UserRole): Promise; } export type SecurityClearanceModel = typeof SecurityClearance;