@funkit/connect
Version:
Funkit Connect SDK elevates DeFi apps via web2 sign-ins and one-click checkouts.
67 lines (66 loc) • 2.69 kB
TypeScript
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 };