mainnet-js 3.0.0-next.0 → 3.0.0-next.1

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 (118) hide show
  1. package/dist/index.html +1 -1
  2. package/dist/{mainnet-3.0.0-next.0.js → mainnet-3.0.0-next.1.js} +21 -41
  3. package/dist/module/cache/walletCache.d.ts +10 -4
  4. package/dist/module/cache/walletCache.d.ts.map +1 -1
  5. package/dist/module/cache/walletCache.js +12 -13
  6. package/dist/module/cache/walletCache.js.map +1 -1
  7. package/dist/module/chain.d.ts +1 -1
  8. package/dist/module/chain.js +1 -1
  9. package/dist/module/chain.js.map +1 -1
  10. package/dist/module/constant.d.ts +1 -1
  11. package/dist/module/constant.d.ts.map +1 -1
  12. package/dist/module/constant.js +1 -1
  13. package/dist/module/constant.js.map +1 -1
  14. package/dist/module/enum.d.ts +1 -7
  15. package/dist/module/enum.d.ts.map +1 -1
  16. package/dist/module/enum.js +0 -6
  17. package/dist/module/enum.js.map +1 -1
  18. package/dist/module/history/getHistory.d.ts.map +1 -1
  19. package/dist/module/history/getHistory.js +0 -30
  20. package/dist/module/history/getHistory.js.map +1 -1
  21. package/dist/module/interface.d.ts +1 -2
  22. package/dist/module/interface.d.ts.map +1 -1
  23. package/dist/module/interface.js.map +1 -1
  24. package/dist/module/network/ElectrumNetworkProvider.js +1 -1
  25. package/dist/module/network/ElectrumNetworkProvider.js.map +1 -1
  26. package/dist/module/network/getRelayFeeCache.js +2 -2
  27. package/dist/module/network/getRelayFeeCache.js.map +1 -1
  28. package/dist/module/rate/ExchangeRate.d.ts +2 -1
  29. package/dist/module/rate/ExchangeRate.d.ts.map +1 -1
  30. package/dist/module/rate/ExchangeRate.js +4 -1
  31. package/dist/module/rate/ExchangeRate.js.map +1 -1
  32. package/dist/module/transaction/Wif.d.ts +9 -9
  33. package/dist/module/transaction/Wif.d.ts.map +1 -1
  34. package/dist/module/transaction/Wif.js +11 -13
  35. package/dist/module/transaction/Wif.js.map +1 -1
  36. package/dist/module/transaction/allocateFee.d.ts +3 -3
  37. package/dist/module/transaction/allocateFee.d.ts.map +1 -1
  38. package/dist/module/transaction/allocateFee.js +5 -6
  39. package/dist/module/transaction/allocateFee.js.map +1 -1
  40. package/dist/module/util/amountInSatoshi.d.ts +1 -1
  41. package/dist/module/util/amountInSatoshi.d.ts.map +1 -1
  42. package/dist/module/util/amountInSatoshi.js +3 -9
  43. package/dist/module/util/amountInSatoshi.js.map +1 -1
  44. package/dist/module/util/asSendRequestObject.d.ts.map +1 -1
  45. package/dist/module/util/asSendRequestObject.js +10 -7
  46. package/dist/module/util/asSendRequestObject.js.map +1 -1
  47. package/dist/module/util/convert.d.ts +3 -0
  48. package/dist/module/util/convert.d.ts.map +1 -1
  49. package/dist/module/util/convert.js +12 -0
  50. package/dist/module/util/convert.js.map +1 -1
  51. package/dist/module/util/index.d.ts +2 -3
  52. package/dist/module/util/index.d.ts.map +1 -1
  53. package/dist/module/util/index.js +2 -3
  54. package/dist/module/util/index.js.map +1 -1
  55. package/dist/module/util/satoshiToAmount.d.ts +1 -1
  56. package/dist/module/util/satoshiToAmount.d.ts.map +1 -1
  57. package/dist/module/util/satoshiToAmount.js +3 -9
  58. package/dist/module/util/satoshiToAmount.js.map +1 -1
  59. package/dist/module/util/sumSendRequestAmounts.d.ts.map +1 -1
  60. package/dist/module/util/sumSendRequestAmounts.js +3 -4
  61. package/dist/module/util/sumSendRequestAmounts.js.map +1 -1
  62. package/dist/module/util/sumUtxoValue.d.ts +1 -1
  63. package/dist/module/util/sumUtxoValue.js +2 -2
  64. package/dist/module/util/sumUtxoValue.js.map +1 -1
  65. package/dist/module/wallet/Base.d.ts +10 -12
  66. package/dist/module/wallet/Base.d.ts.map +1 -1
  67. package/dist/module/wallet/Base.js +18 -50
  68. package/dist/module/wallet/Base.js.map +1 -1
  69. package/dist/module/wallet/Util.js +1 -1
  70. package/dist/module/wallet/Util.js.map +1 -1
  71. package/dist/module/wallet/interface.d.ts +2 -3
  72. package/dist/module/wallet/interface.d.ts.map +1 -1
  73. package/dist/module/wallet/model.d.ts +12 -16
  74. package/dist/module/wallet/model.d.ts.map +1 -1
  75. package/dist/module/wallet/model.js +4 -8
  76. package/dist/module/wallet/model.js.map +1 -1
  77. package/dist/tsconfig.tsbuildinfo +1 -1
  78. package/package.json +1 -1
  79. package/src/cache/walletCache.ts +23 -36
  80. package/src/chain.ts +1 -1
  81. package/src/constant.ts +1 -1
  82. package/src/enum.ts +0 -6
  83. package/src/history/getHistory.test.ts +20 -34
  84. package/src/history/getHistory.ts +0 -32
  85. package/src/interface.ts +1 -2
  86. package/src/network/Connection.test.ts +3 -3
  87. package/src/network/ElectrumNetworkProvider.ts +1 -1
  88. package/src/network/Rpc.test.ts +2 -3
  89. package/src/network/getRelayFeeCache.ts +2 -2
  90. package/src/rate/ExchangeRate.test.ts +2 -44
  91. package/src/rate/ExchangeRate.ts +5 -2
  92. package/src/transaction/Wif.ts +24 -23
  93. package/src/transaction/allocateFee.test.ts +110 -131
  94. package/src/transaction/allocateFee.ts +14 -15
  95. package/src/util/amountInSatoshi.test.ts +1 -9
  96. package/src/util/amountInSatoshi.ts +6 -10
  97. package/src/util/asSendRequestObject.ts +12 -7
  98. package/src/util/convert.ts +18 -0
  99. package/src/util/index.ts +2 -7
  100. package/src/util/satoshiToAmount.test.ts +1 -1
  101. package/src/util/satoshiToAmount.ts +4 -10
  102. package/src/util/sumSendRequestAmounts.ts +3 -4
  103. package/src/util/sumUtxoValue.ts +3 -3
  104. package/src/wallet/Base.ts +28 -92
  105. package/src/wallet/Cashtokens.test.headless.js +11 -11
  106. package/src/wallet/Cashtokens.test.ts +36 -37
  107. package/src/wallet/HDWallet.test.ts +211 -68
  108. package/src/wallet/Util.ts +1 -1
  109. package/src/wallet/Wif.test.ts +108 -133
  110. package/src/wallet/interface.ts +2 -3
  111. package/src/wallet/model.test.ts +2 -5
  112. package/src/wallet/model.ts +15 -30
  113. package/dist/module/util/balanceObjectFromSatoshi.d.ts +0 -8
  114. package/dist/module/util/balanceObjectFromSatoshi.d.ts.map +0 -1
  115. package/dist/module/util/balanceObjectFromSatoshi.js +0 -35
  116. package/dist/module/util/balanceObjectFromSatoshi.js.map +0 -1
  117. package/src/util/balanceObjectFromSatoshi.test.ts +0 -58
  118. package/src/util/balanceObjectFromSatoshi.ts +0 -52
@@ -1,7 +1,4 @@
1
- import { BalanceResponse } from "../util/balanceObjectFromSatoshi.js";
2
- import { sanitizeUnit } from "../util/sanitizeUnit.js";
3
- import { UnitEnum } from "../enum.js";
4
- import { NFTCapability, Utxo, UtxoId } from "../interface.js";
1
+ import { NFTCapability, UtxoId } from "../interface.js";
5
2
  import { DELIMITER } from "../constant.js";
6
3
  import {
7
4
  Input,
@@ -28,21 +25,11 @@ export type SendRequestType =
28
25
 
29
26
  export class SendRequest {
30
27
  cashaddr: string;
31
- value: number;
32
- unit: UnitEnum;
28
+ value: bigint;
33
29
 
34
- constructor({
35
- cashaddr,
36
- value,
37
- unit,
38
- }: {
39
- cashaddr: string;
40
- value: number;
41
- unit: UnitEnum;
42
- }) {
30
+ constructor({ cashaddr, value }: { cashaddr: string; value: bigint }) {
43
31
  this.cashaddr = cashaddr;
44
- this.value = value;
45
- this.unit = sanitizeUnit(unit);
32
+ this.value = BigInt(value);
46
33
  }
47
34
  }
48
35
 
@@ -51,7 +38,7 @@ export class TokenGenesisRequest {
51
38
  capability?: NFTCapability;
52
39
  commitment?: string;
53
40
  cashaddr?: string;
54
- value?: number; // satoshi value
41
+ value?: bigint; // satoshi value
55
42
 
56
43
  constructor({
57
44
  amount,
@@ -64,7 +51,7 @@ export class TokenGenesisRequest {
64
51
  capability?: NFTCapability;
65
52
  commitment?: string;
66
53
  cashaddr?: string;
67
- value?: number;
54
+ value?: bigint;
68
55
  }) {
69
56
  this.amount = amount;
70
57
  this.capability = capability;
@@ -104,7 +91,7 @@ export class TokenBurnRequest {
104
91
 
105
92
  export class TokenSendRequest {
106
93
  cashaddr: string; // cashaddr or tokenaddr to send tokens to
107
- value?: number; // satoshi value
94
+ value?: bigint; // satoshi value
108
95
  amount: bigint; // fungible token amount
109
96
  tokenId: string;
110
97
  capability?: NFTCapability;
@@ -119,8 +106,8 @@ export class TokenSendRequest {
119
106
  commitment,
120
107
  }: {
121
108
  cashaddr: string;
122
- value?: number;
123
- amount?: number | bigint;
109
+ value?: bigint;
110
+ amount?: bigint;
124
111
  tokenId: string;
125
112
  capability?: NFTCapability;
126
113
  commitment?: string;
@@ -140,7 +127,7 @@ export class TokenMintRequest {
140
127
  capability?: NFTCapability;
141
128
  commitment?: string;
142
129
  cashaddr?: string;
143
- value?: number;
130
+ value?: bigint;
144
131
 
145
132
  constructor({
146
133
  capability,
@@ -151,7 +138,7 @@ export class TokenMintRequest {
151
138
  capability?: NFTCapability;
152
139
  commitment?: string;
153
140
  cashaddr?: string;
154
- value?: number;
141
+ value?: bigint;
155
142
  }) {
156
143
  this.capability = capability;
157
144
  this.commitment = commitment;
@@ -294,13 +281,13 @@ export class OpReturnData {
294
281
  }
295
282
  }
296
283
 
297
- export type SendRequestArray = Array<string | number | UnitEnum | Uint8Array>;
284
+ export type SendRequestArray = Array<string | bigint | Uint8Array>;
298
285
 
299
286
  export type SourceOutput = Input & Output;
300
287
 
301
288
  export class SendResponse {
302
289
  txId?: string;
303
- balance?: BalanceResponse;
290
+ balance?: bigint;
304
291
  explorerUrl?: string;
305
292
  tokenIds?: string[];
306
293
  unsignedTransaction?: string; // unsigned transaction hex
@@ -346,14 +333,12 @@ export class XPubKey {
346
333
  export const fromUtxoId = (utxoId: string): UtxoId => {
347
334
  const [txid, vout, satoshis] = utxoId.split(DELIMITER);
348
335
  return {
349
- satoshis: satoshis ? parseInt(satoshis) : 0,
336
+ satoshis: satoshis ? BigInt(parseInt(satoshis)) : 0n,
350
337
  vout: parseInt(vout),
351
338
  txid,
352
339
  } as UtxoId;
353
340
  };
354
341
 
355
342
  export const toUtxoId = (utxo: UtxoId): string => {
356
- return [utxo.txid, utxo.vout, utxo.satoshis]
357
- .join(DELIMITER)
358
- .replace(/:+$/, "");
343
+ return [utxo.txid, utxo.vout].join(DELIMITER).replace(/:+$/, "");
359
344
  };
@@ -1,8 +0,0 @@
1
- export interface BalanceResponse {
2
- bch: number;
3
- sat: number;
4
- [currency: string]: number;
5
- }
6
- export declare function balanceResponseFromSatoshi(value: number, priceCache?: boolean): Promise<BalanceResponse>;
7
- export declare function balanceFromSatoshi(value: number, rawUnit: string, priceCache?: boolean): Promise<number>;
8
- //# sourceMappingURL=balanceObjectFromSatoshi.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"balanceObjectFromSatoshi.d.ts","sourceRoot":"","sources":["../../../src/util/balanceObjectFromSatoshi.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B;AAED,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,MAAM,EACb,UAAU,GAAE,OAAc,GACzB,OAAO,CAAC,eAAe,CAAC,CAU1B;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,OAAc,GACzB,OAAO,CAAC,MAAM,CAAC,CAmBjB"}
@@ -1,35 +0,0 @@
1
- import { bchParam } from "../chain.js";
2
- import { UnitEnum } from "../enum.js";
3
- import { floor } from "./floor.js";
4
- import { ExchangeRate } from "../rate/ExchangeRate.js";
5
- import { sanitizeUnit } from "./sanitizeUnit.js";
6
- import { Config } from "../config.js";
7
- export async function balanceResponseFromSatoshi(value, priceCache = true) {
8
- const response = {};
9
- response.bch = value / bchParam.subUnits;
10
- response.sat = value;
11
- const currencyValue = (value / bchParam.subUnits) *
12
- (await ExchangeRate.get(Config.DefaultCurrency, priceCache));
13
- response[Config.DefaultCurrency] = floor(currencyValue, 2);
14
- return response;
15
- }
16
- export async function balanceFromSatoshi(value, rawUnit, priceCache = true) {
17
- const unit = sanitizeUnit(rawUnit);
18
- switch (unit) {
19
- case UnitEnum.BCH:
20
- return value / bchParam.subUnits;
21
- case UnitEnum.SAT:
22
- return value;
23
- case UnitEnum.SATS:
24
- return value;
25
- case UnitEnum.SATOSHI:
26
- return value;
27
- case UnitEnum.SATOSHIS:
28
- return value;
29
- default:
30
- const currencyValue = (value / bchParam.subUnits) *
31
- (await ExchangeRate.get(Config.DefaultCurrency, priceCache));
32
- return Number(currencyValue.toFixed(2));
33
- }
34
- }
35
- //# sourceMappingURL=balanceObjectFromSatoshi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"balanceObjectFromSatoshi.js","sourceRoot":"","sources":["../../../src/util/balanceObjectFromSatoshi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAQtC,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,KAAa,EACb,aAAsB,IAAI;IAE1B,MAAM,QAAQ,GAAG,EAAqB,CAAC;IAEvC,QAAQ,CAAC,GAAG,GAAG,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACzC,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC;IACrB,MAAM,aAAa,GACjB,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC3B,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/D,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC3D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAa,EACb,OAAe,EACf,aAAsB,IAAI;IAE1B,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,QAAQ,IAAI,EAAE,CAAC;QACb,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;YACE,MAAM,aAAa,GACjB,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;gBAC3B,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC;YAC/D,OAAO,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC"}
@@ -1,58 +0,0 @@
1
- import { Config } from "../config";
2
- import { bchParam } from "../chain";
3
- import { balanceResponseFromSatoshi } from "./balanceObjectFromSatoshi";
4
- import { balanceFromSatoshi } from "./balanceObjectFromSatoshi";
5
-
6
- test("Get balanceResponse from 1 bch in satoshi", async () => {
7
- let bal = await balanceResponseFromSatoshi(100000000);
8
- expect(bal.bch).toBe(1);
9
- expect(bal.sat).toBe(bchParam.subUnits);
10
- });
11
-
12
- test("Get balanceResponse from 0", async () => {
13
- let bal = await balanceResponseFromSatoshi(0);
14
- expect(bal.bch).toBe(0);
15
- expect(bal.sat).toBe(0);
16
- expect(bal.usd).toBe(0);
17
- });
18
-
19
- test("Get balanceResponse from 1 bch in eur", async () => {
20
- Config.DefaultCurrency = "eur";
21
- let bal = await balanceResponseFromSatoshi(100000000);
22
- expect(bal.bch).toBe(1);
23
- expect(bal.sat).toBe(bchParam.subUnits);
24
- expect(bal.eur).toBeGreaterThan(0);
25
- Config.DefaultCurrency = "usd";
26
- });
27
-
28
- test("Get balanceResponse from 1 satoshi", async () => {
29
- let bal = await balanceResponseFromSatoshi(110000000);
30
- expect(bal.bch).toBe(1.1);
31
- expect(bal.sat).toBe(110000000);
32
- expect(bal.usd!.toString()).toMatch(/\d+\.?\d{1,2}/);
33
- });
34
-
35
- test("Get balanceResponse from 1 sat", async () => {
36
- let val = await balanceFromSatoshi(1, "sat");
37
- expect(val).toBe(1);
38
- });
39
-
40
- test("Get balanceResponse from 1 sats", async () => {
41
- let val = await balanceFromSatoshi(1, "sats");
42
- expect(val).toBe(1);
43
- });
44
-
45
- test("Get balanceResponse from 1 satoshi", async () => {
46
- let val = await balanceFromSatoshi(1, "satoshi");
47
- expect(val).toBe(1);
48
- });
49
-
50
- test("Get balanceResponse from 1 satoshis", async () => {
51
- let val = await balanceFromSatoshi(1, "satoshis");
52
- expect(val).toBe(1);
53
- });
54
-
55
- test("Get balanceResponse from 1 bch", async () => {
56
- let val = await balanceFromSatoshi(bchParam.subUnits, "bch");
57
- expect(val).toBe(1);
58
- });
@@ -1,52 +0,0 @@
1
- import { bchParam } from "../chain.js";
2
- import { UnitEnum } from "../enum.js";
3
- import { floor } from "./floor.js";
4
- import { ExchangeRate } from "../rate/ExchangeRate.js";
5
- import { sanitizeUnit } from "./sanitizeUnit.js";
6
- import { Config } from "../config.js";
7
-
8
- export interface BalanceResponse {
9
- bch: number;
10
- sat: number;
11
- [currency: string]: number;
12
- }
13
-
14
- export async function balanceResponseFromSatoshi(
15
- value: number,
16
- priceCache: boolean = true
17
- ): Promise<BalanceResponse> {
18
- const response = {} as BalanceResponse;
19
-
20
- response.bch = value / bchParam.subUnits;
21
- response.sat = value;
22
- const currencyValue =
23
- (value / bchParam.subUnits) *
24
- (await ExchangeRate.get(Config.DefaultCurrency, priceCache));
25
- response[Config.DefaultCurrency] = floor(currencyValue, 2);
26
- return response;
27
- }
28
-
29
- export async function balanceFromSatoshi(
30
- value: number,
31
- rawUnit: string,
32
- priceCache: boolean = true
33
- ): Promise<number> {
34
- const unit = sanitizeUnit(rawUnit);
35
- switch (unit) {
36
- case UnitEnum.BCH:
37
- return value / bchParam.subUnits;
38
- case UnitEnum.SAT:
39
- return value;
40
- case UnitEnum.SATS:
41
- return value;
42
- case UnitEnum.SATOSHI:
43
- return value;
44
- case UnitEnum.SATOSHIS:
45
- return value;
46
- default:
47
- const currencyValue =
48
- (value / bchParam.subUnits) *
49
- (await ExchangeRate.get(Config.DefaultCurrency, priceCache));
50
- return Number(currencyValue.toFixed(2));
51
- }
52
- }