47 lines
1.1 KiB
JavaScript
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 };
|