import { Constructor } from '@adonisjs/core/types/common';
import { AKJwtService } from './jwt/jwt_service.js';
import { AKUserModel } from './user/user.js';
import type { AKUserServiceClass } from './user/user_service.js';
export interface AuthTokens {
    access_token: string;
    refresh_token: string;
}
export type AKAuthService<UserModel extends typeof AKUserModel> = {
    createTokens(user: InstanceType<UserModel>): Promise<AuthTokens>;
    signup(email: string, password: string, userData: Partial<Omit<InstanceType<UserModel>, 'id' | 'email' | 'password'>>): Promise<{
        user: InstanceType<UserModel>;
    } & AuthTokens>;
    login(email: string, password: string): Promise<{
        user: InstanceType<UserModel>;
    } & AuthTokens>;
    forgotPassword(email: string): Promise<boolean>;
    setPassword(user: InstanceType<UserModel>, password: string): Promise<void>;
    delete(user: InstanceType<UserModel>, password: string, reason: string): Promise<void>;
};
export declare const authService: <UserModel extends typeof AKUserModel>(userServiceClass: AKUserServiceClass<UserModel>, jwtService: AKJwtService<InstanceType<UserModel>>) => Constructor<AKAuthService<UserModel>>;
