import { IAccessor } from '@iotize/common/data-accessor';
import { ApplicationConfig, BleProtocolConfig, BundleConfig, CloudConfig, HostProtocolConfig, JvmConfig, LoraProtocolConfig, MCUTargetProtocolConfig, ModbusConfig, MqttProtocolConfig, NfcProtocolConfig, S3PConfig, SerialConfig, SpecialProfileConfig, TapConfig, TapnpassProtocolConfigurationConfig, TapOptions, TargetConfig, UserConfig, VariableConfig, WifiProtocolConfig } from '@iotize/tap/config/schema/v1';
import { TapnpassProtocolConfigurationConverter } from '@iotize/tap/service/all';
export declare namespace IoTizeStudioToTapConfigConverter {
    interface Options {
        /**
         * If strict mode is enabled, it will throw an
         * error when an invalid value for the configuration is detected.
         * If not enabled, errors will be stored as warnings
         */
        strict: boolean;
    }
    interface Host {
        getFileContent(path: string): Uint8Array;
    }
}
export declare function convertIoTizeStudioConfigToTapConfig(fileContent: string): TapConfig;
export declare function decodeInitialVariableValue(value: string): string | number | (string | number)[] | undefined;
/**
 * Convert an IoTize studio configuration file to TapConfiguratorConfig
 *
 * TODO it's a partial implementation, some keys need to be implemented.
 * Not exaustive list of not supported keys:
 *  - JVM code
 *  - Lora config
 *
 */
export declare class IoTizeStudioToTapConfigConverter {
    options: IoTizeStudioToTapConfigConverter.Options;
    host?: IoTizeStudioToTapConfigConverter.Host | undefined;
    /**
     * Errors reported during convertion when strict mode is disabled
     */
    readonly warnings: {
        message: string;
        error: Error;
    }[];
    modbusSerialConfigConverter: TapnpassProtocolConfigurationConverter;
    constructor(options?: IoTizeStudioToTapConfigConverter.Options, host?: IoTizeStudioToTapConfigConverter.Host | undefined);
    convert(root: IAccessor): TapConfig;
    private reportError;
    readMqttConfig(appConfig: IAccessor | undefined): MqttProtocolConfig | undefined;
    readLoraConfig(appConfigNode: IAccessor): LoraProtocolConfig;
    readBleConfig(appConfigNode: IAccessor): BleProtocolConfig;
    readNfcConfig(appConfigNode: IAccessor): NfcProtocolConfig;
    readWifiConfig(wifiConfigNode: IAccessor | undefined): WifiProtocolConfig | undefined;
    private toAuthorizedHostProtocols;
    readWirelessOptionsConfig(appConfigNode: IAccessor): {
        inactivityTimeout: number;
        authorizedProtocols: HostProtocolConfig[] | undefined;
    };
    readJvmConfig(config: IAccessor): JvmConfig | undefined;
    readFileContentAsHexString(path: string | undefined): string | undefined;
    readCloudConfig(appConfigNode: IAccessor): CloudConfig;
    readApplicationConfig(appConfigNode: IAccessor): ApplicationConfig;
    readTapConfig(appConfigNode: IAccessor): TapOptions;
    readTargetConfig(appConfig: IAccessor): TargetConfig | undefined;
    readTargetProtocol(appConfig: IAccessor): "NONE" | "SWD" | "S3P" | "MODBUS" | "DIRECT_IO" | "SERIAL" | "CUSTOM" | "JTAG" | undefined;
    readTapnpassTargetProtocol(appConfig: IAccessor): {
        type: string;
        config: TapnpassProtocolConfigurationConfig;
    };
    readTapnpassTargetProtocolConfig(appConfig: IAccessor): TapnpassProtocolConfigurationConfig;
    readMCUTargetProtocol(appConfig: IAccessor): MCUTargetProtocolConfig | undefined;
    readSerialProtocolConfig(appConfig: IAccessor): SerialConfig | undefined;
    readS3PProtocolConfig(appConfig: IAccessor): S3PConfig;
    readModbusProtocolConfig(appConfig: IAccessor): {
        modbus: ModbusConfig;
        serial: SerialConfig;
    } | undefined;
    toEnumKey<ValueType extends string | number | symbol, MappingType>(value: ValueType, mapping: MappingType): keyof MappingType;
    readProfilesConfig(profiles: IAccessor[]): (UserConfig | SpecialProfileConfig)[];
    readUserKey(xmlProfile: IAccessor): string | undefined;
    readUserProfile(subProfilesConfig: IAccessor[]): UserConfig[];
    readBundlesConfig(xmlBundles: IAccessor[]): BundleConfig[];
    private readSpecialFeatures;
    readVariablesConfig(variables: IAccessor[]): VariableConfig[];
}
