import { Tap } from '@iotize/tap';
import { MonitorEngine } from '@iotize/tap/data';
import { DataLogger } from '@iotize/tap/data-log';
import { BehaviorSubject, Observable } from 'rxjs';
export declare namespace IonicDataLogger {
    interface PacketInfo<DataType = any> extends DataLogger.RawPacket {
        meta: DataLogger.RawPacket.Meta & {
            bundleName?: string;
        };
        data: DataLogger.RawPacket.Data;
        decodedData: DataType;
    }
    interface CachePacketType {
        id: number;
        name: string;
        packets: IonicDataLogger.PacketInfo<any>[];
    }
    interface InstanceOptions {
        period: number;
    }
}
/**
 * Experimental data logger class
 *
 * @experimental
 */
export declare class IonicDataLogger {
    private tap;
    options: IonicDataLogger.InstanceOptions;
    controller: {
        period: BehaviorSubject<number>;
        state: MonitorEngine.State;
    };
    /**
     * Packet per packet stream
     */
    stream: Observable<IonicDataLogger.PacketInfo>;
    /**
     * Whole data stream
     */
    private _data;
    private _data$;
    get data(): Observable<IonicDataLogger.PacketInfo[]>;
    _packetPerBundles: Record<number, IonicDataLogger.CachePacketType>;
    static fromTap(tap: Tap, options: IonicDataLogger.InstanceOptions): IonicDataLogger;
    constructor(tap: Tap, options: IonicDataLogger.InstanceOptions);
    getCacheForBundle(bundleId: number): IonicDataLogger.CachePacketType;
    set period(v: number);
    get period(): number;
    get events(): Observable<IonicDataLogger.PacketInfo<any>>;
    get running(): boolean;
    storePacket(packet: IonicDataLogger.PacketInfo<Record<string, any>>): void;
    pause(): void;
    stop(): void;
    start(): Observable<IonicDataLogger.PacketInfo<any>>;
}
