import { Predicate } from "./models"; import { AbstractStore } from "./AbstractStore"; import { EStore } from "./EStore"; export declare class Slice extends AbstractStore { label: string; predicate: Predicate; eStore: EStore; entries: Map; /** * perform initial notification to all observers, * such that operations like {@link combineLatest}{} * will execute at least once. * * @param label The slice label * @param predicate The slice predicate * @param eStore The EStore instance containing the elements considered for slicing * * @example * ``` * //Empty slice * new Slice(Todo.COMPLETE, todo=>!todo.complete); * * //Initialized slice * let todos = [new Todo(false, "You complete me!"), * new Todo(true, "You completed me!")]; * new Slice(Todo.COMPLETE, todo=>!todo.complete, todos); * ``` */ constructor(label: string, predicate: Predicate, eStore: EStore); /** * Add the element if it satisfies the predicate * and notify subscribers that an element was added. * * @param e The element to be considered for slicing */ post(e: E | E[]): void; /** * Add the elements if they satisfy the predicate * and notify subscribers that elements were added. * * @param e The element to be considered for slicing */ postN(...e: E[]): void; /** * Add the elements if they satisfy the predicate * and notify subscribers that elements were added. * * @param e The element to be considered for slicing */ postA(e: E[]): void; /** * Delete an element from the slice. * * @param e The element to be deleted if it satisfies the predicate */ delete(e: E | E[]): void; /** * @param e The elements to be deleted if it satisfies the predicate */ deleteN(...e: E[]): void; /** * @param e The elements to be deleted if they satisfy the predicate */ deleteA(e: E[]): void; /** * Update the slice when an Entity instance mutates. * * @param e The element to be added or deleted depending on predicate reevaluation */ put(e: E | E[]): void; /** * Update the slice with mutated Entity instances. * * @param e The elements to be deleted if it satisfies the predicate */ putN(...e: E[]): void; /** * @param e The elements to be put */ putA(e: E[]): void; /** * Resets the slice to empty. */ reset(): void; /** * Utility method that applies the predicate to an array * of entities and return the ones that pass the test. * * Used to create an initial set of values * that should be part of the `Slice`. * * @param p * @param e * @return The the array of entities that pass the predicate test. */ test(p: Predicate, e: E[]): E[]; }