import {AffinidiWalletV6} from '@affinidi/wallet-react-native-sdk'; import { AFFINIDI_REACT_NATIVE_SDK_ENV, AFFINIDI_REACT_NATIVE_SDK_API_KEY, } from '@constants/api'; const getEnv = () => { const env = AFFINIDI_REACT_NATIVE_SDK_ENV; switch (env) { case 'dev': case 'staging': case 'prod': return env; default: return 'dev'; } }; const SDK_OPTIONS: { env: 'dev' | 'prod' | 'staging'; apiKey: string; } = { env: getEnv(), apiKey: AFFINIDI_REACT_NATIVE_SDK_API_KEY, }; type ThenArg = T extends PromiseLike ? U : T; type Wallet = ThenArg>; export class SdkService { constructor(private readonly wallet: Wallet) {} get wlt(): Wallet { return this.wallet; } static async openWalletByEncryptedSeed( encryptedSeed: string, password: string, ): Promise { const wallet = await AffinidiWalletV6.openWalletByEncryptedSeed( SDK_OPTIONS, encryptedSeed, password, ); return new SdkService(wallet); } static async initiateSignInPasswordless( phoneNumber: string, ): Promise { try { const response = await AffinidiWalletV6.initiateSignInPasswordless( SDK_OPTIONS, `+91${phoneNumber}`, ); return response; } catch (error: any) { return {error: error?.message}; } } static async completeSignInPasswordless(token: string, code: string) { try { const response = await AffinidiWalletV6.completeSignInPasswordless( SDK_OPTIONS, token, code, ); return response; } catch (error: any) { return {error: error?.message}; } } async createCredentialOfferResponseToken( credentialOfferRequestToken: string, ): Promise { return this.wallet.createCredentialOfferResponseToken( credentialOfferRequestToken, ); } async getCredentials(): Promise { return await this.wallet.getCredentials(); } async getCredentialById(credentialId: string): Promise { return await this.wallet.getCredentialById(credentialId); } async deleteCredentialById( credentialId: string, ): Promise { try { const response = this.wallet.deleteCredentialById(credentialId); return response; } catch (error: any) { return {error: error?.message}; } } static async logInWithPassword(userName: string, userPassword: string) { try { const wallet = await AffinidiWalletV6.logInWithPassword( SDK_OPTIONS, userName, userPassword, ); return {wallet}; } catch (error: any) { return {error: error}; } } }