export type ChallengeOptions = {
    maxNumber?: number;
    expires?: Date;
};
/**
 * Check if spam protection is configured.
 * Returns true if ALTCHA_HMAC_KEY is set.
 */
export declare function hasSpamProtection(): boolean;
/**
 * Get the challenge endpoint URL.
 * Returns the full URL to the /api/public/challenge endpoint.
 */
export declare function getChallengeUrl(): string;
/**
 * Create an ALTCHA challenge for the client widget.
 *
 * @param opts.maxNumber - Difficulty level (default: 50000)
 * @param opts.expires - Challenge expiration time (default: 5 minutes from now)
 * @returns JSON string containing the challenge
 * @throws Error if ALTCHA_HMAC_KEY is not configured
 */
export declare function createAltchaChallenge(opts?: ChallengeOptions): Promise<string>;
/**
 * Verify an ALTCHA solution from the client.
 *
 * @param payload - Base64-encoded solution payload from the client
 * @returns true if valid, false if invalid
 *
 * Bypass mode: Returns true if ALTCHA_HMAC_KEY is not configured (dev mode).
 */
export declare function verifySolution(payload: string | null | undefined): Promise<boolean>;
