import * as i0 from '@angular/core';
import { EventEmitter, OnInit } from '@angular/core';
import * as i1 from '@c8y/ngx-components';
import { DataGridService, UserPreferencesService, ModalService, Column, Pagination, ActionControl, ServerSideDataCallback, DisplayOptions, GainsightService, DataSourceModifier, ServerSideDataResult, ModalLabels } from '@c8y/ngx-components';
import * as i2 from 'ngx-bootstrap/tooltip';
import * as i3 from '@c8y/ngx-components/device-grid';
import * as i4 from '@c8y/ngx-components/context-dashboard';
import { ContextDashboardService, ContextDashboardManagedObject } from '@c8y/ngx-components/context-dashboard';
import * as _c8y_client from '@c8y/client';
import { InventoryService, QueriesUtil, IResultList, IManagedObject } from '@c8y/client';
import { TranslateService } from '@ngx-translate/core';
import { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';
import { Router } from '@angular/router';

interface TypeDashboardFilter {
    query: string;
    text?: string;
    pageSize: number;
    currentPage: number;
    withTotalPages: boolean;
    withTotalElements: boolean;
}
declare const DASHBOARD_MANAGER_PRODUCT_EXPERIENCE: {
    readonly EVENTS: {
        readonly DASHBOARD_TEMPLATE: "dashboardTemplate";
    };
    readonly COMPONENTS: {
        readonly TYPE_DASHBOARDS_LIST: "type-dashboards-list";
        readonly TYPE_DASHBOARD_TARGET_ASSETS_GRID: "type-dashboard-target-assets-grid";
    };
    readonly ACTIONS: {
        readonly DELETE_TYPE_DASHBOARD: "deleteTypeDashboard";
        readonly EDIT_TYPE_DASHBOARD: "editTypeDashboard";
        readonly OPEN_DASHBOARD_INSTANCE_TO_EDIT: "openDashboardInstanceToEdit";
    };
};

declare class DashboardManagerService extends DataGridService {
    protected inventory: InventoryService;
    protected userPreferencesService: UserPreferencesService;
    protected modal: ModalService;
    protected translateService: TranslateService;
    private contextDashboardService;
    queriesUtil: QueriesUtil;
    baseQuery: {
        __filter: {
            __and: ({
                'c8y_Dashboard.deviceType': {
                    __eq: boolean;
                };
                __has?: undefined;
            } | {
                __has: string;
                'c8y_Dashboard.deviceType'?: undefined;
            })[];
        };
    };
    private readonly baseTypeDashboardsFilter;
    constructor(inventory: InventoryService, userPreferencesService: UserPreferencesService, modal: ModalService, translateService: TranslateService, contextDashboardService: ContextDashboardService);
    getColumns(): Column[];
    getDefaultPagination(): Pagination;
    getData(columns: Column[], pagination: Pagination, text?: string): Promise<IResultList<IManagedObject>>;
    getTotal(): Promise<number>;
    delete(dashboard: ContextDashboardManagedObject, onSuccess: () => void): Promise<void>;
    private getFilters;
    private getQueryString;
    static ɵfac: i0.ɵɵFactoryDeclaration<DashboardManagerService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DashboardManagerService>;
}

declare class TypeDashboardsListComponent {
    private dashboardManagerService;
    private bsModalService;
    private gainsightService;
    title: "Type dashboards";
    loadMoreItemsLabel: "Load more dashboards";
    loadingItemsLabel: string;
    columns: Column[];
    pagination: i1.Pagination;
    actionControls: ActionControl[];
    serverSideDataCallback: ServerSideDataCallback;
    displayOptions: DisplayOptions;
    refresh: EventEmitter<void>;
    constructor(dashboardManagerService: DashboardManagerService, bsModalService: BsModalService, gainsightService: GainsightService);
    delete(dashboard: ContextDashboardManagedObject): Promise<void>;
    openTargetAssetsModal(dashboard: ContextDashboardManagedObject): void;
    trackByName(_index: any, column: Column): string;
    onDataSourceModifier(dataSourceModifier: DataSourceModifier): Promise<ServerSideDataResult>;
    static ɵfac: i0.ɵɵFactoryDeclaration<TypeDashboardsListComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TypeDashboardsListComponent, "c8y-dashboard-manager", never, {}, {}, never, never, true, never>;
}

declare class TypeDashboardTargetAssetsModalComponent {
    private bsModalRef;
    labels: ModalLabels;
    dashboard: ContextDashboardManagedObject;
    constructor(bsModalRef: BsModalRef);
    handleKeyboardEvent(event: KeyboardEvent): void;
    close(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TypeDashboardTargetAssetsModalComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TypeDashboardTargetAssetsModalComponent, "c8y-type-dashboard-target-assets-modal", never, { "dashboard": { "alias": "dashboard"; "required": false; }; }, {}, never, never, true, never>;
}

declare class TypeDashboardAssetsGridService extends DataGridService {
    protected inventoryService: InventoryService;
    protected userPreferencesService: UserPreferencesService;
    constructor(inventoryService: InventoryService, userPreferencesService: UserPreferencesService);
    getDefaultColumns(columnsForDevice?: boolean): Column[];
    getData(columns: Column[], pagination: Pagination, query?: any, text?: any): Promise<_c8y_client.IResultList<_c8y_client.IManagedObject>>;
    getCount(columns: Column[], pagination: Pagination, query?: any, text?: string): Promise<number>;
    getTotal(query?: any): Promise<number>;
    private getFilters;
    private getDeviceQueryString;
    static ɵfac: i0.ɵɵFactoryDeclaration<TypeDashboardAssetsGridService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<TypeDashboardAssetsGridService>;
}

declare class TypeDashboardTargetAssetsGridComponent implements OnInit {
    private router;
    private assetsGridService;
    private contextDashboardService;
    private gainsightService;
    labels: ModalLabels;
    columns: Column[];
    actionControls: ActionControl[];
    loadMoreItemsLabel: "Load more assets";
    loadingItemsLabel: string;
    pagination: {
        pageSize: number;
        currentPage: number;
    };
    serverSideDataCallback: ServerSideDataCallback;
    dashboard: ContextDashboardManagedObject;
    onNavigateToAsset: EventEmitter<void>;
    private isDeviceDashboard;
    constructor(router: Router, assetsGridService: TypeDashboardAssetsGridService, contextDashboardService: ContextDashboardService, gainsightService: GainsightService);
    ngOnInit(): void;
    onDataSourceModifier(dataSourceModifier: DataSourceModifier): Promise<ServerSideDataResult>;
    trackByName(_index: any, column: Column): string;
    navigateToDevice(val: IManagedObject): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TypeDashboardTargetAssetsGridComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TypeDashboardTargetAssetsGridComponent, "c8y-type-dashboard-target-assets-grid", never, { "dashboard": { "alias": "dashboard"; "required": false; }; }, { "onNavigateToAsset": "onNavigateToAsset"; }, never, never, true, never>;
}

declare class DashboardManagerModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DashboardManagerModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DashboardManagerModule, never, [typeof i1.CoreModule, typeof i2.TooltipModule, typeof i3.DeviceGridModule, typeof i4.ContextDashboardModule, typeof i1.ModalModule, typeof i4.TypeDashboardInfoComponent, typeof TypeDashboardsListComponent, typeof TypeDashboardTargetAssetsModalComponent, typeof TypeDashboardTargetAssetsGridComponent], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DashboardManagerModule>;
}

export { DASHBOARD_MANAGER_PRODUCT_EXPERIENCE, DashboardManagerModule, TypeDashboardsListComponent };
export type { TypeDashboardFilter };
//# sourceMappingURL=index.d.ts.map
