import { RepeatRangeNodeAppearances } from '../../client/repeat/BaseRepeatRangeNode.ts';
import { RepeatRangeControlledNode } from '../../client/repeat/RepeatRangeControlledNode.ts';
import { AncestorNodeValidationState } from '../../client/validation.ts';
import { XFormsXPathNodeRange } from '../../integration/xpath/adapter/XFormsXPathNode.ts';
import { StaticElement } from '../../integration/xpath/static-dom/StaticElement.ts';
import { ControlledRepeatDefinition } from '../../parse/model/RepeatDefinition.ts';
import { GeneralParentNode } from '../hierarchy.ts';
import { EvaluationContext } from '../internal-api/EvaluationContext.ts';
import { BaseRepeatRange } from './BaseRepeatRange.ts';
export declare class RepeatRangeControlled extends BaseRepeatRange<ControlledRepeatDefinition> implements RepeatRangeControlledNode, XFormsXPathNodeRange, EvaluationContext {
    private readonly isInstanceCreation;
    private readonly countControlType;
    readonly nodeType = "repeat-range:controlled";
    readonly appearances: RepeatRangeNodeAppearances;
    readonly validationState: AncestorNodeValidationState;
    constructor(parent: GeneralParentNode, instanceNodes: readonly StaticElement[], definition: ControlledRepeatDefinition);
    private initializeControlledChildrenState;
    /**
     * Note: we do not warn about dropping "excess" repeat instances...
     *
     * - ... after the instance is fully loaded: dropping repeat instances after
     *   that point is an expected behavior of _dynamically-controlled repeats_
     *   (i.e. those defined with `jr:count`), and it does not occur for
     *   _fixed-controlled repeats_ (i.e. defined with `jr:noAddRemove`);
     *
     * - ... for dynamic (`jr:count`) repeats _in newly created form instances_, i.e. instances whose input instance
     *   nodes are derived from the _form definition_: those form-defined repeat
     *   instances are not "dropped", instead they're retained in memory to be
     *   added as count is recomputed to a larger value.
     *
     * @todo ^ it is pretty likely that retain-in-memory behavior also applies to
     * instance state which has been serialized and restored as well! In this way,
     * it's possible we're not really "dropping" those nodes, only deferring their
     * restoration. Is this what we want?
     *
     * @todo Design and produce {@link LoadFormWarnings | warnings} as values!
     */
    private warnDroppedInstanceNodes;
}
