/// <reference path="../../adonis-typings/index.d.ts" />
import { AllowedSessionValues, StoreContract } from '@ioc:Adonis/Addons/Session';
/**
 * Session store to mutate and access values from the session object
 */
export declare class Store implements StoreContract {
    /**
     * Underlying store values
     */
    private values;
    constructor(values: {
        [key: string]: any;
    } | null);
    /**
     * Find if store is empty or not
     */
    get isEmpty(): boolean;
    /**
     * Set key/value pair
     */
    set(key: string, value: AllowedSessionValues): void;
    /**
     * Get value for a given key
     */
    get(key: string, defaultValue?: any): any;
    /**
     * Remove key
     */
    unset(key: string): void;
    /**
     * Reset store by clearing it's values.
     */
    clear(): void;
    /**
     * Pull value from the store. It is same as calling
     * store.get and then store.unset
     */
    pull(key: string, defaultValue?: any): any;
    /**
     * Increment number. The method raises an error when
     * nderlying value is not a number
     */
    increment(key: string, steps?: number): void;
    /**
     * Increment number. The method raises an error when
     * nderlying value is not a number
     */
    decrement(key: string, steps?: number): void;
    /**
     * Overwrite the underlying values object
     */
    update(values: {
        [key: string]: any;
    }): void;
    /**
     * Update to merge values
     */
    merge(values: {
        [key: string]: any;
    }): any;
    /**
     * A boolean to know if value exists. Extra guards to check
     * arrays for it's length as well.
     */
    has(key: string, checkForArraysLength?: boolean): boolean;
    /**
     * Get all values
     */
    all(): any;
    /**
     * Returns object representation of values
     */
    toObject(): any;
    /**
     * Returns the store values
     */
    toJSON(): any;
    /**
     * Returns string representation of the store
     */
    toString(): string;
}
