/**
 * Server-side CAPTCHA verification for reCAPTCHA v3 and Cloudflare Turnstile.
 * Both providers share the same verify interface — only the secret key and
 * verification URL differ.
 */
export type CaptchaProvider = 'recaptcha' | 'turnstile' | 'none';
export interface CaptchaConfig {
    provider: CaptchaProvider;
    /** Public site key (safe to expose to client) */
    siteKey: string;
    /** Server-side secret key (from env) */
    secretKey: string;
    /** Minimum score threshold for reCAPTCHA v3 (0.0–1.0, default 0.5). Ignored by Turnstile. */
    scoreThreshold?: number;
}
export interface CaptchaVerifyResult {
    success: boolean;
    score?: number;
    action?: string;
    errorCodes?: string[];
}
/**
 * Verifies a CAPTCHA token server-side.
 * Works for both reCAPTCHA v3 and Cloudflare Turnstile.
 */
export declare function verifyCaptcha(token: string, config: CaptchaConfig, remoteIp?: string): Promise<CaptchaVerifyResult>;
/**
 * Resolves CAPTCHA config from environment variables.
 * Returns { provider: 'none' } if no keys are configured.
 */
export declare function getCaptchaConfig(): CaptchaConfig;
//# sourceMappingURL=captcha.d.ts.map