const StellarHDWallet =require('stellar-hd-wallet');
// traditional english - 24 words
let twentyfourwords = StellarHDWallet.generateMnemonic({language: 'english',});
console.log("24 word phrase: \n:", twentyfourwords);
// english - 12 words
let twelveword = StellarHDWallet.generateMnemonic({language: 'english', entropyBits: 128});
console.log("12 word phrase: \n:", twelveword);
// create a wallet to interact with from the 24 word phrase we generated above.
const wallet = StellarHDWallet.fromMnemonic(twentyfourwords)
let account1 = wallet.getPublicKey(0)
console.log("Account1 pubkey: ", account1)
let account2 = wallet.getPublicKey(1)
console.log("Account2 pubkey: ", account2)
let secret1 = wallet.getSecret(0)
console.log("Account1 privkey: ", secret1)
let secret2 = wallet.getSecret(1)
console.log("Account1 privkey: ",secret2)
let stellarbase = wallet.getKeypair(0) // => StellarBase.Keypair for account 0
let myseed = wallet.derive(`m/44'/148'/0'`) // => raw key for account 0 as a Buffer
console.log(myseed)
// wallet instance from seeds
const seedHex = myseed
const seedBuffer = Buffer.from(seedHex)
StellarHDWallet.fromSeed(seedHex)
StellarHDWallet.fromSeed(seedBuffer)
// mnemonics with different lengths
console.log("24 words:\n", StellarHDWallet.generateMnemonic()) // 24 words
console.log("21 words:\n", StellarHDWallet.generateMnemonic({entropyBits: 224})); // 21 words
console.log("18 words:\n", StellarHDWallet.generateMnemonic({entropyBits: 160})); // 18 words
console.log("12 words:\n", StellarHDWallet.generateMnemonic({entropyBits: 128})); // 12 words
// validate a mnemonic
StellarHDWallet.validateMnemonic('too short and non wordlist words') // false