import React from 'react'; import { StyleProp, ViewStyle } from 'react-native'; import { WebViewMessageEvent } from 'react-native-webview'; export type HCaptchaVerifyParams = { rqdata?: string; phonePrefix?: string; phoneNumber?: string; }; export type HcaptchaProps = { /** * The callback function that runs after receiving a response, error, or when user cancels. */ onMessage: (event: CustomWebViewMessageEvent) => void; /** * The size of the checkbox. */ size: 'invisible' | 'normal' | 'compact'; /** * The hCaptcha siteKey */ siteKey: string; /** * The webview style */ style?: StyleProp /** * The url domain defined on your hCaptcha. You generally will not need to change this. */ url?: string; /** * Default language for hCaptcha; overrides phone defaults. * A complete list of supported languages and their codes can be found [here](https://docs.hcaptcha.com/languages/) */ languageCode?: string; /** * Whether to show a loading indicator while the hCaptcha web content loads */ showLoading?: boolean; /** * Allow user to cancel hcaptcha during loading by touch loader overlay */ closableLoading?: boolean; /** * Color of the ActivityIndicator */ loadingIndicatorColor?: string; /** * The background color code that will be applied to the main HTML element */ backgroundColor?: string; /** * The theme can be 'light', 'dark', 'contrast' or a custom theme object (see Enterprise docs) */ theme?: 'light' | 'dark' | 'contrast' | Object; /** * Hcaptcha execution options (see Enterprise docs) */ rqdata?: string; /** * Verification payload overrides. Values here take precedence over deprecated top-level fields. */ verifyParams?: HCaptchaVerifyParams; /** * Enable / Disable sentry error reporting. */ sentry?: boolean; /** * The url of api.js * Default: https://js.hcaptcha.com/1/api.js (Override only if using first-party hosting feature.) */ jsSrc?: string; /** * Point hCaptcha JS Ajax Requests to alternative API Endpoint. * Default: https://api.hcaptcha.com (Override only if using first-party hosting feature.) */ endpoint?: string; /** * Point hCaptcha Bug Reporting Request to alternative API Endpoint. * Default: https://accounts.hcaptcha.com (Override only if using first-party hosting feature.) */ reportapi?: string; /** * Points loaded hCaptcha assets to a user defined asset location, used for proxies. * Default: https://newassets.hcaptcha.com (Override only if using first-party hosting feature.) */ assethost?: string; /** * Points loaded hCaptcha challenge images to a user defined image location, used for proxies. * Default: https://imgs.hcaptcha.com (Override only if using first-party hosting feature.) */ imghost?: string; /** * hCaptcha SDK host identifier. null value means that it will be generated by SDK */ host?: string; /** * The orientation of the challenge. * Default: portrait */ orientation?: 'portrait' | 'landscape'; /** * Optional phone country calling code (without '+'), e.g., "44". * Used in MFA flows. */ phonePrefix?: string; /** * Optional full phone number in E.164 format ("+44123..."), for use in MFA. */ phoneNumber?: string; /** * Enable automatic user journey injection. */ userJourney?: boolean; } interface CustomWebViewMessageEvent extends WebViewMessageEvent { success: boolean; reset: () => void; markUsed?: () => void; } export default class Hcaptcha extends React.Component {}