import * as i1 from '@c8y/ngx-components';
import { CellRendererContext, BaseColumn, ColumnConfig, GenericHookType, GenericHookOptions, ActionControl, Column, DataGridService, DataSourceModifier, ServerSideDataResult, BreadcrumbFactory, Breadcrumb } from '@c8y/ngx-components';
import * as i0 from '@angular/core';
import { InjectionToken, EventEmitter } from '@angular/core';
import { SupportedIconsSuggestions } from '@c8y/ngx-components/icon-selector/icons';
import { ActivatedRoute, ActivatedRouteSnapshot } from '@angular/router';
import { InventoryService } from '@c8y/client';
import { ServiceCommandService } from '@c8y/ngx-components/services/shared';

declare class LastUpdatedDateCellRendererComponent {
    context: CellRendererContext;
    constructor(context: CellRendererContext);
    static ɵfac: i0.ɵɵFactoryDeclaration<LastUpdatedDateCellRendererComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LastUpdatedDateCellRendererComponent, "c8y-last-updated-date-cell-renderer", never, {}, {}, never, never, true, never>;
}

declare class LastUpdatedDateGridColumn extends BaseColumn {
    constructor(initialColumnConfig?: ColumnConfig);
    protected formatDate(dateToFormat: string): string;
}

declare class ServicesNameCellRendererComponent {
    context: CellRendererContext;
    constructor(context: CellRendererContext);
    static ɵfac: i0.ɵɵFactoryDeclaration<ServicesNameCellRendererComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ServicesNameCellRendererComponent, "c8y-services-name-cell-renderer", never, {}, {}, never, never, true, never>;
}

declare class ServiceNameGridColumn extends BaseColumn {
    constructor(initialColumnConfig?: ColumnConfig);
}

declare class ServiceTypeGridColumn extends BaseColumn {
    constructor(initialColumnConfig?: ColumnConfig);
}

/**
 * Extension hook allowing to register custom service statuses and configure their visual presentation.
 * @deprecated Consider using the `hookServiceStatus` function instead.
 */
declare const HOOK_SERVICE_STATUS: InjectionToken<StatusOption | StatusOption[]>;
/**
 * Extension hook allowing to register custom service statuses and configure their visual presentation.
 *
 * You can either provide a single `StatusOption` as parameter:
 * ```typescript
 *  hookServiceStatus(...)
 * ```
 *
 * Or an array to directly register multiple:
 * ```typescript
 *  hookServiceStatus([...])
 * ```
 *
 * Or you provide an Service that implements `ExtensionFactory<StatusOption>`
 * ```typescript
 *  export class MyServiceStatusFactory implements ExtensionFactory<StatusOption> {...}
 *  ...
 *  hookServiceStatus(MyServiceStatusFactory)
 * ```
 * A typed alternative to `HOOK_SERVICE_STATUS`.
 * @param status The `StatusOption`'s or `ExtensionFactory` to be provided.
 * @returns An `Provider` to be provided in your module.
 */
declare function hookServiceStatus(status: GenericHookType<StatusOption>, options?: Partial<GenericHookOptions>): i0.ValueProvider | i0.ClassProvider | i0.ExistingProvider;
/**
 * Defines the visual presentation of a service status option.
 */
interface StatusOption {
    /**
     * Key used for this status in the c8y_Service object.
     */
    key: string;
    /**
     * Human readable name of the status used to be translated.
     */
    label: string;
    /**
     * An icon to use to display the status.
     */
    icon: SupportedIconsSuggestions;
    /**
     * CSS class(es) used to e.g. accent the status (contextual color, etc.)
     */
    class?: string;
}
/**
 * Standard status options supported by the platform.
 */
declare const SERVICE_STATUS_OPTIONS: StatusOption[];

/**
 * The service for system wide registered service status options.
 * It provides the standard service statuses plus all custom status options
 * registered with the <code>HOOK_SERVICE_STATUS</code> extension hook.
 */
declare class StatusOptionsService {
    get options(): StatusOption[];
    private _options;
    constructor(options: Array<StatusOption | StatusOption[]>);
    static ɵfac: i0.ɵɵFactoryDeclaration<StatusOptionsService, [{ optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<StatusOptionsService>;
}

declare class ServicesStatusCellRendererComponent {
    context: CellRendererContext;
    statusOptionsService: StatusOptionsService;
    constructor(context: CellRendererContext, statusOptionsService: StatusOptionsService);
    static ɵfac: i0.ɵɵFactoryDeclaration<ServicesStatusCellRendererComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ServicesStatusCellRendererComponent, "c8y-services-status-cell-renderer", never, {}, {}, never, never, true, never>;
}

declare class StatusGridColumn extends BaseColumn {
    constructor(statusOptionsService: StatusOptionsService, initialColumnConfig?: ColumnConfig);
}

declare class ServicesDeviceTabComponent {
    private route;
    private inventoryService;
    private gridService;
    private statusOptionsService;
    private serviceCommand;
    deviceId: string | number;
    sizeRequest: Promise<number>;
    sizeRequestDone: boolean;
    refresh$: EventEmitter<void>;
    pagination: {
        pageSize: number;
        currentPage: number;
    };
    actionControls: ActionControl[];
    columns: Column[];
    serverSideDataCallback: any;
    noResultsMessage: "No results to display.";
    noDataMessage: "No services to display.";
    noResultsSubtitle: "Refine your search terms or check your spelling.";
    private queriesUtil;
    constructor(route: ActivatedRoute, inventoryService: InventoryService, gridService: DataGridService, statusOptionsService: StatusOptionsService, serviceCommand: ServiceCommandService);
    onDataSourceModifier(dataSourceModifier: DataSourceModifier): Promise<ServerSideDataResult>;
    trackByName(_index: any, column: Column): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<ServicesDeviceTabComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ServicesDeviceTabComponent, "c8y-services-device-tab", never, {}, {}, never, never, true, never>;
}

declare class ServicesDeviceTabGuard {
    private inventoryService;
    constructor(inventoryService: InventoryService);
    canActivate(route: ActivatedRouteSnapshot): Promise<boolean>;
    static ɵfac: i0.ɵɵFactoryDeclaration<ServicesDeviceTabGuard, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ServicesDeviceTabGuard>;
}

declare class ServicesDeviceTabModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<ServicesDeviceTabModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<ServicesDeviceTabModule, never, [typeof ServicesDeviceTabComponent, typeof LastUpdatedDateCellRendererComponent, typeof ServicesNameCellRendererComponent, typeof ServicesStatusCellRendererComponent], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<ServicesDeviceTabModule>;
}

declare class ServicesBreadcrumbFactory implements BreadcrumbFactory {
    private inventoryService;
    private contextData;
    constructor(inventoryService: InventoryService);
    get(route: ActivatedRoute): Promise<Breadcrumb>;
    static ɵfac: i0.ɵɵFactoryDeclaration<ServicesBreadcrumbFactory, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ServicesBreadcrumbFactory>;
}

declare class ServicesModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<ServicesModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<ServicesModule, never, [typeof i1.CoreModule, typeof ServicesDeviceTabModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<ServicesModule>;
}

export { HOOK_SERVICE_STATUS, LastUpdatedDateCellRendererComponent, LastUpdatedDateGridColumn, SERVICE_STATUS_OPTIONS, ServiceNameGridColumn, ServiceTypeGridColumn, ServicesBreadcrumbFactory, ServicesDeviceTabComponent, ServicesDeviceTabGuard, ServicesDeviceTabModule, ServicesModule, ServicesNameCellRendererComponent, ServicesStatusCellRendererComponent, StatusGridColumn, StatusOptionsService, hookServiceStatus };
export type { StatusOption };
//# sourceMappingURL=index.d.ts.map
