/** * Roles Configuration Merge System * * This module provides specialized merge logic for the user roles configuration. * Unlike the generic deepMerge utility (which replaces arrays entirely), this * function implements additive merge for roles while protecting core system roles. * * Key Features: * - Core roles (member, superadmin, developer) are always present and protected * - Themes can add custom roles via `additionalRoles` * - Developer role hierarchy is always forced to 100 * - Non-developer roles cannot exceed hierarchy 99 * - Validation with console warnings (non-blocking) * * @module roles-merge */ /** * Core roles configuration (from DEFAULT_APP_CONFIG) * Contains the protected roles that cannot be removed */ export interface CoreRolesConfig { coreRoles: readonly string[]; defaultRole: string; availableRoles: readonly string[]; hierarchy: Record; displayNames: Record; descriptions: Record; } /** * Theme roles configuration (from theme app.config.ts) * Allows themes to extend the role system */ export interface ThemeRolesConfig { additionalRoles?: readonly string[]; defaultRole?: string; hierarchy?: Record; displayNames?: Record; descriptions?: Record; } /** * Merged roles configuration result * Contains core roles + theme additions with validation applied */ export interface MergedRolesConfig { coreRoles: readonly string[]; availableRoles: readonly string[]; defaultRole: string; hierarchy: Record; displayNames: Record; descriptions: Record; } /** * Merge core roles configuration with theme-specific overrides * * This function implements the extensible roles system by: * 1. Protecting core roles from removal * 2. Appending theme additionalRoles to core roles * 3. Merging hierarchy with validation (developer=100, others <=99) * 4. Merging displayNames and descriptions (theme overrides core) * 5. Validating defaultRole exists in available roles * * @param coreConfig - Core roles configuration from DEFAULT_APP_CONFIG * @param themeConfig - Optional theme roles configuration overrides * @returns Merged and validated roles configuration * * @example * ```typescript * const merged = mergeRolesConfig( * DEFAULT_APP_CONFIG.userRoles, * { additionalRoles: ['editor', 'moderator'] } * ) * // merged.availableRoles: ['member', 'superadmin', 'developer', 'editor', 'moderator'] * ``` */ export declare function mergeRolesConfig(coreConfig: CoreRolesConfig, themeConfig?: ThemeRolesConfig): MergedRolesConfig; //# sourceMappingURL=roles-merge.d.ts.map