import { IonicDataLogger } from '../extensions/datalogger/data-logger';
import { Observable } from 'rxjs';
export interface RemoteConfig {
    brokerUrl: any;
    serialNumber: any;
    password: any;
    period: any;
}
export declare enum ConnectionState {
    CONNECTED = "CONNECTED",
    DISCONNECTED = "DISCONNECTED",
    CONNECTING = "CONNECTING",
    DISCONNECTING = "DISCONNECTING"
}
export interface RemoteStateEvent {
    isDisconnectable?: boolean;
    isConnectable?: boolean;
    state?: ConnectionState;
    isLoading?: boolean;
}
export declare enum RunnableState {
    RUNNING = "RUNNING",
    STOPED = "STOPED"
}
export interface RunnableStateEvent {
    newState: RunnableState;
    oldState?: RunnableState;
}
export interface SyncableDatalogPacket extends IonicDataLogger.PacketInfo {
    syncInfo?: SyncMeta;
    rawSinglePacket?: Uint8Array;
}
export interface SyncMeta {
    error?: Error;
    isSync: boolean;
    lastSync?: Date;
}
export interface SyncStats {
    remainingCount?: number;
    synchronizedCount?: number;
}
export interface SyncEngine {
    config: Observable<RemoteConfig>;
    state: Observable<RemoteStateEvent>;
    disconnect(): Promise<void>;
    connect(): Promise<void>;
    syncEntry(syncInfo: SyncableDatalogPacket): Promise<SyncableDatalogPacket>;
    configure(data: RemoteConfig): Promise<any>;
}
