import { symbols } from '@adonisjs/auth';
import { AuthClientResponse, GuardContract } from '@adonisjs/auth/types';
import { HttpContext } from '@adonisjs/core/http';
import { EmitterLike } from '@adonisjs/core/types/events';
import { UUID } from 'node:crypto';
import { AKAuthUser } from '../types.js';
import { AKJwtService } from './jwt_service.js';
export type BasicAuthGuardEvents<User extends AKAuthUser> = {
    'jwt_auth:authentication_attempted': {
        ctx: HttpContext;
        guardName: string;
    };
    'jwt_auth:authentication_succeeded': {
        ctx: HttpContext;
        guardName: string;
        user: User;
    };
};
export declare class AKJwtGuard<User extends AKAuthUser> implements GuardContract<User> {
    #private;
    [symbols.GUARD_KNOWN_EVENTS]: BasicAuthGuardEvents<User>;
    driverName: 'jwt';
    isAuthenticated: boolean;
    authenticationAttempted: boolean;
    user?: User;
    jwtPayload?: any;
    authenticateApiException: any;
    constructor(ctx: HttpContext, jwtService: AKJwtService<User>, findUserById: (id: UUID) => Promise<User | undefined>, emitter: EmitterLike<BasicAuthGuardEvents<User>>);
    authenticate(): Promise<User>;
    check(): Promise<boolean>;
    getUserOrFail(): User;
    authenticateAsClient(user: User): Promise<AuthClientResponse>;
}
