import { EncoderDecoder } from '@iotize/common/converter/api';
import { ModbusOptions, TargetService } from '@iotize/tap/service/impl/target';
import { KeyTypeType } from '../../utility/editable-data-stream';
import { AbstractVariable } from '../abstract-variable-stream';
declare type SubTargetService = Pick<TargetService, 'modbusRead' | 'modbusWrite'>;
export declare namespace ModbusAccessVariable {
    interface InstanceOptions<DataType = Uint8Array> {
        converter?: EncoderDecoder<DataType, Uint8Array>;
        targetService: SubTargetService;
        config: ModbusOptions;
    }
}
export declare class ModbusAccessVariable<DataType, KeyType extends KeyTypeType> extends AbstractVariable<DataType, KeyType> {
    id: KeyType;
    private context;
    get converter(): {
        encode: (v: any) => any;
        decode: (v: any) => any;
    } | EncoderDecoder<DataType, Uint8Array>;
    get config(): ModbusOptions;
    constructor(id: KeyType, context: ModbusAccessVariable.InstanceOptions<DataType>);
    readRawInner(): Promise<Uint8Array>;
    writeRaw(value: Uint8Array): Promise<void>;
}
export {};
