UNPKG

@funkit/connect

Version:

Funkit Connect SDK elevates DeFi apps via web2 sign-ins and one-click checkouts.

67 lines (66 loc) 2.69 kB
import PrivyJS, { type OAuthProviderType } from '@privy-io/js-sdk-core'; import React, { type ReactNode } from 'react'; import { type FunkitUserInfoBase, PrivyLoginMethod } from '../consts/funkit'; type FarcasterAuthParams = Parameters<PrivyJS['auth']['farcaster']['authenticate']>[0]; type FarcasterCompletedStatusResponse = Extract<Awaited<ReturnType<PrivyJS['auth']['farcaster']['getFarcasterStatus']>>, { state: 'completed'; }>; type FarcasterConnectionStatus = { isCompleted: true; fcMeta: FarcasterCompletedStatusResponse; } | { isCompleted: false; fcMeta: unknown; }; export declare const ERROR_MESSAGES: { readonly MISSING_LOGIN_CODES: "Missing login codes"; readonly INVALID_LOGIN_METHOD: "Invalid login method"; readonly INVALID_EMAIL: "Invalid email address"; readonly FAILED_SEND_EMAIL: "Failed to send email"; readonly PRIVY_NOT_INITIALIZED: "Privy not initialized"; readonly PRIVY_PROVIDER_NOT_INITIALIZED: "Privy wallet provider not initialized"; readonly PRIVY_USER_NOT_INITIALIZED: "Privy user not initialized"; readonly FARCASTER_NOT_INITIALIZED: "Unable to initialize Farcaster login"; }; type PrivyLoginParams = { firstLoginCode?: string; secondLoginCode?: string; alternateCodeMeta?: FarcasterAuthParams; inputLoginMethod: PrivyLoginMethod; }; interface FunkitWeb2LoginParams extends Omit<PrivyLoginParams, 'inputLoginMethod'> { chainId: number; inputLoginMethod?: PrivyLoginMethod; } interface FunkitWeb2ContextType { isSendingOtpEmail: boolean; isGeneratingFcUri: boolean; handleSendOtpEmail: (emailAddress: string) => Promise<{ success: boolean; error: string; }>; handleOauthRedirect: (provider: OAuthProviderType) => Promise<void>; handleFunkitWeb2Login: ({ chainId, firstLoginCode, secondLoginCode, alternateCodeMeta, inputLoginMethod, }: FunkitWeb2LoginParams) => Promise<boolean>; isLoggingIn: boolean; loginErrorMessage: string; clearLoginError: () => void; handleFunkitWeb2Logout: () => Promise<void>; handleGenerateFcUri: () => Promise<{ success: boolean; error: string; channelToken: string; connectUri: string; }>; getFcConnectionStatus: (channelToken: string) => Promise<FarcasterConnectionStatus>; web2UserInfo: FunkitUserInfoBase; } export declare const AUTH_PROVIDER = "privy.io"; interface FunkitWeb2ProviderProps { children: ReactNode; } /** * Handles web2 signins via Privy */ declare const FunkitWeb2Provider: React.FC<FunkitWeb2ProviderProps>; declare const useFunkitWeb2Login: () => FunkitWeb2ContextType; export { FunkitWeb2Provider, useFunkitWeb2Login };