import { generateSeedPhrase, seedFromPhrase, rootFromSeed, accountNode, addressNode, p2pkhAddress, p2shP2wpkhAddress, p2wpkhAddress, p2trAddress, accountXpub, PURPOSE_LABEL, type Purpose, } from '../src/index.js'; const args = process.argv.slice(2); const phrase = args.length > 0 ? args.join(' ').trim() : generateSeedPhrase(128); console.log('\n=== DigiByte HD Derivation Demo ===\n'); console.log(`Seed phrase (${phrase.split(/\s+/).length} words):`); console.log(` ${phrase}\n`); const seed = await seedFromPhrase(phrase); const root = rootFromSeed(seed); const specs: Array<{ purpose: Purpose; deriver: (n: ReturnType) => string; }> = [ { purpose: 44, deriver: p2pkhAddress }, { purpose: 49, deriver: p2shP2wpkhAddress }, { purpose: 84, deriver: p2wpkhAddress }, { purpose: 86, deriver: p2trAddress }, ]; for (const spec of specs) { const acct = accountNode(root, spec.purpose, 0); console.log(`── ${PURPOSE_LABEL[spec.purpose]}`); console.log(` account xpub: ${accountXpub(acct)}`); console.log(` first 3 receive addresses (m/${spec.purpose}'/20'/0'/0/*):`); for (let i = 0; i < 3; i++) { const key = addressNode(acct, 0, i); console.log(` [${i}] ${spec.deriver(key)}`); } console.log(); } console.log('Done. Cross-check any of these addresses against Ian Coleman'); console.log('iancoleman.io/bip39 with coin = "DGB - Digibyte" — they should match.\n');