@privy-io/js-sdk-core
Version:
Vanilla JS client for the Privy Auth API
2 lines (1 loc) • 2.1 kB
JavaScript
;var e=require("../../action/delegatedActions/utils.js"),t=require("../../wallet-api/get-wallet.js"),r=require("../../wallet-api/unified-wallet.js"),i=require("../../wallet-api/update-wallet.js");async function a(e){let{user:t}=await e.user.get();if(!t)throw Error("Could not refresh user");return{user:t}}function l(e){return(...t)=>e.embeddedWallet.signWithUserSigner(...t)}require("../../utils/getAllUserEmbeddedEthereumWallets.js"),require("../../utils/embedded-wallets.js"),require("../../utils/getAllUserEmbeddedSolanaWallets.js"),require("../../utils/getUserEmbeddedEthereumWallet.js"),require("../../utils/getUserEmbeddedSolanaWallet.js"),require("@privy-io/public-api"),require("../../wallet-api/generate-authorization-signature.js"),require("canonicalize"),require("../../Error.js"),exports.addSessionSigners=async function({client:s,wallet:n,signers:d}){if("ethereum"!==n.chain_type&&"solana"!==n.chain_type)throw Error("Session signers are only supported for Ethereum and Solana wallets");if(r.isUnifiedWallet(n)){if(0===d.length)throw Error("Must specify at least one signer to add.");let e={wallet_id:n.id},r=await t.getWallet(s,e);await i.updateWallet(s,e,l(s),{additional_signers:r.additional_signers.concat(d)})}else{if(n.delegated)return a(s);if(d.length>0)throw Error("Specifying signers in addSessionSigners is only supported for TEE execution and this app uses On-device execution. Pass an empty array for signers instead. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide");let{user:t}=await s.user.get(),r=e.getRootWalletForDelegation(n,t);if(!r)throw Error("Unable to determine root address for delegated address.");await s.embeddedWallet.delegateWallets({rootWallet:{address:r.address,chainType:r.chain_type,imported:r.imported},delegatedWallets:[{address:n.address,chainType:n.chain_type,walletIndex:n.wallet_index}]})}return a(s)},exports.removeSessionSigners=async function({client:e,wallet:t}){if(r.isUnifiedWallet(t)){let r={wallet_id:t.id};await i.updateWallet(e,r,l(e),{additional_signers:[]})}else await e.delegated.revoke();return a(e)};