import type { ExtensionObject } from "node-opcua-extension-object"; import { type NodeId } from "node-opcua-nodeid"; import { type VariantOptions } from "node-opcua-variant"; import type { ParserLike, ReaderStateParserLike } from "node-opcua-xml2json"; import { XmlExtensionObjectFragment } from "../nodeset_record.js"; interface Parser { parent?: Parser; obj?: { nodeId: NodeId; }; } export interface ListOfTParser extends Parser { listData: T[]; parent: Parser; parser: { [key: string]: ReaderStateParserLike & { value?: T; nodeId?: NodeId | string; }; }; } /** an element of an ExtensionObject array as the reader leaves it: decoded, or waiting as its XML */ export type ExtensionObjectOrFragment = ExtensionObject | XmlExtensionObjectFragment; export interface ListOfExtensionObjectParser extends ListOfTParser { listExtensionObject: ExtensionObjectOrFragment[]; parser: { ExtensionObject: ParserLike; }; } /** * an ExtensionObject value whose XML the reader could not decode holds a placeholder; a value * used where only decoded objects can go (a Variant field of a structure) drops it, as before */ export declare function withoutXmlFragments(options: VariantOptions): VariantOptions; /** * the reader of a `` element: `setValue` receives the value as `VariantOptions`, with the * ids it holds resolved through `translateNodeId`; an extension object the reader cannot decode * on the spot is left in the value as an {@link XmlExtensionObjectFragment}, for the consumer of * the record to decode once the data types are known */ export declare function makeVariantReader(setValue: (self: T, data: VariantOptions) => void, translateNodeId: (nodeId: string) => NodeId): ReaderStateParserLike; export {};