import type { AellaFilterDefinition } from './filter-bar.models'; import * as i0 from "@angular/core"; /** * FilterBarStore - Local state management for filter-bar component * * Implements copy-on-write pattern: * - Creates a working copy (draft) of input filters * - Each field holds its own model state * - Changes only apply to draft until explicitly committed * - Cancel restores original state without affecting parent * * Data Flow: * 1. Parent provides [aellaFilters] input → Store creates draft copy * 2. User edits filters → Draft state updates * 3. User clicks Apply → Draft commits to parent via output event * 4. User clicks Cancel → Draft resets to original state */ export declare class FilterBarStore { private readonly _originalFilters; private readonly _draftFilters; private readonly _modifiedFields; readonly originalFilters: import("@angular/core").Signal; readonly draftFilters: import("@angular/core").Signal; readonly modifiedFields: import("@angular/core").Signal>; readonly hasChanges: import("@angular/core").Signal; readonly getDraftFilter: import("@angular/core").Signal<(field: string) => AellaFilterDefinition | undefined>; readonly isFieldModified: import("@angular/core").Signal<(field: string) => boolean>; /** * Initialize store with filters from parent component * Creates deep copy to prevent mutation of original */ setOriginalFilters(filters: AellaFilterDefinition[]): void; /** * Update a draft filter's included values * * For range filters: Accepts nested array format: * - [[from, to]] = range only * - [[from, to], discrete1, discrete2, ...] = range + discrete values * - [value1, value2, ...] = discrete values only * * For other filters: All values go into included array as-is * Marks field as modified */ updateFilterIncluded(field: string, included: (string | number | boolean | [number, number] | [string, string])[]): void; /** * Update a draft filter's excluded values * For range filters: All values are discrete excluded values (range can't be excluded) * For other filters: All values go into excluded array * Marks field as modified */ updateFilterExcluded(field: string, excluded: (string | number | boolean)[]): void; /** * Update a draft filter's range values (from/to) * Used for number-range and number-range-slider filters * Encodes range as [[from, to], ...existingDiscreteValues] */ updateFilterRange(field: string, from: number, to: number): void; /** * Update entire draft filter with new model * Used when FilterChipComponent emits complete updated filter */ updateDraftFilter(updatedFilter: AellaFilterDefinition): void; /** * Add a new draft filter * Used when user adds a filter via property selector */ addDraftFilter(filter: AellaFilterDefinition): void; /** * Remove a draft filter * Marks field as modified */ removeDraftFilter(field: string): void; /** * Reset draft state to original * Used on Cancel - discards all changes */ resetDraft(): void; /** * Get list of modified filters for applying changes * Returns only filters that have been changed */ getModifiedFilters(): AellaFilterDefinition[]; /** * Get all draft filters (for full state replacement) */ getAllDraftFilters(): AellaFilterDefinition[]; /** * Clear all modifications after successful apply * Syncs original state to draft state */ commitChanges(): void; /** * Deep clone a single filter */ private _deepCloneFilter; /** * Deep clone array of filters */ private _deepCloneFilters; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; }