/**
 * User Role Definitions
 */
export declare enum UserRole {
    ADMIN = "admin",
    TASK_MANAGER = "task_manager",
    PROJECT_LEAD = "project_lead",
    TEAM_MEMBER = "team_member",
    VIEWER = "viewer"
}
/**
 * Permission Types
 */
export declare enum Permission {
    CREATE_TASK = "task.create",
    READ_TASK = "task.read",
    UPDATE_TASK = "task.update",
    DELETE_TASK = "task.delete",
    ASSIGN_TASK = "task.assign",
    CREATE_PROJECT = "project.create",
    READ_PROJECT = "project.read",
    UPDATE_PROJECT = "project.update",
    DELETE_PROJECT = "project.delete",
    MANAGE_PROJECT_MEMBERS = "project.manage_members",
    MANAGE_USERS = "user.manage",
    VIEW_USERS = "user.view",
    MANAGE_WORKFLOWS = "workflow.manage",
    TRIGGER_TRANSITIONS = "workflow.trigger",
    VIEW_REPORTS = "reports.view",
    EXPORT_REPORTS = "reports.export",
    MANAGE_SYSTEM = "system.manage",
    VIEW_AUDIT_LOGS = "audit.view"
}
/**
 * User Context Interface
 */
export interface UserContext {
    id: string;
    email: string;
    role: UserRole;
    permissions: Permission[];
    projects?: string[];
    teams?: string[];
}
/**
 * RBAC Service
 * Handles role-based access control and permission management
 */
export declare class RBACService {
    private client;
    private userCache;
    private cacheTimeout;
    constructor();
    private initializeClient;
    /**
     * Get user context with role and permissions
     */
    getUserContext(userId: string): Promise<UserContext>;
    /**
     * Check if user has a specific permission
     */
    hasPermission(userId: string, permission: Permission): Promise<boolean>;
    /**
     * Check if user has any of the specified permissions
     */
    hasAnyPermission(userId: string, permissions: Permission[]): Promise<boolean>;
    /**
     * Check if user has all of the specified permissions
     */
    hasAllPermissions(userId: string, permissions: Permission[]): Promise<boolean>;
    /**
     * Check if user can access a specific task
     */
    canAccessTask(userId: string, taskId: string): Promise<boolean>;
    /**
     * Check if user can modify a specific task
     */
    canModifyTask(userId: string, taskId: string): Promise<boolean>;
    /**
     * Verify JWT token and return user ID
     */
    verifyToken(token: string): Promise<string | null>;
    /**
     * Check if user can assign tasks
     */
    canAssignTasks(userId: string, projectId?: string): Promise<boolean>;
    /**
     * Get tasks accessible to a user
     */
    getAccessibleTasks(userId: string): Promise<any>;
    /**
     * Map Directus role to UserRole enum
     */
    private mapDirectusRole;
    /**
     * Get user's projects
     */
    private getUserProjects;
    /**
     * Get user's teams
     */
    private getUserTeams;
    /**
     * Clear user cache
     */
    clearUserCache(userId?: string): void;
    /**
     * Get all available roles
     */
    getAllRoles(): Promise<any[]>;
    /**
     * Get permissions for a role
     */
    getPermissionsForRole(role: UserRole): Permission[];
}
export declare const rbacService: RBACService;
//# sourceMappingURL=rbac.service.d.ts.map