mainnet-js 3.0.0-next.0 → 3.0.0-next.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.
Files changed (127) hide show
  1. package/dist/index.html +1 -1
  2. package/dist/{mainnet-3.0.0-next.0.js → mainnet-3.0.0-next.2.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 +17 -47
  20. package/dist/module/history/getHistory.js.map +1 -1
  21. package/dist/module/history/interface.d.ts +1 -1
  22. package/dist/module/history/interface.d.ts.map +1 -1
  23. package/dist/module/interface.d.ts +6 -5
  24. package/dist/module/interface.d.ts.map +1 -1
  25. package/dist/module/interface.js.map +1 -1
  26. package/dist/module/network/ElectrumNetworkProvider.d.ts.map +1 -1
  27. package/dist/module/network/ElectrumNetworkProvider.js +2 -4
  28. package/dist/module/network/ElectrumNetworkProvider.js.map +1 -1
  29. package/dist/module/network/getRelayFeeCache.js +2 -2
  30. package/dist/module/network/getRelayFeeCache.js.map +1 -1
  31. package/dist/module/network/interface.d.ts +2 -2
  32. package/dist/module/network/interface.d.ts.map +1 -1
  33. package/dist/module/rate/ExchangeRate.d.ts +2 -1
  34. package/dist/module/rate/ExchangeRate.d.ts.map +1 -1
  35. package/dist/module/rate/ExchangeRate.js +4 -1
  36. package/dist/module/rate/ExchangeRate.js.map +1 -1
  37. package/dist/module/transaction/Wif.d.ts +9 -9
  38. package/dist/module/transaction/Wif.d.ts.map +1 -1
  39. package/dist/module/transaction/Wif.js +35 -35
  40. package/dist/module/transaction/Wif.js.map +1 -1
  41. package/dist/module/transaction/allocateFee.d.ts +3 -3
  42. package/dist/module/transaction/allocateFee.d.ts.map +1 -1
  43. package/dist/module/transaction/allocateFee.js +5 -6
  44. package/dist/module/transaction/allocateFee.js.map +1 -1
  45. package/dist/module/util/amountInSatoshi.d.ts +1 -1
  46. package/dist/module/util/amountInSatoshi.d.ts.map +1 -1
  47. package/dist/module/util/amountInSatoshi.js +3 -9
  48. package/dist/module/util/amountInSatoshi.js.map +1 -1
  49. package/dist/module/util/asSendRequestObject.d.ts.map +1 -1
  50. package/dist/module/util/asSendRequestObject.js +10 -7
  51. package/dist/module/util/asSendRequestObject.js.map +1 -1
  52. package/dist/module/util/convert.d.ts +3 -0
  53. package/dist/module/util/convert.d.ts.map +1 -1
  54. package/dist/module/util/convert.js +12 -0
  55. package/dist/module/util/convert.js.map +1 -1
  56. package/dist/module/util/index.d.ts +2 -3
  57. package/dist/module/util/index.d.ts.map +1 -1
  58. package/dist/module/util/index.js +2 -3
  59. package/dist/module/util/index.js.map +1 -1
  60. package/dist/module/util/satoshiToAmount.d.ts +1 -1
  61. package/dist/module/util/satoshiToAmount.d.ts.map +1 -1
  62. package/dist/module/util/satoshiToAmount.js +3 -9
  63. package/dist/module/util/satoshiToAmount.js.map +1 -1
  64. package/dist/module/util/sumSendRequestAmounts.d.ts.map +1 -1
  65. package/dist/module/util/sumSendRequestAmounts.js +3 -4
  66. package/dist/module/util/sumSendRequestAmounts.js.map +1 -1
  67. package/dist/module/util/sumUtxoValue.d.ts +1 -1
  68. package/dist/module/util/sumUtxoValue.js +3 -3
  69. package/dist/module/util/sumUtxoValue.js.map +1 -1
  70. package/dist/module/wallet/Base.d.ts +28 -30
  71. package/dist/module/wallet/Base.d.ts.map +1 -1
  72. package/dist/module/wallet/Base.js +82 -119
  73. package/dist/module/wallet/Base.js.map +1 -1
  74. package/dist/module/wallet/HDWallet.d.ts +1 -1
  75. package/dist/module/wallet/Util.js +1 -1
  76. package/dist/module/wallet/Util.js.map +1 -1
  77. package/dist/module/wallet/Wif.d.ts +1 -1
  78. package/dist/module/wallet/interface.d.ts +2 -3
  79. package/dist/module/wallet/interface.d.ts.map +1 -1
  80. package/dist/module/wallet/model.d.ts +53 -41
  81. package/dist/module/wallet/model.d.ts.map +1 -1
  82. package/dist/module/wallet/model.js +14 -22
  83. package/dist/module/wallet/model.js.map +1 -1
  84. package/dist/tsconfig.tsbuildinfo +1 -1
  85. package/package.json +1 -1
  86. package/src/cache/walletCache.ts +23 -36
  87. package/src/chain.ts +1 -1
  88. package/src/constant.ts +1 -1
  89. package/src/enum.ts +0 -6
  90. package/src/history/getHistory.test.ts +20 -34
  91. package/src/history/getHistory.ts +17 -49
  92. package/src/history/interface.ts +1 -1
  93. package/src/interface.ts +6 -5
  94. package/src/network/Connection.test.ts +3 -3
  95. package/src/network/ElectrumNetworkProvider.ts +2 -4
  96. package/src/network/Rpc.test.ts +2 -3
  97. package/src/network/getRelayFeeCache.ts +2 -2
  98. package/src/network/interface.ts +2 -2
  99. package/src/rate/ExchangeRate.test.ts +2 -44
  100. package/src/rate/ExchangeRate.ts +5 -2
  101. package/src/transaction/Wif.ts +50 -45
  102. package/src/transaction/allocateFee.test.ts +110 -131
  103. package/src/transaction/allocateFee.ts +14 -15
  104. package/src/util/amountInSatoshi.test.ts +1 -9
  105. package/src/util/amountInSatoshi.ts +6 -10
  106. package/src/util/asSendRequestObject.ts +12 -7
  107. package/src/util/convert.ts +18 -0
  108. package/src/util/index.ts +2 -7
  109. package/src/util/satoshiToAmount.test.ts +1 -1
  110. package/src/util/satoshiToAmount.ts +4 -10
  111. package/src/util/sumSendRequestAmounts.ts +3 -4
  112. package/src/util/sumUtxoValue.ts +4 -4
  113. package/src/wallet/Base.ts +95 -164
  114. package/src/wallet/Cashtokens.test.headless.js +228 -173
  115. package/src/wallet/Cashtokens.test.ts +506 -406
  116. package/src/wallet/HDWallet.test.ts +223 -68
  117. package/src/wallet/Util.ts +1 -1
  118. package/src/wallet/Wif.test.ts +108 -133
  119. package/src/wallet/interface.ts +2 -3
  120. package/src/wallet/model.test.ts +2 -5
  121. package/src/wallet/model.ts +64 -71
  122. package/dist/module/util/balanceObjectFromSatoshi.d.ts +0 -8
  123. package/dist/module/util/balanceObjectFromSatoshi.d.ts.map +0 -1
  124. package/dist/module/util/balanceObjectFromSatoshi.js +0 -35
  125. package/dist/module/util/balanceObjectFromSatoshi.js.map +0 -1
  126. package/src/util/balanceObjectFromSatoshi.test.ts +0 -58
  127. 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,133 +25,131 @@ 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
 
49
36
  export class TokenGenesisRequest {
50
37
  amount?: bigint; // fungible token amount
51
- capability?: NFTCapability;
52
- commitment?: string;
38
+ nft?: {
39
+ capability: NFTCapability;
40
+ commitment: string;
41
+ };
53
42
  cashaddr?: string;
54
- value?: number; // satoshi value
43
+ value?: bigint; // satoshi value
55
44
 
56
45
  constructor({
57
46
  amount,
58
- capability,
59
- commitment,
47
+ nft,
60
48
  cashaddr,
61
49
  value,
62
50
  }: {
63
51
  amount?: bigint;
64
- capability?: NFTCapability;
65
- commitment?: string;
52
+ nft?: {
53
+ capability: NFTCapability;
54
+ commitment: string;
55
+ };
66
56
  cashaddr?: string;
67
- value?: number;
57
+ value?: bigint;
68
58
  }) {
69
59
  this.amount = amount;
70
- this.capability = capability;
71
- this.commitment = commitment;
60
+ this.nft = nft;
72
61
  this.cashaddr = cashaddr;
73
62
  this.value = value;
74
63
  }
75
64
  }
76
65
 
77
66
  export class TokenBurnRequest {
78
- tokenId: string;
79
- capability?: NFTCapability;
80
- commitment?: string;
67
+ category: string;
81
68
  amount?: bigint; // fungible token amount
69
+ nft?: {
70
+ capability: NFTCapability;
71
+ commitment: string;
72
+ };
82
73
  cashaddr?: string;
83
74
 
84
75
  constructor({
85
- tokenId,
86
- capability,
87
- commitment,
76
+ category,
88
77
  amount,
78
+ nft,
89
79
  cashaddr,
90
80
  }: {
91
- tokenId: string;
92
- capability?: NFTCapability;
93
- commitment?: string;
81
+ category: string;
94
82
  amount?: number | bigint;
95
83
  cashaddr?: string;
84
+ nft?: {
85
+ capability: NFTCapability;
86
+ commitment: string;
87
+ };
96
88
  }) {
97
- this.tokenId = tokenId;
98
- this.capability = capability;
99
- this.commitment = commitment;
89
+ this.category = category;
100
90
  this.amount = amount ? BigInt(amount) : 0n;
91
+ this.nft = nft;
101
92
  this.cashaddr = cashaddr;
102
93
  }
103
94
  }
104
95
 
105
96
  export class TokenSendRequest {
106
97
  cashaddr: string; // cashaddr or tokenaddr to send tokens to
107
- value?: number; // satoshi value
98
+ value?: bigint; // satoshi value
108
99
  amount: bigint; // fungible token amount
109
- tokenId: string;
110
- capability?: NFTCapability;
111
- commitment?: string;
100
+ category: string;
101
+ nft?: {
102
+ capability: NFTCapability;
103
+ commitment: string;
104
+ };
112
105
 
113
106
  constructor({
114
107
  cashaddr,
115
108
  value,
116
109
  amount,
117
- tokenId,
118
- capability,
119
- commitment,
110
+ category,
111
+ nft,
120
112
  }: {
121
113
  cashaddr: string;
122
- value?: number;
123
- amount?: number | bigint;
124
- tokenId: string;
125
- capability?: NFTCapability;
126
- commitment?: string;
114
+ value?: bigint;
115
+ amount?: bigint;
116
+ category: string;
117
+ nft?: {
118
+ capability: NFTCapability;
119
+ commitment: string;
120
+ };
127
121
  }) {
128
122
  checkTokenaddr(cashaddr, Config.EnforceCashTokenReceiptAddresses);
129
123
 
130
124
  this.cashaddr = cashaddr;
131
125
  this.value = value;
132
126
  this.amount = amount ? BigInt(amount) : 0n;
133
- this.tokenId = tokenId;
134
- this.capability = capability;
135
- this.commitment = commitment;
127
+ this.category = category;
128
+ this.nft = nft;
136
129
  }
137
130
  }
138
131
 
139
132
  export class TokenMintRequest {
140
- capability?: NFTCapability;
141
- commitment?: string;
133
+ nft?: {
134
+ capability: NFTCapability;
135
+ commitment: string;
136
+ };
142
137
  cashaddr?: string;
143
- value?: number;
138
+ value?: bigint;
144
139
 
145
140
  constructor({
146
- capability,
147
- commitment,
141
+ nft,
148
142
  cashaddr,
149
143
  value,
150
144
  }: {
151
- capability?: NFTCapability;
152
- commitment?: string;
145
+ nft?: {
146
+ capability: NFTCapability;
147
+ commitment: string;
148
+ };
153
149
  cashaddr?: string;
154
- value?: number;
150
+ value?: bigint;
155
151
  }) {
156
- this.capability = capability;
157
- this.commitment = commitment;
152
+ this.nft = nft;
158
153
  this.cashaddr = cashaddr;
159
154
  this.value = value;
160
155
  }
@@ -294,15 +289,15 @@ export class OpReturnData {
294
289
  }
295
290
  }
296
291
 
297
- export type SendRequestArray = Array<string | number | UnitEnum | Uint8Array>;
292
+ export type SendRequestArray = Array<string | bigint | Uint8Array>;
298
293
 
299
294
  export type SourceOutput = Input & Output;
300
295
 
301
296
  export class SendResponse {
302
297
  txId?: string;
303
- balance?: BalanceResponse;
298
+ balance?: bigint;
304
299
  explorerUrl?: string;
305
- tokenIds?: string[];
300
+ categories?: string[];
306
301
  unsignedTransaction?: string; // unsigned transaction hex
307
302
  sourceOutputs?: SourceOutput[]; // source outputs for signing unsigned transactions
308
303
 
@@ -346,14 +341,12 @@ export class XPubKey {
346
341
  export const fromUtxoId = (utxoId: string): UtxoId => {
347
342
  const [txid, vout, satoshis] = utxoId.split(DELIMITER);
348
343
  return {
349
- satoshis: satoshis ? parseInt(satoshis) : 0,
344
+ satoshis: satoshis ? BigInt(parseInt(satoshis)) : 0n,
350
345
  vout: parseInt(vout),
351
346
  txid,
352
347
  } as UtxoId;
353
348
  };
354
349
 
355
350
  export const toUtxoId = (utxo: UtxoId): string => {
356
- return [utxo.txid, utxo.vout, utxo.satoshis]
357
- .join(DELIMITER)
358
- .replace(/:+$/, "");
351
+ return [utxo.txid, utxo.vout].join(DELIMITER).replace(/:+$/, "");
359
352
  };
@@ -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
- }