export { getChallengeUrl, hasSpamProtection } from '@riverbankcms/altcha';
export { AltchaWidget } from '@riverbankcms/altcha/client';
export type { AltchaWidgetProps } from '@riverbankcms/altcha/client';
export interface UseSpamProtectionOptions {
    /** Auto-start solving when widget loads (default: true) */
    auto?: boolean;
    /** Hide the ALTCHA logo (default: false) */
    hidelogo?: boolean;
    /** Additional CSS class for the widget */
    className?: string;
}
export interface UseSpamProtectionResult {
    /** The current solution payload, or null if not yet solved/expired */
    solution: string | null;
    /** True when a valid solution is available */
    isReady: boolean;
    /** Reset the solution state (useful for form resubmission) */
    reset: () => void;
    /** Pre-configured widget component - render this in your form */
    Widget: React.ComponentType;
}
/**
 * React hook for spam protection integration.
 *
 * Provides a pre-configured ALTCHA widget and solution state management.
 *
 * @example
 * ```tsx
 * import { useSpamProtection, getChallengeUrl } from '@riverbankcms/sdk/spam-protection'
 *
 * function ContactForm() {
 *   const { solution, isReady, Widget } = useSpamProtection(getChallengeUrl())
 *
 *   const handleSubmit = async (e) => {
 *     e.preventDefault()
 *     if (!isReady) return
 *
 *     const formData = new FormData(e.target)
 *     formData.set('altcha-solution', solution)
 *     // Submit form...
 *   }
 *
 *   return (
 *     <form onSubmit={handleSubmit}>
 *       {/* form fields *\/}
 *       <Widget />
 *       <button type="submit" disabled={!isReady}>Submit</button>
 *     </form>
 *   )
 * }
 * ```
 */
export declare function useSpamProtection(challengeUrl: string, options?: UseSpamProtectionOptions): UseSpamProtectionResult;
