import { HttpContext } from '@adonisjs/core/http';
import { Constructor } from '@adonisjs/core/types/common';
import '@akago/vine-lucid';
import { VineObject } from '@vinejs/vine';
import { AKVineRequestData } from '../crud/vine_validate_middleware.js';
import { AKAuthService } from './auth_service.js';
import { AKUserModel } from './user/user.js';
import { AKUserServiceClass } from './user/user_service.js';
export type AKAuthController = {
    signup({ response, request }: HttpContext, { email, password, ...userData }: AKVineRequestData): Promise<any>;
    login(_ctx: HttpContext, { email, password }: AKVineRequestData): Promise<any>;
    check(): Promise<any>;
    refreshTokens({ auth }: HttpContext): Promise<any>;
    forgotPassword(_ctx: HttpContext, { email }: AKVineRequestData): Promise<any>;
    setPassword({ auth }: HttpContext, { password, previousPassword }: AKVineRequestData): Promise<any>;
    delete({ auth, response }: HttpContext, { password, reason }: AKVineRequestData): Promise<any>;
};
export declare const authController: <UserModel extends typeof AKUserModel>(authServiceClass: Constructor<AKAuthService<UserModel>>, userServiceClass: AKUserServiceClass<UserModel>, signupVineSchema: VineObject<any, any, any, any>) => Constructor<AKAuthController>;
