import BaseDto from '../base/BaseDto';
import { IRoleAssignmentDto, IRoleAssignment, RoleAssignmentStatus } from '../../../types/roleAssignment';
import { RoleDomain, PersonRole } from '../../enums';
/**
 * RoleAssignmentDto
 *
 * DTO class for managing user roles within scoped domains and contexts.
 * Supports auditing, expiration, and status tracking.
 */
declare class RoleAssignmentDto extends BaseDto<IRoleAssignmentDto> {
    protected _userId: string;
    protected _role: PersonRole;
    protected _domain: RoleDomain;
    protected _contextId?: string;
    protected _assignedBy?: string;
    protected _expiresAt?: number;
    protected _status: RoleAssignmentStatus;
    protected _revokedAt?: number;
    protected _revokedBy?: string;
    protected _notes?: string;
    constructor(data: IRoleAssignmentDto);
    serialize(): Promise<IRoleAssignment>;
    get userId(): string;
    get role(): PersonRole;
    get domain(): RoleDomain;
    get contextId(): string | undefined;
    get assignedBy(): string | undefined;
    get expiresAt(): number | undefined;
    get status(): RoleAssignmentStatus;
    get revokedAt(): number | undefined;
    get revokedBy(): string | undefined;
    get notes(): string | undefined;
}
export default RoleAssignmentDto;
