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 variablesToBeOpened;
    private variablesToBeClosed;
    private variableValueCache;
    private variableStateObservers;
    private variableStatesChangedSubscription;
    private variableStateCache;
    private variableStatesToBeOpened;
    private variableStatesToBeClosed;
    private alarmObservers;
    private alarmChangedSubscription;
    constructor(remoteVariableProtocol: RemoteVariableProtocol, logger: LoggerService);
    private doAlarmChanged;
    private doVariableValuesChanged;
    private doVariableStatesChanged;
    subscribeVariableStates(variableNames: string[]): Observable<VariableState[]>;
    subscribeVariableState(variableName: string): Observable<VariableState>;
    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[]>;
    dispose(): void;
}
