import { IccAuthApi, IccDeviceApi } from '../icc-api';
import { Device } from '../icc-api/model/Device';
import { AuthenticationProvider } from './auth/AuthenticationProvider';
import { AbstractFilter } from "./filters/filters";
import { Connection } from "../icc-api/model/Connection";
import { SubscriptionOptions } from "./utils/websocket";
import { IccUserXApi } from "./icc-user-x-api";
export declare class IccDeviceXApi extends IccDeviceApi {
    private readonly userApi;
    private readonly authApi;
    constructor(host: string, headers: {
        [key: string]: string;
    }, authenticationProvider: AuthenticationProvider | undefined, userApi: IccUserXApi, authApi: IccAuthApi, fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
    /**
     * Subscribes to real-time device events using a WebSocket connection.
     * @param eventTypes the types of events to listen for (e.g. 'CREATE', 'UPDATE', 'DELETE').
     * @param filter an optional filter to restrict which device events trigger the callback.
     * @param eventFired the callback function invoked when a matching device event is received.
     * @param options optional subscription configuration such as connection parameters and retry behaviour.
     * @return a connection object that can be used to manage the WebSocket subscription lifecycle.
     */
    subscribeToDeviceEvents(eventTypes: ('CREATE' | 'UPDATE' | 'DELETE')[], filter: AbstractFilter<Device> | undefined, eventFired: (dataSample: Device) => Promise<void>, options?: SubscriptionOptions): Promise<Connection>;
}
