/** * @module node-opcua-address-space.Private */ import type { UADynamicVariableArray, UAObject, UAVariable } from "node-opcua-address-space-base"; import { type QualifiedNameLike } from "node-opcua-data-model"; import { ExtensionObject } from "node-opcua-extension-object"; import type { NodeId } from "node-opcua-nodeid"; export interface CreateExtObjArrayNodeOptions { browseName: QualifiedNameLike; complexVariableType: string | NodeId; variableType: string | NodeId; indexPropertyName: string; minimumSamplingInterval?: number; } /** * * create a node Variable that contains a array of ExtensionObject of a given type */ export declare function createExtObjArrayNode(parentFolder: UAObject, options: CreateExtObjArrayNodeOptions): UADynamicVariableArray; export declare function bindExtObjArrayNode(uaArrayVariableNode: UADynamicVariableArray, variableTypeNodeId: string | NodeId, indexPropertyName: string): UAVariable; /** * add a new element in a ExtensionObject Array variable * @param options {Object} data used to construct the underlying ExtensionObject * @param uaArrayVariableNode {UAVariable} * @return {UAVariable} * */ /** * Takes the published UAVariable rather than UAVariableImpl. * * This function is exported from the package entry while UAVariableImpl is not, so naming the * implementation class here made the first overload uncallable from outside - and from the * package's own tests, which hold public types. The `instanceof UAVariableImpl` below still * narrows it at run time; that check is what decides the branch, not the declared type. */ export declare function addElement(options: UAVariable | ExtensionObject | Record, uaArrayVariableNode: UADynamicVariableArray): UAVariable; /** * */ export declare function removeElement(uaArrayVariableNode: UADynamicVariableArray, element: number | UAVariable | ((a: T) => boolean)): void;