@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.
- package/dist/account/{zkAccount.d.ts → account.d.ts} +7 -5
- package/dist/account/account.d.ts.map +1 -0
- package/dist/account/{zkAccount.js → account.js} +35 -37
- package/dist/browser/index.js +108203 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/circuits.json +54 -6
- package/dist/clients/broadcaster.d.ts +7 -2
- package/dist/clients/broadcaster.d.ts.map +1 -1
- package/dist/clients/broadcaster.js +8 -1
- package/dist/clients/http.d.ts.map +1 -1
- package/dist/clients/http.js +16 -9
- package/dist/clients/indexer.d.ts +10 -0
- package/dist/clients/indexer.d.ts.map +1 -1
- package/dist/clients/indexer.js +39 -13
- package/dist/config.d.ts +1 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -4
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +5 -0
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +3 -2
- package/dist/crypto-adapters/index.d.ts.map +1 -1
- package/dist/crypto-adapters/index.js +2 -1
- package/dist/errors.d.ts +9 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +18 -0
- package/dist/history/service.d.ts +4 -4
- package/dist/history/service.d.ts.map +1 -1
- package/dist/history/service.js +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -5
- package/dist/keys/address.d.ts +13 -0
- package/dist/keys/address.d.ts.map +1 -0
- package/dist/keys/address.js +55 -0
- package/dist/keys/derive.d.ts +37 -0
- package/dist/keys/derive.d.ts.map +1 -0
- package/dist/keys/derive.js +112 -0
- package/dist/keys/hex.d.ts +17 -0
- package/dist/keys/hex.d.ts.map +1 -0
- package/dist/keys/hex.js +66 -0
- package/dist/keys/index.d.ts +5 -0
- package/dist/keys/index.d.ts.map +1 -0
- package/dist/keys/index.js +4 -0
- package/dist/keys/mnemonic.d.ts +8 -0
- package/dist/keys/mnemonic.d.ts.map +1 -0
- package/dist/keys/mnemonic.js +23 -0
- package/dist/prover/prover.d.ts.map +1 -1
- package/dist/prover/prover.js +18 -18
- package/dist/prover/registry.d.ts +3 -30
- package/dist/prover/registry.d.ts.map +1 -1
- package/dist/prover/registry.js +12 -51
- package/dist/state/merkle/hydrator.d.ts.map +1 -1
- package/dist/state/merkle/hydrator.js +3 -2
- package/dist/state/merkle/merkle-tree.d.ts.map +1 -1
- package/dist/state/merkle/merkle-tree.js +7 -6
- package/dist/state/store/ciphertext-store.d.ts +4 -0
- package/dist/state/store/ciphertext-store.d.ts.map +1 -1
- package/dist/state/store/ciphertext-store.js +12 -0
- package/dist/state/store/index.d.ts +1 -1
- package/dist/state/store/index.d.ts.map +1 -1
- package/dist/state/store/job-store.d.ts +7 -7
- package/dist/state/store/job-store.d.ts.map +1 -1
- package/dist/state/store/job-store.js +61 -38
- package/dist/state/store/jobs.d.ts +52 -18
- package/dist/state/store/jobs.d.ts.map +1 -1
- package/dist/state/store/note-store.d.ts +6 -2
- package/dist/state/store/note-store.d.ts.map +1 -1
- package/dist/state/store/note-store.js +22 -4
- package/dist/state/store/nullifier-store.d.ts +9 -0
- package/dist/state/store/nullifier-store.d.ts.map +1 -1
- package/dist/state/store/nullifier-store.js +32 -0
- package/dist/state/store/records.d.ts +6 -0
- package/dist/state/store/records.d.ts.map +1 -1
- package/dist/state/store/store.d.ts +24 -8
- package/dist/state/store/store.d.ts.map +1 -1
- package/dist/state/store/store.js +89 -1
- package/dist/storage/indexeddb.js +1 -1
- package/dist/transactions/deposit.d.ts +6 -4
- package/dist/transactions/deposit.d.ts.map +1 -1
- package/dist/transactions/deposit.js +174 -82
- package/dist/transactions/index.d.ts +5 -4
- package/dist/transactions/index.d.ts.map +1 -1
- package/dist/transactions/index.js +4 -3
- package/dist/transactions/note-selection.d.ts +1 -1
- package/dist/transactions/note-selection.d.ts.map +1 -1
- package/dist/transactions/note-selection.js +14 -9
- package/dist/transactions/note-sync.d.ts +3 -8
- package/dist/transactions/note-sync.d.ts.map +1 -1
- package/dist/transactions/note-sync.js +308 -159
- package/dist/transactions/reconcile.d.ts +2 -2
- package/dist/transactions/reconcile.d.ts.map +1 -1
- package/dist/transactions/reconcile.js +9 -8
- package/dist/transactions/transact.d.ts +5 -2
- package/dist/transactions/transact.d.ts.map +1 -1
- package/dist/transactions/transact.js +207 -148
- package/dist/transactions/transaction-planner.d.ts +1 -1
- package/dist/transactions/transaction-planner.d.ts.map +1 -1
- package/dist/transactions/transaction-planner.js +9 -8
- package/dist/transactions/transfer-planner.d.ts +36 -0
- package/dist/transactions/transfer-planner.d.ts.map +1 -0
- package/dist/transactions/transfer-planner.js +85 -0
- package/dist/transactions/types/deposit.d.ts +36 -14
- package/dist/transactions/types/deposit.d.ts.map +1 -1
- package/dist/transactions/types/options.d.ts +4 -0
- package/dist/transactions/types/options.d.ts.map +1 -1
- package/dist/transactions/types/state-stores.d.ts +61 -9
- package/dist/transactions/types/state-stores.d.ts.map +1 -1
- package/dist/transactions/types/transact.d.ts +32 -17
- package/dist/transactions/types/transact.d.ts.map +1 -1
- package/dist/transactions/withdrawal-planner.d.ts +25 -28
- package/dist/transactions/withdrawal-planner.d.ts.map +1 -1
- package/dist/transactions/withdrawal-planner.js +76 -47
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/tsup.browser.config.d.ts +7 -0
- package/dist/tsup.browser.config.d.ts.map +1 -0
- package/dist/tsup.browser.config.js +34 -0
- package/dist/utils/amounts.d.ts +2 -2
- package/dist/utils/amounts.js +11 -11
- package/dist/utils/async.d.ts +9 -0
- package/dist/utils/async.d.ts.map +1 -1
- package/dist/utils/async.js +24 -0
- package/dist/utils/bigint.js +7 -7
- package/dist/utils/crypto.d.ts +9 -3
- package/dist/utils/crypto.d.ts.map +1 -1
- package/dist/utils/crypto.js +11 -5
- package/dist/utils/json-codec.js +1 -1
- package/dist/utils/polling.d.ts +5 -0
- package/dist/utils/polling.d.ts.map +1 -1
- package/dist/utils/polling.js +5 -0
- package/dist/utils/validators.d.ts +16 -3
- package/dist/utils/validators.d.ts.map +1 -1
- package/dist/utils/validators.js +29 -19
- package/dist/vitest.config.d.ts.map +1 -1
- package/dist/vitest.config.js +2 -7
- package/package.json +21 -9
- package/dist/account/zkAccount.d.ts.map +0 -1
- package/dist/key-derivation/bech32.d.ts +0 -22
- package/dist/key-derivation/bech32.d.ts.map +0 -1
- package/dist/key-derivation/bech32.js +0 -86
- package/dist/key-derivation/bip32.d.ts +0 -17
- package/dist/key-derivation/bip32.d.ts.map +0 -1
- package/dist/key-derivation/bip32.js +0 -41
- package/dist/key-derivation/bip39.d.ts +0 -22
- package/dist/key-derivation/bip39.d.ts.map +0 -1
- package/dist/key-derivation/bip39.js +0 -57
- package/dist/key-derivation/bytes.d.ts +0 -19
- package/dist/key-derivation/bytes.d.ts.map +0 -1
- package/dist/key-derivation/bytes.js +0 -92
- package/dist/key-derivation/hash.d.ts +0 -3
- package/dist/key-derivation/hash.d.ts.map +0 -1
- package/dist/key-derivation/hash.js +0 -10
- package/dist/key-derivation/index.d.ts +0 -7
- package/dist/key-derivation/index.d.ts.map +0 -1
- package/dist/key-derivation/index.js +0 -6
- package/dist/key-derivation/wallet-node.d.ts +0 -47
- package/dist/key-derivation/wallet-node.d.ts.map +0 -1
- package/dist/key-derivation/wallet-node.js +0 -110
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type SpendingKeyPair, type ViewingKeyPair } from "../
|
|
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
|
|
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
|
|
24
|
-
export declare function
|
|
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=
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
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
|
|
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
|
|
16
|
+
throw new ValidationError("accountIndex must be a non-negative integer");
|
|
15
17
|
}
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
60
|
+
throw new ValidationError(`mnemonic entropy must be ${MNEMONIC_ENTROPY_BYTES} bytes`);
|
|
61
61
|
}
|
|
62
62
|
try {
|
|
63
|
-
const mnemonic = Mnemonic.fromEntropy(
|
|
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
|
|
84
|
+
throw new ValidationError("master seed encryptor must return Uint8Array");
|
|
85
85
|
}
|
|
86
|
-
await storage.put(MASTER_SEED_KEY,
|
|
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
|
|
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
|
|
118
|
+
throw new ValidationError("master mnemonic encryptor must return Uint8Array");
|
|
119
119
|
}
|
|
120
|
-
await storage.put(MASTER_MNEMONIC_KEY,
|
|
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
|
|
125
|
+
throw new ValidationError("master seed must be a Uint8Array");
|
|
128
126
|
}
|
|
129
127
|
if (seed.length !== MASTER_SEED_LENGTH) {
|
|
130
|
-
throw new
|
|
128
|
+
throw new ValidationError(`master seed must be ${MASTER_SEED_LENGTH} bytes`);
|
|
131
129
|
}
|
|
132
|
-
return
|
|
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
|
|
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
|
|
141
|
+
return Hex.toBytes(seedHex);
|
|
144
142
|
}
|