@unlink-xyz/core 0.1.3-canary.fc5edd1 → 0.1.3-canary.fd5dddf

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/dist/account/{zkAccount.d.ts → account.d.ts} +7 -5
  2. package/dist/account/account.d.ts.map +1 -0
  3. package/dist/account/{zkAccount.js → account.js} +35 -37
  4. package/dist/browser/index.js +108203 -0
  5. package/dist/browser/index.js.map +1 -0
  6. package/dist/circuits.json +54 -6
  7. package/dist/clients/broadcaster.d.ts +7 -2
  8. package/dist/clients/broadcaster.d.ts.map +1 -1
  9. package/dist/clients/broadcaster.js +8 -1
  10. package/dist/clients/http.d.ts.map +1 -1
  11. package/dist/clients/http.js +16 -9
  12. package/dist/clients/indexer.d.ts +10 -0
  13. package/dist/clients/indexer.d.ts.map +1 -1
  14. package/dist/clients/indexer.js +39 -13
  15. package/dist/config.d.ts +1 -4
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/config.js +8 -4
  18. package/dist/constants.d.ts +6 -0
  19. package/dist/constants.d.ts.map +1 -0
  20. package/dist/constants.js +5 -0
  21. package/dist/core.d.ts.map +1 -1
  22. package/dist/core.js +3 -2
  23. package/dist/crypto-adapters/index.d.ts.map +1 -1
  24. package/dist/crypto-adapters/index.js +2 -1
  25. package/dist/errors.d.ts +9 -0
  26. package/dist/errors.d.ts.map +1 -1
  27. package/dist/errors.js +18 -0
  28. package/dist/history/service.d.ts +4 -4
  29. package/dist/history/service.d.ts.map +1 -1
  30. package/dist/history/service.js +1 -1
  31. package/dist/index.d.ts +4 -4
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +4 -5
  34. package/dist/keys/address.d.ts +13 -0
  35. package/dist/keys/address.d.ts.map +1 -0
  36. package/dist/keys/address.js +55 -0
  37. package/dist/keys/derive.d.ts +37 -0
  38. package/dist/keys/derive.d.ts.map +1 -0
  39. package/dist/keys/derive.js +112 -0
  40. package/dist/keys/hex.d.ts +17 -0
  41. package/dist/keys/hex.d.ts.map +1 -0
  42. package/dist/keys/hex.js +66 -0
  43. package/dist/keys/index.d.ts +5 -0
  44. package/dist/keys/index.d.ts.map +1 -0
  45. package/dist/keys/index.js +4 -0
  46. package/dist/keys/mnemonic.d.ts +8 -0
  47. package/dist/keys/mnemonic.d.ts.map +1 -0
  48. package/dist/keys/mnemonic.js +23 -0
  49. package/dist/prover/prover.d.ts.map +1 -1
  50. package/dist/prover/prover.js +18 -18
  51. package/dist/prover/registry.d.ts +3 -30
  52. package/dist/prover/registry.d.ts.map +1 -1
  53. package/dist/prover/registry.js +12 -51
  54. package/dist/state/merkle/hydrator.d.ts.map +1 -1
  55. package/dist/state/merkle/hydrator.js +3 -2
  56. package/dist/state/merkle/merkle-tree.d.ts.map +1 -1
  57. package/dist/state/merkle/merkle-tree.js +7 -6
  58. package/dist/state/store/ciphertext-store.d.ts +4 -0
  59. package/dist/state/store/ciphertext-store.d.ts.map +1 -1
  60. package/dist/state/store/ciphertext-store.js +12 -0
  61. package/dist/state/store/index.d.ts +1 -1
  62. package/dist/state/store/index.d.ts.map +1 -1
  63. package/dist/state/store/job-store.d.ts +7 -7
  64. package/dist/state/store/job-store.d.ts.map +1 -1
  65. package/dist/state/store/job-store.js +61 -38
  66. package/dist/state/store/jobs.d.ts +52 -18
  67. package/dist/state/store/jobs.d.ts.map +1 -1
  68. package/dist/state/store/note-store.d.ts +6 -2
  69. package/dist/state/store/note-store.d.ts.map +1 -1
  70. package/dist/state/store/note-store.js +22 -4
  71. package/dist/state/store/nullifier-store.d.ts +9 -0
  72. package/dist/state/store/nullifier-store.d.ts.map +1 -1
  73. package/dist/state/store/nullifier-store.js +32 -0
  74. package/dist/state/store/records.d.ts +6 -0
  75. package/dist/state/store/records.d.ts.map +1 -1
  76. package/dist/state/store/store.d.ts +24 -8
  77. package/dist/state/store/store.d.ts.map +1 -1
  78. package/dist/state/store/store.js +89 -1
  79. package/dist/storage/indexeddb.js +1 -1
  80. package/dist/transactions/deposit.d.ts +6 -4
  81. package/dist/transactions/deposit.d.ts.map +1 -1
  82. package/dist/transactions/deposit.js +174 -82
  83. package/dist/transactions/index.d.ts +5 -4
  84. package/dist/transactions/index.d.ts.map +1 -1
  85. package/dist/transactions/index.js +4 -3
  86. package/dist/transactions/note-selection.d.ts +1 -1
  87. package/dist/transactions/note-selection.d.ts.map +1 -1
  88. package/dist/transactions/note-selection.js +14 -9
  89. package/dist/transactions/note-sync.d.ts +3 -8
  90. package/dist/transactions/note-sync.d.ts.map +1 -1
  91. package/dist/transactions/note-sync.js +308 -159
  92. package/dist/transactions/reconcile.d.ts +2 -2
  93. package/dist/transactions/reconcile.d.ts.map +1 -1
  94. package/dist/transactions/reconcile.js +9 -8
  95. package/dist/transactions/transact.d.ts +5 -2
  96. package/dist/transactions/transact.d.ts.map +1 -1
  97. package/dist/transactions/transact.js +207 -148
  98. package/dist/transactions/transaction-planner.d.ts +1 -1
  99. package/dist/transactions/transaction-planner.d.ts.map +1 -1
  100. package/dist/transactions/transaction-planner.js +9 -8
  101. package/dist/transactions/transfer-planner.d.ts +36 -0
  102. package/dist/transactions/transfer-planner.d.ts.map +1 -0
  103. package/dist/transactions/transfer-planner.js +85 -0
  104. package/dist/transactions/types/deposit.d.ts +36 -14
  105. package/dist/transactions/types/deposit.d.ts.map +1 -1
  106. package/dist/transactions/types/options.d.ts +4 -0
  107. package/dist/transactions/types/options.d.ts.map +1 -1
  108. package/dist/transactions/types/state-stores.d.ts +61 -9
  109. package/dist/transactions/types/state-stores.d.ts.map +1 -1
  110. package/dist/transactions/types/transact.d.ts +32 -17
  111. package/dist/transactions/types/transact.d.ts.map +1 -1
  112. package/dist/transactions/withdrawal-planner.d.ts +25 -28
  113. package/dist/transactions/withdrawal-planner.d.ts.map +1 -1
  114. package/dist/transactions/withdrawal-planner.js +76 -47
  115. package/dist/tsconfig.tsbuildinfo +1 -1
  116. package/dist/tsup.browser.config.d.ts +7 -0
  117. package/dist/tsup.browser.config.d.ts.map +1 -0
  118. package/dist/tsup.browser.config.js +34 -0
  119. package/dist/utils/amounts.d.ts +2 -2
  120. package/dist/utils/amounts.js +11 -11
  121. package/dist/utils/async.d.ts +9 -0
  122. package/dist/utils/async.d.ts.map +1 -1
  123. package/dist/utils/async.js +24 -0
  124. package/dist/utils/bigint.js +7 -7
  125. package/dist/utils/crypto.d.ts +9 -3
  126. package/dist/utils/crypto.d.ts.map +1 -1
  127. package/dist/utils/crypto.js +11 -5
  128. package/dist/utils/json-codec.js +1 -1
  129. package/dist/utils/polling.d.ts +5 -0
  130. package/dist/utils/polling.d.ts.map +1 -1
  131. package/dist/utils/polling.js +5 -0
  132. package/dist/utils/validators.d.ts +16 -3
  133. package/dist/utils/validators.d.ts.map +1 -1
  134. package/dist/utils/validators.js +29 -19
  135. package/dist/vitest.config.d.ts.map +1 -1
  136. package/dist/vitest.config.js +2 -7
  137. package/package.json +21 -9
  138. package/dist/account/zkAccount.d.ts.map +0 -1
  139. package/dist/key-derivation/bech32.d.ts +0 -22
  140. package/dist/key-derivation/bech32.d.ts.map +0 -1
  141. package/dist/key-derivation/bech32.js +0 -86
  142. package/dist/key-derivation/bip32.d.ts +0 -17
  143. package/dist/key-derivation/bip32.d.ts.map +0 -1
  144. package/dist/key-derivation/bip32.js +0 -41
  145. package/dist/key-derivation/bip39.d.ts +0 -22
  146. package/dist/key-derivation/bip39.d.ts.map +0 -1
  147. package/dist/key-derivation/bip39.js +0 -57
  148. package/dist/key-derivation/bytes.d.ts +0 -19
  149. package/dist/key-derivation/bytes.d.ts.map +0 -1
  150. package/dist/key-derivation/bytes.js +0 -92
  151. package/dist/key-derivation/hash.d.ts +0 -3
  152. package/dist/key-derivation/hash.d.ts.map +0 -1
  153. package/dist/key-derivation/hash.js +0 -10
  154. package/dist/key-derivation/index.d.ts +0 -7
  155. package/dist/key-derivation/index.d.ts.map +0 -1
  156. package/dist/key-derivation/index.js +0 -6
  157. package/dist/key-derivation/wallet-node.d.ts +0 -47
  158. package/dist/key-derivation/wallet-node.d.ts.map +0 -1
  159. package/dist/key-derivation/wallet-node.js +0 -110
@@ -1,4 +1,4 @@
1
- import { type SpendingKeyPair, type ViewingKeyPair } from "../key-derivation/wallet-node.js";
1
+ import { type SpendingKeyPair, type ViewingKeyPair } from "../keys/derive.js";
2
2
  import type { Storage } from "../types.js";
3
3
  export type MasterSeedCrypto = {
4
4
  encrypt(seed: Uint8Array): Promise<Uint8Array> | Uint8Array;
@@ -14,14 +14,16 @@ export type GenerateMasterSeedOptions = {
14
14
  export declare const MASTER_SEED_LENGTH = 64;
15
15
  export declare const MASTER_SEED_KEY = "cfg:wallet:master_seed/v1";
16
16
  export declare const MASTER_MNEMONIC_KEY = "cfg:wallet:master_mnemonic/v1";
17
- export type ZkAccount = {
17
+ export type Account = {
18
18
  spendingKeyPair: SpendingKeyPair;
19
19
  viewingKeyPair: ViewingKeyPair;
20
20
  nullifyingKey: bigint;
21
21
  masterPublicKey: bigint;
22
+ /** Bech32m address (0zk1...) for this account */
23
+ address: string;
22
24
  };
23
- export declare function deriveZkAccount(masterSeed: Uint8Array, accountIndex?: number): Promise<ZkAccount>;
24
- export declare function deriveZkAccountFromMnemonic(mnemonic: string, accountIndex?: number, password?: string): Promise<ZkAccount>;
25
+ export declare function deriveAccount(masterSeed: Uint8Array, accountIndex?: number): Promise<Account>;
26
+ export declare function deriveAccountFromMnemonic(mnemonic: string, accountIndex?: number, password?: string): Promise<Account>;
25
27
  export declare function generateMasterSeed({ storage, rng, crypto, overwrite, mnemonicPassphrase, }: GenerateMasterSeedOptions): Promise<Uint8Array>;
26
28
  export declare function loadMasterSeed(storage: Storage, crypto?: MasterSeedCrypto): Promise<Uint8Array | null>;
27
29
  export declare function storeMasterSeed(storage: Storage, seed: Uint8Array, crypto?: MasterSeedCrypto): Promise<void>;
@@ -35,4 +37,4 @@ export type ImportMasterMnemonicOptions = {
35
37
  };
36
38
  export declare function importMasterMnemonic({ storage, mnemonic, crypto, overwrite, password, }: ImportMasterMnemonicOptions): Promise<Uint8Array>;
37
39
  export declare function storeMasterMnemonic(storage: Storage, mnemonic: string, crypto?: MasterSeedCrypto): Promise<void>;
38
- //# sourceMappingURL=zkAccount.d.ts.map
40
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../account/account.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;IAC5D,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,UAAU,CAAC;IAC/B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,eAAe,8BAA8B,CAAC;AAC3D,eAAO,MAAM,mBAAmB,kCAAkC,CAAC;AAOnE,MAAM,MAAM,OAAO,GAAG;IACpB,eAAe,EAAE,eAAe,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAsB,aAAa,CACjC,UAAU,EAAE,UAAU,EACtB,YAAY,GAAE,MAAU,GACvB,OAAO,CAAC,OAAO,CAAC,CAmBlB;AAED,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,YAAY,GAAE,MAAU,EACxB,QAAQ,GAAE,MAAW,GACpB,OAAO,CAAC,OAAO,CAAC,CAQlB;AAQD,wBAAsB,kBAAkB,CAAC,EACvC,OAAO,EACP,GAAG,EACH,MAAiC,EACjC,SAAiB,EACjB,kBAAkB,GACnB,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,CAAC,CAgCjD;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,gBAA2C,GAClD,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAK5B;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,UAAU,EAChB,MAAM,GAAE,gBAA2C,GAClD,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,gBAA2C,GAClD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxB;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAsB,oBAAoB,CAAC,EACzC,OAAO,EACP,QAAQ,EACR,MAAiC,EACjC,SAAiB,EACjB,QAAa,GACd,EAAE,2BAA2B,GAAG,OAAO,CAAC,UAAU,CAAC,CAenD;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,gBAA2C,GAClD,OAAO,CAAC,IAAI,CAAC,CASf"}
@@ -1,6 +1,8 @@
1
- import { Mnemonic } from "../key-derivation/bip39.js";
2
- import { ByteUtils } from "../key-derivation/bytes.js";
3
- import { deriveNodesFromSeed, WalletNode, } from "../key-derivation/wallet-node.js";
1
+ import { ValidationError } from "../errors.js";
2
+ import { encodeAddress } from "../keys/address.js";
3
+ import { deriveAccountKeys, } from "../keys/derive.js";
4
+ import { Hex } from "../keys/hex.js";
5
+ import { Mnemonic } from "../keys/mnemonic.js";
4
6
  import { zeroize } from "../utils/secure-memory.js";
5
7
  export const MASTER_SEED_LENGTH = 64;
6
8
  export const MASTER_SEED_KEY = "cfg:wallet:master_seed/v1";
@@ -8,40 +10,38 @@ export const MASTER_MNEMONIC_KEY = "cfg:wallet:master_mnemonic/v1";
8
10
  const MNEMONIC_ENTROPY_BYTES = 32;
9
11
  const textEncoder = new TextEncoder();
10
12
  const textDecoder = new TextDecoder();
11
- export async function deriveZkAccount(masterSeed, accountIndex = 0) {
13
+ export async function deriveAccount(masterSeed, accountIndex = 0) {
12
14
  const seed = normalizeMasterSeed(masterSeed);
13
15
  if (!Number.isInteger(accountIndex) || accountIndex < 0) {
14
- throw new Error("accountIndex must be a non-negative integer");
16
+ throw new ValidationError("accountIndex must be a non-negative integer");
15
17
  }
16
- const { spending, viewing } = deriveNodesFromSeed(seed, accountIndex);
17
- const spendingKeyPair = spending.getSpendingKeyPair();
18
- const viewingKeyPair = await viewing.getViewingKeyPair();
19
- const nullifyingKey = WalletNode.getNullifyingKey(viewingKeyPair.privateKey);
20
- const masterPublicKey = WalletNode.getMasterPublicKey(spendingKeyPair.pubkey, nullifyingKey);
18
+ const keys = await deriveAccountKeys(seed, accountIndex);
19
+ const address = encodeAddress({
20
+ masterPublicKey: keys.masterPublicKey,
21
+ viewingPublicKey: keys.viewing.pubkey,
22
+ });
21
23
  return {
22
- spendingKeyPair,
23
- viewingKeyPair,
24
- nullifyingKey,
25
- masterPublicKey,
24
+ spendingKeyPair: keys.spending,
25
+ viewingKeyPair: keys.viewing,
26
+ nullifyingKey: keys.nullifyingKey,
27
+ masterPublicKey: keys.masterPublicKey,
28
+ address,
26
29
  };
27
30
  }
28
- export async function deriveZkAccountFromMnemonic(mnemonic, accountIndex = 0, password = "") {
31
+ export async function deriveAccountFromMnemonic(mnemonic, accountIndex = 0, password = "") {
29
32
  const normalized = normalizeMnemonic(mnemonic);
30
33
  const seed = mnemonicToSeed(normalized, password);
31
34
  try {
32
- return await deriveZkAccount(seed, accountIndex);
35
+ return await deriveAccount(seed, accountIndex);
33
36
  }
34
37
  finally {
35
38
  zeroize(seed);
36
39
  }
37
40
  }
41
+ /** Passthrough crypto, storage handles buffer isolation */
38
42
  const identityMasterSeedCrypto = {
39
- encrypt(seed) {
40
- return clone(seed);
41
- },
42
- decrypt(payload) {
43
- return clone(payload);
44
- },
43
+ encrypt: (seed) => seed,
44
+ decrypt: (payload) => payload,
45
45
  };
46
46
  export async function generateMasterSeed({ storage, rng, crypto = identityMasterSeedCrypto, overwrite = false, mnemonicPassphrase, }) {
47
47
  if (!overwrite) {
@@ -57,10 +57,10 @@ export async function generateMasterSeed({ storage, rng, crypto = identityMaster
57
57
  }
58
58
  const entropy = rng(MNEMONIC_ENTROPY_BYTES);
59
59
  if (entropy.length !== MNEMONIC_ENTROPY_BYTES) {
60
- throw new Error(`mnemonic entropy must be ${MNEMONIC_ENTROPY_BYTES} bytes`);
60
+ throw new ValidationError(`mnemonic entropy must be ${MNEMONIC_ENTROPY_BYTES} bytes`);
61
61
  }
62
62
  try {
63
- const mnemonic = Mnemonic.fromEntropy(ByteUtils.bytesToHex(entropy));
63
+ const mnemonic = Mnemonic.fromEntropy(Hex.fromBytes(entropy));
64
64
  await storeMasterMnemonic(storage, mnemonic, crypto);
65
65
  const seed = mnemonicToSeed(mnemonic, mnemonicPassphrase);
66
66
  await storeMasterSeed(storage, seed, crypto);
@@ -81,9 +81,9 @@ export async function storeMasterSeed(storage, seed, crypto = identityMasterSeed
81
81
  const normalized = normalizeMasterSeed(seed);
82
82
  const encrypted = await crypto.encrypt(normalized);
83
83
  if (!(encrypted instanceof Uint8Array)) {
84
- throw new Error("master seed encryptor must return Uint8Array");
84
+ throw new ValidationError("master seed encryptor must return Uint8Array");
85
85
  }
86
- await storage.put(MASTER_SEED_KEY, clone(encrypted));
86
+ await storage.put(MASTER_SEED_KEY, encrypted);
87
87
  }
88
88
  export async function loadMasterMnemonic(storage, crypto = identityMasterSeedCrypto) {
89
89
  const stored = await storage.get(MASTER_MNEMONIC_KEY);
@@ -102,7 +102,7 @@ export async function importMasterMnemonic({ storage, mnemonic, crypto = identit
102
102
  if (!overwrite) {
103
103
  const existing = await loadMasterMnemonic(storage, crypto);
104
104
  if (existing) {
105
- throw new Error("master mnemonic already exists; set overwrite to true to replace it");
105
+ throw new ValidationError("master mnemonic already exists; set overwrite to true to replace it");
106
106
  }
107
107
  }
108
108
  const normalized = normalizeMnemonic(mnemonic);
@@ -115,30 +115,28 @@ export async function storeMasterMnemonic(storage, mnemonic, crypto = identityMa
115
115
  const normalized = normalizeMnemonic(mnemonic);
116
116
  const encrypted = await crypto.encrypt(textEncoder.encode(normalized));
117
117
  if (!(encrypted instanceof Uint8Array)) {
118
- throw new Error("master mnemonic encryptor must return Uint8Array");
118
+ throw new ValidationError("master mnemonic encryptor must return Uint8Array");
119
119
  }
120
- await storage.put(MASTER_MNEMONIC_KEY, clone(encrypted));
121
- }
122
- function clone(bytes) {
123
- return new Uint8Array(bytes);
120
+ await storage.put(MASTER_MNEMONIC_KEY, encrypted);
124
121
  }
122
+ /** Validates seed format. Storage handles buffer isolation on put/get. */
125
123
  function normalizeMasterSeed(seed) {
126
124
  if (!(seed instanceof Uint8Array)) {
127
- throw new Error("master seed must be a Uint8Array");
125
+ throw new ValidationError("master seed must be a Uint8Array");
128
126
  }
129
127
  if (seed.length !== MASTER_SEED_LENGTH) {
130
- throw new Error(`master seed must be ${MASTER_SEED_LENGTH} bytes`);
128
+ throw new ValidationError(`master seed must be ${MASTER_SEED_LENGTH} bytes`);
131
129
  }
132
- return clone(seed);
130
+ return seed;
133
131
  }
134
132
  function normalizeMnemonic(mnemonic) {
135
133
  const formatted = mnemonic.trim().replace(/\s+/g, " ");
136
134
  if (!Mnemonic.validate(formatted)) {
137
- throw new Error("invalid BIP-39 mnemonic phrase");
135
+ throw new ValidationError("invalid BIP-39 mnemonic phrase");
138
136
  }
139
137
  return formatted;
140
138
  }
141
139
  function mnemonicToSeed(mnemonic, password = "") {
142
140
  const seedHex = Mnemonic.toSeed(mnemonic, password);
143
- return ByteUtils.hexStringToBytes(seedHex);
141
+ return Hex.toBytes(seedHex);
144
142
  }