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.
- package/dist/index.html +1 -1
- package/dist/{mainnet-3.0.0-next.0.js → mainnet-3.0.0-next.2.js} +21 -41
- package/dist/module/cache/walletCache.d.ts +10 -4
- package/dist/module/cache/walletCache.d.ts.map +1 -1
- package/dist/module/cache/walletCache.js +12 -13
- package/dist/module/cache/walletCache.js.map +1 -1
- package/dist/module/chain.d.ts +1 -1
- package/dist/module/chain.js +1 -1
- package/dist/module/chain.js.map +1 -1
- package/dist/module/constant.d.ts +1 -1
- package/dist/module/constant.d.ts.map +1 -1
- package/dist/module/constant.js +1 -1
- package/dist/module/constant.js.map +1 -1
- package/dist/module/enum.d.ts +1 -7
- package/dist/module/enum.d.ts.map +1 -1
- package/dist/module/enum.js +0 -6
- package/dist/module/enum.js.map +1 -1
- package/dist/module/history/getHistory.d.ts.map +1 -1
- package/dist/module/history/getHistory.js +17 -47
- package/dist/module/history/getHistory.js.map +1 -1
- package/dist/module/history/interface.d.ts +1 -1
- package/dist/module/history/interface.d.ts.map +1 -1
- package/dist/module/interface.d.ts +6 -5
- package/dist/module/interface.d.ts.map +1 -1
- package/dist/module/interface.js.map +1 -1
- package/dist/module/network/ElectrumNetworkProvider.d.ts.map +1 -1
- package/dist/module/network/ElectrumNetworkProvider.js +2 -4
- package/dist/module/network/ElectrumNetworkProvider.js.map +1 -1
- package/dist/module/network/getRelayFeeCache.js +2 -2
- package/dist/module/network/getRelayFeeCache.js.map +1 -1
- package/dist/module/network/interface.d.ts +2 -2
- package/dist/module/network/interface.d.ts.map +1 -1
- package/dist/module/rate/ExchangeRate.d.ts +2 -1
- package/dist/module/rate/ExchangeRate.d.ts.map +1 -1
- package/dist/module/rate/ExchangeRate.js +4 -1
- package/dist/module/rate/ExchangeRate.js.map +1 -1
- package/dist/module/transaction/Wif.d.ts +9 -9
- package/dist/module/transaction/Wif.d.ts.map +1 -1
- package/dist/module/transaction/Wif.js +35 -35
- package/dist/module/transaction/Wif.js.map +1 -1
- package/dist/module/transaction/allocateFee.d.ts +3 -3
- package/dist/module/transaction/allocateFee.d.ts.map +1 -1
- package/dist/module/transaction/allocateFee.js +5 -6
- package/dist/module/transaction/allocateFee.js.map +1 -1
- package/dist/module/util/amountInSatoshi.d.ts +1 -1
- package/dist/module/util/amountInSatoshi.d.ts.map +1 -1
- package/dist/module/util/amountInSatoshi.js +3 -9
- package/dist/module/util/amountInSatoshi.js.map +1 -1
- package/dist/module/util/asSendRequestObject.d.ts.map +1 -1
- package/dist/module/util/asSendRequestObject.js +10 -7
- package/dist/module/util/asSendRequestObject.js.map +1 -1
- package/dist/module/util/convert.d.ts +3 -0
- package/dist/module/util/convert.d.ts.map +1 -1
- package/dist/module/util/convert.js +12 -0
- package/dist/module/util/convert.js.map +1 -1
- package/dist/module/util/index.d.ts +2 -3
- package/dist/module/util/index.d.ts.map +1 -1
- package/dist/module/util/index.js +2 -3
- package/dist/module/util/index.js.map +1 -1
- package/dist/module/util/satoshiToAmount.d.ts +1 -1
- package/dist/module/util/satoshiToAmount.d.ts.map +1 -1
- package/dist/module/util/satoshiToAmount.js +3 -9
- package/dist/module/util/satoshiToAmount.js.map +1 -1
- package/dist/module/util/sumSendRequestAmounts.d.ts.map +1 -1
- package/dist/module/util/sumSendRequestAmounts.js +3 -4
- package/dist/module/util/sumSendRequestAmounts.js.map +1 -1
- package/dist/module/util/sumUtxoValue.d.ts +1 -1
- package/dist/module/util/sumUtxoValue.js +3 -3
- package/dist/module/util/sumUtxoValue.js.map +1 -1
- package/dist/module/wallet/Base.d.ts +28 -30
- package/dist/module/wallet/Base.d.ts.map +1 -1
- package/dist/module/wallet/Base.js +82 -119
- package/dist/module/wallet/Base.js.map +1 -1
- package/dist/module/wallet/HDWallet.d.ts +1 -1
- package/dist/module/wallet/Util.js +1 -1
- package/dist/module/wallet/Util.js.map +1 -1
- package/dist/module/wallet/Wif.d.ts +1 -1
- package/dist/module/wallet/interface.d.ts +2 -3
- package/dist/module/wallet/interface.d.ts.map +1 -1
- package/dist/module/wallet/model.d.ts +53 -41
- package/dist/module/wallet/model.d.ts.map +1 -1
- package/dist/module/wallet/model.js +14 -22
- package/dist/module/wallet/model.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/cache/walletCache.ts +23 -36
- package/src/chain.ts +1 -1
- package/src/constant.ts +1 -1
- package/src/enum.ts +0 -6
- package/src/history/getHistory.test.ts +20 -34
- package/src/history/getHistory.ts +17 -49
- package/src/history/interface.ts +1 -1
- package/src/interface.ts +6 -5
- package/src/network/Connection.test.ts +3 -3
- package/src/network/ElectrumNetworkProvider.ts +2 -4
- package/src/network/Rpc.test.ts +2 -3
- package/src/network/getRelayFeeCache.ts +2 -2
- package/src/network/interface.ts +2 -2
- package/src/rate/ExchangeRate.test.ts +2 -44
- package/src/rate/ExchangeRate.ts +5 -2
- package/src/transaction/Wif.ts +50 -45
- package/src/transaction/allocateFee.test.ts +110 -131
- package/src/transaction/allocateFee.ts +14 -15
- package/src/util/amountInSatoshi.test.ts +1 -9
- package/src/util/amountInSatoshi.ts +6 -10
- package/src/util/asSendRequestObject.ts +12 -7
- package/src/util/convert.ts +18 -0
- package/src/util/index.ts +2 -7
- package/src/util/satoshiToAmount.test.ts +1 -1
- package/src/util/satoshiToAmount.ts +4 -10
- package/src/util/sumSendRequestAmounts.ts +3 -4
- package/src/util/sumUtxoValue.ts +4 -4
- package/src/wallet/Base.ts +95 -164
- package/src/wallet/Cashtokens.test.headless.js +228 -173
- package/src/wallet/Cashtokens.test.ts +506 -406
- package/src/wallet/HDWallet.test.ts +223 -68
- package/src/wallet/Util.ts +1 -1
- package/src/wallet/Wif.test.ts +108 -133
- package/src/wallet/interface.ts +2 -3
- package/src/wallet/model.test.ts +2 -5
- package/src/wallet/model.ts +64 -71
- package/dist/module/util/balanceObjectFromSatoshi.d.ts +0 -8
- package/dist/module/util/balanceObjectFromSatoshi.d.ts.map +0 -1
- package/dist/module/util/balanceObjectFromSatoshi.js +0 -35
- package/dist/module/util/balanceObjectFromSatoshi.js.map +0 -1
- package/src/util/balanceObjectFromSatoshi.test.ts +0 -58
- package/src/util/balanceObjectFromSatoshi.ts +0 -52
package/src/wallet/model.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import {
|
|
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:
|
|
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
|
-
|
|
52
|
-
|
|
38
|
+
nft?: {
|
|
39
|
+
capability: NFTCapability;
|
|
40
|
+
commitment: string;
|
|
41
|
+
};
|
|
53
42
|
cashaddr?: string;
|
|
54
|
-
value?:
|
|
43
|
+
value?: bigint; // satoshi value
|
|
55
44
|
|
|
56
45
|
constructor({
|
|
57
46
|
amount,
|
|
58
|
-
|
|
59
|
-
commitment,
|
|
47
|
+
nft,
|
|
60
48
|
cashaddr,
|
|
61
49
|
value,
|
|
62
50
|
}: {
|
|
63
51
|
amount?: bigint;
|
|
64
|
-
|
|
65
|
-
|
|
52
|
+
nft?: {
|
|
53
|
+
capability: NFTCapability;
|
|
54
|
+
commitment: string;
|
|
55
|
+
};
|
|
66
56
|
cashaddr?: string;
|
|
67
|
-
value?:
|
|
57
|
+
value?: bigint;
|
|
68
58
|
}) {
|
|
69
59
|
this.amount = amount;
|
|
70
|
-
this.
|
|
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
|
-
|
|
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
|
-
|
|
86
|
-
capability,
|
|
87
|
-
commitment,
|
|
76
|
+
category,
|
|
88
77
|
amount,
|
|
78
|
+
nft,
|
|
89
79
|
cashaddr,
|
|
90
80
|
}: {
|
|
91
|
-
|
|
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.
|
|
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?:
|
|
98
|
+
value?: bigint; // satoshi value
|
|
108
99
|
amount: bigint; // fungible token amount
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
|
|
118
|
-
|
|
119
|
-
commitment,
|
|
110
|
+
category,
|
|
111
|
+
nft,
|
|
120
112
|
}: {
|
|
121
113
|
cashaddr: string;
|
|
122
|
-
value?:
|
|
123
|
-
amount?:
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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.
|
|
134
|
-
this.
|
|
135
|
-
this.commitment = commitment;
|
|
127
|
+
this.category = category;
|
|
128
|
+
this.nft = nft;
|
|
136
129
|
}
|
|
137
130
|
}
|
|
138
131
|
|
|
139
132
|
export class TokenMintRequest {
|
|
140
|
-
|
|
141
|
-
|
|
133
|
+
nft?: {
|
|
134
|
+
capability: NFTCapability;
|
|
135
|
+
commitment: string;
|
|
136
|
+
};
|
|
142
137
|
cashaddr?: string;
|
|
143
|
-
value?:
|
|
138
|
+
value?: bigint;
|
|
144
139
|
|
|
145
140
|
constructor({
|
|
146
|
-
|
|
147
|
-
commitment,
|
|
141
|
+
nft,
|
|
148
142
|
cashaddr,
|
|
149
143
|
value,
|
|
150
144
|
}: {
|
|
151
|
-
|
|
152
|
-
|
|
145
|
+
nft?: {
|
|
146
|
+
capability: NFTCapability;
|
|
147
|
+
commitment: string;
|
|
148
|
+
};
|
|
153
149
|
cashaddr?: string;
|
|
154
|
-
value?:
|
|
150
|
+
value?: bigint;
|
|
155
151
|
}) {
|
|
156
|
-
this.
|
|
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 |
|
|
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?:
|
|
298
|
+
balance?: bigint;
|
|
304
299
|
explorerUrl?: string;
|
|
305
|
-
|
|
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) :
|
|
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
|
|
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
|
-
}
|