export interface RoleResolverContext { $claims: Record; $oidc?: { idToken: Record; userInfo: Record; }; $saml?: { attributes: Record; }; $provider: 'oidc' | 'saml' | 'ldap'; $project?: ProjectInfo; } export interface RoleMappingRule { id: string; expression: string; role: string; projectId?: string; enabled: boolean; description?: string; } export interface RoleMappingConfig { instanceRoleRules: RoleMappingRule[]; projectRoleRules: RoleMappingRule[]; fallbackInstanceRole: string; } export interface ResolvedInstanceRole { role: string; matchedRuleId: string | null; expression: string | null; isFallback: boolean; } export interface ResolvedProjectRole { projectId: string; role: string; matchedRuleId: string; expression: string; } export interface ResolvedRoles { instanceRole: ResolvedInstanceRole; projectRoles: Map; } export interface ProjectInfo { id: string; name: string; type: 'personal' | 'team'; description: string | null; }