import { IApplication, VersioningMatrix } from '@c8y/client';
import type { ApplicationOptions as AppOptions, BrandingCssVars, Languages, I18nExtra, Docs, Icon, LoginExtraLink, CookieBannerConfiguration, CookiePreferencesConfiguration, RemotePlugins, MapTileLayer, MapDefaultConfig, PluginsExports, MessageBannerConfiguration } from '@c8y/options';
export declare class ApplicationOptions implements AppOptions {
    name: string;
    contextPath: string;
    key: string;
    version: string;
    webSdkVersion?: string;
    /** Set to `true` if the application is hybrid and uses Angular and AngularJS simultaneously. */
    upgrade?: boolean;
    /**
     * Path to the branding entry file. (Set it to false to disable any styling. You can handle the styling then on your own e.g. in an angular.json file using ng-cli)
     * @deprecated Add your global styles via the angular.json file.
     */
    brandingEntry?: false;
    /** Path to tsccnfig.json file if TypeScript is used (default: ./tsconfig.json). */
    tsConfigPath?: string;
    /** Entry module for Angular compiler (only used with lazy loaded routes), e.g. `'app.module.ts#AppModule'`. */
    entryModule?: string;
    /** Path to custom index.html (otherwise default one will be used). */
    indexTemplate?: string;
    /**
     * URL to dynamically fetched options.
     * If set to `true` or left undefined, an URL will be used based on the applications contextPath.
     * If set to `false`, no dynamic options will be fetched.
     * */
    dynamicOptionsUrl?: string | boolean;
    /** URL to favicon. */
    faviconUrl?: string;
    /** URL to *.css file which will replace default branding. */
    brandingUrl?: string;
    /** Enables the branding preview mode. If set to true, the `dynamicOptionsUrl` will be polled regularly for changes. In case the `lastUpdated` field of the dynamic options changes, the page is reloaded in order to apply the new branding. */
    brandingPreview?: boolean;
    /** Object with properties that will be converted to CSS custom variables. */
    brandingCssVars?: BrandingCssVars;
    /**
     * Allows for adding or overriding languages available in the application.
     *
     * Its keys are language codes and its values are objects with the following properties:
     *
     * - `name`: English name of the language,
     * - `nativeName`: native name of the language,
     * - `url`: full URL to JSON file with compiled translations;
     *    if not defined, translations will be loaded from `${localePath}/${langCode}.json`.
     *
     * Example:
     * ```json
     * "languages": {
     *   "de": {
     *     "name": "German",
     *     "nativeName": "Deutsch",
     *     "url": "/apps/public/ui-assets/de.json"
     *   }
     * }
     * ```
     */
    languages?: Languages;
    /**
     * Allows to add custom translations. It is an optional property.
     *
     * Its keys are language codes (https://cumulocity.com/guides/users-guide/getting-started/#a-name-languages-a-available-languages)
     * and its values are objects with key-value pairs, where the key is the original string in English and the value - its translation.
     *
     * - `Home`: "Startseite"
     *
     * For example you can add the translation of your custom cookie banner configured in the branding settings:
     * ```json
     * "i18nExtra": {
     *   "de": {
     *     "About cookies on Cumulocity IoT": "Informationen zu Cookies in Cumulocity IoT",
     *     "Click Agree and Proceed to accept cookies and go directly to the platform or click on Privacy Policy to see detailed descriptions of the used cookies.": "Klicken Sie auf Zustimmen und fortfahren, um Cookies zu akzeptieren und direkt zur Plattform zu gelangen, oder klicken Sie auf Datenschutzrichtlinie, um detaillierte Beschreibungen der verwendeten Cookies anzuzeigen."
     *   }
     * }
     * ```
     */
    i18nExtra?: I18nExtra;
    /** Path to the folder from which *.po files will be loaded. */
    localePath?: string;
    /** Array of URLs to additional *.css files to be loaded at runtime. */
    extraCssUrls?: string[];
    /** Stylesheet (CSS) that will be added at runtime. The string should actually contain the CSS not a path or URL to it. */
    extraCss?: string;
    /** Documentation links settings. */
    docs?: Docs;
    /** Application icon to be displayed in app switcher and header bar. */
    icon?: Icon;
    /** Hide application in app switcher (saved to the server). */
    noAppSwitcher?: boolean;
    /** HTML page title. */
    globalTitle?: string;
    /** Hide "powered by" and version info at the bottom of the navigator and in the right drawer. */
    hidePowered?: boolean;
    /** Hides the header bar */
    hideHeader?: boolean;
    /** Hides the "Platform information" in the right drawer, will overrule the "hidePowered" option */
    hidePlatformInformation?: boolean;
    /** URL to support page (set to `false` to hide the link). */
    supportUrl?: boolean | string;
    /**
     * Replacement string for `user` field in audit logs for actions performed by a support user
     * (available placeholders: `{{support_user}}`, `{{supported_user}}`).
     */
    supportUserString?: string;
    /**
     * Disables realtime updates on the map widget and maps in general.
     */
    mapWidgetRealtimeDisabled?: boolean;
    /**
     * Allows to adjust the default pagesize of 100 items of the map widget and maps in general.
     */
    mapWidgetPageSize?: number;
    /**
     * Allows to hide the hint that there are more devices with geo coordinates then displayed on the map widget and maps in general.
     */
    mapWidgetHideMaxDeviceOnMapHint?: boolean;
    /** Enable or disable the right drawer. */
    rightDrawer?: boolean;
    /** Enable or disable breadcrumbs in the header for groups and devices (default: false). */
    breadcrumbs?: boolean;
    /** Collapse navigator on initial load. */
    hideNavigator?: boolean;
    /** Show tabs horizontally or vertically. */
    tabsHorizontal?: boolean;
    /** Additional link(s) to display on login screen. */
    loginExtraLink?: LoginExtraLink | LoginExtraLink[];
    /** Enable or disable storage limitation feature. */
    storageLimitationFeatureEnabled?: boolean;
    /** Name of company handling support requests from app users (displayed in notification message). */
    companyName?: string;
    /** URL template for documentation links (default: `'${docsBaseUrl}${partialUrl}'`). */
    guideHrefTemplate?: string;
    /** Base URL for documentation links (include `{{ version }}` placeholder, if you want versioned links). */
    docsBaseUrl?: string;
    /** CSP string to be applied to `index.html` by replacing default values. */
    contentSecurityPolicy?: string;
    /** Enables cloud sensor wizard */
    sensorPhone?: boolean;
    /** Show or hide a newsletter subscription checkbox in edit user modal. */
    newsletter?: boolean;
    /** Path to the root node_modules dir (useful when working in monorepo setup, e.g. yarn workspaces). */
    rootNodeModulesPath?: string;
    /** Cookie Banner configuration */
    cookieBanner?: CookieBannerConfiguration;
    /** Cookie preferences configuration. Here you can enable or disable cookie categories */
    cookiePreferences?: CookiePreferencesConfiguration;
    /** Message Banner configuration */
    messageBanner?: MessageBannerConfiguration;
    /** A key for the product experience software Gainsight. */
    gainsightKey?: string;
    /** Disable user tracking */
    disableTracking?: boolean;
    /** NgModule export for plugins. */
    exports?: PluginsExports[];
    /** List of imported remote plugins. */
    remotes?: RemotePlugins;
    /** If set to true, only remotes defined in the `remotes` query parameter will be loaded. */
    forceUrlRemotes?: boolean;
    /** The package source a application origins from as IApplication or simply the id of the source */
    source?: string | number | IApplication;
    /**
     * Additional assets to copy to the build output.
     * See https://github.com/webpack-contrib/copy-webpack-plugin for more information
     * about the patterns to add here.
     */
    copy?: [];
    /**
     * Allows to enable or disable context help, or to override the default base URL used to load its contents.
     * By default, the context help uses the same base URL as defined in the `docsBaseUrl` option
     * (if this option is undefined, then the following value will be used: `https://cumulocity.com/guides/{{version}}`).
     * Alternatively, if a string is provided here, it'll be used as the base URL
     * and any `{{ version }}` placeholder will be replaced with the relevant docs version.
     */
    contextHelp?: boolean | string;
    /**
     * By default, cockpit and devicemanagement use the onlyRoots query to resolve root nodes. This
     * could lead to performance issues, if a customer has a lot of root nodes. Therefore you can disable
     * the use of this query with this flag.
     */
    disableOnlyRootsQuery?: boolean;
    /**
     * Allows to force showing the setup wizard.
     */
    forceSetup?: boolean;
    /**
     * Indicates if the application needs to show the setup wizard.
     */
    isSetup?: boolean;
    /**
     * By default a WebSDK app requires the user to be logged in.
     * In case you would like to develop just a static application, that does not require any kind of access to the backend,
     * you can use this flag to disable the login screen.
     * NOTE: not all WebSDK components support this, some might require the user to be logged in and won't work.
     */
    noLogin?: boolean;
    /**
     * Allows to opt out of supporting/loading plugins for this application.
     */
    noPlugins?: boolean;
    /**
     * Allows to opt out of the version warning which is shown in the dev tools.
     */
    noVersionWarning?: boolean;
    /**
     * Allows to set the map layers. If not set, defaults to open street map layer.
     */
    mapLayers?: MapTileLayer[];
    /**
     * Allows to set default configurations on the maps.
     */
    mapConfig?: MapDefaultConfig;
    /**
     * The URL used to lookup geo coordinates for a user provided address via [nominatim API](https://nominatim.org/release-docs/develop/api/Search/).
     * Can be set to empty to disable the find address feature on the location tab.
     * Uses: `https://nominatim.openstreetmap.org/search?format=json&q={searchTerm}` if not set.
     */
    mapNominatimUrl?: string;
    /**
     * The name of the root element. By default c8y-bootstrap.
     */
    rootTagName?: string;
    /**
     * Hides possibility to create typed dashboards for assets (and groups). If true, typed dashboards can be created only for devices.
     * It is true by default.
     */
    hideTypeDashboardForAssets?: boolean;
    /**
     * A matrix of versions indicating which versions of the application (key) are dependent on which version of a cumulocity component (API version and Web SDK version of the shell application currently supported, indicated by the value).
     * The versions of the dependent components can be indicated by a semver range.
     * @example
     * ```json
     * {
     *  "1.0.0": {
     *    "sdk": ">=1016.0.0 <1017.0.0",
     *    "api": ">=1016.0.0 <1017.0.0"
     *  },
     *  "2.0.0": {
     *    "sdk": "~1017.0.0",
     *    "api": "~1017.0.0"
     *  },
     *  "3.0.0": {
     *    "sdk": ">=1018.0.0",
     *    "api": ">=1018.0.0"
     *  },
     * }
     * ```
     */
    versioningMatrix?: VersioningMatrix;
    /**
     * Is used for plugins to indicate their owner. Software AG plugins are marked with OFFICIAL label.
     * You can use the special "ARCHIVED" label to mark them as archived.
     */
    label?: string;
    /**
     * Defines the type of refresh mechanism used for alarms in the application.
     *
     * - 'realtime': Utilizes a realtime mechanism for updating alarms.
     * - 'interval': Utilizes HTTP polling at regular intervals to refresh the alarms.
     *
     * This setting allows to switch between realtime and interval-based refresh methods.
     */
    alarmsRefreshType?: 'interval' | 'realtime';
}
/**
 * Tells how a plugin is scoped.
 */
export declare enum PluginsExportScopes {
    /**
     * Limit the plugin to the current application. It is imported by default.
     */
    SELF = "self",
    /**
     * Allows to add the plugin to a global scope, meaning it is imported to all applications at the same time.
     * This is not used at the moment but planned to be implemented in the new branding editor.
     */
    GLOBAL = "global",
    /**
     * Limit the plugin to the current application. The plugin is not imported by default.
     */
    SELF_OPTIONAL = "self-optional",
    /**
     * Like undefined the plugin is available for any private application.
     */
    DEFAULT = ""
}
//# sourceMappingURL=ApplicationOptions.d.ts.map