#!/usr/bin/env node

/* eslint-disable @typescript-eslint/naming-convention */
const { encodeSecp256k1Pubkey, makeCosmoshubPath, Secp256k1HdWallet } = require("@cosmjs/amino");

const prefix = "wasm";
const accountsToCreate = [
  {
    mnemonic:
      "economy stock theory fatal elder harbor betray wasp final emotion task crumble siren bottom lizard educate guess current outdoor pair theory focus wife stone",
    accountNumbers: [0, 1, 2, 3, 4],
  },
  {
    mnemonic: "enlist hip relief stomach skate base shallow young switch frequent cry park",
    accountNumbers: [0, 1, 2, 3, 4],
  },
  {
    mnemonic: "remain fragile remove stamp quiz bus country dress critic mammal office need",
    accountNumbers: [0, 1, 2, 3, 4],
  },
  {
    mnemonic: "oyster design unusual machine spread century engine gravity focus cave carry slot",
    accountNumbers: [0],
  },
  {
    mnemonic: "degree tackle suggest window test behind mesh extra cover prepare oak script",
    accountNumbers: [0],
  },

  {
    mnemonic: "example indicate trick cereal hub fix civil host kiss version bird dash",
    accountNumbers: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
  },
];

async function main() {
  for (const { mnemonic, accountNumbers } of accountsToCreate) {
    const wallet = await Secp256k1HdWallet.fromMnemonic(mnemonic, {
      prefix: prefix,
      hdPaths: accountNumbers.map(makeCosmoshubPath),
    });
    const accounts = await wallet.getAccounts();
    console.info("=".repeat(process.stdout.columns));
    console.info("mnemonic:", mnemonic);
    for (const { address, pubkey } of accounts) {
      console.info("-".repeat(process.stdout.columns));
      console.info("pubkey:", encodeSecp256k1Pubkey(pubkey).value);
      console.info("address:", address);
    }
  }
}

main().then(
  () => process.exit(0),
  (error) => {
    console.error(error);
    process.exit(1);
  },
);
