import type { types } from "@aas-core-works/aas-core3.0rc02-typescript"; type ConnectionType = "ON_DEMAND" | "PERMANENT"; export type OnResponseCallback = (response: any) => void export default abstract class InterfaceConnectionObject { protected abstract readonly name: string; protected abstract readonly uriProtocol: string[]|string; protected abstract readonly connectionType: ConnectionType; protected abstract readonly supportsSubscriptions: boolean; protected config: ConfigInterface; private onResponseCallback: OnResponseCallback; public constructor(config: ConfigInterface, onResponseCallback: OnResponseCallback) { this.config = config; this.onResponseCallback = onResponseCallback; } public abstract connect(): boolean; public abstract disconnect(): void; public abstract readProperty(prop: types.Property): void; public abstract writeProperty(prop: types.Property, value: any): void; public abstract observeProperty(prop: types.Property, callback: (value: any) => void): boolean; public abstract callActionSync(action: types.Operation, args: types.OperationVariable[]): any; public abstract callActionAsync(action: types.Operation, args: types.OperationVariable[]): Promise; public abstract readAsyncActionResponse(action: types.Operation): Promise; public abstract subscribeEvent(callback: (event: types.BasicEventElement) => void): boolean; public abstract unsubscribeEvent(): void; }