import type { ISetChange, INotifySetChanged } from '../../collections'; import { ValidationTrigger } from './ValidationTrigger'; /** * Represents the set changed validation trigger configuration. * @template TItem The type of items the set contains. * @template TSet The set type that may trigger validations. */ export interface ISetChangedValidationTriggerConfig = INotifySetChanged> { /** * Gets the set that may trigger a validation. */ readonly set: TSet; /** * Optional, a guard method which controls when a validation should be triggered. * @param set The set that changed. * @param setChange The set change. */ shouldTriggerValidation?(set: TSet, setChange: ISetChange): boolean; } /** * Represents a set changed validation trigger. Whenever the set changes a validation may be triggered. * @template TItem The type of items the set contains. * @template TSet The set type that may trigger validations. */ export declare class SetChangedValidationTrigger = INotifySetChanged> extends ValidationTrigger { private readonly _setChangedEventHandler; /** * Initializes a new instance of the {@linkcode SetChangedValidationTrigger} class. * @param config The validation trigger config. */ constructor(config: ISetChangedValidationTriggerConfig); /** * Subscribes to set changes. */ protected subscribeToTarget(): void; /** * Unsubscribes from set changes. */ protected unsubscribeFromTarget(): void; }