import { BrandVersion, StoreBrandingService, BrandingVersionService, BrandingTrackingService, BrandingOptionsJson, BrandingShadesService, ApplyBrandingLocallyService } from '@c8y/ngx-components/branding/shared/data';
import { Observable } from 'rxjs';
import { ActivatedRoute, Router } from '@angular/router';
import { Pagination, DisplayOptions, ActionControl, Column, AppStateService, ZipService, ModalService, AlertService, MessageBannerService, FilesService, ThemeSwitcherService, CellRendererContext, ModalComponent, DroppedFile, ClipboardService } from '@c8y/ngx-components';
import { IApplication, ApplicationService } from '@c8y/client';
import { StaticAssetsService, StaticAsset } from '@c8y/ngx-components/static-assets/data';
import { BsModalService } from 'ngx-bootstrap/modal';
import { AddBrandingModalService } from '@c8y/ngx-components/branding/shared/lazy/add-branding-modal';
import * as i0 from '@angular/core';
import { OnDestroy } from '@angular/core';
import * as _angular_forms from '@angular/forms';
import { ControlValueAccessor, FormBuilder, FormControl, AsyncValidator } from '@angular/forms';
import { TranslateService } from '@ngx-translate/core';

declare class BrandingImportModalService {
    private modal;
    constructor(modal: BsModalService);
    openBrandingImportModal(): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<BrandingImportModalService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<BrandingImportModalService>;
}

declare class BrandingComponent {
    private brandings;
    private activatedRoute;
    private appState;
    private applicationService;
    private zip;
    private staticAssets;
    private router;
    private modal;
    private confirmModal;
    private brandingVersionService;
    private addBrandingModalService;
    private alert;
    private brandingImportModalService;
    private brandingTracking;
    pagination: Pagination;
    displayOptions: DisplayOptions;
    actionControls: ActionControl[];
    columns: Column[];
    currentAppContextPath: string;
    availableBrandingVariants$: Observable<{
        publicOptions: IApplication;
        variants: BrandVersion[];
    }>;
    private reloadTrigger;
    constructor(brandings: StoreBrandingService, activatedRoute: ActivatedRoute, appState: AppStateService, applicationService: ApplicationService, zip: ZipService, staticAssets: StaticAssetsService, router: Router, modal: BsModalService, confirmModal: ModalService, brandingVersionService: BrandingVersionService, addBrandingModalService: AddBrandingModalService, alert: AlertService, brandingImportModalService: BrandingImportModalService, brandingTracking: BrandingTrackingService);
    deleteAllBrandings(publicOptions?: IApplication): Promise<void>;
    exportBranding(variant: BrandVersion): Promise<void>;
    refresh(): void;
    addNewVersion(): Promise<void>;
    duplicateVersion(version: BrandVersion): Promise<void>;
    editBranding(brandingName: string): Promise<boolean>;
    getStartedUsingBranding(): Promise<void>;
    applyToApps(version: BrandVersion): Promise<void>;
    importBranding(): Promise<void>;
    private removeTagsFromOtherVersions;
    static ɵfac: i0.ɵɵFactoryDeclaration<BrandingComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BrandingComponent, "c8y-branding", never, {}, {}, never, never, true, never>;
}

declare class ApplyBrandingToAppService {
    private apps;
    constructor(apps: ApplicationService);
    getBrandableApps(): Promise<IApplication[]>;
    getHostedAppsWhereDynamicOptionsUrlIsUndefined(apps: IApplication[]): IApplication[];
    static ɵfac: i0.ɵɵFactoryDeclaration<ApplyBrandingToAppService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ApplyBrandingToAppService>;
}

declare class BrandingFormComponent implements ControlValueAccessor {
    private formBuilder;
    private messageBannerService;
    formGroup: ReturnType<BrandingFormComponent['initForm']>;
    messageBannerHelp: "Supports markdown. Use {{ headerMark }} for headers, {{ listMark }} for lists, {{ boldMark }} for bold, {{ italicMark }} for italic, and {{ linkMark }} for links.";
    messageBannerHelpParams: {
        headerMark: string;
        listMark: string;
        boldMark: string;
        italicMark: string;
        linkMark: string;
    };
    private onTouched;
    private externalValue;
    private formGroupValueChanges$;
    constructor(formBuilder: FormBuilder, messageBannerService: MessageBannerService);
    writeValue(obj: string): void;
    registerOnChange(fn: (value: string) => void): void;
    registerOnTouched(fn: () => void): void;
    cockieBannerChange(toggleState: boolean): void;
    onBlur(): void;
    initForm(): _angular_forms.FormGroup<{
        darkThemeAvailable: _angular_forms.FormControl<boolean>;
        cookieBanner: _angular_forms.FormGroup<{
            cookieBannerTitle: _angular_forms.FormControl<string>;
            cookieBannerText: _angular_forms.FormControl<string>;
            cookieBannerDisabled: _angular_forms.FormControl<boolean>;
            policyUrl: _angular_forms.FormControl<string>;
            policyVersion: _angular_forms.FormControl<string>;
        }>;
        messageBanner: _angular_forms.FormGroup<{
            messageBannerEnabled: _angular_forms.FormControl<boolean>;
            messageBannerContent: _angular_forms.FormControl<string>;
            messageBannerType: _angular_forms.FormControl<"success" | "warning" | "danger" | "info" | "system">;
            messageBannerId: _angular_forms.FormControl<string>;
        }>;
        baseTypography: _angular_forms.FormGroup<{
            "font-url": _angular_forms.FormControl<string>;
            "font-family-base": _angular_forms.FormControl<string>;
        }>;
        headingsAndNavigatorTypography: _angular_forms.FormGroup<{
            "font-family-headings": _angular_forms.FormControl<string>;
            "navigator-font-family": _angular_forms.FormControl<string>;
        }>;
        genericApplicationOptions: _angular_forms.FormGroup<{
            globalTitle: _angular_forms.FormControl<string>;
            faviconUrl: _angular_forms.FormControl<string>;
        }>;
    }>;
    applyStateToForm(branding: BrandingOptionsJson): void;
    convertFormToState(value: BrandingFormComponent['formGroup']['value']): string;
    previewBanner(): void;
    private setupMessageBannerIdAutoGeneration;
    private ensureMessageBannerIdExists;
    static ɵfac: i0.ɵɵFactoryDeclaration<BrandingFormComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BrandingFormComponent, "c8y-branding-form", never, {}, {}, never, never, true, never>;
}

declare class BrandingThemeFormComponent implements ControlValueAccessor, OnDestroy {
    private activatedRoute;
    private formBuilder;
    private filesService;
    private brandingShades;
    private themeSwitcher;
    readonly formStructure: {
        readonly brandColors: {
            readonly label: "Brand colors";
            readonly brandColors: {
                readonly label: "Brand colors";
                readonly colors: [{
                    readonly label: "Brand primary";
                    readonly formControlName: "brand-primary";
                }, {
                    readonly label: "Brand light";
                    readonly formControlName: "brand-light";
                }, {
                    readonly label: "Brand dark";
                    readonly formControlName: "brand-dark";
                }];
            };
            readonly shades: {
                readonly label: "Shades";
                readonly colorColumn: [[{
                    readonly label: "c8y-brand-10";
                    readonly formControlName: "c8y-brand-10";
                }, {
                    readonly label: "c8y-brand-20";
                    readonly formControlName: "c8y-brand-20";
                }, {
                    readonly label: "c8y-brand-30";
                    readonly formControlName: "c8y-brand-30";
                }, {
                    readonly label: "c8y-brand-40";
                    readonly formControlName: "c8y-brand-40";
                }], [{
                    readonly label: "c8y-brand-50";
                    readonly formControlName: "c8y-brand-50";
                }, {
                    readonly label: "c8y-brand-60";
                    readonly formControlName: "c8y-brand-60";
                }, {
                    readonly label: "c8y-brand-70";
                    readonly formControlName: "c8y-brand-70";
                }, {
                    readonly label: "c8y-brand-80";
                    readonly formControlName: "c8y-brand-80";
                }]];
            };
        };
        readonly statusColors: {
            readonly label: "Status colors";
            readonly subCategories: readonly [{
                readonly label: "Info colors";
                readonly colors: [{
                    readonly label: "Info";
                    readonly formControlName: "palette-status-info";
                }, {
                    readonly label: "Info light";
                    readonly formControlName: "palette-status-info-light";
                }, {
                    readonly label: "Info dark";
                    readonly formControlName: "palette-status-info-dark";
                }];
            }, {
                readonly label: "Warning colors";
                readonly colors: [{
                    readonly label: "Warning";
                    readonly formControlName: "palette-status-warning";
                }, {
                    readonly label: "Warning light";
                    readonly formControlName: "palette-status-warning-light";
                }, {
                    readonly label: "Warning dark";
                    readonly formControlName: "palette-status-warning-dark";
                }];
            }, {
                readonly label: "Danger colors";
                readonly colors: [{
                    readonly label: "Danger";
                    readonly formControlName: "palette-status-danger";
                }, {
                    readonly label: "Danger light";
                    readonly formControlName: "palette-status-danger-light";
                }, {
                    readonly label: "Danger dark";
                    readonly formControlName: "palette-status-danger-dark";
                }];
            }, {
                readonly label: "Success colors";
                readonly colors: [{
                    readonly label: "Success";
                    readonly formControlName: "palette-status-success";
                }, {
                    readonly label: "Success light";
                    readonly formControlName: "palette-status-success-light";
                }, {
                    readonly label: "Success dark";
                    readonly formControlName: "palette-status-success-dark";
                }];
            }];
        };
        readonly actionBar: {
            readonly label: "Action bar";
            readonly colorColumns: readonly [{
                readonly label: "Action bar";
                readonly colorColumns: [[{
                    readonly label: "Background color";
                    readonly formControlName: "action-bar-background-default";
                }, {
                    readonly label: "Text color";
                    readonly formControlName: "action-bar-color-default";
                }, {
                    readonly label: "Icon color";
                    readonly formControlName: "action-bar-icon-color";
                }], [{
                    readonly label: "Button color";
                    readonly formControlName: "action-bar-color-actions";
                }, {
                    readonly label: "Button hover color";
                    readonly formControlName: "action-bar-color-actions-hover";
                }]];
            }];
        };
        readonly mainHeader: {
            readonly label: "Main header";
            readonly colorColumns: readonly [{
                readonly label: "Main header";
                readonly colorColumns: [[{
                    readonly label: "Background color";
                    readonly formControlName: "header-color";
                }, {
                    readonly label: "Text color";
                    readonly formControlName: "header-text-color";
                }], [{
                    readonly label: "Button hover color";
                    readonly formControlName: "header-hover-color";
                }]];
            }];
        };
        readonly navigator: {
            readonly label: "Navigator";
            readonly colorColumns: readonly [{
                readonly label: "Navigation";
                readonly colors: [{
                    readonly label: "Background color";
                    readonly formControlName: "navigator-bg-color";
                }, {
                    readonly label: "Text color";
                    readonly formControlName: "navigator-text-color";
                }, {
                    readonly label: "Separator color";
                    readonly formControlName: "navigator-separator-color";
                }];
            }, {
                readonly label: "Header";
                readonly colors: [{
                    readonly label: "Header background color";
                    readonly formControlName: "navigator-header-bg";
                }, {
                    readonly label: "Title color";
                    readonly formControlName: "navigator-title-color";
                }];
            }, {
                readonly label: "Active node";
                readonly colors: [{
                    readonly label: "Active background color";
                    readonly formControlName: "navigator-active-bg";
                }, {
                    readonly label: "Active border color";
                    readonly formControlName: "navigator-border-active";
                }, {
                    readonly label: "Active text color";
                    readonly formControlName: "navigator-color-active";
                }];
            }];
        };
        readonly rightDrawer: {
            readonly label: "Right drawer";
            readonly colorColumns: readonly [{
                readonly label: "Panel";
                readonly colors: [{
                    readonly label: "Background color";
                    readonly formControlName: "right-drawer-background-default";
                }, {
                    readonly label: "Text color";
                    readonly formControlName: "right-drawer-text-color-default";
                }, {
                    readonly label: "Text muted color";
                    readonly formControlName: "right-drawer-text-color-muted";
                }, {
                    readonly label: "Separator color";
                    readonly formControlName: "right-drawer-separator-color";
                }];
            }, {
                readonly label: "Interactive";
                readonly colors: [{
                    readonly label: "Link color";
                    readonly formControlName: "right-drawer-link-color";
                }, {
                    readonly label: "Link hover color";
                    readonly formControlName: "right-drawer-link-color-hover";
                }];
            }];
        };
    };
    formGroup: ReturnType<BrandingThemeFormComponent['initForm']>;
    imageFileExtensions: string[];
    resetShadesButtonEnabled$: Observable<boolean>;
    private onTouched;
    private externalValue;
    private formGroupValueChanges$;
    private addDarkThemePrefix;
    private readonly varsToConvertToHeight;
    constructor(activatedRoute: ActivatedRoute, formBuilder: FormBuilder, filesService: FilesService, brandingShades: BrandingShadesService, themeSwitcher: ThemeSwitcherService);
    ngOnDestroy(): void;
    regenerateShadesBasedOnPrimaryColor(color?: string): void;
    writeValue(obj: string): void;
    registerOnChange(fn: (value: string) => void): void;
    registerOnTouched(fn: () => void): void;
    onBlur(): void;
    initForm(): _angular_forms.FormGroup<{
        "navigator-platform-logo-height": _angular_forms.FormControl<string | number>;
        "brand-logo-img-height": _angular_forms.FormControl<number>;
        "btn-border-radius-base": _angular_forms.FormControl<number>;
        "brand-logo-img": _angular_forms.FormControl<string>;
        "navigator-platform-logo": _angular_forms.FormControl<string>;
        "login-platform-animation-img": _angular_forms.FormControl<string>;
        "brand-dark": _angular_forms.FormControl<string>;
        "brand-light": _angular_forms.FormControl<string>;
        "brand-primary": _angular_forms.FormControl<string>;
        "c8y-brand-10": _angular_forms.FormControl<string>;
        "c8y-brand-20": _angular_forms.FormControl<string>;
        "c8y-brand-30": _angular_forms.FormControl<string>;
        "c8y-brand-40": _angular_forms.FormControl<string>;
        "c8y-brand-50": _angular_forms.FormControl<string>;
        "c8y-brand-60": _angular_forms.FormControl<string>;
        "c8y-brand-70": _angular_forms.FormControl<string>;
        "c8y-brand-80": _angular_forms.FormControl<string>;
        "palette-status-info": _angular_forms.FormControl<string>;
        "palette-status-warning": _angular_forms.FormControl<string>;
        "palette-status-success": _angular_forms.FormControl<string>;
        "palette-status-danger": _angular_forms.FormControl<string>;
        "palette-status-info-light": _angular_forms.FormControl<string>;
        "palette-status-warning-light": _angular_forms.FormControl<string>;
        "palette-status-success-light": _angular_forms.FormControl<string>;
        "palette-status-danger-light": _angular_forms.FormControl<string>;
        "palette-status-info-dark": _angular_forms.FormControl<string>;
        "palette-status-warning-dark": _angular_forms.FormControl<string>;
        "palette-status-success-dark": _angular_forms.FormControl<string>;
        "palette-status-danger-dark": _angular_forms.FormControl<string>;
        "body-background-color": _angular_forms.FormControl<string>;
        "text-color": _angular_forms.FormControl<string>;
        "text-muted": _angular_forms.FormControl<string>;
        "link-color": _angular_forms.FormControl<string>;
        "link-hover-color": _angular_forms.FormControl<string>;
        "action-bar-background-default": _angular_forms.FormControl<string>;
        "action-bar-color-actions-hover": _angular_forms.FormControl<string>;
        "action-bar-color-actions": _angular_forms.FormControl<string>;
        "action-bar-color-default": _angular_forms.FormControl<string>;
        "action-bar-icon-color": _angular_forms.FormControl<string>;
        "header-color": _angular_forms.FormControl<string>;
        "header-text-color": _angular_forms.FormControl<string>;
        "header-hover-color": _angular_forms.FormControl<string>;
        "navigator-bg-color": _angular_forms.FormControl<string>;
        "navigator-active-bg": _angular_forms.FormControl<string>;
        "navigator-border-active": _angular_forms.FormControl<string>;
        "navigator-header-bg": _angular_forms.FormControl<string>;
        "navigator-title-color": _angular_forms.FormControl<string>;
        "navigator-separator-color": _angular_forms.FormControl<string>;
        "navigator-text-color": _angular_forms.FormControl<string>;
        "navigator-color-active": _angular_forms.FormControl<string>;
        "right-drawer-background-default": _angular_forms.FormControl<string>;
        "right-drawer-text-color-default": _angular_forms.FormControl<string>;
        "right-drawer-separator-color": _angular_forms.FormControl<string>;
        "right-drawer-link-color": _angular_forms.FormControl<string>;
        "right-drawer-link-color-hover": _angular_forms.FormControl<string>;
        "right-drawer-text-color-muted": _angular_forms.FormControl<string>;
    }>;
    applyStateToForm(branding: BrandingOptionsJson): void;
    convertFormToState(value: BrandingThemeFormComponent['formGroup']['value']): string;
    private getPrefix;
    static ɵfac: i0.ɵɵFactoryDeclaration<BrandingThemeFormComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BrandingThemeFormComponent, "c8y-branding-theme-form", never, {}, {}, never, never, true, never>;
}

declare class EditBrandingRouterOutletComponent implements OnDestroy {
    private activatedRoute;
    private store;
    private router;
    private alert;
    private applyBrandingService;
    private appState;
    brandingName$: Observable<string>;
    formControl: FormControl<string>;
    fallbackBranding$: Observable<BrandingOptionsJson>;
    tabName$: Observable<string>;
    isGlobalBranding$: Observable<boolean>;
    private newBranding;
    private currentlyDisplayedComponent;
    constructor(activatedRoute: ActivatedRoute, store: StoreBrandingService, router: Router, alert: AlertService, applyBrandingService: ApplyBrandingLocallyService, appState: AppStateService);
    ngOnDestroy(): void;
    routeActivated(event: ControlValueAccessor & Partial<AsyncValidator>): void;
    saveBranding(): Promise<void>;
    cancel(): void;
    openPreview(): Promise<void>;
    markAsActive(): Promise<void>;
    onBrandingVarChanges(value: string): Promise<void>;
    private cleanUpObjects;
    static ɵfac: i0.ɵɵFactoryDeclaration<EditBrandingRouterOutletComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EditBrandingRouterOutletComponent, "c8y-edit-branding-router-outlet", never, {}, {}, never, never, true, never>;
}

declare class BrandingTagsCellRendererComponent {
    private appState;
    hasLatestTag: boolean;
    appContextPathsOrApps$: Observable<Array<string | IApplication>>;
    constructor(context: CellRendererContext, appState: AppStateService);
    private getAppContextPathsOrApps$;
    static ɵfac: i0.ɵɵFactoryDeclaration<BrandingTagsCellRendererComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BrandingTagsCellRendererComponent, "c8y-branding-tags-cell-renderer", never, {}, {}, never, never, true, never>;
}

declare class BrandingImportModalComponent {
    private addBrandingModalService;
    private zip;
    private staticAssets;
    private brandings;
    modal: ModalComponent;
    result: Promise<void>;
    files: DroppedFile[];
    loading: boolean;
    private _resovle;
    private _reject;
    constructor(addBrandingModalService: AddBrandingModalService, zip: ZipService, staticAssets: StaticAssetsService, brandings: StoreBrandingService);
    droppedFile(event: DroppedFile[]): Promise<void>;
    import(file: File): Promise<void>;
    cancel(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<BrandingImportModalComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BrandingImportModalComponent, "c8y-branding-import-modal", never, {}, {}, never, never, true, never>;
}

declare class BrandingTagsHeaderCellRendererComponent {
    readonly heading: "Applied to";
    readonly popoverContent: "<p class=\"m-b-8\">Branding can be applied at two levels</p>\n    <ul class=\"list-unstyled m-b-0\">\n      <li class=\"m-b-4\">\n        <strong>Global: </strong>\n        <span>Applied to the entire platform, affecting all apps and interfaces.</span>\n      </li>\n      <li>\n        <strong>App-specific: </strong>\n        <span>Applied only to selected apps within the platform.</span>\n      </li>\n    </ul>";
    static ɵfac: i0.ɵɵFactoryDeclaration<BrandingTagsHeaderCellRendererComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BrandingTagsHeaderCellRendererComponent, "c8y-branding-tags-header-cell-renderer", never, {}, {}, never, never, true, never>;
}

declare class BrandingAssetsComponent {
    private clipboard;
    private filesService;
    private translate;
    filterOptions: ({
        label: "All";
        value: any[];
    } | {
        label: "Images";
        value: string[];
    } | {
        label: "Fonts";
        value: string[];
    })[];
    supportedFileExtensions: any[] | string[];
    constructor(clipboard: ClipboardService, filesService: FilesService, translate: TranslateService);
    onItemSelected(file: StaticAsset): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<BrandingAssetsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BrandingAssetsComponent, "c8y-branding-assets", never, {}, {}, never, never, true, never>;
}

export { ApplyBrandingToAppService, BrandingAssetsComponent, BrandingComponent, BrandingFormComponent, BrandingImportModalComponent, BrandingImportModalService, BrandingTagsCellRendererComponent, BrandingTagsHeaderCellRendererComponent, BrandingThemeFormComponent, EditBrandingRouterOutletComponent };
//# sourceMappingURL=index.d.ts.map
