import { SpecType } from 'pretur.spec';
import { Action, Dispatch } from 'reducible-node';
import { ValidationError } from 'pretur.validation';
import { Clay, State } from './clay';
import { Record } from './Record';
export declare class Set<T extends SpecType> implements Clay<Set<T>> {
    readonly identifier: symbol;
    readonly original: this;
    readonly state: State;
    readonly items: Record<T>[];
    readonly error: ValidationError;
    constructor(items: Record<T>[], error?: ValidationError, state?: State, original?: Set<T>, identifier?: symbol);
    readonly modified: boolean;
    readonly valid: boolean;
    reduce(action: Action<any>): this;
    clear(dispatch: Dispatch): void;
    replace(dispatch: Dispatch, by: this): void;
    setError(dispatch: Dispatch, error: ValidationError): void;
    setState(dispatch: Dispatch, state: State): void;
    add(dispatch: Dispatch, item: Record<T>): void;
}
