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);
    }
}
