import type { AuthOperationsFromCollectionSlug, Collection, DataFromCollectionSlug } from '../../collections/config/types.js';
import type { AuthCollectionSlug } from '../../index.js';
import type { PayloadRequest } from '../../types/index.js';
export type LoginResult<TSlug extends AuthCollectionSlug> = {
    exp?: number;
    token?: string;
    user?: DataFromCollectionSlug<TSlug>;
};
export type Arguments<TSlug extends AuthCollectionSlug> = {
    collection: Collection;
    data: AuthOperationsFromCollectionSlug<TSlug>['login'];
    depth?: number;
    overrideAccess?: boolean;
    req: PayloadRequest;
    showHiddenFields?: boolean;
};
type CheckLoginPermissionArgs<TSlug extends AuthCollectionSlug> = {
    loggingInWithUsername?: boolean;
    req: PayloadRequest;
    user: DataFromCollectionSlug<TSlug>;
};
/**
 * Throws an error if the user is locked or does not exist.
 * This does not check the login attempts, only the lock status. Whoever increments login attempts
 * is responsible for locking the user properly, not whoever checks the login permission.
 */
export declare const checkLoginPermission: <TSlug extends AuthCollectionSlug>({ loggingInWithUsername, req, user, }: CheckLoginPermissionArgs<TSlug>) => void;
export declare const loginOperation: <TSlug extends AuthCollectionSlug>(incomingArgs: Arguments<TSlug>) => Promise<LoginResult<TSlug>>;
export {};
//# sourceMappingURL=login.d.ts.map