/**
 * DO NOT EDIT
 * This file has been generated from file libs\ionic-toolkit\src\schema.json
 */
/**
 * 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 GeneratorVersion = string;
/**
 * Used to identify your application (Used in Android Play store for example)
 */
export declare type ApplicationBundleIdentifier = string;
export declare type Domain = string;
export declare type ApplicationDescription = string;
export declare type ApplicationName = string;
export declare type ApplicationVersion = string;
/**
 * Application home url
 */
export declare type DefaultPage = string;
export declare type SpplashImagePath = string;
export declare type ThirdPartyIntegration = FirebaseIntegration | FastlaneIntegration;
export declare type Value = string | number;
export declare type Color = string | number;
export declare type ColorThemeList = ColorTheme[];
export declare type EnabledAndroidPlatform = boolean;
export declare type EnableIOSPlatform = boolean;
/**
 * Enabled Browser platform
 */
export declare type EnableBrowserSupport = boolean;
/**
 * Enable Progressive Web App (PWA) support
 */
export declare type PWA = boolean;
export declare type TapConnectionPage = Page & {
    type: Type;
    protocols: ProtocolOptions;
    [k: string]: any;
};
/**
 * Disable this option to prevent page generation
 */
export declare type GenerateThisPage = boolean;
export declare type PageTitle = string;
/**
 * Page path used when loaded into a Browser
 */
export declare type PagePath = string;
/**
 * Generated source file path relatively to the application source directory. Use default value if your not sure.
 */
export declare type ProjectPath = string;
export declare type Type = string;
/**
 * Generate MQTT connection page
 */
export declare type EnableMQTT = boolean;
/**
 * Generate Socket/Websocket/Wifi connection page
 */
export declare type EnableSocket = boolean;
/**
 * Generate BLE connection page
 */
export declare type EnableBLE = boolean;
export declare type TapDevicePage = Page & {
    type: string;
    children?: {
        TapInfoPage?: TapInfoPage;
        TapConfigPage?: TapConfigPage;
        TapConnectivitySettingsPage?: TapConnectivitySettingsPage;
        MonitoringPage?: MonitoringPage;
        TabPage?: TabPage;
        ProtocolConfigurationPage?: ProtocolConfigurationPage;
        TapLoginPage?: TapLoginPage;
        [k: string]: any;
    };
    [k: string]: any;
};
export declare type TapInfoPage = Page & {
    type: string;
    items?: {
        title?: string;
        items?: TapInfoList;
        [k: string]: any;
    };
    [k: string]: any;
};
export declare type TapInfo = "serialNumber" | "modelName" | "appName" | "appPath" | "tapFirmwareVersion" | "configVersion" | "androidApplicationRecord" | "DataLogPacketCount" | "HostProtocol" | "TargetProtocol" | "tapManufacturer" | "CloudUploadPeriod" | "DataLogMaxPacketCount";
export declare type TapInfoList = {
    key: TapInfo;
    title?: string;
    description?: string;
    editable?: boolean;
    [k: string]: any;
}[];
export declare type TapConfigPage = Page & {
    type: string;
    /**
     * List of authorized profiles to access this page
     */
    authorizedProfiles?: TapProfileName[];
    content?: Layout;
    [k: string]: any;
};
export declare type TapProfileName = string;
export declare type Layout = VerticalLayout | HorizontalLayout | GridLayout | CardLayout1 | ListLayout | TabLayout | SwitchLayout;
export declare type DashboardInnerElement = VariableCard | VariableText | VariableGauge | VariableButtons | VariableRange | VariableChart | TapVariableContext | CardLayout | ItemLayout | TextLayout | TapConfigItemComponent | TapConfigListComponent | NgxChartsLinearGauge;
export declare type VariableCard = TapVariableMonitorBaseComponent & {
    title?: Title;
    type: Type1;
    icon?: Icon;
    description?: Description;
    unit?: Unit;
    editable?: Editable;
    [k: string]: any;
};
export declare type Variable = string;
/**
 * Used when using array variable. Element index starts from 0
 */
export declare type VariableIndex = number;
/**
 * Card title
 */
export declare type Title = string;
/**
 * Full list here: https://ionicframework.com/docs/v3/ionicons/site_data.json
 */
export declare type Icon = string;
export declare type Description = string;
export declare type Unit = string;
/**
 * Check this if you want to be able to edit variable value
 */
export declare type Editable = boolean;
export declare type VariableText = TapVariableMonitorBaseComponent & {
    type: Type2;
    unit?: Unit1;
    editable?: Editable1;
    /**
     * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.
     *  minIntegerDigits: The minimum number of integer digits before the decimal point. Default is 1.
     *  minFractionDigits: The minimum number of digits after the decimal point. Default is 0.
     *  maxFractionDigits: The maximum number of digits after the decimal point. Default is 3.
     */
    digitsInfo?: string;
    [k: string]: any;
};
export declare type Type2 = string;
export declare type Unit1 = string;
export declare type Editable1 = boolean;
export declare type VariableGauge = TapVariableMonitorBaseComponent & {
    type: Type3;
    min?: MinimumValue;
    max?: MaximumValue;
    unit?: Unit2;
    dynamicRange?: DynamicRange;
    [k: string]: any;
};
export declare type Type3 = string;
export declare type MinimumValue = number;
export declare type MaximumValue = number;
export declare type Unit2 = string;
/**
 * Check this option if you want the minimum and maximum gauge range to be redefined when values are out of the current range
 */
export declare type DynamicRange = boolean;
export declare type VariableButtons = TapVariableMonitorBaseComponent & {
    type: Type4;
    actions?: Actions;
    [k: string]: any;
};
export declare type Type4 = string;
/**
 * Button label
 */
export declare type Name = string;
/**
 * Value to send to the device when this button is clicked
 */
export declare type Value1 = string | number;
/**
 * Full list here: https://ionicframework.com/docs/v3/ionicons/site_data.json
 */
export declare type Icon1 = string;
export declare type Actions = {
    name?: Name;
    value?: Value1;
    icon?: Icon1;
    [k: string]: any;
}[];
export declare type VariableRange = TapVariableMonitorBaseComponent & {
    type: Type5;
    disabled?: Disabled;
    min?: MinimalValue;
    max?: MaximalValue;
    step?: ValueStep;
    [k: string]: any;
};
export declare type Type5 = string;
export declare type Disabled = boolean;
export declare type MinimalValue = number;
export declare type MaximalValue = number;
export declare type ValueStep = number;
export declare type VariableChart = TapVariableMonitorBaseComponent & {
    type: Type6;
    label: string;
    options?: {
        [k: string]: any;
    };
    [k: string]: any;
};
export declare type Type6 = string;
export declare type TapVariableContext = TapVariableMonitorBaseComponent & {
    type: Type7;
    context?: string;
    [k: string]: any;
};
export declare type Type7 = string;
export declare type Title1 = string;
/**
 * Full list here: https://ionicframework.com/docs/v3/ionicons/site_data.json
 */
export declare type Icon2 = string;
export declare type Description1 = string;
export declare type TapVariableMonitorComponents = Card | Text | Gauge | Buttons | Toggle | Range | Chart | LinearGauge;
export declare type Card = TapVariableMonitorBaseComponent & {
    title?: Title;
    type: Type1;
    icon?: Icon;
    description?: Description;
    unit?: Unit;
    editable?: Editable;
    [k: string]: any;
};
export declare type Text = TapVariableMonitorBaseComponent & {
    type: Type2;
    unit?: Unit1;
    editable?: Editable1;
    /**
     * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.
     *  minIntegerDigits: The minimum number of integer digits before the decimal point. Default is 1.
     *  minFractionDigits: The minimum number of digits after the decimal point. Default is 0.
     *  maxFractionDigits: The maximum number of digits after the decimal point. Default is 3.
     */
    digitsInfo?: string;
    [k: string]: any;
};
export declare type Gauge = TapVariableMonitorBaseComponent & {
    type: Type3;
    min?: MinimumValue;
    max?: MaximumValue;
    unit?: Unit2;
    dynamicRange?: DynamicRange;
    [k: string]: any;
};
export declare type Buttons = TapVariableMonitorBaseComponent & {
    type: Type4;
    actions?: Actions;
    [k: string]: any;
};
export declare type Toggle = TapVariableMonitorBaseComponent & {
    type: Type8;
    conditionOn?: ConditionOn;
    editable?: Editable2;
    [k: string]: any;
};
export declare type Type8 = string;
/**
 * You can insert a Typescript expression here that must return true when toggle button is on.
 */
export declare type ConditionOn = string;
export declare type Editable2 = boolean;
export declare type Range = TapVariableMonitorBaseComponent & {
    type: Type5;
    disabled?: Disabled;
    min?: MinimalValue;
    max?: MaximalValue;
    step?: ValueStep;
    [k: string]: any;
};
export declare type Chart = TapVariableMonitorBaseComponent & {
    type: Type6;
    label: string;
    options?: {
        [k: string]: any;
    };
    [k: string]: any;
};
export declare type LinearGauge = TapVariableMonitorBaseComponent & {
    type: Type9;
    options?: {
        min?: MinimumValue1;
        max?: MaximumValue1;
        units?: Units;
        /**
         * function that formats the value in the middle of the chart
         */
        valueFormatting?: boolean;
        [k: string]: any;
    };
    [k: string]: any;
};
export declare type Type9 = string;
/**
 * starting point of the scale
 */
export declare type MinimumValue1 = number;
/**
 * ending point of the scale
 */
export declare type MaximumValue1 = number;
/**
 * text to display under the value
 */
export declare type Units = string;
export declare type Content = TapVariableMonitorComponents[];
/**
 * Raw contant. Can be HTML/Javascript/Text. It will be directly inserted in the generated file without any modifications.
 */
export declare type Content1 = string;
export declare type NgxChartsLinearGauge = TapVariableMonitorBaseComponent & {
    type: Type9;
    options?: {
        min?: MinimumValue1;
        max?: MaximumValue1;
        units?: Units;
        /**
         * function that formats the value in the middle of the chart
         */
        valueFormatting?: boolean;
        [k: string]: any;
    };
    [k: string]: any;
};
export declare type Elements = DashboardInnerElement[];
export declare type Elements1 = DashboardInnerElement[];
/**
 * Column number per row
 */
export declare type Cols = number;
export declare type Elements2 = DashboardInnerElement[];
export declare type TapConnectivitySettingsPage = Page & {
    type: string;
    [k: string]: any;
};
export declare type MonitoringPage = Page & {
    type: string;
    children?: MonitoringDashboardPage[];
    [k: string]: any;
};
export declare type MonitoringDashboardPage = Page & {
    type: Type10;
    profileName?: ProfileName;
    content?: Layout;
    [k: string]: any;
};
export declare type Type10 = string;
/**
 * Restrict page access to the given profile
 */
export declare type ProfileName = string;
export declare type TabPage = Page & {
    type: string;
    defaultPage?: string;
    children?: Page[];
    [k: string]: any;
};
export declare type ProtocolConfigurationPage = Page & {
    type: Type11;
    serialSettings?: SerialSettings;
    modbusSettings?: ModbusSettings;
    tapnpassSettings?: TapNPassSettings;
    [k: string]: any;
};
export declare type Type11 = string;
/**
 * Generate serial settings options
 */
export declare type SerialSettings = boolean;
/**
 * Generate modbus settings options
 */
export declare type ModbusSettings = boolean;
/**
 * Generate tapnpass settings options
 */
export declare type TapNPassSettings = boolean;
export declare type TapLoginPage = Page & {
    type: Type12;
    [k: string]: any;
};
export declare type Type12 = string;
export declare type AboutPage = Page & {
    type: Type13;
    items?: Informations;
    [k: string]: any;
};
export declare type Type13 = string;
export declare type Title2 = string;
export declare type Value2 = string;
/**
 * List of key/value information pair to display on this page
 */
export declare type Informations = KeyValueInfo[];
export declare type NotFoundPage = Page & {
    type: Type14;
    [k: string]: any;
};
export declare type Type14 = string;
export declare type Title3 = string;
export declare type Url = string;
/**
 * Full list here: https://ionicframework.com/docs/v3/ionicons/site_data.json
 */
export declare type Icon3 = string;
export declare type Title4 = string;
export declare type Url1 = string;
/**
 * Full list here: https://ionicframework.com/docs/v3/ionicons/site_data.json
 */
export declare type Icon4 = string;
export declare type SubMenu = SubMenuItem[];
export declare type ShowAdvanceFormSettings = boolean;
export interface TapAppGeneratorSchema {
    version: Version;
    app: App;
    formMeta?: FormMeta;
    [k: string]: any;
}
export interface Version {
    generator?: GeneratorVersion;
    [k: string]: any;
}
export interface App {
    id: ApplicationBundleIdentifier;
    domain: Domain;
    description?: ApplicationDescription;
    name: ApplicationName;
    version: ApplicationVersion;
    defaultPage?: DefaultPage;
    logo?: Logo;
    splashScreen?: SplashScreen;
    integration?: ThirdPartyIntegration[];
    theme?: Theme;
    platforms: {
        android?: AndroidPlatform;
        ios?: IOSPlatform;
        browser?: BrowserPlatform;
        [k: string]: any;
    };
    pages: Pages;
    menu: MenuItem[];
    [k: string]: any;
}
export interface Logo {
    /**
     * Logo file
     */
    image?: string;
    [k: string]: any;
}
export interface SplashScreen {
    image?: SpplashImagePath;
    [k: string]: any;
}
export interface FirebaseIntegration {
    type: string;
    projectId: string;
    [k: string]: any;
}
export interface FastlaneIntegration {
    type: string;
    iOS?: {
        enabled?: boolean;
        appleId?: string;
        teamId?: string;
        [k: string]: any;
    };
    android?: {
        enabled?: boolean;
        versionCode?: number;
        [k: string]: any;
    };
    [k: string]: any;
}
export interface Theme {
    colors: ColorThemeList;
    [k: string]: any;
}
export interface ColorTheme {
    name: string;
    value: Value;
    tint?: Color;
    contrast?: Color;
    shade?: Color;
    [k: string]: any;
}
export interface AndroidPlatform {
    enabled?: EnabledAndroidPlatform;
    [k: string]: any;
}
export interface IOSPlatform {
    enabled?: EnableIOSPlatform;
    [k: string]: any;
}
export interface BrowserPlatform {
    enabled?: EnableBrowserSupport;
    PWA?: PWA;
    [k: string]: any;
}
export interface Pages {
    TapConnectionPage?: TapConnectionPage;
    TapDevicePage?: TapDevicePage;
    AboutPage?: AboutPage;
    NotFoundPage?: NotFoundPage;
    [k: string]: any;
}
export interface Page {
    enabled: GenerateThisPage;
    pageTitle: PageTitle;
    path: PagePath;
    projectPath: ProjectPath;
    [k: string]: any;
}
export interface ProtocolOptions {
    mqtt?: MQTTOptions;
    socket?: SocketOptions;
    nfc?: NFCOptions;
    ble?: BLEOptions;
    [k: string]: any;
}
export interface MQTTOptions {
    enabled?: EnableMQTT;
    [k: string]: any;
}
export interface SocketOptions {
    enabled?: EnableSocket;
    [k: string]: any;
}
export interface NFCOptions {
    /**
     * Generate NFC connection page
     */
    enabled?: boolean;
    /**
     * True if you Tap device will work thanks to energy harvesting
     */
    energyHarvesting?: boolean;
    [k: string]: any;
}
export interface BLEOptions {
    enabled?: EnableBLE;
    [k: string]: any;
}
export interface VerticalLayout {
    type: string;
    elements?: Elements;
    [k: string]: any;
}
export interface TapVariableMonitorBaseComponent {
    variable: Variable;
    variableIndex?: VariableIndex;
    [k: string]: any;
}
export interface Type1 {
    [k: string]: any;
}
export interface CardLayout {
    type: string;
    header?: CardHeader;
    title: Title1;
    icon?: Icon2;
    description?: Description1;
    content?: Content;
    [k: string]: any;
}
export interface CardHeader {
    icon?: string;
    color?: string;
    [k: string]: any;
}
export interface ItemLayout {
    type: string;
    elements?: DashboardInnerElement[];
    [k: string]: any;
}
export interface TextLayout {
    type: string;
    content?: Content1;
    [k: string]: any;
}
export interface TapConfigItemComponent {
    type: string;
    info?: {
        key?: string;
        title?: string;
        description?: string;
        editable?: boolean;
        [k: string]: any;
    };
    [k: string]: any;
}
export interface TapConfigListComponent {
    type: string;
    items?: TapConfigItemComponent[];
    [k: string]: any;
}
export interface HorizontalLayout {
    type: string;
    elements?: Elements1;
    [k: string]: any;
}
export interface GridLayout {
    cols: Cols;
    type: string;
    elements?: Elements2;
    [k: string]: any;
}
export interface CardLayout1 {
    type: string;
    header?: CardHeader;
    title: Title1;
    icon?: Icon2;
    description?: Description1;
    content?: Content;
    [k: string]: any;
}
export interface ListLayout {
    type: string;
    elements?: DashboardInnerElement[];
    [k: string]: any;
}
export interface TabLayout {
    type: string;
    tabs: {
        label: string;
        icon?: string;
        path: string;
        [k: string]: any;
    }[];
    [k: string]: any;
}
export interface SwitchLayout {
    type: string;
    cases: {
        condition?: string;
        content: Layout;
        [k: string]: any;
    }[];
    [k: string]: any;
}
export interface KeyValueInfo {
    title: Title2;
    value: Value2;
    [k: string]: any;
}
export interface MenuItem {
    title: Title3;
    url: Url;
    icon?: Icon3;
    children?: SubMenu;
    [k: string]: any;
}
export interface SubMenuItem {
    title: Title4;
    url: Url1;
    icon?: Icon4;
    [k: string]: any;
}
export interface FormMeta {
    showAdvanceSettings?: ShowAdvanceFormSettings;
    [k: string]: any;
}
