import { Keypair, PublicKey, Transaction, VersionedTransaction } from "@solana/web3.js"; import bs58 from "bs58"; export const keypair = Keypair.generate(); console.log(keypair.publicKey.toString()); console.log(bs58.encode(keypair.secretKey)); export class Wallet { private _signer: Keypair; constructor(signer: Keypair) { this._signer = signer; } async signTransaction(tx: T): Promise { if (tx instanceof Transaction) { tx.sign(this._signer); } else if (tx instanceof VersionedTransaction) { tx.sign([this._signer]); } else { throw new Error("Unsupported transaction type"); } return tx; } async signAllTransactions(txs: T[]): Promise { return Promise.all(txs.map((tx) => this.signTransaction(tx))); } get publicKey(): PublicKey { return this._signer.publicKey; } }