/**
 * DO NOT EDIT
 * This file has been generated from file assets\schema\v1\tap-config.json
 */
export declare type TargetConfig = TapnpassTargetConfig | MCUTargetConfig;
export declare type PhysicalPort = "NONE" | "RS232" | "USB" | "AUTO" | "RS485";
export declare type StopBit = "ONE" | "ONE_AND_HALF" | "TWO";
export declare type BitParity = "NONE" | "ODD" | "EVEN";
export declare type HandshakeDelimiter = "NONE" | "CR" | "LF" | "CR_LF";
export declare type Handshake = "NONE" | "RTS" | "CTS" | "RTS_CTS";
export declare type MCUTargetProtocolConfig = SWDProtocolConfig | S3PProtocolConfig | ModbusProtocolConfig | DirectIOProtocolConfig | SerialProtocolConfig | GPIOProtocolConfig | CustomProtocolConfig;
export declare type S3PModeConfig = "INDEXED" | "EMULATION";
export declare type HexStringConfig = string | Uint8Array;
export declare type HostProtocolConfig = "NFC" | "BLUETOOTH" | "GSM" | "USB_RLINK" | "USB_CMISIS_DAP" | "LORA" | "WIFI" | "BLE" | "UART" | "MQTT" | "WEBSOCKET";
export declare type MqttProtocolConfig = {
    [k: string]: any;
} | {
    [k: string]: any;
};
export declare type NfcConnectionPriorityConfig = "NFC_PRIORITY" | "NFC_NON_PRIORITY";
export declare type NfcPairingModeConfig = "NO" | "MANDATORY" | "MANDATORY_FOR_LOGIN";
export declare type WifiKeyVisibility = "VISIBLE" | "HIDDEN";
export declare type NetworkModeConfig = "PEER_TO_PEER" | "NETWORK";
export declare type WifiProtocol = "B" | "G" | "N";
export declare type WifiSSIDVisibility = "VISIBLE" | "HIDDEN_FROM_SCAN" | "HIDDEN";
/**
 * Application name (name will be broadcast with BLE or WiFi)
 */
export declare type ApplicationName = string;
/**
 * Application url loaded by Tap Manager
 */
export declare type ApplicationUrl = string;
export declare type UniversalLink = string;
export declare type CloudPlatformKey = "CUSTOM" | "IOTIZE" | "IBM_BLUEMIX" | "MICROSOFT_AZURE" | "AMAZON_AWS";
export declare type LowPowerOptimizationLevelConfig = "NO" | "STANDBY" | "SHUTDOWN";
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "userKey".
 */
export declare type UserKey = HexStringConfig & any;
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "SpecialUsername".
 */
export declare type SpecialUsernameConfig = "admin" | "supervisor";
/**
 * Session lifetime in seconds
 */
export declare type SessionLifetime = number;
export declare type ProfileSalt = number;
export declare type ProfileId = number;
/**
 * Session lifetime in seconds
 */
export declare type SessionLifetime1 = number;
export declare type ProfileSalt1 = number;
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "profile".
 */
export declare type ProfileConfig = UserConfig & {
    users?: UserConfig[];
    [k: string]: any;
};
export declare type BundleName = string;
export declare type BundleId = number;
export declare type SpecialFeatureConfig = "SWD_DIRECT_ACCESS" | "SERIAL_ACCESS" | "MODBUS_DIRECT_ACCESS" | "TAPNPASS_CONTROL_ACCESS" | "SP_CODEEXEC_ACCESS";
export declare type VariableConfig = TargetVariableConfig | ModbusVariableConfig | InTapVariableConfig | GPIOVariableConfig;
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "TargetVariable".
 */
export declare type TargetVariableConfig = BaseVariableConfig & {
    dataType: VariableTypeDataConfig;
    domain: "TARGET";
    address: (number | string) & any;
    [k: string]: any;
};
export declare type VariableId = number;
export declare type VariableName = string;
export declare type Unit = string;
export declare type VariableTypeDataConfig = "BOOLEAN" | "INT8" | "INT16" | "INT32" | "UINT8" | "UINT16" | "UINT32" | "FLOAT32" | "ASCII";
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "ModbusVariable".
 */
export declare type ModbusVariableConfig = BaseVariableConfig & {
    modbusAddress: ModbusVariableAddress;
    domain?: "TARGET";
    dataType?: VariableTypeDataConfig;
    [k: string]: any;
};
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "InTapVariable".
 */
export declare type InTapVariableConfig = BaseVariableConfig & {
    domain: "IN_TAP_STATIC" | "IN_TAP_VOLATIL";
    dataType: VariableTypeDataConfig;
    value?: (HexStringConfig | number) | (HexStringConfig | number)[];
    [k: string]: any;
};
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "GPIOVariable".
 */
export declare type GPIOVariableConfig = BaseVariableConfig & {
    gpio: GPIOMappingConfig;
    [k: string]: any;
};
export declare type GPIOMappingConfig = "RST" | "TDI" | "TDO" | "SWDCK" | "SWDIO" | "SCL_FACTORYRST" | "EXT_A2" | "EXT_A3" | "EXT_A4" | "EXT_A5" | "EXT_A6" | "EXT_A7" | "EXT_A8" | "EXT_A9" | "EXT_A10" | "EXT_A11" | "EXT_B2" | "EXT_B3" | "EXT_B4" | "EXT_B5" | "EXT_B6" | "EXT_B7" | "EXT_B8" | "EXT_B9" | "EXT_B10" | "EXT_B11";
export interface TapConfiguratorConfig {
    additionalProperties?: any;
    meta?: TapConfiguratorOptions;
    config: TapConfig;
}
export interface TapConfiguratorOptions {
    version?: string;
    /**
     * Options for the configurator engine
     */
    options?: {
        /**
         * If set to true, configurator will not perform a factory reset before configuration. Values that are not written in this configuration will not be removed.
         */
        skipFactoryReset?: boolean;
        [k: string]: any;
    };
    [k: string]: any;
}
export interface TapConfig {
    version: string;
    target?: TargetConfig;
    wireless?: WirelessConfig;
    application?: ApplicationConfig;
    jvm?: JvmConfig;
    cloud?: CloudConfig;
    tap?: TapOptions;
    data?: DataConfig;
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "TapnpassTargetConfig".
 */
export interface TapnpassTargetConfig {
    type: "TAPNPASS";
    firmwareVersion?: string;
    protocol: {
        config?: TapnpassProtocolConfigurationConfig;
    };
}
export interface TapnpassProtocolConfigurationConfig {
    modbus: Modbus;
    serial: Serial;
    usb: {
        aliases: {
            /**
             * Unsigned integer on 16 bytes
             */
            vid: number;
            /**
             * Unsigned integer on 16 bytes
             */
            pid: number;
            equ: number;
        }[];
    };
}
export interface Modbus {
    slave: number;
    offsetFirstRegister: boolean;
}
export interface Serial {
    baudRate: number;
    identification: boolean;
    ledStatus: boolean;
    physicalPort: PhysicalPort;
    stopBits: StopBit;
    bitParity: BitParity;
    dataBits: "_7" | "_8" | "_9";
    handshakeDelimiter: HandshakeDelimiter;
    hardwareFlowControl: Handshake;
    timeout: number;
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "MCUTargetConfig".
 */
export interface MCUTargetConfig {
    type: "MCU";
    firmwareVersion?: string;
    protocol: MCUTargetProtocolConfig;
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "TargetConfig.Protocol.SWDConfig".
 */
export interface SWDProtocolConfig {
    type: "SWD";
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "TargetConfig.Protocol.S3PConfig".
 */
export interface S3PProtocolConfig {
    type: "S3P";
    config: S3PConfig;
}
export interface S3PConfig {
    mode: S3PModeConfig;
    /**
     * Unsigned integer on 8 bytes
     */
    delay: number;
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "TargetConfig.Protocol.ModbusConfig".
 */
export interface ModbusProtocolConfig {
    type: "MODBUS";
    config?: ModbusProtocolConfig1;
}
export interface ModbusProtocolConfig1 {
    modbus: ModbusConfig;
    serial: SerialConfig;
}
export interface ModbusConfig {
    slave: number;
    offsetFirstRegister: boolean;
}
export interface SerialConfig {
    baudRate: number;
    physicalPort?: PhysicalPort;
    stopBits: StopBit;
    bitParity: BitParity;
    dataBits: "_7" | "_8" | "_9";
    handshakeDelimiter: HandshakeDelimiter;
    hardwareFlowControl?: Handshake;
    timeout: number;
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "TargetConfig.Protocol.DirectIOConfig".
 */
export interface DirectIOProtocolConfig {
    type: "DIRECT_IO";
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "TargetConfig.Protocol.SerialConfig".
 */
export interface SerialProtocolConfig {
    type: "SERIAL";
    config?: SerialConfig;
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "TargetConfig.Protocol.GPIOConfig".
 */
export interface GPIOProtocolConfig {
    type: "GPIO";
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "TargetConfig.Protocol.CustomConfig".
 */
export interface CustomProtocolConfig {
    type: "CUSTOM";
    config?: HexStringConfig;
}
export interface WirelessConfig {
    options?: {
        /**
         * Unsigned integer on 8 bytes
         */
        inactivityTimeout?: number;
        authorizedProtocols?: HostProtocolConfig[];
    };
    protocols?: {
        ble?: BleProtocolConfig;
        lora?: LoraProtocolConfig;
        mqtt?: MqttProtocolConfig;
        nfc?: NfcProtocolConfig;
        wifi?: WifiProtocolConfig;
    };
}
export interface BleProtocolConfig {
    /**
     * True to require BLE pairing
     */
    pairing?: boolean;
    [k: string]: any;
}
export interface LoraProtocolConfig {
    config?: LoraConfig;
    ids?: HexStringConfig;
    [k: string]: any;
}
export interface LoraConfig {
    classA: boolean;
    classB: boolean;
    classC: boolean;
    dataLoggingEnabled: boolean;
    singlePacketEnabled: boolean;
}
export interface NfcProtocolConfig {
    /**
     * Unsigned integer on 16 bytes
     */
    autoLogProfileId?: number;
    connectionPriority?: NfcConnectionPriorityConfig;
    pairingMode?: NfcPairingModeConfig;
    [k: string]: any;
}
export interface WifiProtocolConfig {
    ip?: string;
    key?: string;
    keyVisibility?: WifiKeyVisibility;
    mask?: string;
    mode?: NetworkModeConfig;
    protocol?: WifiProtocol[];
    /**
     * Country code ISO 3166
     */
    countryCode?: number;
    ssid?: string;
    ssidVisibility?: WifiSSIDVisibility;
    /**
     * Signed integer on 8 bytes
     */
    txPower?: number;
    [k: string]: any;
}
/**
 * Options related to the application that communicates with this Tap
 *
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "ApplicationConfig".
 */
export interface ApplicationConfig {
    name?: ApplicationName;
    uri?: ApplicationUriConfig | ApplicationUrl;
    universalLink?: UniversalLink;
    /**
     * Product code. It can be used to identify which kind of target this Tap is linked to. It's used by multi tap configuration applications.
     */
    productCode?: string;
    data?: HexStringConfig;
}
export interface ApplicationUriConfig {
    type: "PRIMER_CLOUD_WEB_APP_URL" | "URL" | "ANDROID_APP_ID" | "PRIMER_CLOUD_CONFIG_URL" | "AAR_2";
    value: string;
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "JVMConfig".
 */
export interface JvmConfig {
    code?: HexStringConfig;
    /**
     * User profile id
     */
    profileId?: number;
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "CloudConfig".
 */
export interface CloudConfig {
    platform?: CloudPlatformKey;
    dataLog?: {
        /**
         * Unsigned integer on 32 bytes
         */
        uploadPeriod?: number;
        mqttPublishTopic?: string;
        mqttSubscribeTopic?: string;
    };
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "TapOptions".
 */
export interface TapOptions {
    certificate?: {
        privateKey?: HexStringConfig;
        publicKey?: HexStringConfig;
    };
    powerOptimization?: LowPowerOptimizationLevelConfig;
    scram?: {
        /**
         * Unsigned integer on 16 bytes
         */
        hashIteration?: number;
    };
    security?: SecurityOptionsConfig;
    time?: {
        ntpServer?: string;
        zone?: string;
    };
}
export interface SecurityOptionsConfig {
    /**
     * true if scram is activated
     */
    scramActivated?: boolean;
    /**
     * true if login is done using the hash of the password instead of the password itself
     */
    hashPassword?: boolean;
    /**
     * true to disable factory reset using hardware
     */
    disableHardwareFactoryReset?: boolean;
    /**
     * true to disable login using UID (resource /1024//5)
     */
    disableLoginWithUID?: boolean;
    /**
     * true to disable factory reset using LwM2M resource
     */
    disableResourceFactoryReset?: boolean;
}
export interface DataConfig {
    profiles?: (SpecialProfileConfig | AnonymousProfileConfig | ProfileConfig)[];
    bundles?: BundleConfig[];
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "specialprofile".
 */
export interface SpecialProfileConfig {
    key?: UserKey;
    password?: string;
    username: SpecialUsernameConfig;
    lifeTime?: SessionLifetime;
    salt?: ProfileSalt;
    users?: UserConfig[];
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "user".
 */
export interface UserConfig {
    key?: UserKey;
    password?: string;
    /**
     * Username
     */
    username: string;
    id: ProfileId;
    lifeTime?: SessionLifetime1;
    salt?: ProfileSalt1;
    [k: string]: any;
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "anonymousprofile".
 */
export interface AnonymousProfileConfig {
    username: "anonymous";
    [k: string]: any;
}
export interface BundleConfig {
    name?: BundleName;
    id: BundleId;
    dataLog?: {
        /**
         * Data log period acquisition in seconds
         */
        period: number;
        [k: string]: any;
    };
    features?: SpecialFeatureConfig[];
    variables?: VariableConfig[];
    acls?: AclMapConfig;
    [k: string]: any;
}
/**
 * This interface was referenced by `TapConfiguratorConfig`'s JSON-Schema
 * via the `definition` "BaseVariable".
 */
export interface BaseVariableConfig {
    id: VariableId;
    /**
     * Variable length (number of items) > 1 if it's an array
     */
    length?: number;
    meta?: {
        name?: VariableName;
        unit?: Unit;
    };
    rawMeta?: HexStringConfig;
    [k: string]: any;
}
export interface ModbusVariableAddress {
    functionCode: number;
    slave: number;
    address: number;
}
export interface AclMapConfig {
    [k: string]: AclConfig;
}
export interface AclConfig {
    /**
     * Grant read right
     */
    read: boolean;
    /**
     * Grant write right
     */
    write: boolean;
}
