import { IApplication } from '@c8y/client';
export declare class ApplicationOptions {
    /** Application name (saved to the server). */
    name: string;
    /** Application context path (saved to the server). */
    contextPath: string;
    /** Application key (saved to the server). */
    key: string;
    /** Set to `true` if the application is hybrid and uses Angular and AngularJS simultaneously. */
    upgrade?: boolean;
    /** Path to the branding entry file. */
    brandingEntry?: string;
    /** 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. */
    dynamicOptionsUrl?: string;
    /** URL to favicon. */
    faviconUrl?: string;
    /** URL to *.css file which will replace default branding. */
    brandingUrl?: string;
    /** 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 for adding 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[];
    /** 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 user menu. */
    hidePowered?: 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;
    /** 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 to display on login screen. */
    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. */
    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;
    /** A key for the product experience software Gainsight. */
    gainsightKey?: string;
    /** NgModule export for plugins. */
    exports?: PluginsExports[];
    /** List of imported remote plugins. */
    remotes?: RemotePlugins;
    /** 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?: [];
}
export interface RemotePlugins {
    /**
     * A key value pair, while the value is an array of modules to load and the
     * key is the context path.
     * @example
     * ```js
     * {
     *    'cockpit': ['HomeDashboardModule', 'DataExplorerDashboard'],
     *    'widget-package@1.0.0': ['ExtendedMapWidget']
     * }
     * ``
     */
    [key: string]: string[];
}
export interface PluginsExports {
    /**
     * The name of the Angular module class.
     */
    name: string;
    /**
     * The file path to the module typescript file.
     */
    path: string;
    /**
     * An short description about what the module does.
     */
    description?: string;
    /**
     * Allows to scope the plugin to certain applications. E.g. if you
     * add here 'cockpit', the plugin can only be installed into an
     * application on the contextPath `apps/cockpit`. You can use comma
     * separated values, asterisk (default) to allow all applications or
     * `self` to limit the plugin to the current solution.
     */
    scope?: '*' | 'self' | string;
}
export interface CookieBannerConfiguration {
    /** Here you can set the title of Cookie Banner */
    cookieBannerTitle?: string;
    /** Here you can set the Text of Cookie Banner */
    cookieBannerText?: string;
    /** Here you can set the policyUrl of Cookie Banner */
    policyUrl?: string;
}
export interface CookiePreferencesConfiguration {
    /** This category includes e.g. cookies related to logging in  */
    required?: boolean | string;
    /** This category includes e.g. tracking cookies  */
    functional?: boolean | string;
    /** This category includes e.g. cookies related to advertising  */
    marketing?: boolean | string;
}
export interface LoginExtraLink {
    url: string;
    label: string;
}
export interface Icon {
    class?: string;
    url?: string;
}
export interface Docs {
    /** Hide default links to documentation. */
    noDefault: boolean;
    /** List of regex strings. Matching default docs URLs will be hidden. */
    excludeDefault: string[];
    /** Additional links to be displayed. */
    links: Links[];
}
export interface Links {
    /** Icon classes with `c8y-icon`, e.g. `c8y-icon c8y-icon-add-user` or `c8y-icon c8y-icon-device-connect`. */
    icon: string;
    label: string;
    url: string;
    type: 'doc' | 'quicklink';
}
export interface I18nExtra {
    [langCode: string]: I18nExtraLangCode;
}
export interface I18nExtraLangCode {
    [key: string]: string;
}
export interface Languages {
    [langCode: string]: LanguagesLangCode;
}
export interface LanguagesLangCode {
    name: string;
    nativeName: string;
    url: string;
}
export interface BrandingCssVars {
    [key: string]: string;
}
