/// <reference types="@adonisjs/application/build/adonis-typings/application" />
import { ApplicationContract } from '@ioc:Adonis/Core/Application';
import { DatabaseContract, QueryClientContract } from '@ioc:Adonis/Lucid/Database';
import { DatabaseProviderRow, ProviderUserContract, DatabaseProviderConfig, DatabaseProviderContract } from '@ioc:Adonis/Addons/Auth';
/**
 * Database provider to lookup users inside the database
 */
export declare class DatabaseProvider implements DatabaseProviderContract<DatabaseProviderRow> {
    private application;
    private config;
    private db;
    /**
     * Hooks reference
     */
    private hooks;
    /**
     * Custom connection or query client
     */
    private connection?;
    /**
     * Name of the remember_me_token column
     */
    private rememberMeColumn;
    constructor(application: ApplicationContract, config: DatabaseProviderConfig, db: DatabaseContract);
    /**
     * Returns the query client for invoking queries
     */
    private getQueryClient;
    /**
     * Returns the query builder instance for the users table
     */
    private getUserQueryBuilder;
    /**
     * Ensure "user.id" is always present
     */
    private ensureUserHasId;
    /**
     * Executes the query to find the user, calls the registered hooks
     * and wraps the result inside [[ProviderUserContract]]
     */
    private findUser;
    /**
     * Returns an instance of provider user
     */
    getUserFor(user: any): Promise<ProviderUserContract<DatabaseProviderRow>>;
    /**
     * Define custom connection
     */
    setConnection(connection: string | QueryClientContract): this;
    /**
     * Define before hooks. Check interface for exact type information
     */
    before(event: 'findUser', callback: (query: any) => Promise<void>): this;
    /**
     * Define after hooks. Check interface for exact type information
     */
    after(event: 'findUser', callback: (...args: any[]) => Promise<void>): this;
    /**
     * Returns the user row using the primary key
     */
    findById(id: string | number): Promise<ProviderUserContract<DatabaseProviderRow>>;
    /**
     * Returns a user from their remember me token
     */
    findByRememberMeToken(id: number | string, token: string): Promise<ProviderUserContract<DatabaseProviderRow>>;
    /**
     * Returns the user row by searching the uidValue against
     * their defined uids.
     */
    findByUid(uidValue: string): Promise<ProviderUserContract<DatabaseProviderRow>>;
    /**
     * Updates the user remember me token
     */
    updateRememberMeToken(user: ProviderUserContract<DatabaseProviderRow>): Promise<void>;
}
