import type { TurboModule } from 'react-native' import { TurboModuleRegistry } from 'react-native' export interface Spec extends TurboModule { // Key Generation Methods generate( clientApiKey: string, addr: string, apiHost: string, metadata: string, ): Promise generateEd25519( clientApiKey: string, addr: string, apiHost: string, metadata: string, ): Promise generateSecp256k1( clientApiKey: string, addr: string, apiHost: string, metadata: string, ): Promise // Signing Methods sign( clientApiKey: string, addr: string, dkgResult: string, method: string, params: string, rpcUrl: string, chainId: string, metadata: string, ): Promise presign( clientApiKey: string, addr: string, share: string, metadata: string, ): Promise signWithPresignature( clientApiKey: string, addr: string, share: string, presignature: string, method: string, params: string, rpcUrl: string, chainId: string, metadata: string, ): Promise // Backup Methods backup( clientApiKey: string, addr: string, dkgResult: string, apiHost: string, metadata: string, ): Promise backupEd25519( clientApiKey: string, addr: string, dkgResult: string, apiHost: string, metadata: string, ): Promise backupSecp256k1( clientApiKey: string, addr: string, dkgResult: string, apiHost: string, metadata: string, ): Promise // Recovery Methods - Signing recoverSigning( clientApiKey: string, addr: string, dkgResult: string, apiHost: string, metadata: string, ): Promise recoverSigningEd25519( clientApiKey: string, addr: string, dkgResult: string, apiHost: string, metadata: string, ): Promise recoverSigningSecp256k1( clientApiKey: string, addr: string, dkgResult: string, apiHost: string, metadata: string, ): Promise // Recovery Methods - Backup recoverBackup( clientApiKey: string, addr: string, dkgResult: string, apiHost: string, metadata: string, ): Promise // Encryption/Decryption Methods encrypt(data: string): Promise decrypt(key: string, cipherText: string): Promise encryptWithPassword(data: string, password: string): Promise decryptWithPassword(key: string, cipherText: string): Promise // Wallet Ejection Methods ejectSecp256k1(dkgResultOne: string, dkgResultTwo: string): Promise ejectEd25519(dkgResultOne: string, dkgResultTwo: string): Promise // Utility Methods formatShares(shares: string): Promise getCustodianIdClientIdHashes(custodianIdClientIdJson: string): Promise } export default TurboModuleRegistry.getEnforcing('PortalMobileMpc')