import type { NewSessionResponse, Passkey, PasskeyChangeable, Session, User, UserPublic, Verification } from '@axium/core';
import * as z from 'zod';
export declare function login(userId: string): Promise<NewSessionResponse>;
/**
 * Create an elevated session for the user to perform sensitive actions.
 */
export declare function elevate(userId: string): Promise<void>;
export declare function loginByEmail(email: string): Promise<NewSessionResponse>;
export declare function getCurrentSession(): Promise<Session & {
    user: User;
}>;
export declare function getSessions(userId: string): Promise<Session[]>;
export declare function logout(userId: string, ...sessionId: string[]): Promise<Session[]>;
export declare function logoutAll(userId: string): Promise<Session[]>;
export declare function logoutCurrentSession(): Promise<Session>;
export declare function register(_data: Record<string, unknown>): Promise<void>;
export declare function userInfo(userId: string): Promise<UserPublic & Partial<User>>;
export declare function updateUser(userId: string, data: Record<string, FormDataEntryValue>): Promise<User>;
export declare function fullUserInfo(userId: string): Promise<User & {
    sessions: Session[];
}>;
/**
 * @param userId The UUID of the user to delete
 * @param deletingId The UUID of the user performing the deletion (for authentication). Defaults to userId.
 */
export declare function deleteUser(userId: string, deletingId?: string): Promise<User>;
export declare function emailVerificationEnabled(userId: string): Promise<boolean>;
export declare function sendVerificationEmail(userId: string): Promise<Verification>;
export declare function verifyEmail(userId: string, token: string): Promise<void>;
export declare function getPasskeys(userId: string): Promise<Passkey[]>;
/**
 * Create a new passkey for an existing user.
 */
export declare function createPasskey(userId: string): Promise<Passkey>;
export declare function updatePasskey(passkeyId: string, data: z.input<typeof PasskeyChangeable>): Promise<Passkey>;
export declare function deletePasskey(passkeyId: string): Promise<Passkey>;
