import { ProgressState } from '@iotize/common/progress/api';
import { TapInfoCacheService, TapInfoDAOService, TapInfoKey, TapInfoKeyObjectOrString } from '@iotize/ionic';
import { Observable } from 'rxjs';
import * as i0 from "@angular/core";
export declare class TapConfigItemStateService {
    private tapInfoDAOService;
    private tapInfoCacheService;
    private _pendingChanges;
    loading: boolean;
    hasPendingChanges: Observable<boolean>;
    /**
     * Value change taking into acccount the edited value.
     * If no editaded value for the key, it will take the lasted fetched value from the Tap
     * @param key
     * @returns
     */
    valueChange<T>(key: TapInfoKeyObjectOrString): Observable<T>;
    getPendingChangeForKey<T = unknown>(key: TapInfoKeyObjectOrString): Observable<T | undefined>;
    get pendingChangesChange(): Observable<{
        key: TapInfoKey;
        value: any;
    }[]>;
    private _saveProgress;
    get saveProgress(): Observable<ProgressState>;
    constructor(tapInfoDAOService: TapInfoDAOService, tapInfoCacheService: TapInfoCacheService);
    savePendingChanges(): Promise<void>;
    private _savePendingChangesWithProgress;
    clearPendingChanges(): void;
    getPendingChangesSnapshot(): {
        key: TapInfoKey;
        value: any;
    }[];
    setPendingChange(info: TapInfoKey, newValue: any): void;
    removePendingChange(info: TapInfoKey): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TapConfigItemStateService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<TapConfigItemStateService>;
}
