import { type Predicate } from "@sealcode/ts-predicates"; import type { ActionName } from "../../../action.js"; import { Field, Context, type ValidationResult, CollectionItem } from "../../../main.js"; export type ArrayStorageInput = ContentType[]; export declare abstract class ArrayStorage> extends Field> { value_predicate: Predicate; constructor(value_predicate: Predicate); abstract getEmptyElement(context: Context): Promise; isOldValueSensitive(_: ActionName): boolean; isProperElement(_context: Context, element: unknown, _index: number, item: CollectionItem | undefined): Promise<{ valid: boolean; reason: string; }>; validateElements(context: Context, elements: unknown[], item: CollectionItem | undefined): Promise<{ valid: boolean; reason: string; }>; isProperValue(context: Context, new_value: unknown, old_value: T[] | undefined, _new_value_blessing_token: symbol | null, item: CollectionItem | undefined): Promise; encode(_context: Context, value: ArrayStorageInput | null, _old_value: T[]): Promise; getMatchQuery(_context: Context, filter: T | { exact: T[]; } | { all: T[]; } | { any: T[]; }): Promise<{ [x: string]: T; $or?: undefined; } | { [x: string]: unknown[] | T[]; $or?: undefined; } | { [x: string]: { $all: unknown[] | T[]; }; $or?: undefined; } | { $or: { [x: string]: unknown; }[]; } | undefined>; }