import { NodeClass } from "node-opcua-data-model"; interface IEventData { source: string; } interface DataValue { value: number; } interface NumericRange { start: number; end: number; } export interface BaseNodeEvents { dispose: () => void; event: (attribute: IEventData) => void; } export interface UAObjectEvents extends BaseNodeEvents { Value_changed: (attribute: DataValue) => void; DisplayName_changed: (attribute: DataValue) => void; Description_changed: (attribute: DataValue) => void; BrowseName_changed: (attribute: DataValue) => void; RolePermissions_changed: (attribute: DataValue) => void; AccessRestrictions_changed: (attribute: DataValue) => void; } export type ListenerSignature = { [E in keyof L]: (...args: any[]) => any; }; export interface ITypedEventEmitter> { on(event: K, listener: T[K]): this; once(event: K, listener: T[K]): this; emit(event: K, ...args: Parameters): this; off(event: K, listener: T[K]): this; } export declare class TypedEventEmitter> implements ITypedEventEmitter { private emitter; on(event: K, listener: T[K]): this; once(event: K, listener: T[K]): this; emit(event: K, ...args: Parameters): this; off(event: K, listener: T[K]): this; } interface IAddressSpace { str: string; } export interface BaseNode = BaseNodeEvents> extends ITypedEventEmitter { readonly nodeClass?: NodeClass; get addressSpace(): IAddressSpace; } export declare abstract class BaseNodeImpl = BaseNodeEvents> extends TypedEventEmitter implements BaseNode { get addressSpace(): IAddressSpace; private _addressSpace; } export interface UAObject = UAObjectEvents> extends BaseNode { nodeClass: NodeClass.Object; someUAObjectMethod(): void; } export declare class UAObjectImpl = UAObjectEvents> extends BaseNodeImpl implements UAObject { nodeClass: NodeClass.Object; someUAObjectMethod(): void; } export interface UAVariableEvents extends BaseNodeEvents { value_changed: (newDataValue: DataValue, index_range?: NumericRange | null) => void; semantic_changed: () => void; trucmuch: (newDataValue: DataValue, index_range?: NumericRange | null) => void; } export interface UAVariable = UAVariableEvents> extends BaseNode { nodeClass: NodeClass.Variable; someUAVariableMethod(): void; } export declare class UAVariableImpl = UAVariableEvents> extends BaseNodeImpl implements UAVariable { nodeClass: NodeClass.Variable; someUAVariableMethod(): void; } export {};