import type { AccountStore } from '../account/util/AccountStore';
import type { CookieStore } from '../account/util/CookieStore';
import type { JsonRepresentation } from '../InteractionUtil';
import type { JsonInteractionHandlerInput } from '../JsonInteractionHandler';
import { JsonInteractionHandler } from '../JsonInteractionHandler';
/**
 * Output type that is expected of handlers logging an account in.
 */
export type LoginOutputType = {
    /**
     * The ID of the account that logged in.
     */
    accountId: string;
    /**
     * If this account should be remembered or not.
     * Setting this to `undefined` will keep the setting as it currently is.
     */
    remember?: boolean;
};
/**
 * A handler that takes care of all the necessary steps when logging a user in,
 * such as generating a cookie and setting the necessary OIDC information.
 * Classes that resolve login methods should extend this class and implement the `login` method.
 */
export declare abstract class ResolveLoginHandler extends JsonInteractionHandler {
    protected readonly logger: import("../../..").Logger;
    protected readonly accountStore: AccountStore;
    protected readonly cookieStore: CookieStore;
    protected constructor(accountStore: AccountStore, cookieStore: CookieStore);
    handle(input: JsonInteractionHandlerInput): Promise<JsonRepresentation>;
    /**
     * Updates the account setting that determines if the login status needs to be remembered.
     * @param accountId - ID of the account.
     * @param remember - If the account should be remembered or not. The setting will not be updated if this is undefined.
     */
    protected updateRememberSetting(accountId: string, remember?: boolean): Promise<void>;
    /**
     * Takes the necessary steps to log a user in.
     * @param input - Same input that was passed to the handle function.
     */
    abstract login(input: JsonInteractionHandlerInput): Promise<JsonRepresentation<LoginOutputType>>;
}
