import { Node } from "../../../NodeSystem/Node.js";
import { NodeItem } from "../../../NodeSystem/NodeItem.js";
import { Instruction } from "../Instruction.js";
import { INodeSystemInstruction } from "./INodeSystemInstruction.js";
import { INodeSystemInstructionOptions } from "./INodeSystemInstructionOptions.js";
/**
 * Represents an instruction which provides nodes.
 *
 * @template TItem
 * The type of the nodes.
 *
 * @template TOptions
 * The type of the options for generating nodes.
 */
export declare abstract class NodeSystemInstruction<TItem extends NodeItem, TOptions> extends Instruction implements INodeSystemInstruction<TItem> {
    /**
     * The nodes provides by the instruction.
     */
    private nodes;
    /**
     * Initializes a new instance of the {@link NodeSystemInstruction `NodeSystemInstruction<TItem, TOptions>`} class.
     *
     * @param options
     * The options for generating the object.
     *
     * @param generator
     * The generator-function for generating sub-nodes.
     */
    constructor(options: INodeSystemInstructionOptions<TOptions>, generator: (node: Node<TItem, TOptions>, options: TOptions) => TItem);
    /**
     * @inheritdoc
     */
    get Nodes(): Array<Node<TItem, TOptions>>;
    /**
     * @inheritdoc
     */
    get ObjectsByID(): Record<string, unknown>;
}
