@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 s(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/routes"),require("../../wallet-api/generate-authorization-signature.js"),require("canonicalize"),require("../../Error.js"),exports.addSessionSigners=async function({client:l,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(l,e);await i.updateWallet(l,e,s(l),{additional_signers:r.additional_signers.concat(d)})}else{if(n.delegated)return a(l);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 l.user.get(),r=e.getRootWalletForDelegation(n,t);if(!r)throw Error("Unable to determine root address for delegated address.");await l.embeddedWallet.delegateWallets({rootWallet:{address:r.address,chainType:r.chain_type,imported:r.imported??!1},delegatedWallets:[{address:n.address,chainType:n.chain_type,walletIndex:n.wallet_index}]})}return a(l)},exports.removeSessionSigners=async function({client:e,wallet:t}){if(r.isUnifiedWallet(t)){let r={wallet_id:t.id};await i.updateWallet(e,r,s(e),{additional_signers:[]})}else await e.delegated.revoke();return a(e)};