UNPKG

@swisstronik/sdi-react-sdk

Version:

Swisstronik Digital Identity React SDK. Verify once, use anywhere.

129 lines (120 loc) 5.24 kB
import { EIP1193Provider, Chain } from 'viem'; import React from 'react'; import { VerificationType, SwisstronikStargateClient, MergedIssuerDetails, MergedVerificationDetails } from '@swisstronik/sdk'; export { VerificationType } from '@swisstronik/sdk'; import { QueryClient } from '@tanstack/react-query'; interface ItoastMessageType { text: string; type: "success" | "error" | "warning" | "info"; icon?: string; } type ModalContentStep = "mainContent" | "verificationSelect" | "addVerificationChooseIssuer" | "addVerificationIssuerVerify" | "addVerificationResult" | "finalResult" | "signatureRequired"; type AddVerificationStatus = { status: "pending"; } | { status: "success"; } | { status: "error"; error: string; }; type FinalVerificationStatus = { status: "pending"; } | { status: "success"; } | { status: "error"; error: string; }; type RequiredVerification = { id: number; requiredType: VerificationType; issuerAddresses: string[]; expirationTimestamp: number; }; type ConfigRequiredVerification = { requiredType: VerificationType; issuerNames: string[]; expirationTimestamp: number; }; type SDIConfig = { requiredVerifications: ConfigRequiredVerification[]; backendUrl?: string; swtrProxyContractAddress: `0x${string}`; cosmosRPCAddress: string; evmRPCAddress?: string; worldCoinAppId?: `app_${string}`; worldCoinAction?: string; buttonStyle?: "accent" | "light" | "dark"; issuersRefetchIntervalInMs?: number; verificationsRefetchIntervalInMs?: number; }; type VerificationMapping = { [requirementId: number]: { requirement: RequiredVerification; details: MergedVerificationDetails | null; }; }; declare enum RequiredSignatureType { AddVerificationSignature = "AddVerificationSignature", ZKVerificationSignature = "ZKVerificationSignature" } interface MainContextType { config: SDIConfig; isVerificationComplete: boolean; setIsVerificationComplete: (isVerificationComplete: boolean) => void; userAddress: string | undefined | `0x${string}`; setUserAddress: (addr: string | `0x${string}` | undefined) => void; messages: ItoastMessageType | undefined; setMessages: (messages: ItoastMessageType | undefined) => void; showSnackbar: (message: ItoastMessageType) => void; swisstronikClient?: SwisstronikStargateClient; setSwisstronikClient: (client: SwisstronikStargateClient) => void; isMainModalOpen: boolean; setIsMainModalOpen: (isOpen: boolean) => void; modalContentStep: ModalContentStep; setModalContentStep: (step: ModalContentStep) => void; issuersList: MergedIssuerDetails[]; setIssuersList: (issuersList: MergedIssuerDetails[]) => void; verificationsList: MergedVerificationDetails[]; setVerificationsList: (verifications: MergedVerificationDetails[]) => void; addVerificationSelectedIssuerType: VerificationType; setAddVerificationSelectedIssuerType: (type: VerificationType) => void; addVerificationSelectedIssuer: MergedIssuerDetails | undefined; setAddVerificationSelectedIssuer: (issuer?: MergedIssuerDetails) => void; addVerificationStatusResult: AddVerificationStatus; setAddVerificationStatusResult: (status: AddVerificationStatus) => void; finalVerificationStatus: FinalVerificationStatus; setFinalVerificationStatus: (status: FinalVerificationStatus) => void; verificationMappings: VerificationMapping; setVerificationForRequirement: (requirement: RequiredVerification, details: MergedVerificationDetails | null) => void; requiredVerifications: RequiredVerification[]; setRequiredVerifications: (requirements: RequiredVerification[]) => void; selectVerificationRequirement: RequiredVerification | undefined; setSelectVerificationRequirement: (requirement: RequiredVerification | undefined) => void; addVerificationSignature: string; setAddVerificationSignature: (signature: string) => void; addVerificationZKVerificationEnabled: boolean; setAddVerificationZKVerificationEnabled: (enabled: boolean) => void; requiredSignatureType: RequiredSignatureType | undefined; setRequiredSignatureType: (type: RequiredSignatureType | undefined) => void; zkVerificationSignature: string; setZkVerificationSignature: (signature: string) => void; ready: boolean; setReady: (ready: boolean) => void; userCountry: string; setUserCountry: (country: string) => void; eip1193Provider: EIP1193Provider | undefined; setEip1193Provider: (provider: EIP1193Provider | undefined) => void; redirectToSuccessAndSelectVerification: (verificationId: string | undefined, queryClient: QueryClient, redirect?: boolean) => Promise<void>; } declare const swisstronikMainnetChain: Chain; declare const SDIContextProvider: React.FC<{ children: React.ReactNode; config: SDIConfig; }>; declare const useSDI: () => MainContextType; type SDIProps = { buttonCustomAction?: () => void; }; declare const SwisstronikDigitalIdentity: React.FC<SDIProps>; export { type RequiredVerification, type SDIConfig, SDIContextProvider, type SDIProps, SwisstronikDigitalIdentity, swisstronikMainnetChain, useSDI };