import type { SecurityProviderAuthorizeResponse, SecurityStrategy, SessionStoreAdapter, TokenData } from '../types/interfaces';
import type { Connection } from 'typeorm';
import type { Context } from '../http/Context';
import type { DatabaseContainer } from '../database/DatabaseContainer';
import type { SecurityProviderOptions } from './SecurityProviderOptions';
import type { SecurityRequestContext } from '../types/types';
import type { SecurityResponse } from './SecurityResponse';
export declare class SecurityProvider {
    options: SecurityProviderOptions;
    protected response: SecurityResponse;
    protected adapter: SessionStoreAdapter;
    protected strategy: SecurityStrategy;
    protected connection: Connection;
    private argon2idGenerator;
    constructor(options: SecurityProviderOptions, response: SecurityResponse, adapter: SessionStoreAdapter, strategy: SecurityStrategy, databaseContainer: DatabaseContainer);
    login(context: SecurityRequestContext): Promise<void>;
    logout(context: SecurityRequestContext): Promise<void>;
    authorize(context: Context): Promise<SecurityProviderAuthorizeResponse>;
    forbidden(context: Context): Promise<void>;
    generatePasswordHash(plainTextPassword: string): Promise<string>;
    generateSessionId(): string;
    protected generateToken(context: SecurityRequestContext, userId: string): Promise<{
        token: string;
        sessionId: string;
    }>;
    protected verifyToken(token: string): Promise<boolean>;
    protected parseToken(token: string): Promise<TokenData | false>;
}
