import { Observable } from 'rxjs';
import { VariableCommunicator, VariableValue, VariableState } from '../../../communication';
import { LoggerService } from '../../../logger';
import { RemoteVariableProtocol } from './remote-variable-protocol';
export declare class RemoteVariableCommunicator implements VariableCommunicator {
    private readonly remoteVariableProtocol;
    private readonly logger;
    private observers;
    private appIdVariablesMap;
    private connectedSubscription;
    private variableValuesChangedSubscription;
    private virtualDeviceStatesChangedSubscription;
    private variablesToBeOpened;
    private variablesToBeClosed;
    private variableValueCache;
    private variableStateObservers;
    private variableStatesChangedSubscription;
    private variableStateCache;
    private variableStatesToBeOpened;
    private variableStatesToBeClosed;
    private alarmObservers;
    private alarmChangedSubscription;
    private systemVariableHandlers;
    constructor(remoteVariableProtocol: RemoteVariableProtocol, logger: LoggerService);
    private doAlarmChanged;
    private doVariableValuesChanged;
    private doVirtualDeviceStatesChanged;
    private doVariableStatesChanged;
    subscribeVariableStates(variableNames: string[]): Observable<VariableState[]>;
    subscribeVariableState(variableName: string): Observable<VariableState>;
    requestVirtualDeviceState(): Observable<void>;
    openVariables(variableNames: string[], appId?: string): Observable<VariableValue[]>;
    openVariable(variableName: string, appId?: string): Observable<VariableValue>;
    write(variableName: string, value: any): Observable<VariableValue>;
    writeWordByBit(variableName: string, index: number, value: number): Observable<VariableValue>;
    subscribeUserDeviceAlarms(appId?: string): Observable<any[]>;
    /**
     * 注册系统变量处理器
     * @param variableName 变量名（如"当前语种ID"）
     * @param getValue 获取值的函数
     * @param setValue 设置值的函数
     */
    registerSystemVariableHandler(variableName: string, getValue: () => Promise<any>, setValue: (value: any) => Promise<void>): void;
    /**
     * 通知系统变量值变化
     * 用于在系统变量值改变时通知所有订阅者
     * @param variableName 变量名
     * @param value 新值
     */
    notifySystemVariableChange(variableName: string, value: any): void;
    dispose(): void;
}
