import { generateSecretKey, getPublicKey } from "nostr-tools"; import { SimpleSigner } from "applesauce-signers/signers/simple-signer"; import { bytesToHex, hexToBytes } from "@noble/hashes/utils"; import { BaseAccount } from "../account.js"; export class SimpleAccount extends BaseAccount { static type = "nsec"; toJSON() { return super.saveCommonFields({ signer: { key: bytesToHex(this.signer.key) }, }); } static fromJSON(json) { const key = hexToBytes(json.signer.key); const account = new SimpleAccount(json.pubkey, new SimpleSigner(key)); return super.loadCommonFields(account, json); } /** Creates a SimpleAccount from a hex private key or NIP-19 nsec */ static fromKey(privateKey) { const signer = SimpleSigner.fromKey(privateKey); const pubkey = getPublicKey(signer.key); return new SimpleAccount(pubkey, signer); } /** Creates a new SimpleAccount with a random private key */ static generateNew() { const key = generateSecretKey(); return SimpleAccount.fromKey(key); } }