import { ExtensionSigner } from "applesauce-signers/signers/extension-signer";
import { BaseAccount } from "../account.js";
export class ExtensionAccount extends BaseAccount {
    signer;
    static type = "extension";
    constructor(pubkey, signer) {
        super(pubkey, signer || new ExtensionSigner());
        this.signer = signer;
    }
    toJSON() {
        return super.saveCommonFields({
            signer: undefined,
        });
    }
    static fromJSON(json) {
        const account = new ExtensionAccount(json.pubkey, new ExtensionSigner());
        return super.loadCommonFields(account, json);
    }
    /**
     * Creates a new account from the NIP-07 extension
     * @throws {ExtensionMissingError} if the extension is not installed
     */
    static async fromExtension() {
        const signer = new ExtensionSigner();
        const pubkey = await signer.getPublicKey();
        return new ExtensionAccount(pubkey, signer);
    }
}
