import { IStorageSettings } from './interfaces/storage-settings';
import { StorageTypes } from './enums/storage-types';
import { StorageBase } from './base/storage-base';
import { Observable } from 'rxjs';
import { IStorageNotifier } from './interfaces/storage-typings';
import { StorageItem } from './models/storage-item';
import { IStorageGeneralOperations, IStorageCollectionOperations } from './interfaces/storage-operations';
/**
 * Provides base functionality for StorageUtilities.
 */
declare class StorageUtilitiesBase<T> extends StorageBase<T> implements IStorageGeneralOperations<T>, IStorageCollectionOperations<T> {
    defaultSettings: IStorageSettings;
    constructor(settings: IStorageSettings);
    /**
     *
     * @param settings
     */
    setCustomSettings(settings: IStorageSettings): void;
    /**
     *
     */
    resetSettings(): void;
    /**
     *
     * @param key
     * @param item
     * @param expiry
     * @param type
     */
    addItem(key: string, item: T, expiry?: number, type?: StorageTypes): void;
    /**
     *
     * @param key
     * @param type
     */
    getItem(key: string, type?: StorageTypes): T;
    /**
     *
     * @param key
     * @param type
     */
    removeItem(key: string, type?: StorageTypes): void;
    /**
     *
     * @param keys
     * @param type
     */
    removeItems(keys: string[], type?: StorageTypes): void;
    /**
     *
     * @param key
     * @param propName
     * @param newValue
     * @param type
     */
    updateItemProp(key: string, propName: string, newValue: any, type?: StorageTypes): T;
    /**
     *
     * @param key
     * @param propName
     * @param type
     */
    removeItemProp(key: string, propName: string, type?: StorageTypes): T;
    /**
     *
     * @param type
     */
    clearAll(type?: StorageTypes): void;
    /**
     *
     */
    getStateObservable(): Observable<IStorageNotifier<T>>;
    /**
     *
     * @param type
     */
    getItems(type?: StorageTypes): StorageItem<T>[];
    /**
     *
     * @param type
     */
    getValues(type?: StorageTypes): T[];
    /**
     *
     * @param type
     */
    getKeys(type?: StorageTypes): string[];
    /**
     *
     * @param key
     * @param id
     */
    findOne(key: string, id: string): T;
    /**
     *
     * @param key
     */
    findAll(key: string): T[];
    /**
     *
     * @param key
     * @param item
     */
    addOne(key: string, item: T): void;
    /**
     *
     * @param key
     * @param items
     */
    addAll(key: string, items: T[]): void;
    /**
     *
     * @param key
     * @param id
     */
    removeOne(key: string, id: string): void;
    /**
     *
     * @param key
     */
    reset(key: string): void;
    private _parsedJSON;
}
export declare const defaultSettings: IStorageSettings;
declare const _default: StorageUtilitiesBase<unknown>;
export default _default;
