import { Observable } from 'rxjs';
/**
 * Configuration for the HeaderWidget.
 *
 * This configuration includes a mapping of the properties of the originally HeaderWidget web component in camelCase notation.
 *
 * You can find the documentation in Confluence
 * * @see https://confluence.bit.admin.ch/display/EN4/Header+widget+documentation
 *
 */
export interface QdShellHeaderWidgetConfig {
    /**
     * @description Set if the header widget should not be rendered.
     *
     * * @default: false
     */
    isDisabled?: boolean;
    /**
     * List of all possible languages that can be selected.
     * The e-portal language or language from url will only be adopted if it is contained in the language list.
     *
     * * web component: 'language-list'
     *
     * * @default: ['de', 'fr', 'it', 'en']
     */
    languageList?: QdShellHeaderWidgetLanguage[];
    /**
     * Language that is preselected initially. Must be one of the languages listed in languageList.
     * If no defaultLanguage is defined, the e-portal language will be taken.
     * If the e-portal language cannot be determined, the defaultLanguage is 'de'.
     * A language is only set automatically if it is included in the languageList.
     *
     * * web component: 'default-language'
     *
     * * @default: e-portal language or 'de'
     */
    defaultLanguage?: QdShellHeaderWidgetLanguage;
    /**
     * @description PAMS API environment that is used for login status requests.
     * An empty string can be set initially if the environment is set asynchronously.
     *
     * * Note: The type 'ABN' has been added here.
     *
     * * web component: 'environment'
     */
    pamsEnvironment?: QdShellHeaderWidgetEnvironment | '';
    /**
     * @description Set if the icon with the info panel should be displayed. The Info panel can contain info,
     * links and contact information.
     *
     * * web component: 'show-info'
     *
     * * @default: false
     */
    isInfoActive?: boolean;
    /**
     * @description Additional links that are displayed in the info panel.
     *
     * * web component: 'links' (modified)
     *
     * * @example
     * ```ts
     * [
     *  {
     * 		i18n: "i18n.error.success",
     * 		href: "/success"
     * 	},
     *  {
     * 		i18n: "i18n.error.info",
     * 		hrefs: {
     * 			de: "/info/de",
     * 			fr: "/info/fr",
     * 			it: "/info/it",
     * 			en: "/info/en"
     * 		}
     * 	}
     * ]
     * ```
     */
    infoLinks?: QdShellHeaderWidgetInfoLink[];
    /**
     * @description Contact information that are displayed in the info panel. It can contain an email address and a
     * telephone number.
     *
     * * web component: 'contact' (modified)
     *
     * * @example
     * ```ts
     * {
     *    emailAddress: "support@bazg.admin.ch",
     *    telephoneNumber: "+41 800 757 123"
     * }
     * ```
     */
    contactInfo?: QdShellHeaderWidgetContactInfo;
    /**
     * @description Set if links should be opened in a new tab.
     *
     * * web component: 'open-in-new-tab'
     *
     * * @default: true
     */
    openLinksInNewTab?: boolean;
    /**
     * @description Whether icon and button size and other things should be adjusted because the header widget
     * is being used in the *.admin.ch AEM (Adobe Experience Manager) CMS context and should fit with the
     * surrounding elements.
     *
     * When set to true the appearance changes as follows:
     * - the language selection is hidden
     * - smaller icons
     * - red dot instead of number on notification inbox icon
     *
     * * web component: 'cms'
     */
    isInCmsContext?: boolean;
    /**
     * @description Show or hide the language selector.
     *
     * * web component: 'show-languages'
     *
     * * @default: true
     */
    showLanguages?: boolean;
    /**
     * @description Show or hide the notification button.
     *
     * * web component: 'show-notifications'
     *
     * * @default: true
     */
    showNotifications?: boolean;
    /**
     * @description Show or hide the services button.
     *
     * * web component: 'show-eportal-services'
     *
     * * @default: true
     */
    showEportalServices?: boolean;
    /**
     * @description Show or hide the settings option.
     *
     * * web component: 'show-settings'
     *
     * * @default: true
     */
    showSettings?: boolean;
    /**
     * @description Links displayed in the profile menu. You can also add a badge for each input, and they also handle different languages.
     *
     * * web component: 'profile-links'
     *
     * * @example
     * ```ts
     * [
     *  {
     * 		i18n: "i18n.profile.one",
     * 		href: "/profile-one"
     * 	},
     *  {
     * 		i18n: "i18n.profile.two",
     * 		hrefs: {
     * 			de: "/profile-two/de",
     * 			fr: "/profile-two/fr",
     * 			it: "/profile-two/it",
     * 			en: "/profile-two/en"
     * 		},
     * 		batch: 2
     * 	},
     *  {
     * 		i18n: "i18n.profile.three",
     * 		href: "/profile-three",
     * 		batch: 3
     * 	}
     * ]
     * ```
     */
    profileLinks?: QdShellHeaderWidgetProfileLink[];
    /**
     * @description Custom button links as icons.
     *
     * * Note: The custom buttons are displayed only if the user is logged onto the correct environment - for "DEV": "https://eportal-d.admin.ch".
     *
     * For the specific characteristics and documentation:
     * * @see https://confluence.bit.admin.ch/display/EN4/Header+widget+documentation
     *
     * * web component: 'custom-buttons'
     *
     * * @example
     * ```ts
     * [
     *  {
     * 		obliqueIconName: 'calendar',
     * 		isVisibleInMobile: true,
     * 		iconLink: {
     * 			i18n: 'i18n.customButtons.calendar.ariaLabel',
     * 			hrefs: {
     * 				de: '/custom-buttons/calendar/de',
     * 				fr: '/custom-buttons/calendar/fr',
     * 				it: '/custom-buttons/calendar/it',
     * 				en: '/custom-buttons/calendar/en'
     * 			},
     * 			badge: 5
     * 		},
     * 		childLinks: [{
     * 				i18n: 'i18n.customButtons.childLinkText.one',
     * 				href: '/custom-buttons-child-link-one',
     * 				badge: 1
     * 			},
     * 			{
     * 				i18n: 'i18n.customButtons.childLinkText.two',
     * 				hrefs: {
     * 					de: '/custom-buttons/child-link-two/de',
     * 					fr: '/custom-buttons/child-link-two/fr',
     * 					it: '/custom-buttons/child-link-two/it',
     * 					en: '/custom-buttons/child-link-two/en'
     * 				},
     * 				badge: 2
     * 			}
     * 		]
     * 	},
     *  {
     * 		obliqueIconName: 'archive',
     * 		isVisibleInMobile: false,
     * 		iconLink: {
     * 			i18n: 'i18n.customButtons.archive.ariaLabel',
     * 			badge: 5
     * 		}
     * 	},
     *  {
     * 		obliqueIconName: 'apps',
     * 		isVisibleInMobile: true,
     * 		iconLink: {
     * 			i18n: 'i18n.customButtons.apps.ariaLabel',
     * 			href: '/custom-buttons/apps',
     * 			badge: 8
     * 		}
     * 	}
     * ]
     * ```
     */
    customButtonsLinks?: QdShellHeaderWidgetCustomButtonLinks[];
    /**
     * @description Path to the header widget javascript asset.
     *
     * * @default: 'https://widget.eportal.admin.ch/header-widget.js'
     */
    javascriptAssetPath?: string;
}
export type QdShellHeaderWidgetUnmappedConfigKeys = 'languageList' | 'javascriptAssetPath';
export type QdShellHeaderWidgetLanguage = 'de' | 'en' | 'fr' | 'it';
export type QdShellHeaderWidgetEnvironment = 'LOCAL' | 'DEV' | 'TEST' | 'REF' | 'ABN' | 'PROD';
export type QdShellHeaderWidgetInfoLink = QdShellHeaderWidgetSingleHref | QdShellHeaderWidgetMultiHrefs;
type QdShellHeaderWidgetProfileLink = QdShellHeaderWidgetSingleHrefBadge | QdShellHeaderWidgetMultiHrefBadge;
export interface QdShellHeaderWidgetCustomButtonLinks {
    obliqueIconName: string;
    /**
     * * web component: 'fixedMobileView'
     * * @default: true
     */
    isVisibleInMobile: boolean;
    iconLink?: QdShellHeaderWidgetSingleHref | (QdShellHeaderWidgetMultiHrefs & QdShellHeaderWidgetBadge);
    childLinks?: (QdShellHeaderWidgetSingleHrefBadge | QdShellHeaderWidgetMultiHrefBadge)[];
}
export interface QdShellHeaderWidgetSingleHref {
    i18n: string;
    href?: string;
}
export interface QdShellHeaderWidgetMultiHrefs {
    i18n: string;
    hrefs?: QdShellHeaderWidgetHrefs;
}
type QdShellHeaderWidgetSingleHrefBadge = QdShellHeaderWidgetSingleHref & QdShellHeaderWidgetBadge;
type QdShellHeaderWidgetMultiHrefBadge = QdShellHeaderWidgetMultiHrefs & QdShellHeaderWidgetBadge;
interface QdShellHeaderWidgetBadge {
    badge?: number;
}
interface QdShellHeaderWidgetHrefs {
    de?: string;
    fr?: string;
    it?: string;
    en?: string;
}
interface QdShellHeaderWidgetContactInfo {
    emailAddress?: string;
    telephoneNumber?: string;
}
/**
 * @description Attributes Mapping as key value pairs.
 */
export type QdHeaderWidgetAttributeMapping = {
    [configProperty in keyof Omit<QdShellHeaderWidgetConfig, QdShellHeaderWidgetUnmappedConfigKeys>]-?: string;
};
/**
 * @description Result object passing into header widget web component.
 */
export type QdShellHeaderWidgetMappedAttributes = {
    [attributeName: string]: string;
} & {
    links?: Observable<string>;
} & {
    'profile-links'?: Observable<string>;
} & {
    'custom-buttons'?: Observable<string>;
};
export {};
//# sourceMappingURL=shell-header-widget-config.interface.d.ts.map