import { Logging } from "@intelligentgraphics/ig.utilities";
/**
 * Enumeration of connectivity modes.
 */
export declare enum EConnectivity {
    /** The Module must run fully offline as there's no online connection. */
    Offline = 111,
    /** The Module has online connection but data-related ops should be done offline. */
    OnlineNoData = 222,
    /** The Module has online connection and no limitation to use it. */
    Online = 333
}
/**
 * Enumeration of pre-defined session state entries.
 */
export declare enum ESessionState {
    /** The locale for the Module, according to ISO 639-1, to be set by Host (string)
     *  OBSOLETE, USE IHostInfo INTERFACE
     */
    Locale = 100,
    /** The connectivity of the Module, to be set by Host (EConnectivity)
     *  OBSOLETE, USE IHostInfo INTERFACE
     */
    Connectivity = 101,
    /** The user data, to be set by both Host and Module */
    UserData = 102,
    /** The Version string as shown to Enduser
     *  OBSOLETE, USE IHostInfo INTERFACE
     */
    Version = 103,
    /** The Module title
     *  OBSOLETE, USE IHostInfo INTERFACE
     */
    Title = 104,
    /** The Module Identification Informations
     * used to determine what a saved WSZ actually contains (IGD.Core.WizardIdentification)
     */
    WizardIdentification = 105,
    /** The initial number of Module pages, as defined in the Module.json, to be set by the Host (number)
     *  OBSOLETE, USE IHostInfo INTERFACE
     */
    PageCount = 110,
    /** Debug mode enabled?, to be set by Host (Boolean)
     *  OBSOLETE, USE IHostInfo INTERFACE
     */
    Debug = 120,
    /** Commercial bill of material, created by Module (BOM/{}) */
    BOM = 1000,
    /** Dictionary of CAD entities, created by Module ({}) */
    CAD = 1100,
    /** Url to JSON file containing IG.GFX materials (string) */
    CAD_MAT = 1110
}
export interface IHostInfo {
    /** All locales (incl. CurrentLocale) - to be used for a language-chooser */
    AvailableLocales: string[];
    /** The connectivity of the Module, to be set by Host (EConnectivity) */
    Connectivity: EConnectivity;
    /** The locale for the Module, according to ISO 639-1 */
    CurrentLocale: string;
    /** Debug mode enabled? */
    Debug: boolean;
    /** LogLevel. May be undefined for no logging */
    LogLevel?: Logging.ELogLevel;
    /** The default locale, usually specified in module.json */
    DefaultLocale: string;
    /** The initial number of Module pages, as defined in the Module.json */
    PageCount: number;
    /** The Module title */
    Title: string;
    /** The Version string as shown to Enduser */
    Version: string;
    /** WizardIdentification and VersionNumber from module.json */
    WizardIdentification: IWizardIdentification;
    /** Optional product data information */
    ProductData?: {
        [source_id: string]: {
            Type: EProductDataType;
            Config: IProductDataManagerConfiguration;
        };
    };
    /** Optional environment information */
    Environment?: {
        Type: string;
        Parameter: any;
    };
    /** Directory where to find translation files */
    ResourcePath: string;
    /** Deirectory where to find mst template files */
    TemplatePath: string;
    /** 1:1 copy of CustomProperties entry in module.json */
    CustomProperties: any;
}
/** Enumeration of product data and services */
export declare enum EProductDataType {
    /** IGXE Data */
    IGXE = 1,
    /** EAIWS Service */
    EAIWS = 2,
    /** XcalibuR Service */
    XcalibuR = 3
}
/** Abstract definition of product-data manager configurations. */
export interface IProductDataManagerConfiguration {
}
/** IGXE PDM configuration. */
export interface IIGXEConfiguration extends IProductDataManagerConfiguration {
    /** */
    Native: string;
    /** */
    Additional?: string[];
}
/** EAIWS PDM Configuration */
export interface IEAIWSConfiguration extends IProductDataManagerConfiguration {
    /** The host address. */
    Host: string;
    /** The startup file. */
    Startup: string;
}
/** Structured version information. */
export interface IVersion {
    /** Major number. */
    Major: number;
    /** Minor number. */
    Minor: number;
    /** Sub minor number. */
    SubMinor: number;
    /** Build number. */
    Build: number;
}
/** Wizard identification settings. */
export interface IWizardIdentification {
    /** */
    WizardVersion: IVersion;
    /** */
    DataVersion: IVersion;
    /** */
    ManufacturerId: string;
    /** */
    ProgramId: string;
    /** */
    CustomManufacturerId: string;
    /** */
    CustomProgramId: string;
}
