/// <reference path="../../adonis-typings/index.d.ts" />
/// <reference types="@adonisjs/http-server/build/adonis-typings" />
import { SessionConfig, SessionDriverContract, SessionClientContract } from '@ioc:Adonis/Addons/Session';
import { CookieClientContract } from '@ioc:Adonis/Core/CookieClient';
import { Store } from '../Store';
/**
 * SessionClient exposes the API to set session data as a client
 */
export declare class SessionClient extends Store implements SessionClientContract {
    private config;
    private driver;
    private cookieClient;
    /**
     * Each instance of client works on a single session id. Generate
     * multiple client instances for a different session id
     */
    private sessionId;
    /**
     * Session key for setting flash messages
     */
    private flashMessagesKey;
    /**
     * Flash messages store. They are merged with the session data during
     * commit
     */
    flashMessages: Store;
    constructor(config: SessionConfig, driver: SessionDriverContract, cookieClient: CookieClientContract, values: {
        [key: string]: any;
    } | null);
    /**
     * Find if the sessions are enabled
     */
    isEnabled(): boolean;
    /**
     * Load session from the driver
     */
    load(cookies: Record<string, any>): Promise<{
        session: any;
        flashMessages: any;
    }>;
    /**
     * Commits the session data to the session store and returns
     * the session id and cookie name for it to be accessible
     * by the server
     */
    commit(): Promise<{
        sessionId: string;
        signedSessionId: string;
        cookieName: string;
    }>;
    /**
     * Clear the session store
     */
    forget(): Promise<void>;
}
