@xyo-network/wallet 6.1.1 → 7.0.2

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.
@@ -9,7 +9,18 @@ export declare class HDWallet extends Account implements WalletInstance {
9
9
  static readonly uniqueName: string;
10
10
  protected static _addressMap: Record<XyoAddress, WeakRef<WalletInstance>>;
11
11
  protected readonly node: HDNodeWallet;
12
+ neuter: () => HDWallet;
12
13
  constructor(key: symbol, node: HDNodeWallet, privateKey: PrivateKeyInstance);
14
+ protected static createFromNodeInternal(node: HDNodeWallet, previousHash?: string): Promise<WalletInstance>;
15
+ protected static getCachedWalletOrCacheNewWallet(createdWallet: WalletInstance): WalletInstance;
16
+ static create(opts?: AccountConfig): Promise<WalletInstance>;
17
+ static createFromNode(node: HDNodeWallet, previousHash?: string): Promise<WalletInstance>;
18
+ static fromExtendedKey(key: string): Promise<WalletInstance>;
19
+ static fromMnemonic(mnemonic: Mnemonic, path?: string): Promise<WalletInstance>;
20
+ static fromPhrase(phrase: string, path?: string): Promise<WalletInstance>;
21
+ static fromSeed(seed: string | ArrayBufferLike): Promise<WalletInstance>;
22
+ static generateMnemonic(wordlist?: string[], strength?: number): string;
23
+ static random(): Promise<WalletInstance>;
13
24
  get address(): XyoAddress;
14
25
  get addressBytes(): ArrayBufferLike;
15
26
  get chainCode(): string;
@@ -22,17 +33,6 @@ export declare class HDWallet extends Account implements WalletInstance {
22
33
  get path(): string | null;
23
34
  get privateKey(): Hex;
24
35
  get publicKey(): Hex;
25
- static create(opts?: AccountConfig): Promise<WalletInstance>;
26
- static createFromNode(node: HDNodeWallet, previousHash?: string): Promise<WalletInstance>;
27
- static fromExtendedKey(key: string): Promise<WalletInstance>;
28
- static fromMnemonic(mnemonic: Mnemonic, path?: string): Promise<WalletInstance>;
29
- static fromPhrase(phrase: string, path?: string): Promise<WalletInstance>;
30
- static fromSeed(seed: string | ArrayBufferLike): Promise<WalletInstance>;
31
- static generateMnemonic(wordlist?: string[], strength?: number): string;
32
- static random(): Promise<WalletInstance>;
33
- protected static createFromNodeInternal(node: HDNodeWallet, previousHash?: string): Promise<WalletInstance>;
34
- protected static getCachedWalletOrCacheNewWallet(createdWallet: WalletInstance): WalletInstance;
35
36
  derivePath(path: string): Promise<WalletInstance>;
36
- neuter: () => HDWallet;
37
37
  }
38
38
  //# sourceMappingURL=HDWallet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HDWallet.d.ts","sourceRoot":"","sources":["../../src/HDWallet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAIzC,OAAO,EAAE,OAAO,EAAc,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAM/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EACQ,YAAY,EAAE,QAAQ,EACpC,MAAM,QAAQ,CAAA;AAEf,qBACa,QAAS,SAAQ,OAAQ,YAAW,cAAc;IAC7D,gBAAyB,UAAU,SAA8C;IACjF,iBAA0B,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAK;IAEvF,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;gBAGnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,YAAY,EAClB,UAAU,EAAE,kBAAkB;IAMhC,IAAa,OAAO,IAAI,UAAU,CAEjC;IAED,IAAa,YAAY,IAAI,eAAe,CAE3C;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAE9B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,CAExB;IAED,IAAI,UAAU,IAAI,GAAG,CAEpB;IAED,IAAI,SAAS,IAAI,GAAG,CAEnB;WAEqB,MAAM,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;WAa9D,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;WAIlF,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;WAMrD,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,GAAE,MAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;WAMrF,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;WAI/E,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAM9E,MAAM,CAAC,gBAAgB,CAAC,QAAQ,GAAE,MAAM,EAAoB,EAAE,QAAQ,SAAM,GAAG,MAAM;WAI/D,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;qBAIhC,sBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAOjH,SAAS,CAAC,MAAM,CAAC,+BAA+B,CAAC,aAAa,EAAE,cAAc,GAAG,cAAc;IAUzF,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAavD,MAAM,EAAE,MAAM,QAAQ,CAGrB;CACF"}
1
+ {"version":3,"file":"HDWallet.d.ts","sourceRoot":"","sources":["../../src/HDWallet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAIzC,OAAO,EAAE,OAAO,EAAc,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAM/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EACQ,YAAY,EAAE,QAAQ,EACpC,MAAM,QAAQ,CAAA;AAEf,qBACa,QAAS,SAAQ,OAAQ,YAAW,cAAc;IAC7D,gBAAyB,UAAU,SAA8C;IACjF,iBAA0B,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAK;IAEvF,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;IAErC,MAAM,EAAE,MAAM,QAAQ,CAGrB;gBAGC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,YAAY,EAClB,UAAU,EAAE,kBAAkB;qBAMT,sBAAsB,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IASjH,SAAS,CAAC,MAAM,CAAC,+BAA+B,CAAC,aAAa,EAAE,cAAc,GAAG,cAAc;WAUzE,MAAM,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;WAa9D,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;WAIlF,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;WAMrD,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,GAAE,MAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;WAMrF,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,MAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;WAI/E,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAM9E,MAAM,CAAC,gBAAgB,CAAC,QAAQ,GAAE,MAAM,EAAoB,EAAE,QAAQ,SAAM,GAAG,MAAM;WAI/D,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAIvD,IAAa,OAAO,IAAI,UAAU,CAEjC;IAED,IAAa,YAAY,IAAI,eAAe,CAE3C;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,QAAQ,IAAI,QAAQ,GAAG,IAAI,CAE9B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,IAAI,IAAI,IAAI,MAAM,GAAG,IAAI,CAExB;IAED,IAAI,UAAU,IAAI,GAAG,CAEpB;IAED,IAAI,SAAS,IAAI,GAAG,CAEnB;IAEK,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CAYxD"}
@@ -35,45 +35,30 @@ import {
35
35
  } from "ethers";
36
36
  var HDWallet = class extends Account {
37
37
  node;
38
+ neuter = () => {
39
+ this.node.neuter();
40
+ return this;
41
+ };
38
42
  constructor(key, node, privateKey) {
39
43
  super(key, privateKey);
40
44
  this.node = node;
41
45
  }
42
- get address() {
43
- return asAddress(hexFromHexString(this.node.address, { prefix: false }), true);
44
- }
45
- get addressBytes() {
46
- return toUint8Array(this.address, void 0, 16).buffer;
47
- }
48
- get chainCode() {
49
- return this.node.chainCode;
50
- }
51
- get depth() {
52
- return this.node.depth;
53
- }
54
- get extendedKey() {
55
- return this.node.extendedKey;
56
- }
57
- get fingerprint() {
58
- return this.node.fingerprint;
59
- }
60
- get index() {
61
- return this.node.index;
62
- }
63
- get mnemonic() {
64
- return this.node.mnemonic;
65
- }
66
- get parentFingerprint() {
67
- return this.node.parentFingerprint;
68
- }
69
- get path() {
70
- return this.node.path;
71
- }
72
- get privateKey() {
73
- return this.node.privateKey.toLowerCase();
46
+ static async createFromNodeInternal(node, previousHash) {
47
+ const privateKey = toUint8Array(node.privateKey.replace("0x", ""));
48
+ assertEx(privateKey.length === 32, () => `Private key must be 32 bytes [${privateKey?.length}]`);
49
+ const key = await PrivateKey.create(privateKey.buffer);
50
+ const wallet = new HDWallet(super._protectedConstructorKey, node, key);
51
+ const newWallet = await wallet.loadPreviousHash(previousHash);
52
+ return this._addressMap[newWallet.address]?.deref() ?? newWallet;
74
53
  }
75
- get publicKey() {
76
- return this.node.publicKey.toLowerCase();
54
+ static getCachedWalletOrCacheNewWallet(createdWallet) {
55
+ const existingWallet = this._addressMap[createdWallet.address]?.deref();
56
+ if (existingWallet) {
57
+ return existingWallet;
58
+ }
59
+ const ref = new WeakRef(createdWallet);
60
+ this._addressMap[createdWallet.address] = ref;
61
+ return createdWallet;
77
62
  }
78
63
  static async create(opts) {
79
64
  if (isPhraseInitializationConfig(opts)) {
@@ -92,7 +77,7 @@ var HDWallet = class extends Account {
92
77
  }
93
78
  static async fromExtendedKey(key) {
94
79
  const node = HDNodeWallet.fromExtendedKey(key);
95
- return await HDWallet.createFromNode(node);
80
+ return await this.createFromNode(node);
96
81
  }
97
82
  static async fromMnemonic(mnemonic, path = defaultPath) {
98
83
  const node = HDNodeWallet.fromMnemonic(mnemonic, path);
@@ -111,22 +96,43 @@ var HDWallet = class extends Account {
111
96
  return generateMnemonic(wordlist, strength);
112
97
  }
113
98
  static async random() {
114
- return await this.fromMnemonic(Mnemonic.fromPhrase(HDWallet.generateMnemonic()));
99
+ return await this.fromMnemonic(Mnemonic.fromPhrase(this.generateMnemonic()));
115
100
  }
116
- static async createFromNodeInternal(node, previousHash) {
117
- const privateKey = toUint8Array(node.privateKey.replace("0x", ""));
118
- assertEx(privateKey.length === 32, () => `Private key must be 32 bytes [${privateKey?.length}]`);
119
- const newWallet = await new HDWallet(Account._protectedConstructorKey, node, await PrivateKey.create(privateKey.buffer)).loadPreviousHash(previousHash);
120
- return HDWallet._addressMap[newWallet.address]?.deref() ?? newWallet;
101
+ get address() {
102
+ return asAddress(hexFromHexString(this.node.address, { prefix: false }), true);
121
103
  }
122
- static getCachedWalletOrCacheNewWallet(createdWallet) {
123
- const existingWallet = this._addressMap[createdWallet.address]?.deref();
124
- if (existingWallet) {
125
- return existingWallet;
126
- }
127
- const ref = new WeakRef(createdWallet);
128
- this._addressMap[createdWallet.address] = ref;
129
- return createdWallet;
104
+ get addressBytes() {
105
+ return toUint8Array(this.address, void 0, 16).buffer;
106
+ }
107
+ get chainCode() {
108
+ return this.node.chainCode;
109
+ }
110
+ get depth() {
111
+ return this.node.depth;
112
+ }
113
+ get extendedKey() {
114
+ return this.node.extendedKey;
115
+ }
116
+ get fingerprint() {
117
+ return this.node.fingerprint;
118
+ }
119
+ get index() {
120
+ return this.node.index;
121
+ }
122
+ get mnemonic() {
123
+ return this.node.mnemonic;
124
+ }
125
+ get parentFingerprint() {
126
+ return this.node.parentFingerprint;
127
+ }
128
+ get path() {
129
+ return this.node.path;
130
+ }
131
+ get privateKey() {
132
+ return this.node.privateKey.toLowerCase();
133
+ }
134
+ get publicKey() {
135
+ return this.node.publicKey.toLowerCase();
130
136
  }
131
137
  async derivePath(path) {
132
138
  if (path.startsWith("m/")) {
@@ -139,10 +145,6 @@ var HDWallet = class extends Account {
139
145
  }
140
146
  return await HDWallet.createFromNode(this.node.derivePath(path));
141
147
  }
142
- neuter = () => {
143
- this.node.neuter();
144
- return this;
145
- };
146
148
  };
147
149
  __publicField(HDWallet, "uniqueName", globallyUnique("HDWallet", HDWallet, "xyo"));
148
150
  __publicField(HDWallet, "_addressMap", {});
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/HDWallet.ts"],
4
- "sourcesContent": ["import { generateMnemonic } from '@scure/bip39'\nimport { wordlist as englishWordlist } from '@scure/bip39/wordlists/english.js'\nimport type { Hex } from '@xylabs/sdk-js'\nimport {\n asAddress, assertEx, globallyUnique, hexFromHexString, staticImplements, toUint8Array,\n} from '@xylabs/sdk-js'\nimport { Account, PrivateKey } from '@xyo-network/account'\nimport type { AccountConfig } from '@xyo-network/account-model'\nimport {\n isMnemonicInitializationConfig,\n isPhraseInitializationConfig,\n isPrivateKeyInitializationConfig,\n} from '@xyo-network/account-model'\nimport type { XyoAddress } from '@xyo-network/address'\nimport type { PrivateKeyInstance } from '@xyo-network/key-model'\nimport type { WalletInstance, WalletStatic } from '@xyo-network/wallet-model'\nimport {\n defaultPath, HDNodeWallet, Mnemonic,\n} from 'ethers'\n\n@staticImplements<WalletStatic>()\nexport class HDWallet extends Account implements WalletInstance {\n static override readonly uniqueName = globallyUnique('HDWallet', HDWallet, 'xyo')\n protected static override _addressMap: Record<XyoAddress, WeakRef<WalletInstance>> = {}\n\n protected readonly node: HDNodeWallet\n\n constructor(\n key: symbol,\n node: HDNodeWallet,\n privateKey: PrivateKeyInstance,\n ) {\n super(key, privateKey)\n this.node = node\n }\n\n override get address(): XyoAddress {\n return asAddress(hexFromHexString(this.node.address, { prefix: false }), true)\n }\n\n override get addressBytes(): ArrayBufferLike {\n return toUint8Array(this.address, undefined, 16).buffer\n }\n\n get chainCode(): string {\n return this.node.chainCode\n }\n\n get depth(): number {\n return this.node.depth\n }\n\n get extendedKey(): string {\n return this.node.extendedKey\n }\n\n get fingerprint(): string {\n return this.node.fingerprint\n }\n\n get index(): number {\n return this.node.index\n }\n\n get mnemonic(): Mnemonic | null {\n return this.node.mnemonic\n }\n\n get parentFingerprint(): string {\n return this.node.parentFingerprint\n }\n\n get path(): string | null {\n return this.node.path\n }\n\n get privateKey(): Hex {\n return this.node.privateKey.toLowerCase() as Hex\n }\n\n get publicKey(): Hex {\n return this.node.publicKey.toLowerCase() as Hex\n }\n\n static override async create(opts?: AccountConfig): Promise<WalletInstance> {\n if (isPhraseInitializationConfig(opts)) {\n return await this.fromPhrase(opts.phrase)\n }\n if (isMnemonicInitializationConfig(opts)) {\n return await this.fromPhrase(opts.mnemonic, opts.path)\n }\n if (isPrivateKeyInitializationConfig(opts)) {\n throw new Error('Invalid initialization config. from privateKey not supported. Use Account.fromPrivateKey instead.')\n }\n throw new Error('Invalid initialization config')\n }\n\n static async createFromNode(node: HDNodeWallet, previousHash?: string): Promise<WalletInstance> {\n return await this.createFromNodeInternal(node, previousHash)\n }\n\n static async fromExtendedKey(key: string): Promise<WalletInstance> {\n const node = HDNodeWallet.fromExtendedKey(key)\n /* TODO: Handle HDNodeVoidWallet */\n return await HDWallet.createFromNode(node as HDNodeWallet)\n }\n\n static async fromMnemonic(mnemonic: Mnemonic, path: string = defaultPath): Promise<WalletInstance> {\n const node = HDNodeWallet.fromMnemonic(mnemonic, path)\n const createdWallet = await this.createFromNodeInternal(node)\n return this.getCachedWalletOrCacheNewWallet(createdWallet)\n }\n\n static async fromPhrase(phrase: string, path: string = defaultPath): Promise<WalletInstance> {\n return await this.fromMnemonic(Mnemonic.fromPhrase(phrase), path)\n }\n\n static async fromSeed(seed: string | ArrayBufferLike): Promise<WalletInstance> {\n const node = HDNodeWallet.fromSeed(toUint8Array(seed))\n const createdWallet = await this.createFromNodeInternal(node)\n return this.getCachedWalletOrCacheNewWallet(createdWallet)\n }\n\n static generateMnemonic(wordlist: string[] = englishWordlist, strength = 256): string {\n return generateMnemonic(wordlist, strength)\n }\n\n static override async random(): Promise<WalletInstance> {\n return await this.fromMnemonic(Mnemonic.fromPhrase(HDWallet.generateMnemonic()))\n }\n\n protected static async createFromNodeInternal(node: HDNodeWallet, previousHash?: string): Promise<WalletInstance> {\n const privateKey = toUint8Array(node.privateKey.replace('0x', ''))\n assertEx(privateKey.length === 32, () => `Private key must be 32 bytes [${privateKey?.length}]`)\n const newWallet = await new HDWallet(Account._protectedConstructorKey, node, await PrivateKey.create(privateKey.buffer)).loadPreviousHash(previousHash)\n return HDWallet._addressMap[newWallet.address]?.deref() ?? newWallet\n }\n\n protected static getCachedWalletOrCacheNewWallet(createdWallet: WalletInstance): WalletInstance {\n const existingWallet = this._addressMap[createdWallet.address]?.deref()\n if (existingWallet) {\n return existingWallet\n }\n const ref = new WeakRef(createdWallet)\n this._addressMap[createdWallet.address] = ref\n return createdWallet\n }\n\n async derivePath(path: string): Promise<WalletInstance> {\n // if an absolute path, check if it matches the parent root and work with it\n if (path.startsWith('m/')) {\n const parentPath = this.path\n if (parentPath !== null && path.startsWith(parentPath)) {\n const childPath = path.slice(parentPath.length + 1)\n return await HDWallet.createFromNode(this.node.derivePath(childPath))\n }\n throw new Error(`Invalid absolute path ${path} for wallet with path ${parentPath}`)\n }\n return await HDWallet.createFromNode(this.node.derivePath(path))\n }\n\n neuter: () => HDWallet = () => {\n this.node.neuter()\n return this\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { generateMnemonic } from '@scure/bip39'\nimport { wordlist as englishWordlist } from '@scure/bip39/wordlists/english.js'\nimport type { Hex } from '@xylabs/sdk-js'\nimport {\n asAddress, assertEx, globallyUnique, hexFromHexString, staticImplements, toUint8Array,\n} from '@xylabs/sdk-js'\nimport { Account, PrivateKey } from '@xyo-network/account'\nimport type { AccountConfig } from '@xyo-network/account-model'\nimport {\n isMnemonicInitializationConfig,\n isPhraseInitializationConfig,\n isPrivateKeyInitializationConfig,\n} from '@xyo-network/account-model'\nimport type { XyoAddress } from '@xyo-network/address'\nimport type { PrivateKeyInstance } from '@xyo-network/key-model'\nimport type { WalletInstance, WalletStatic } from '@xyo-network/wallet-model'\nimport {\n defaultPath, HDNodeWallet, Mnemonic,\n} from 'ethers'\n\n@staticImplements<WalletStatic>()\nexport class HDWallet extends Account implements WalletInstance {\n static override readonly uniqueName = globallyUnique('HDWallet', HDWallet, 'xyo')\n protected static override _addressMap: Record<XyoAddress, WeakRef<WalletInstance>> = {}\n\n protected readonly node: HDNodeWallet\n\n neuter: () => HDWallet = () => {\n this.node.neuter()\n return this\n }\n\n constructor(\n key: symbol,\n node: HDNodeWallet,\n privateKey: PrivateKeyInstance,\n ) {\n super(key, privateKey)\n this.node = node\n }\n\n protected static async createFromNodeInternal(node: HDNodeWallet, previousHash?: string): Promise<WalletInstance> {\n const privateKey = toUint8Array(node.privateKey.replace('0x', ''))\n assertEx(privateKey.length === 32, () => `Private key must be 32 bytes [${privateKey?.length}]`)\n const key = await PrivateKey.create(privateKey.buffer)\n const wallet = new HDWallet(super._protectedConstructorKey, node, key)\n const newWallet = await wallet.loadPreviousHash(previousHash)\n return this._addressMap[newWallet.address]?.deref() ?? newWallet\n }\n\n protected static getCachedWalletOrCacheNewWallet(createdWallet: WalletInstance): WalletInstance {\n const existingWallet = this._addressMap[createdWallet.address]?.deref()\n if (existingWallet) {\n return existingWallet\n }\n const ref = new WeakRef(createdWallet)\n this._addressMap[createdWallet.address] = ref\n return createdWallet\n }\n\n static override async create(opts?: AccountConfig): Promise<WalletInstance> {\n if (isPhraseInitializationConfig(opts)) {\n return await this.fromPhrase(opts.phrase)\n }\n if (isMnemonicInitializationConfig(opts)) {\n return await this.fromPhrase(opts.mnemonic, opts.path)\n }\n if (isPrivateKeyInitializationConfig(opts)) {\n throw new Error('Invalid initialization config. from privateKey not supported. Use Account.fromPrivateKey instead.')\n }\n throw new Error('Invalid initialization config')\n }\n\n static async createFromNode(node: HDNodeWallet, previousHash?: string): Promise<WalletInstance> {\n return await this.createFromNodeInternal(node, previousHash)\n }\n\n static async fromExtendedKey(key: string): Promise<WalletInstance> {\n const node = HDNodeWallet.fromExtendedKey(key)\n /* TODO: Handle HDNodeVoidWallet */\n return await this.createFromNode(node as HDNodeWallet)\n }\n\n static async fromMnemonic(mnemonic: Mnemonic, path: string = defaultPath): Promise<WalletInstance> {\n const node = HDNodeWallet.fromMnemonic(mnemonic, path)\n const createdWallet = await this.createFromNodeInternal(node)\n return this.getCachedWalletOrCacheNewWallet(createdWallet)\n }\n\n static async fromPhrase(phrase: string, path: string = defaultPath): Promise<WalletInstance> {\n return await this.fromMnemonic(Mnemonic.fromPhrase(phrase), path)\n }\n\n static async fromSeed(seed: string | ArrayBufferLike): Promise<WalletInstance> {\n const node = HDNodeWallet.fromSeed(toUint8Array(seed))\n const createdWallet = await this.createFromNodeInternal(node)\n return this.getCachedWalletOrCacheNewWallet(createdWallet)\n }\n\n static generateMnemonic(wordlist: string[] = englishWordlist, strength = 256): string {\n return generateMnemonic(wordlist, strength)\n }\n\n static override async random(): Promise<WalletInstance> {\n return await this.fromMnemonic(Mnemonic.fromPhrase(this.generateMnemonic()))\n }\n\n override get address(): XyoAddress {\n return asAddress(hexFromHexString(this.node.address, { prefix: false }), true)\n }\n\n override get addressBytes(): ArrayBufferLike {\n return toUint8Array(this.address, undefined, 16).buffer\n }\n\n get chainCode(): string {\n return this.node.chainCode\n }\n\n get depth(): number {\n return this.node.depth\n }\n\n get extendedKey(): string {\n return this.node.extendedKey\n }\n\n get fingerprint(): string {\n return this.node.fingerprint\n }\n\n get index(): number {\n return this.node.index\n }\n\n get mnemonic(): Mnemonic | null {\n return this.node.mnemonic\n }\n\n get parentFingerprint(): string {\n return this.node.parentFingerprint\n }\n\n get path(): string | null {\n return this.node.path\n }\n\n get privateKey(): Hex {\n return this.node.privateKey.toLowerCase() as Hex\n }\n\n get publicKey(): Hex {\n return this.node.publicKey.toLowerCase() as Hex\n }\n\n async derivePath(path: string): Promise<WalletInstance> {\n // if an absolute path, check if it matches the parent root and work with it\n if (path.startsWith('m/')) {\n const parentPath = this.path\n if (parentPath !== null && path.startsWith(parentPath)) {\n const childPath = path.slice(parentPath.length + 1)\n return await HDWallet.createFromNode(this.node.derivePath(childPath))\n }\n throw new Error(`Invalid absolute path ${path} for wallet with path ${parentPath}`)\n }\n return await HDWallet.createFromNode(this.node.derivePath(path))\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/wallet",
3
- "version": "6.1.1",
3
+ "version": "7.0.2",
4
4
  "description": "Primary SDK for using XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -34,11 +34,11 @@
34
34
  "README.md"
35
35
  ],
36
36
  "dependencies": {
37
- "@xyo-network/account": "~6.1.1",
38
- "@xyo-network/account-model": "~6.1.1",
39
- "@xyo-network/key-model": "~6.1.1",
40
- "@xyo-network/address": "~6.1.1",
41
- "@xyo-network/wallet-model": "~6.1.1"
37
+ "@xyo-network/account": "~7.0.2",
38
+ "@xyo-network/account-model": "~7.0.2",
39
+ "@xyo-network/address": "~7.0.2",
40
+ "@xyo-network/key-model": "~7.0.2",
41
+ "@xyo-network/wallet-model": "~7.0.2"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@bitauth/libauth": "~3.0.0",
@@ -46,17 +46,17 @@
46
46
  "@opentelemetry/sdk-trace-base": "^2.8.0",
47
47
  "@scure/base": "~2.2.0",
48
48
  "@scure/bip39": "~2.2.0",
49
- "@xylabs/sdk-js": "^6.1.1",
50
- "@xylabs/toolchain": "~8.1.20",
51
- "@xylabs/tsconfig": "~8.1.20",
52
- "@xylabs/vitest-matchers": "^6.1.1",
49
+ "@xylabs/sdk-js": "^6.1.4",
50
+ "@xylabs/toolchain": "~8.3.0",
51
+ "@xylabs/tsconfig": "~8.3.0",
52
+ "@xylabs/vitest-matchers": "^6.1.4",
53
53
  "async-mutex": "^0.5.0",
54
- "eslint": "^10.4.1",
55
- "ethers": "^6.16.0",
54
+ "eslint": "^10.5.0",
55
+ "ethers": "^6.17.0",
56
56
  "tslib": "~2.8.1",
57
57
  "typescript": "~6.0.3",
58
- "vite": "^8.0.16",
59
- "vitest": "~4.1.8",
58
+ "vite": "^8.1.0",
59
+ "vitest": "~4.1.9",
60
60
  "zod": "^4.4.3"
61
61
  },
62
62
  "peerDependencies": {