declare global { interface Window { turnstile?: Turnstile; } } /** * Configurable options for Turnstile's `render` function. * @see https://developers.cloudflare.com/turnstile/get-started/client-side-rendering/widget-configurations/#complete-configuration-reference */ export interface TurnstileRenderOptions { 'sitekey': string; 'action'?: string; 'cData'?: string; 'callback'?: (token: string) => void; 'error-callback'?: () => void; 'execution'?: 'render' | 'execute'; 'expired-callback'?: () => void; 'before-interactive-callback'?: () => void; 'after-interactive-callback'?: () => void; 'unsupported-callback'?: () => void; 'theme'?: 'auto' | 'light' | 'dark'; 'language'?: string; 'tabindex'?: number; 'timeout-callback'?: () => void; 'response-field'?: boolean; 'response-field-name'?: string; 'size'?: 'normal' | 'flexible' | 'compact'; 'retry'?: 'auto' | 'never'; 'retry-interval'?: number; 'refresh-expired'?: 'auto' | 'manual' | 'never'; 'refresh-timeout'?: 'auto' | 'manual' | 'never'; 'appearance'?: 'always' | 'execute' | 'interaction-only'; 'feedback-enabled'?: boolean; } /** * The Cloudflare Turnstile global instance. * @see https://developers.cloudflare.com/turnstile/get-started/client-side-rendering/#explicit-rendering */ export interface Turnstile { render: (widgetId: string, options: TurnstileRenderOptions) => void; reset: (widgetId: string) => void; remove: (widgetId: string) => void; getResponse: (widgetId: string) => string; } /** * The return type of the {@link useCloudflareTurnstile} composable. */ export interface UseCloudflareTurnstileReturn { onReady: (callback: (turnstile: Turnstile) => void) => void; onError: (callback: (error: unknown) => void) => void; } /** * Utilize Cloudflare's Turnstile widget via the returned `onReady` and `onError` methods. */ export declare function useCloudflareTurnstile(): UseCloudflareTurnstileReturn;