import { Context } from "hono";
import { LoginSession, AuthenticationMethod } from "@authhero/adapter-interfaces";
import { Bindings, Variables } from "../types";
import { EnrichedClient } from "../helpers/client";
export type MfaCheckResult = {
    required: false;
} | {
    required: true;
    enrolled: false;
} | {
    required: true;
    enrolled: true;
    enrollment: AuthenticationMethod;
    allEnrollments: AuthenticationMethod[];
};
/**
 * Check if MFA is required for a user based on tenant policy and enrollment status.
 */
export declare function checkMfaRequired(ctx: Context<{
    Bindings: Bindings;
    Variables: Variables;
}>, tenantId: string, userId: string): Promise<MfaCheckResult>;
/**
 * Send an MFA OTP code via SMS using the tenant's configured SMS provider.
 */
export declare function sendMfaOtp(ctx: Context<{
    Bindings: Bindings;
    Variables: Variables;
}>, client: EnrichedClient, loginSession: LoginSession, phoneNumber: string): Promise<void>;
/**
 * Verify an MFA OTP code against the stored code.
 * Returns true if valid, false otherwise.
 */
export declare function verifyMfaOtp(ctx: Context<{
    Bindings: Bindings;
    Variables: Variables;
}>, tenantId: string, loginSessionId: string, submittedCode: string): Promise<boolean>;
/**
 * Generate a random TOTP secret and return it as a base32-encoded string.
 */
export declare function generateTotpSecret(): string;
/**
 * Create an otpauth:// URI for enrolling in TOTP (used for QR code generation).
 */
export declare function createTotpUri(issuer: string, accountName: string, secretBase32: string): string;
/**
 * Verify a TOTP code against a base32-encoded secret.
 */
export declare function verifyTotpCode(secretBase32: string, code: string): Promise<boolean>;
