/**
 * This file was automatically generated by json-schema-to-typescript.
 * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
 * and run json-schema-to-typescript to regenerate this file.
 */
export declare type SemanticVersion = string;
export declare type TargetConfig = CommonTargetConfig & TapNPassTargetConfig;
export declare type BitParity = 'NONE' | 'ODD' | 'EVEN';
export declare type StopBit = 'ONE' | 'ONE_AND_HALF' | 'TWO';
export declare type Handshake = 'NONE' | 'RTS' | 'CTS' | 'RTS_CTS';
export declare type PhysicalPort = 'NONE' | 'RS232' | 'USB' | 'AUTO' | 'RS485';
export declare type HandshakeDelimiter = 'NONE' | 'CR' | 'LF' | 'CR_LF';
export declare type FirmwareVersion = string;
export declare type TargetProtocol = 'NONE' | 'SWD' | 'S3P' | 'JTAG' | 'MODBUS' | 'GPIO' | 'SERIAL_STANDARD' | 'SERIAL_VIA_TAPNPASS';
/**
 * Application name (will be broadcast)
 */
export declare type ApplicationName = string;
/**
 * Application url loaded by Tap Manager
 */
export declare type ApplicationUrl = string;
export declare type UniversalLink = string;
export declare type ListAuthorizedHostProtocols = HostProtocol[] | 'ALL';
export declare type HostProtocol = 'NFC' | 'BLE' | 'WIFI' | 'LORA';
export declare type LowPowerOptimizationLevel = 'NO' | 'STANDBY' | 'SHUTDOWN';
export declare type NfcPairingMode = 'NO' | 'MANDATORY' | 'MANDATORY_FOR_LOGIN';
export declare type NetworkMode = 'PEER_TO_PEER' | 'INFRASTRUCTURE_ONLY' | 'INFRASTRUCTURE_CLOUD';
export declare type SSID = string;
export declare type WepKey = string;
export declare type EnableSCANAuthentification = boolean;
export declare type LockingFactoryResetWithLwm2M = boolean;
export declare type DisableLoginWithUID = boolean;
export declare type DisableHardwareFactoryReset = boolean;
export declare type SpecialUsername = '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;
export declare type ProfileConfig = UserConfig;
export declare type BundleName = string;
export declare type BundleId = number;
export declare type SpecialFeature = 'SWD_DIRECT_ACCESS' | 'SERIAL_ACCESS' | 'MODBUS_DIRECT_ACCESS' | 'TAPNPASS_CONTROL_ACCESS' | 'SP_CODEEXEC_ACCESS';
export declare type VariableConfig = MemoryVariableConfig | ModbusVariableConfig;
export declare type MemoryVariableConfig = BaseVariableConfig;
export declare type VariableId = number;
export declare type VariableName = string;
export declare type VariableType = 'INT8' | 'INT16' | 'INT32' | 'UINT8' | 'UINT16' | 'UINT32' | 'FLOAT32' | 'STRING';
export declare type Unit = string;
export declare type ModbusVariableConfig = BaseVariableConfig;
export interface TapConfigSchema {
    additionalProperties?: any;
    meta: Meta;
    config: Config;
    [k: string]: any;
}
export interface Meta {
    version?: string;
    [k: string]: any;
}
export interface Config {
    version: number | SemanticVersion;
    target?: TargetConfig;
    application: ApplicationOption;
    tap?: TapOptions;
    data?: DataConfig;
    [k: string]: any;
}
export interface CommonTargetConfig {
    serial?: SerialConfig;
    modbus?: ModbusConfig;
    firmwareVersion?: FirmwareVersion;
    protocol?: TargetProtocol;
    type?: 'MCU' | 'TAPNPASS';
    [k: string]: any;
}
export interface SerialConfig {
    parity: BitParity;
    baudRate: number;
    stopBits: StopBit;
    dataBits: number;
    hardwareFlowControl: Handshake;
    physicalPort?: PhysicalPort;
    delimiter: HandshakeDelimiter;
    /**
     * Unsigned integer on 8 bytes
     */
    timeout?: number;
}
export interface ModbusConfig {
    offsetFirstRegister: boolean;
    /**
     * Unsigned integer on 8 bytes
     */
    slave: number;
}
export interface TapNPassTargetConfig {
    usb?: UsbConfig;
    LEDs?: LEDsConfig;
    [k: string]: any;
}
export interface UsbConfig {
    aliases?: UsbAlias[];
    [k: string]: any;
}
export interface UsbAlias {
    vid: string;
    pid: string;
    equ: number;
}
export interface LEDsConfig {
    enabled?: boolean;
    identification?: boolean;
    [k: string]: any;
}
/**
 * Options related to the application that communicates with this Tap
 */
export interface ApplicationOption {
    name: ApplicationName;
    uri?: ApplicationUrl;
    universalLink?: UniversalLink;
    android?: Android;
    [k: string]: any;
}
export interface Android {
    /**
     * Android Application Record
     */
    aar: string;
    [k: string]: any;
}
export interface TapOptions {
    availableHostProtocols?: ListAuthorizedHostProtocols;
    powerOptimization?: LowPowerOptimizationLevel;
    hostInactivityPeriod?: number;
    /**
     * Unsigned integer on 32 bytes
     */
    hashIterationCount?: number;
    nfcPairingMode?: NfcPairingMode;
    mqttRelay?: MqttRelayConfig;
    cloud?: CloudConfig;
    wifi?: WifiOptions;
    security?: InterfaceLock;
}
export interface MqttRelayConfig {
    url: string;
    netKey?: string;
    key: string;
    [k: string]: any;
}
export interface CloudConfig {
    url: string;
    password?: string;
    /**
     * Upload period in milliseconds
     */
    uploadPeriod: number;
    [k: string]: any;
}
export interface WifiOptions {
    mode?: NetworkMode;
    ssid?: SSID;
    wepKey?: WepKey;
    [k: string]: any;
}
export interface InterfaceLock {
    scramActivated: EnableSCANAuthentification;
    hashPassword: boolean;
    factoryReset: LockingFactoryResetWithLwm2M;
    resourceLogUid: DisableLoginWithUID;
    resourceFactory: DisableHardwareFactoryReset;
}
export interface DataConfig {
    profiles?: (SpecialProfileConfig | AnonymousProfile | ProfileConfig)[];
    bundles?: BundleConfig[];
    [k: string]: any;
}
export interface SpecialProfileConfig {
    key?: string;
    password?: string;
    username: SpecialUsername;
    lifeTime: SessionLifetime;
    salt?: ProfileSalt;
    users?: UserConfig[];
}
export interface UserConfig {
    key?: string;
    password?: string;
    /**
     * Username
     */
    username: string;
    id: ProfileId;
    lifeTime: SessionLifetime1;
    salt?: ProfileSalt1;
    [k: string]: any;
}
export interface AnonymousProfile {
    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?: SpecialFeature[];
    variables?: VariableConfig[];
    acls?: Acls;
    [k: string]: any;
}
export interface BaseVariableConfig {
    id: VariableId;
    name?: VariableName;
    type: VariableType;
    unit?: Unit;
    /**
     * Variable length (number of items) > 1 if it's an array
     */
    length: number;
    [k: string]: any;
}
export interface Acls {
    [k: string]: Acl;
}
export interface Acl {
    /**
     * Grant read right
     */
    read: boolean;
    /**
     * Grant write right
     */
    write: boolean;
}
