import { IManagedObject } from '@c8y/client';
import { BuiltInActionType, ExtensionFactory, FilteringModifier, ServerSideDataResult } from '@c8y/ngx-components';
import { Observable } from 'rxjs';
export type DataCallback = (serverSideDataResult: ServerSideDataResult) => ServerSideDataResult;
export interface FilterConfig {
    columnName: string;
    filteringModifier: FilteringModifier;
}
export declare const enum DeviceGridActionType {
    Delete = "DELETE"
}
export declare const enum DeviceGridBulkActionType {
}
/**
 * Defines an action hook for the device grid.
 *
 * @interface DeviceGridActionHook
 * @member {BuiltInActionType} type of the action
 * @member {boolean} refreshAfterActionDone refreshs the device grid after the action execution
 * @member {(mo: IManagedObject) => boolean} deviceMatches resolves the object of the row and needs to return true for an element that you want to execute your action on
 * ```typescript
 *  {
 *     ...
 *     deviceMatches: (device: IManagedObject) => device?.type === 'my_custom_type'
 *  }
 * ```
 * @member {(mo: IManagedObject) => Observable<unknown> | Promise<unknown> | unknown} onAction is called for a matching device. It resolves the object of the row.
 * ```typescript
 *  {
 *     ...
 *     onAction: (device: IManagedObject) => this.myService.triggerCustomAction(device)
 *  }
 * ```
 *
 * @deprecated Use `ActionControlHook` instead.
 */
export interface DeviceGridActionHook {
    type: BuiltInActionType | string;
    text?: string;
    icon?: string;
    showOnHover?: boolean;
    refreshAfterActionDone: boolean;
    deviceMatches: (mo: IManagedObject) => boolean;
    onAction: (mo: IManagedObject) => Observable<unknown> | Promise<unknown> | unknown;
}
/**
 * @deprecated Use `ActionControlFactory` instead.
 */
export type DeviceGridExtensionFactory = ExtensionFactory<DeviceGridActionHook>;
//# sourceMappingURL=device-grid.model.d.ts.map