/**
 * @file src/application/services/rule-loading/RuleComposer.ts
 * @description Pure functions for composing and manipulating validation rules
 */
import { PraetorianRule, RuleConfig } from '../../../shared/types/rules';
/**
 * @interface RuleCompositionOptions
 * @description Options for rule composition
 */
export interface RuleCompositionOptions {
    includeCoreRules?: boolean;
    validateRules?: boolean;
}
/**
 * Composes rules from configuration
 * @param baseRules - Base rules to start with
 * @param config - Rule configuration
 * @param options - Composition options
 * @returns Composed rules
 */
export declare const composeRules: (baseRules: PraetorianRule[], config: RuleConfig, options?: RuleCompositionOptions) => PraetorianRule[];
/**
 * Adds custom rules to existing rules
 * @param existingRules - Existing rules
 * @param customRules - Custom rules to add
 * @returns Combined rules
 */
export declare const addCustomRules: (existingRules: PraetorianRule[], customRules: PraetorianRule[]) => PraetorianRule[];
/**
 * Applies rule overrides to existing rules
 * @param rules - Existing rules
 * @param overrides - Rule overrides
 * @returns Updated rules
 */
export declare const applyRuleOverrides: (rules: PraetorianRule[], overrides: Partial<PraetorianRule>[]) => PraetorianRule[];
/**
 * Validates loaded rules for consistency
 * @param rules - Rules to validate
 * @returns Validation warnings
 */
export declare const validateLoadedRules: (rules: PraetorianRule[]) => string[];
/**
 * Validates rule-specific properties
 * @param rule - Rule to validate
 * @returns Validation warnings for this rule
 */
export declare const validateRuleSpecificProperties: (rule: PraetorianRule) => string[];
/**
 * Gets rules by category
 * @param rules - Rules to filter
 * @param category - Category to filter by
 * @returns Filtered rules
 */
export declare const getRulesByCategory: (rules: PraetorianRule[], category: string) => PraetorianRule[];
/**
 * Gets rules by tags
 * @param rules - Rules to filter
 * @param tags - Tags to filter by
 * @returns Filtered rules
 */
export declare const getRulesByTags: (rules: PraetorianRule[], tags: string[]) => PraetorianRule[];
/**
 * Gets rules by severity
 * @param rules - Rules to filter
 * @param severity - Severity to filter by
 * @returns Filtered rules
 */
export declare const getRulesBySeverity: (rules: PraetorianRule[], severity: string) => PraetorianRule[];
/**
 * Gets enabled rules only
 * @param rules - Rules to filter
 * @returns Enabled rules
 */
export declare const getEnabledRules: (rules: PraetorianRule[]) => PraetorianRule[];
/**
 * Gets disabled rules only
 * @param rules - Rules to filter
 * @returns Disabled rules
 */
export declare const getDisabledRules: (rules: PraetorianRule[]) => PraetorianRule[];
/**
 * Gets unique categories from rules
 * @param rules - Rules to analyze
 * @returns Array of unique categories
 */
export declare const getUniqueCategories: (rules: PraetorianRule[]) => string[];
/**
 * Gets unique tags from rules
 * @param rules - Rules to analyze
 * @returns Array of unique tags
 */
export declare const getUniqueTags: (rules: PraetorianRule[]) => string[];
//# sourceMappingURL=RuleComposer.d.ts.map