@swisstronik/sdi-react-sdk
Version:
Swisstronik Digital Identity React SDK. Verify once, use anywhere.
129 lines (120 loc) • 5.24 kB
TypeScript
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 };