import { CategoryConfig, FormData, FormContext, EnhancedCalculationResult, ValidationResult, ZakatCalculationResult } from "./types"; export declare abstract class ZakatCalculator { protected config: CategoryConfig; protected configVersion: string; constructor(category: string); /** * Main calculation method - validates and calculates */ calculate(formData: FormData, context: FormContext): EnhancedCalculationResult; /** * Validates form data against configuration */ validate(formData: FormData): ValidationResult; /** * Validates a single field */ validateField(fieldName: string, value: any, formData: FormData): ValidationResult; /** * Gets validation error for a specific field */ getFieldError(fieldName: string, formData: FormData): string | null; /** * Checks if a field should be visible */ isFieldVisible(fieldName: string, formData: FormData): boolean; /** * Gets visible fields based on current form data */ getVisibleFields(formData: FormData): import("./types").FormField[]; /** * Abstract method for specific calculation logic */ protected abstract performCalculation(formData: FormData, context: FormContext): ZakatCalculationResult; /** * Checks if data meets nisab requirements */ protected checkNisab(value: number, context: FormContext): boolean; /** * Gets appropriate zakat rate */ protected getZakatRate(context: FormContext, specialRateKey?: string): number; /** * Creates enhanced result with metadata */ private createEnhancedResult; /** * Creates error result when validation fails */ private createErrorResult; /** * Gets field configuration */ getFieldConfig(fieldName: string): import("./types").FormField | undefined; /** * Gets all field configurations */ getAllFields(): import("./types").FormField[]; /** * Gets category configuration */ getCategoryConfig(): CategoryConfig; /** * Formats currency values for display */ protected formatCurrency(amount: number): string; /** * Formats weight values for display */ protected formatWeight(amount: number, unit?: string): string; /** * Formats percentage for display */ protected formatPercentage(rate: number): string; /** * Creates breakdown item */ protected createBreakdownItem(label: string, value: number | string): { label: string; value: string | number; }; /** * Validates nisab requirement and creates appropriate breakdown */ protected validateNisabBreakdown(actualValue: number, actualValueFormatted: string, context: FormContext): { meetsNisab: boolean; breakdown: any[]; }; } export { ZakatCalculator as BaseZakatCalculator };