solana-multiagent/lib/solana/PrivyEmbeddedWallet.js
2025-02-17 15:21:20 +07:00

47 lines
1.1 KiB
JavaScript

import { Transaction } from '@solana/web3.js';
function createPrivyEmbeddedWallet(privyClient, publicKey) {
const secretKey = new Uint8Array(0);
async function signTransaction(transaction) {
try {
const request = {
address: publicKey.toBase58(),
chainType: 'solana',
method: 'signTransaction',
params: { transaction },
};
const { data } = await privyClient.walletApi.rpc(request);
return data.signedTransaction;
} catch (error) {
throw new Error(
`Failed to sign transaction: ${error instanceof Error ? error.message : 'Unknown error'}`
);
}
}
async function signAllTransactions(transactions) {
try {
return transactions.map((tx) => {
if (tx instanceof Transaction) {
tx.partialSign({ publicKey });
}
return tx;
});
} catch (error) {
throw new Error(
`Failed to sign transactions: ${error instanceof Error ? error.message : 'Unknown error'}`
);
}
}
return {
publicKey,
secretKey,
signTransaction,
signAllTransactions,
};
}
export { createPrivyEmbeddedWallet };