import EventEmitter from 'events';
/**
 * Wrapper class for browser's local storage object.
 */
export declare class JitsiLocalStorage extends EventEmitter {
    /**
     * The storage backend (either window.localStorage or DummyLocalStorage).
     */
    private _storage;
    /**
     * Whether window.localStorage is disabled.
     */
    private _localStorageDisabled;
    /**
     * Creates a new JitsiLocalStorage instance.
     */
    constructor();
    /**
     * Returns true if window.localStorage is disabled and false otherwise.
     *
     * @returns {boolean} True if window.localStorage is disabled and false otherwise.
     */
    isLocalStorageDisabled(): boolean;
    /**
     * Switch between window.localStorage and DummyLocalStorage.
     *
     * @param {boolean} value - Whether to disable localStorage.
     * @returns {void}
     */
    setLocalStorageDisabled(value: boolean): void;
    /**
     * Empties all keys out of the storage.
     *
     * @returns {void}
     */
    clear(): void;
    /**
     * Returns the number of data items stored in the Storage object.
     *
     * @returns {number} The number of data items stored in the Storage object.
     */
    get length(): number;
    /**
     * Returns that passed key's value.
     *
     * @param {string} keyName - The name of the key you want to retrieve the value of.
     * @returns {string | null} The value of the key. If the key does not exist, null is returned.
     */
    getItem(keyName: string): string | null;
    /**
     * Adds a key to the storage, or update key's value if it already exists.
     *
     * @param {string} keyName - The name of the key you want to create/update.
     * @param {string} keyValue - The value you want to give the key you are creating/updating.
     * @param {boolean} [dontEmitChangedEvent=false] - If true a changed event won't be emitted.
     * @returns {void}
     */
    setItem(keyName: string, keyValue: string, dontEmitChangedEvent?: boolean): void;
    /**
     * Remove a key from the storage.
     *
     * @param {string} keyName - The name of the key you want to remove.
     * @returns {void}
     */
    removeItem(keyName: string): void;
    /**
     * Returns the name of the nth key in the list, or null if n is greater
     * than or equal to the number of key/value pairs in the object.
     *
     * @param {number} i - The index of the key in the list.
     * @returns {string | null} The name of the nth key, or null if out of bounds.
     */
    key(i: number): string | null;
    /**
     * Serializes the content of the storage.
     *
     * @param {string[]} [ignore=[]] - Array with keys from the local storage to be ignored.
     * @returns {string} The serialized content.
     */
    serialize(ignore?: string[]): string;
}
export declare const jitsiLocalStorage: JitsiLocalStorage;
