mainnet-js 0.4.27 → 0.4.31

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 (75) hide show
  1. package/dist/index.html +1 -1
  2. package/dist/main/constant.d.ts +1 -0
  3. package/dist/main/constant.js +17 -1
  4. package/dist/main/constant.js.map +1 -1
  5. package/dist/main/util/balanceObjectFromSatoshi.js +2 -1
  6. package/dist/main/util/balanceObjectFromSatoshi.js.map +1 -1
  7. package/dist/main/util/floor.d.ts +1 -0
  8. package/dist/main/util/floor.js +9 -0
  9. package/dist/main/util/floor.js.map +1 -0
  10. package/dist/main/util/getAddrsByXpubKey.d.ts +22 -0
  11. package/dist/main/util/getAddrsByXpubKey.js +79 -0
  12. package/dist/main/util/getAddrsByXpubKey.js.map +1 -0
  13. package/dist/main/util/getXPubKey.d.ts +1 -0
  14. package/dist/main/util/getXPubKey.js +26 -0
  15. package/dist/main/util/getXPubKey.js.map +1 -0
  16. package/dist/main/util/index.d.ts +5 -3
  17. package/dist/main/util/index.js +13 -6
  18. package/dist/main/util/index.js.map +1 -1
  19. package/dist/main/wallet/Base.d.ts +3 -1
  20. package/dist/main/wallet/Base.js +3 -1
  21. package/dist/main/wallet/Base.js.map +1 -1
  22. package/dist/main/wallet/Wif.d.ts +6 -0
  23. package/dist/main/wallet/Wif.js +92 -7
  24. package/dist/main/wallet/Wif.js.map +1 -1
  25. package/dist/main/wallet/interface.d.ts +5 -0
  26. package/dist/main/wallet/model.d.ts +16 -0
  27. package/dist/main/wallet/model.js +18 -1
  28. package/dist/main/wallet/model.js.map +1 -1
  29. package/dist/mainnet-0.4.31.js +2 -0
  30. package/dist/{mainnet-0.4.27.js.LICENSE.txt → mainnet-0.4.31.js.LICENSE.txt} +0 -0
  31. package/dist/module/constant.d.ts +1 -0
  32. package/dist/module/constant.js +16 -0
  33. package/dist/module/constant.js.map +1 -1
  34. package/dist/module/util/balanceObjectFromSatoshi.js +2 -1
  35. package/dist/module/util/balanceObjectFromSatoshi.js.map +1 -1
  36. package/dist/module/util/floor.d.ts +1 -0
  37. package/dist/module/util/floor.js +5 -0
  38. package/dist/module/util/floor.js.map +1 -0
  39. package/dist/module/util/getAddrsByXpubKey.d.ts +22 -0
  40. package/dist/module/util/getAddrsByXpubKey.js +71 -0
  41. package/dist/module/util/getAddrsByXpubKey.js.map +1 -0
  42. package/dist/module/util/getXPubKey.d.ts +1 -0
  43. package/dist/module/util/getXPubKey.js +22 -0
  44. package/dist/module/util/getXPubKey.js.map +1 -0
  45. package/dist/module/util/index.d.ts +5 -3
  46. package/dist/module/util/index.js +5 -3
  47. package/dist/module/util/index.js.map +1 -1
  48. package/dist/module/wallet/Base.d.ts +3 -1
  49. package/dist/module/wallet/Base.js +3 -1
  50. package/dist/module/wallet/Base.js.map +1 -1
  51. package/dist/module/wallet/Wif.d.ts +6 -0
  52. package/dist/module/wallet/Wif.js +95 -10
  53. package/dist/module/wallet/Wif.js.map +1 -1
  54. package/dist/module/wallet/interface.d.ts +5 -0
  55. package/dist/module/wallet/model.d.ts +16 -0
  56. package/dist/module/wallet/model.js +16 -0
  57. package/dist/module/wallet/model.js.map +1 -1
  58. package/dist/tsconfig.browser.tsbuildinfo +1 -1
  59. package/dist/tsconfig.tsbuildinfo +1 -1
  60. package/package.json +1 -1
  61. package/src/constant.ts +17 -0
  62. package/src/util/balanceObjectFromSatoshi.ts +2 -1
  63. package/src/util/floor.test.ts +21 -0
  64. package/src/util/floor.ts +4 -0
  65. package/src/util/getAddrsByXpubKey.test.ts +115 -0
  66. package/src/util/getAddrsByXpubKey.ts +98 -0
  67. package/src/util/getXPubKey.ts +36 -0
  68. package/src/util/index.ts +10 -3
  69. package/src/wallet/Base.ts +4 -1
  70. package/src/wallet/Wif.test.ts +197 -2
  71. package/src/wallet/Wif.ts +123 -18
  72. package/src/wallet/createWallet.test.ts +2 -0
  73. package/src/wallet/interface.ts +6 -1
  74. package/src/wallet/model.ts +22 -0
  75. package/dist/mainnet-0.4.27.js +0 -2
@@ -2,3 +2,4 @@ export declare const DELIMITER = ":";
2
2
  export declare const DUST_UTXO_THRESHOLD = 546;
3
3
  export declare const MEMPOOL_CHAIN_LIMIT = 50;
4
4
  export declare const EXCHANGE_RATE_TTL = 250000;
5
+ export declare const DERIVATION_PATHS: string[];
@@ -5,4 +5,20 @@ export const DUST_UTXO_THRESHOLD = 546;
5
5
  export const MEMPOOL_CHAIN_LIMIT = 50;
6
6
  // time in milliseconds to cache the usd exchange rate
7
7
  export const EXCHANGE_RATE_TTL = 250000;
8
+ // list of common derivation paths
9
+ // a la: https://github.com/Electron-Cash/Electron-Cash/blob/1de24c509992cfebc22217a2a77c862c2b02bc54/electroncash_gui/qt/installwizard.py#L624
10
+ export const DERIVATION_PATHS = [
11
+ "m/0",
12
+ "m/0'",
13
+ "m/0'/0",
14
+ "m/0'/0'",
15
+ "m/0'/0'/0'",
16
+ "m/44'/0'/0'",
17
+ "m/44'/0'/0'/0",
18
+ "m/44'/145'/0'",
19
+ "m/44'/145'/0'/0",
20
+ "m/44'/245'/0",
21
+ "m/44'/245'/0'",
22
+ "m/44'/245'/0'/0",
23
+ ];
8
24
  //# sourceMappingURL=constant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constant.js","sourceRoot":"","sources":["../../src/constant.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAE7B,uDAAuD;AACvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,2BAA2B;AAC3B,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"constant.js","sourceRoot":"","sources":["../../src/constant.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAE7B,uDAAuD;AACvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,2BAA2B;AAC3B,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC,sDAAsD;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAExC,kCAAkC;AAClC,+IAA+I;AAC/I,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,KAAK;IACL,MAAM;IACN,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,aAAa;IACb,eAAe;IACf,eAAe;IACf,iBAAiB;IACjB,cAAc;IACd,eAAe;IACf,iBAAiB;CAClB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { bchParam } from "../chain";
2
2
  import { UnitEnum } from "../enum";
3
+ import { floor } from "./floor";
3
4
  import { ExchangeRate } from "../rate/ExchangeRate";
4
5
  import { sanitizeUnit } from "./sanitizeUnit";
5
6
  export class BalanceResponse {
@@ -23,7 +24,7 @@ export async function balanceResponseFromSatoshi(value, usdPriceCache = true) {
23
24
  case UnitEnum.USD:
24
25
  let usd = (value / bchParam.subUnits) *
25
26
  (await ExchangeRate.get("usd", usdPriceCache));
26
- response.usd = Number(usd.toFixed(2));
27
+ response.usd = floor(usd, 2);
27
28
  break;
28
29
  default:
29
30
  throw Error(`Balance response type ${JSON.stringify(u)} not understood`);
@@ -1 +1 @@
1
- {"version":3,"file":"balanceObjectFromSatoshi.js","sourceRoot":"","sources":["../../../src/util/balanceObjectFromSatoshi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,OAAO,eAAe;IAI1B,YAAY,GAAY,EAAE,GAAY,EAAE,GAAY;QAClD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,KAAa,EACb,gBAAyB,IAAI;IAE7B,IAAI,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,IAAI,WAAW,GAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAEpD,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE;QAC3B,QAAQ,CAAC,EAAE;YACT,KAAK,QAAQ,CAAC,GAAG;gBACf,QAAQ,CAAC,GAAG,GAAG,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBACzC,MAAM;YACR,KAAK,QAAQ,CAAC,GAAG;gBACf,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC;gBACrB,MAAM;YACR,KAAK,QAAQ,CAAC,GAAG;gBACf,IAAI,GAAG,GACL,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;oBAC3B,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;gBACjD,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,MAAM;YACR;gBACE,MAAM,KAAK,CACT,yBAAyB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAC5D,CAAC;SACL;KACF;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAa,EACb,OAAe,EACf,gBAAyB,IAAI;IAE7B,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,QAAQ,IAAI,EAAE;QACZ,KAAK,QAAQ,CAAC,GAAG;YACf,OAAO,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,KAAK,QAAQ,CAAC,GAAG;YACf,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ,CAAC,IAAI;YAChB,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ,CAAC,OAAO;YACnB,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ,CAAC,QAAQ;YACpB,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ,CAAC,GAAG;YACf,IAAI,GAAG,GACL,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBAC3B,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC;YACE,MAAM,KAAK,CACT,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAC/D,CAAC;KACL;AACH,CAAC"}
1
+ {"version":3,"file":"balanceObjectFromSatoshi.js","sourceRoot":"","sources":["../../../src/util/balanceObjectFromSatoshi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,OAAO,eAAe;IAI1B,YAAY,GAAY,EAAE,GAAY,EAAE,GAAY;QAClD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,KAAa,EACb,gBAAyB,IAAI;IAE7B,IAAI,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,IAAI,WAAW,GAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAEpD,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE;QAC3B,QAAQ,CAAC,EAAE;YACT,KAAK,QAAQ,CAAC,GAAG;gBACf,QAAQ,CAAC,GAAG,GAAG,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBACzC,MAAM;YACR,KAAK,QAAQ,CAAC,GAAG;gBACf,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC;gBACrB,MAAM;YACR,KAAK,QAAQ,CAAC,GAAG;gBACf,IAAI,GAAG,GACL,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;oBAC3B,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;gBACjD,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC7B,MAAM;YACR;gBACE,MAAM,KAAK,CACT,yBAAyB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAC5D,CAAC;SACL;KACF;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAa,EACb,OAAe,EACf,gBAAyB,IAAI;IAE7B,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,QAAQ,IAAI,EAAE;QACZ,KAAK,QAAQ,CAAC,GAAG;YACf,OAAO,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,KAAK,QAAQ,CAAC,GAAG;YACf,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ,CAAC,IAAI;YAChB,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ,CAAC,OAAO;YACnB,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ,CAAC,QAAQ;YACpB,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ,CAAC,GAAG;YACf,IAAI,GAAG,GACL,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBAC3B,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;YACjD,OAAO,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC;YACE,MAAM,KAAK,CACT,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAC/D,CAAC;KACL;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function floor(value: any, precision: any): number;
@@ -0,0 +1,5 @@
1
+ export function floor(value, precision) {
2
+ var multiplier = Math.pow(10, precision || 0);
3
+ return Math.floor(value * multiplier) / multiplier;
4
+ }
5
+ //# sourceMappingURL=floor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floor.js","sourceRoot":"","sources":["../../../src/util/floor.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,KAAK,CAAC,KAAK,EAAE,SAAS;IACpC,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC;AACrD,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { HdKeyNetwork } from "@bitauth/libauth";
2
+ export declare function getAddrsByXpubKey(xpub: string, path: string, count: number): Promise<[unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown]>;
3
+ export declare function getAddrsByXpubKeyObject(obj: any): Promise<[unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown]>;
4
+ export declare function derivePublicNodeCashaddr(xpub: any, index: number, path?: string): Promise<any>;
5
+ export declare function getXpubKeyInfo(hdPublicKey: any): Promise<{
6
+ version: HdKeyNetwork;
7
+ depth: number;
8
+ parentFingerprint: string;
9
+ childNumber: number;
10
+ chain: string;
11
+ data: string;
12
+ fingerprint: string;
13
+ }>;
14
+ export declare function getXpubKeyInfoObject(obj: any): Promise<{
15
+ version: HdKeyNetwork;
16
+ depth: number;
17
+ parentFingerprint: string;
18
+ childNumber: number;
19
+ chain: string;
20
+ data: string;
21
+ fingerprint: string;
22
+ }>;
@@ -0,0 +1,71 @@
1
+ import { deriveHdPublicNodeChild, decodeHdPublicKey, encodeCashAddress, instantiateBIP32Crypto, deriveHdPath, binToHex, } from "@bitauth/libauth";
2
+ import { hash160 } from "./hash160";
3
+ export async function getAddrsByXpubKey(xpub, path, count) {
4
+ let pathComponents = path.split("/");
5
+ let rootStr = pathComponents.shift();
6
+ let root;
7
+ if (rootStr === "M" || rootStr === "m") {
8
+ rootStr = pathComponents.shift();
9
+ }
10
+ root = parseInt(rootStr);
11
+ let result = [];
12
+ const start = parseInt(pathComponents.pop());
13
+ const end = start + count;
14
+ for (let curr = start; curr < end; curr++) {
15
+ let childPath = ["M", root, ...pathComponents, curr].join("/");
16
+ result.push(derivePublicNodeCashaddr(xpub, root, childPath));
17
+ }
18
+ return await Promise.all(result).then((result) => {
19
+ return result;
20
+ });
21
+ }
22
+ export async function getAddrsByXpubKeyObject(obj) {
23
+ return await getAddrsByXpubKey(obj.xpubkey, obj.path, obj.count);
24
+ }
25
+ export async function derivePublicNodeCashaddr(xpub, index, path) {
26
+ const crypto = await instantiateBIP32Crypto();
27
+ const publicParent = await decodeHdPublicKey(crypto, xpub);
28
+ if (typeof publicParent === "string") {
29
+ throw new Error(publicParent);
30
+ }
31
+ let prefix = publicParent.network === "mainnet" ? "bitcoincash" : "bchtest";
32
+ let node = await deriveHdPublicNodeChild(crypto, publicParent.node, index);
33
+ if (typeof node === "string") {
34
+ throw new Error(node);
35
+ }
36
+ let cashaddr;
37
+ if (typeof path === "string") {
38
+ if (path[0] !== "M") {
39
+ throw Error("use M for public path derivation");
40
+ }
41
+ let childNode = deriveHdPath(crypto, publicParent.node, path);
42
+ if (typeof childNode === "string") {
43
+ throw new Error(childNode);
44
+ }
45
+ else {
46
+ let childPkh = await hash160(childNode.publicKey);
47
+ cashaddr = encodeCashAddress(prefix, 0, childPkh);
48
+ }
49
+ }
50
+ return cashaddr;
51
+ }
52
+ export async function getXpubKeyInfo(hdPublicKey) {
53
+ const crypto = await instantiateBIP32Crypto();
54
+ let node = decodeHdPublicKey(crypto, hdPublicKey);
55
+ if (typeof node === "string") {
56
+ throw new Error(node);
57
+ }
58
+ return {
59
+ version: node.network,
60
+ depth: node.node.depth,
61
+ parentFingerprint: binToHex(node.node.parentFingerprint),
62
+ childNumber: node.node.childIndex,
63
+ chain: binToHex(node.node.chainCode),
64
+ data: binToHex(node.node.publicKey),
65
+ fingerprint: binToHex((await hash160(node.node.publicKey)).slice(0, 4)),
66
+ };
67
+ }
68
+ export async function getXpubKeyInfoObject(obj) {
69
+ return await getXpubKeyInfo(obj.xpubkey);
70
+ }
71
+ //# sourceMappingURL=getAddrsByXpubKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getAddrsByXpubKey.js","sourceRoot":"","sources":["../../../src/util/getAddrsByXpubKey.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function getXPubKey(seed: Uint8Array | string, derivationPath: string, network: string): Promise<string>;
@@ -0,0 +1,22 @@
1
+ import { deriveHdPrivateNodeFromSeed, deriveHdPath, deriveHdPublicNode, encodeHdPublicKey, instantiateBIP32Crypto, hexToBin, } from "@bitauth/libauth";
2
+ export async function getXPubKey(seed, derivationPath, network) {
3
+ if (typeof seed === "string") {
4
+ seed = hexToBin(seed);
5
+ }
6
+ const crypto = await instantiateBIP32Crypto();
7
+ let hdNode = deriveHdPrivateNodeFromSeed(crypto, seed);
8
+ if (!hdNode.valid) {
9
+ throw Error("Invalid private key derived from mnemonic seed");
10
+ }
11
+ let node = deriveHdPath(crypto, hdNode, derivationPath);
12
+ if (typeof node === "string") {
13
+ throw node;
14
+ }
15
+ let parentPublicNode = deriveHdPublicNode(crypto, node);
16
+ let xPubKey = encodeHdPublicKey(crypto, {
17
+ network: network,
18
+ node: parentPublicNode,
19
+ });
20
+ return xPubKey;
21
+ }
22
+ //# sourceMappingURL=getXPubKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getXPubKey.js","sourceRoot":"","sources":["../../../src/util/getXPubKey.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EAEjB,sBAAsB,EACtB,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAE1B,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAyB,EACzB,cAAsB,EACtB,OAAe;IAEf,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;KACvB;IACD,MAAM,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAC9C,IAAI,MAAM,GAAG,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;QACjB,MAAM,KAAK,CAAC,gDAAgD,CAAC,CAAC;KAC/D;IAED,IAAI,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IACxD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;QAC5B,MAAM,IAAI,CAAC;KACZ;IACD,IAAI,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAExD,IAAI,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE;QACtC,OAAO,EAAE,OAAuB;QAChC,IAAI,EAAE,gBAAgB;KACvB,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,16 +1,18 @@
1
1
  export { amountInSatoshi } from "./amountInSatoshi";
2
2
  export { asSendRequestObject } from "./asSendRequestObject";
3
- export { btoa, atob } from "./base64";
3
+ export { atob, btoa } from "./base64";
4
4
  export { convert, convertObject } from "./convert";
5
5
  export { delay } from "./delay";
6
+ export { derivedNetwork } from "./deriveNetwork";
7
+ export { derivePublicKeyHash } from "./derivePublicKeyHash";
8
+ export { getAddrsByXpubKey, getAddrsByXpubKeyObject, getXpubKeyInfo, getXpubKeyInfoObject, } from "../util/getAddrsByXpubKey";
6
9
  export { getRuntimePlatform, RuntimePlatform } from "./getRuntimePlatform";
7
10
  export { getUsdRate } from "./getUsdRate";
8
11
  export { ExchangeRate } from "../rate/ExchangeRate";
9
- export { derivedNetwork } from "./deriveNetwork";
10
- export { derivePublicKeyHash } from "./derivePublicKeyHash";
11
12
  export { sanitizeAddress } from "./sanitizeAddress";
12
13
  export { sanitizeUnit } from "./sanitizeUnit";
13
14
  export { getRandomInt } from "./randomInt";
15
+ export { getXPubKey } from "../util/getXPubKey";
14
16
  import * as randomValues from "./randomValues";
15
17
  export { randomValues };
16
18
  export { sumUtxoValue } from "./sumUtxoValue";
@@ -1,16 +1,18 @@
1
1
  export { amountInSatoshi } from "./amountInSatoshi";
2
2
  export { asSendRequestObject } from "./asSendRequestObject";
3
- export { btoa, atob } from "./base64";
3
+ export { atob, btoa } from "./base64";
4
4
  export { convert, convertObject } from "./convert";
5
5
  export { delay } from "./delay";
6
+ export { derivedNetwork } from "./deriveNetwork";
7
+ export { derivePublicKeyHash } from "./derivePublicKeyHash";
8
+ export { getAddrsByXpubKey, getAddrsByXpubKeyObject, getXpubKeyInfo, getXpubKeyInfoObject, } from "../util/getAddrsByXpubKey";
6
9
  export { getRuntimePlatform, RuntimePlatform } from "./getRuntimePlatform";
7
10
  export { getUsdRate } from "./getUsdRate";
8
11
  export { ExchangeRate } from "../rate/ExchangeRate";
9
- export { derivedNetwork } from "./deriveNetwork";
10
- export { derivePublicKeyHash } from "./derivePublicKeyHash";
11
12
  export { sanitizeAddress } from "./sanitizeAddress";
12
13
  export { sanitizeUnit } from "./sanitizeUnit";
13
14
  export { getRandomInt } from "./randomInt";
15
+ export { getXPubKey } from "../util/getXPubKey";
14
16
  import * as randomValues from "./randomValues";
15
17
  export { randomValues };
16
18
  export { sumUtxoValue } from "./sumUtxoValue";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,cAAc,EACd,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC"}
@@ -10,6 +10,8 @@ import { WalletTypeEnum } from "./enum";
10
10
  export declare class BaseWallet implements WalletI {
11
11
  provider?: any;
12
12
  derivationPath: string;
13
+ parentDerivationPath: string;
14
+ parentXPubKey?: string;
13
15
  mnemonic?: string;
14
16
  address?: string;
15
17
  privateKey?: any;
@@ -104,7 +106,7 @@ export declare class BaseWallet implements WalletI {
104
106
  /**
105
107
  * replaceNamed - replace (recover) named wallet with a new walletId
106
108
  *
107
- * If wallet with a provided name does not exist yet, it will be creted with a `walletId` supplied
109
+ * If wallet with a provided name does not exist yet, it will be created with a `walletId` supplied
108
110
  * If wallet exists it will be overwritten without exception
109
111
  *
110
112
  * @param name user friendly wallet alias
@@ -19,6 +19,7 @@ export class BaseWallet {
19
19
  */
20
20
  constructor(name = "", network = NetworkType.Mainnet, walletType = WalletTypeEnum.Seed) {
21
21
  this.derivationPath = "m/44'/0'/0'/0/0";
22
+ this.parentDerivationPath = "m/44'/0'/0'";
22
23
  this.name = name;
23
24
  this.network = network;
24
25
  this.walletType = walletType;
@@ -66,6 +67,7 @@ export class BaseWallet {
66
67
  return {
67
68
  seed: this.mnemonic,
68
69
  derivationPath: this.derivationPath,
70
+ parentDerivationPath: this.parentDerivationPath,
69
71
  };
70
72
  }
71
73
  /**
@@ -133,7 +135,7 @@ export class BaseWallet {
133
135
  /**
134
136
  * replaceNamed - replace (recover) named wallet with a new walletId
135
137
  *
136
- * If wallet with a provided name does not exist yet, it will be creted with a `walletId` supplied
138
+ * If wallet with a provided name does not exist yet, it will be created with a `walletId` supplied
137
139
  * If wallet exists it will be overwritten without exception
138
140
  *
139
141
  * @param name user friendly wallet alias
@@ -1 +1 @@
1
- {"version":3,"file":"Base.js","sourceRoot":"","sources":["../../../src/wallet/Base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Base.js","sourceRoot":"","sources":["../../../src/wallet/Base.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,8 @@ import { SignedMessageI } from "../message";
18
18
  export declare class Wallet extends BaseWallet {
19
19
  cashaddr?: string;
20
20
  derivationPath: string;
21
+ parentDerivationPath: string;
22
+ parentXPubKey?: string;
21
23
  privateKey?: Uint8Array;
22
24
  publicKeyCompressed?: Uint8Array;
23
25
  privateKeyWif?: string;
@@ -26,6 +28,7 @@ export declare class Wallet extends BaseWallet {
26
28
  networkPrefix: CashAddressNetworkPrefix;
27
29
  _slp?: Slp;
28
30
  _slpAware: boolean;
31
+ _slpSemiAware: boolean;
29
32
  _util?: Util;
30
33
  static signedMessage: SignedMessageI;
31
34
  get slp(): Slp;
@@ -33,6 +36,7 @@ export declare class Wallet extends BaseWallet {
33
36
  get util(): Util;
34
37
  static get util(): typeof Util;
35
38
  slpAware(value?: boolean): Wallet;
39
+ slpSemiAware(value?: boolean): Wallet;
36
40
  getNetworkProvider(network?: Network): import("../network/NetworkProvider").default;
37
41
  /**
38
42
  * explorerUrl Web url to a transaction on a block explorer
@@ -80,7 +84,9 @@ export declare class Wallet extends BaseWallet {
80
84
  private _generateWif;
81
85
  private _generateMnemonic;
82
86
  protected fromId: (walletId: string) => Promise<this>;
87
+ getXPubKeys(paths?: any): Promise<any[]>;
83
88
  protected fromSeed(mnemonic: string, derivationPath?: string): Promise<this>;
89
+ deriveHdPaths(hdPaths: string[]): Promise<any[]>;
84
90
  protected watchOnly(address: string): Promise<this>;
85
91
  protected fromWIF(secret: string): Promise<this>;
86
92
  protected newRandom(name: string, dbName?: string): Promise<this>;
@@ -1,15 +1,15 @@
1
1
  //#region Imports
2
2
  // Stable
3
- import { instantiateSecp256k1, instantiateSha256 } from "@bitauth/libauth";
3
+ import { encodeHdPublicKey, instantiateSecp256k1, instantiateSha256, } from "@bitauth/libauth";
4
4
  // Unstable?
5
- import { binToHex, CashAddressNetworkPrefix, decodePrivateKeyWif, encodePrivateKeyWif, deriveHdPrivateNodeFromSeed, deriveHdPath, generatePrivateKey, instantiateBIP32Crypto, } from "@bitauth/libauth";
5
+ import { binToHex, CashAddressNetworkPrefix, deriveHdPublicNode, decodePrivateKeyWif, encodePrivateKeyWif, deriveHdPrivateNodeFromSeed, deriveHdPath, generatePrivateKey, instantiateBIP32Crypto, } from "@bitauth/libauth";
6
6
  import { mnemonicToSeedSync, generateMnemonic } from "bip39";
7
7
  import { NetworkType, prefixFromNetworkMap, UnitEnum } from "../enum";
8
8
  import { Network } from "../interface";
9
9
  import { networkPrefixMap } from "../enum";
10
10
  import { BaseWallet } from "./Base";
11
11
  import { WalletTypeEnum } from "./enum";
12
- import { SendRequest, SendResponse, UtxoItem, UtxoResponse, } from "./model";
12
+ import { SendRequest, SendResponse, UtxoItem, UtxoResponse, XPubKey, } from "./model";
13
13
  import { buildEncodedTransaction, getSuitableUtxos, getFeeAmount, } from "../transaction/Wif";
14
14
  import { asSendRequestObject } from "../util/asSendRequestObject";
15
15
  import { balanceFromSatoshi, balanceResponseFromSatoshi, } from "../util/balanceObjectFromSatoshi";
@@ -28,6 +28,8 @@ import { getNetworkProvider } from "../network/index";
28
28
  import { generateRandomBytes } from "../util/randomBytes";
29
29
  import { SignedMessage } from "../message";
30
30
  import { amountInSatoshi } from "../util/amountInSatoshi";
31
+ import { getXPubKey } from "../util/getXPubKey";
32
+ import { DERIVATION_PATHS, DUST_UTXO_THRESHOLD } from "../constant";
31
33
  //#endregion Imports
32
34
  const secp256k1Promise = instantiateSecp256k1();
33
35
  const sha256Promise = instantiateSha256();
@@ -40,7 +42,9 @@ export class Wallet extends BaseWallet {
40
42
  constructor(name = "", network = NetworkType.Mainnet, walletType = WalletTypeEnum.Seed) {
41
43
  super(name, network, walletType);
42
44
  this.derivationPath = "m/44'/0'/0'/0/0";
43
- this._slpAware = false;
45
+ this.parentDerivationPath = "m/44'/0'/0'";
46
+ this._slpAware = false; // a flag which activates utxo checking against an external slp indexer
47
+ this._slpSemiAware = false; // a flag which requires an utxo to have more than 546 sats to be spendable and counted in the balance
44
48
  this.fromId = async (walletId) => {
45
49
  let [walletType, networkGiven, arg1] = walletId.split(":");
46
50
  if (this.network != networkGiven) {
@@ -82,6 +86,10 @@ export class Wallet extends BaseWallet {
82
86
  this._slpAware = value;
83
87
  return this;
84
88
  }
89
+ slpSemiAware(value = true) {
90
+ this._slpSemiAware = value;
91
+ return this;
92
+ }
85
93
  getNetworkProvider(network = Network.MAINNET) {
86
94
  return getNetworkProvider(network);
87
95
  }
@@ -93,8 +101,8 @@ export class Wallet extends BaseWallet {
93
101
  */
94
102
  explorerUrl(txId) {
95
103
  const explorerUrlMap = {
96
- mainnet: "https://explorer.bitcoin.com/bch/tx/",
97
- testnet: "https://explorer.bitcoin.com/tbch/tx/",
104
+ mainnet: "https://blockchair.com/bitcoin-cash/transaction/",
105
+ testnet: "https://www.blockchain.com/bch-testnet/tx/",
98
106
  regtest: "",
99
107
  };
100
108
  return explorerUrlMap[this.network] + txId;
@@ -108,6 +116,10 @@ export class Wallet extends BaseWallet {
108
116
  network: this.network,
109
117
  seed: this.mnemonic ? this.getSeed().seed : undefined,
110
118
  derivationPath: this.mnemonic ? this.getSeed().derivationPath : undefined,
119
+ parentDerivationPath: this.mnemonic
120
+ ? this.getSeed().parentDerivationPath
121
+ : undefined,
122
+ parentXPubKey: this.parentXPubKey ? this.parentXPubKey : undefined,
111
123
  publicKey: this.publicKey ? binToHex(this.publicKey) : undefined,
112
124
  publicKeyHash: binToHex(this.publicKeyHash),
113
125
  privateKey: this.privateKey ? binToHex(this.privateKey) : undefined,
@@ -210,18 +222,37 @@ export class Wallet extends BaseWallet {
210
222
  return this.deriveInfo();
211
223
  }
212
224
  async _generateMnemonic() {
213
- const crypto = await instantiateBIP32Crypto();
214
225
  this.mnemonic = generateMnemonic();
215
226
  let seed = mnemonicToSeedSync(this.mnemonic);
227
+ let network = this.isTestnet ? "testnet" : "mainnet";
228
+ this.parentXPubKey = await getXPubKey(seed, this.parentDerivationPath, network);
229
+ const crypto = await instantiateBIP32Crypto();
216
230
  let hdNode = deriveHdPrivateNodeFromSeed(crypto, seed);
217
231
  if (!hdNode.valid) {
218
232
  throw Error("Invalid private key derived from mnemonic seed");
219
233
  }
220
234
  let zerothChild = deriveHdPath(crypto, hdNode, this.derivationPath);
235
+ if (typeof zerothChild === "string") {
236
+ throw Error(zerothChild);
237
+ }
221
238
  this.privateKey = zerothChild.privateKey;
222
239
  this.walletType = WalletTypeEnum.Seed;
223
240
  return await this.deriveInfo();
224
241
  }
242
+ async getXPubKeys(paths) {
243
+ if (this.mnemonic) {
244
+ if (paths) {
245
+ let xPubKeys = await this.deriveHdPaths(paths);
246
+ return [xPubKeys];
247
+ }
248
+ else {
249
+ return await this.deriveHdPaths(DERIVATION_PATHS);
250
+ }
251
+ }
252
+ else {
253
+ throw Error("xpubkeys can only be derived from seed type wallets.");
254
+ }
255
+ }
225
256
  // Initialize wallet from a mnemonic phrase
226
257
  async fromSeed(mnemonic, derivationPath) {
227
258
  this.mnemonic = mnemonic;
@@ -233,13 +264,58 @@ export class Wallet extends BaseWallet {
233
264
  }
234
265
  if (derivationPath) {
235
266
  this.derivationPath = derivationPath;
267
+ // If the derivation path is for the first account child, set the parent derivation path
268
+ let path = derivationPath.split("/");
269
+ if (path.slice(-2).join("/") == "0/0") {
270
+ this.parentDerivationPath = path.slice(0, -2).join("/");
271
+ }
236
272
  }
237
273
  let zerothChild = deriveHdPath(crypto, hdNode, this.derivationPath);
274
+ if (typeof zerothChild === "string") {
275
+ throw Error(zerothChild);
276
+ }
238
277
  this.privateKey = zerothChild.privateKey;
278
+ let network = this.isTestnet ? "testnet" : "mainnet";
279
+ this.parentXPubKey = await getXPubKey(seed, this.parentDerivationPath, network);
239
280
  this.walletType = WalletTypeEnum.Seed;
240
281
  await this.deriveInfo();
241
282
  return this;
242
283
  }
284
+ // Get common xpub paths from zerothChild privateKey
285
+ async deriveHdPaths(hdPaths) {
286
+ const crypto = await instantiateBIP32Crypto();
287
+ let seed = mnemonicToSeedSync(this.mnemonic);
288
+ let hdNode = deriveHdPrivateNodeFromSeed(crypto, seed);
289
+ if (!hdNode.valid) {
290
+ throw Error("Invalid private key derived from mnemonic seed");
291
+ }
292
+ let result = [];
293
+ for (const path of hdPaths) {
294
+ if (path === "m") {
295
+ throw Error("Storing or sharing of parent public key may lead to loss of funds. Storing or sharing *root* parent public keys is strongly discouraged, although all parent keys have risk. See: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#implications");
296
+ }
297
+ let childNode = deriveHdPath(crypto, hdNode, path);
298
+ if (typeof childNode === "string") {
299
+ throw Error(childNode);
300
+ }
301
+ let node = deriveHdPublicNode(crypto, childNode);
302
+ if (typeof node === "string") {
303
+ throw Error(node);
304
+ }
305
+ let xPubKey = encodeHdPublicKey(crypto, {
306
+ network: this.network,
307
+ node: node,
308
+ });
309
+ let key = new XPubKey({
310
+ path: path,
311
+ xPubKey: xPubKey,
312
+ });
313
+ result.push(await key.ready());
314
+ }
315
+ return await Promise.all(result).then((result) => {
316
+ return result;
317
+ });
318
+ }
243
319
  // Initialize a watch only wallet from a cash addr
244
320
  async watchOnly(address) {
245
321
  this.walletType = WalletTypeEnum.Watch;
@@ -268,8 +344,7 @@ export class Wallet extends BaseWallet {
268
344
  checkWifNetwork(secret, this.network);
269
345
  const sha256 = await sha256Promise;
270
346
  let wifResult = decodePrivateKeyWif(sha256, secret);
271
- const hasError = typeof wifResult === "string";
272
- if (hasError) {
347
+ if (typeof wifResult === "string") {
273
348
  throw Error(wifResult);
274
349
  }
275
350
  let resultData = wifResult;
@@ -334,6 +409,10 @@ export class Wallet extends BaseWallet {
334
409
  ]);
335
410
  return bchUtxos.filter((bchutxo) => slpOutpoints.findIndex((slpOutpoint) => `${bchutxo.txid}:${bchutxo.vout}` === slpOutpoint) === -1);
336
411
  }
412
+ else if (this._slpSemiAware) {
413
+ const bchUtxos = await this.provider.getUtxos(address);
414
+ return bchUtxos.filter((bchutxo) => bchutxo.satoshis > DUST_UTXO_THRESHOLD);
415
+ }
337
416
  else {
338
417
  return await this.provider.getUtxos(address);
339
418
  }
@@ -371,7 +450,7 @@ export class Wallet extends BaseWallet {
371
450
  // Gets balance from fulcrum
372
451
  async getBalanceFromProvider() {
373
452
  // TODO not sure why getting the balance from a provider doesn't work
374
- if (this._slpAware) {
453
+ if (this._slpAware || this._slpSemiAware) {
375
454
  return await this.getBalanceFromUtxos();
376
455
  }
377
456
  else {
@@ -451,6 +530,9 @@ export class Wallet extends BaseWallet {
451
530
  if (params.options && params.options.slpAware) {
452
531
  this._slpAware = true;
453
532
  }
533
+ if (params.options && params.options.slpSemiAware) {
534
+ this._slpSemiAware = true;
535
+ }
454
536
  // get inputs
455
537
  let utxos;
456
538
  if (params.options && params.options.utxoIds) {
@@ -643,6 +725,9 @@ export class Wallet extends BaseWallet {
643
725
  if (options && options.slpAware) {
644
726
  this._slpAware = true;
645
727
  }
728
+ if (options && options.slpSemiAware) {
729
+ this._slpSemiAware = true;
730
+ }
646
731
  // get inputs from options or query all inputs
647
732
  let utxos;
648
733
  if (options && options.utxoIds) {