import { IBaseDtoInput, IBaseDtoOutput } from './base';
import { RoleDomain, PersonRole } from '../core';
/**
 * Status of a role assignment
 */
export type RoleAssignmentStatus = 'active' | 'revoked' | 'expired';
/**
 * IRoleAssignmentDto - Input type for role assignment
 */
export interface IRoleAssignmentDto extends IBaseDtoInput {
    userId: string;
    role: PersonRole;
    domain: RoleDomain;
    contextId?: string;
    assignedBy?: string;
    expiresAt?: number;
    status?: RoleAssignmentStatus;
    revokedAt?: number;
    revokedBy?: string;
    notes?: string;
}
/**
 * IRoleAssignment - Serialized role assignment structure
 */
export interface IRoleAssignment extends IBaseDtoOutput {
    userId: string;
    role: PersonRole;
    domain: RoleDomain;
    contextId: string | null;
    assignedBy: string | null;
    expiresAt: number | null;
    status: RoleAssignmentStatus;
    revokedAt: number | null;
    revokedBy: string | null;
    notes: string | null;
}
