/// /** * Extend window object with recaptcha things */ declare global { interface Window { __google_recaptcha_client?: boolean; ___grecaptcha_cfg?: { clients?: any; }; } } export declare type RecaptchaPluginPageAdditions = { /** Attempt to find all reCAPTCHAs on this page. */ findRecaptchas: () => Promise; getRecaptchaSolutions: (captchas: CaptchaInfo[], provider?: SolutionProvider) => Promise; enterRecaptchaSolutions: (solutions: CaptchaSolution[]) => Promise; /** Attempt to detect and solve reCAPTCHAs on this page automatically. 🔮 */ solveRecaptchas: () => Promise; }; export interface SolutionProvider { id?: string; token?: string; fn?: (captchas: CaptchaInfo[], token?: string) => Promise; } export interface FindRecaptchasResult { captchas: CaptchaInfo[]; error?: any; } export interface EnterRecaptchaSolutionsResult { solved: CaptchaSolved[]; error?: any; } export interface GetSolutionsResult { solutions: CaptchaSolution[]; error?: any; } export declare type SolveRecaptchasResult = FindRecaptchasResult & EnterRecaptchaSolutionsResult & GetSolutionsResult; export declare type CaptchaVendor = 'recaptcha' | 'hcaptcha'; export interface CaptchaInfo { _vendor: CaptchaVendor; id?: string; widgetId?: number; sitekey?: string; s?: string; callback?: string | Function; hasResponseElement?: boolean; url?: string; display?: { size?: string; theme?: string; top?: string; left?: string; width?: string; height?: string; }; } export interface CaptchaSolution { _vendor: CaptchaVendor; id?: string; provider?: string; providerCaptchaId?: string; text?: string; requestAt?: Date; responseAt?: Date; duration?: number; error?: string | Error; hasSolution?: boolean; } export interface CaptchaSolved { _vendor: CaptchaVendor; id?: string; responseElement?: boolean; responseCallback?: boolean; solvedAt?: Date; error?: string | Error; isSolved?: boolean; } export interface PluginOptions { visualFeedback: boolean; throwOnError: boolean; provider?: SolutionProvider; } export interface ContentScriptOpts { visualFeedback: boolean; } export interface ContentScriptData { solutions?: CaptchaSolution[]; }