@gobob/bob-sdk 3.0.3 → 3.1.0
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.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/ordinal-api/index.d.ts +12 -3
- package/dist/ordinal-api/index.js +11 -3
- package/dist/ordinal-api/index.js.map +1 -1
- package/dist/wallet/utxo.d.ts +5 -0
- package/dist/wallet/utxo.js +69 -23
- package/dist/wallet/utxo.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -18,6 +18,7 @@ __exportStar(require("./esplora"), exports);
|
|
|
18
18
|
__exportStar(require("./relay"), exports);
|
|
19
19
|
__exportStar(require("./utils"), exports);
|
|
20
20
|
__exportStar(require("./ordinals"), exports);
|
|
21
|
+
__exportStar(require("./ordinal-api"), exports);
|
|
21
22
|
__exportStar(require("./helpers"), exports);
|
|
22
23
|
__exportStar(require("./wallet"), exports);
|
|
23
24
|
__exportStar(require("./gateway"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,0CAAwB;AACxB,0CAAwB;AACxB,6CAA2B;AAC3B,4CAA0B;AAC1B,2CAAyB;AACzB,4CAA0B;AAC1B,4CAA0B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,0CAAwB;AACxB,0CAAwB;AACxB,6CAA2B;AAC3B,gDAA8B;AAC9B,4CAA0B;AAC1B,2CAAyB;AACzB,4CAA0B;AAC1B,4CAA0B"}
|
|
@@ -41,12 +41,19 @@ export interface OutputJson {
|
|
|
41
41
|
symbol: string | null;
|
|
42
42
|
};
|
|
43
43
|
};
|
|
44
|
-
|
|
44
|
+
outpoint: string;
|
|
45
|
+
sat_ranges: [number, number][] | null;
|
|
45
46
|
script_pubkey: string;
|
|
46
47
|
spent: boolean;
|
|
47
48
|
transaction: string;
|
|
48
49
|
value: number;
|
|
49
50
|
}
|
|
51
|
+
export interface AddressInfo {
|
|
52
|
+
outputs: string[];
|
|
53
|
+
inscriptions: string[];
|
|
54
|
+
sat_balance: number;
|
|
55
|
+
runes_balances: [string, `${number}`, string][];
|
|
56
|
+
}
|
|
50
57
|
export interface SatJson<InscriptionId> {
|
|
51
58
|
number: number;
|
|
52
59
|
decimal: string;
|
|
@@ -67,6 +74,7 @@ export interface SatJson<InscriptionId> {
|
|
|
67
74
|
export interface InscriptionJson<InscriptionId, SatPoint> {
|
|
68
75
|
address: string | null;
|
|
69
76
|
charms: string[];
|
|
77
|
+
child_count: number;
|
|
70
78
|
children: InscriptionId[];
|
|
71
79
|
content_length: number | null;
|
|
72
80
|
content_type: string | null;
|
|
@@ -76,11 +84,10 @@ export interface InscriptionJson<InscriptionId, SatPoint> {
|
|
|
76
84
|
id: InscriptionId;
|
|
77
85
|
next: InscriptionId | null;
|
|
78
86
|
number: number;
|
|
79
|
-
parent: InscriptionId | null;
|
|
80
87
|
parents: string[];
|
|
81
88
|
previous: InscriptionId | null;
|
|
82
89
|
rune: string | null;
|
|
83
|
-
sat:
|
|
90
|
+
sat: number | null;
|
|
84
91
|
satpoint: SatPoint;
|
|
85
92
|
timestamp: number;
|
|
86
93
|
value: number | null;
|
|
@@ -88,10 +95,12 @@ export interface InscriptionJson<InscriptionId, SatPoint> {
|
|
|
88
95
|
export declare class OrdinalsClient {
|
|
89
96
|
private basePath;
|
|
90
97
|
constructor(networkOrUrl?: string);
|
|
98
|
+
getAssetsByAddress(address: string): Promise<AddressInfo>;
|
|
91
99
|
getInscriptionFromId(id: InscriptionId): Promise<InscriptionJson<InscriptionId, SatPoint>>;
|
|
92
100
|
getInscriptions(): Promise<InscriptionsJson<InscriptionId>>;
|
|
93
101
|
getInscriptionsFromBlock(height: number): Promise<InscriptionsJson<InscriptionId>>;
|
|
94
102
|
getInscriptionsFromOutPoint(outPoint: OutPoint): Promise<OutputJson>;
|
|
103
|
+
getOutputsFromAddress(address: string, type?: 'cardinal' | 'inscribed' | 'runic' | 'any'): Promise<OutputJson[]>;
|
|
95
104
|
getInscriptionsFromSat(sat: number): Promise<SatJson<InscriptionId>>;
|
|
96
105
|
getInscriptionsFromStartBlock(startHeight: number): Promise<InscriptionsJson<InscriptionId>>;
|
|
97
106
|
private getJson;
|
|
@@ -68,6 +68,9 @@ class OrdinalsClient {
|
|
|
68
68
|
this.basePath = networkOrUrl;
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
+
getAssetsByAddress(address) {
|
|
72
|
+
return this.getJson(`${this.basePath}/address/${address}`);
|
|
73
|
+
}
|
|
71
74
|
async getInscriptionFromId(id) {
|
|
72
75
|
console.log(`${this.basePath}/inscription/${InscriptionId.toString(id)}`);
|
|
73
76
|
const inscriptionJson = await this.getJson(`${this.basePath}/inscription/${InscriptionId.toString(id)}`);
|
|
@@ -76,7 +79,6 @@ class OrdinalsClient {
|
|
|
76
79
|
children: inscriptionJson.children.map(InscriptionId.fromString),
|
|
77
80
|
id: InscriptionId.fromString(inscriptionJson.id),
|
|
78
81
|
next: inscriptionJson.next != null ? InscriptionId.fromString(inscriptionJson.next) : null,
|
|
79
|
-
parent: inscriptionJson.parent != null ? InscriptionId.fromString(inscriptionJson.parent) : null,
|
|
80
82
|
previous: inscriptionJson.previous != null ? InscriptionId.fromString(inscriptionJson.previous) : null,
|
|
81
83
|
satpoint: SatPoint.fromString(inscriptionJson.satpoint),
|
|
82
84
|
};
|
|
@@ -89,8 +91,14 @@ class OrdinalsClient {
|
|
|
89
91
|
const inscriptionsJson = await this.getJson(`${this.basePath}/inscriptions/block/${height}`);
|
|
90
92
|
return this.parseInscriptionsJson(inscriptionsJson);
|
|
91
93
|
}
|
|
92
|
-
|
|
93
|
-
return
|
|
94
|
+
getInscriptionsFromOutPoint(outPoint) {
|
|
95
|
+
return this.getJson(`${this.basePath}/output/${OutPoint.toString(outPoint)}`);
|
|
96
|
+
}
|
|
97
|
+
getOutputsFromAddress(address, type) {
|
|
98
|
+
const searchParams = new URLSearchParams();
|
|
99
|
+
if (type)
|
|
100
|
+
searchParams.append('type', type);
|
|
101
|
+
return this.getJson(`${this.basePath}/outputs/${address}?${searchParams}`);
|
|
94
102
|
}
|
|
95
103
|
async getInscriptionsFromSat(sat) {
|
|
96
104
|
const satJson = await this.getJson(`${this.basePath}/sat/${sat}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ordinal-api/index.ts"],"names":[],"mappings":";;;AAIa,QAAA,qBAAqB,GAAG,qBAAqB,CAAC;AAM9C,QAAA,qBAAqB,GAAG,oCAAoC,CAAC;AAM7D,QAAA,qBAAqB,GAAG,oCAAoC,CAAC;AAQ1E,IAAc,aAAa,CAa1B;AAbD,WAAc,aAAa;IACvB,SAAgB,QAAQ,CAAC,EAAiB;QACtC,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;IAFe,sBAAQ,WAEvB,CAAA;IAED,SAAgB,UAAU,CAAC,EAAU;QAEjC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,OAAO;YACH,IAAI;YACJ,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;SAC7B,CAAC;IACN,CAAC;IAPe,wBAAU,aAOzB,CAAA;AACL,CAAC,EAba,aAAa,6BAAb,aAAa,QAa1B;AAQD,IAAc,QAAQ,CAarB;AAbD,WAAc,QAAQ;IAClB,SAAgB,QAAQ,CAAC,EAAY;QACjC,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAFe,iBAAQ,WAEvB,CAAA;IAED,SAAgB,UAAU,CAAC,EAAU;QAEjC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO;YACH,IAAI;YACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;SAC3B,CAAC;IACN,CAAC;IAPe,mBAAU,aAOzB,CAAA;AACL,CAAC,EAba,QAAQ,wBAAR,QAAQ,QAarB;AAQD,IAAc,QAAQ,CAgBrB;AAhBD,WAAc,QAAQ;IAClB,SAAgB,QAAQ,CAAC,EAAY;QACjC,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IAC5D,CAAC;IAFe,iBAAQ,WAEvB,CAAA;IAED,SAAgB,UAAU,CAAC,EAAU;QAEjC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO;YACH,QAAQ,EAAE;gBACN,IAAI;gBACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;aAC3B;YACD,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;SAC/B,CAAC;IACN,CAAC;IAVe,mBAAU,aAUzB,CAAA;AACL,CAAC,EAhBa,QAAQ,wBAAR,QAAQ,QAgBrB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ordinal-api/index.ts"],"names":[],"mappings":"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"}
|
package/dist/wallet/utxo.d.ts
CHANGED
|
@@ -22,3 +22,8 @@ export interface Input {
|
|
|
22
22
|
export declare function createBitcoinPsbt(fromAddress: string, toAddress: string, amount: number, publicKey?: string, opReturnData?: string, feeRate?: number, confirmationTarget?: number): Promise<string>;
|
|
23
23
|
export declare function getInputFromUtxoAndTx(network: BitcoinNetworkName, utxo: UTXO, transaction: Transaction, addressType: AddressType, publicKey?: string): Input;
|
|
24
24
|
export declare function estimateTxFee(fromAddress: string, amount?: number, publicKey?: string, opReturnData?: string, feeRate?: number, confirmationTarget?: number): Promise<bigint>;
|
|
25
|
+
export declare function getBalance(address?: string): Promise<{
|
|
26
|
+
confirmed: bigint;
|
|
27
|
+
unconfirmed: bigint;
|
|
28
|
+
total: bigint;
|
|
29
|
+
}>;
|
package/dist/wallet/utxo.js
CHANGED
|
@@ -4,10 +4,12 @@ exports.getBtcNetwork = void 0;
|
|
|
4
4
|
exports.createBitcoinPsbt = createBitcoinPsbt;
|
|
5
5
|
exports.getInputFromUtxoAndTx = getInputFromUtxoAndTx;
|
|
6
6
|
exports.estimateTxFee = estimateTxFee;
|
|
7
|
+
exports.getBalance = getBalance;
|
|
7
8
|
const btc_signer_1 = require("@scure/btc-signer");
|
|
8
9
|
const base_1 = require("@scure/base");
|
|
9
10
|
const bitcoin_address_validation_1 = require("bitcoin-address-validation");
|
|
10
11
|
const esplora_1 = require("../esplora");
|
|
12
|
+
const ordinal_api_1 = require("../ordinal-api");
|
|
11
13
|
const bitcoinNetworks = {
|
|
12
14
|
mainnet: btc_signer_1.NETWORK,
|
|
13
15
|
testnet: btc_signer_1.TEST_NETWORK,
|
|
@@ -22,31 +24,33 @@ async function createBitcoinPsbt(fromAddress, toAddress, amount, publicKey, opRe
|
|
|
22
24
|
if (addressInfo.network === 'regtest') {
|
|
23
25
|
throw new Error('Bitcoin regtest not supported');
|
|
24
26
|
}
|
|
25
|
-
if (addressInfo.type ===
|
|
27
|
+
if (addressInfo.type === bitcoin_address_validation_1.AddressType.p2sh ||
|
|
28
|
+
addressInfo.type === bitcoin_address_validation_1.AddressType.p2wsh ||
|
|
29
|
+
addressInfo.type === bitcoin_address_validation_1.AddressType.p2tr) {
|
|
26
30
|
if (!publicKey) {
|
|
27
31
|
throw new Error('Public key is required to spend from the selected address type');
|
|
28
32
|
}
|
|
29
33
|
}
|
|
30
34
|
const esploraClient = new esplora_1.EsploraClient(addressInfo.network);
|
|
35
|
+
const ordinalsClient = new ordinal_api_1.OrdinalsClient(addressInfo.network);
|
|
31
36
|
let confirmedUtxos = [];
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
esploraClient.getFeeEstimate(confirmationTarget),
|
|
39
|
-
]);
|
|
40
|
-
}
|
|
37
|
+
let outputsFromAddress = [];
|
|
38
|
+
[confirmedUtxos, feeRate, outputsFromAddress] = await Promise.all([
|
|
39
|
+
esploraClient.getAddressUtxos(fromAddress),
|
|
40
|
+
feeRate === undefined ? esploraClient.getFeeEstimate(confirmationTarget) : feeRate,
|
|
41
|
+
ordinalsClient.getOutputsFromAddress(fromAddress, 'cardinal'),
|
|
42
|
+
]);
|
|
41
43
|
if (confirmedUtxos.length === 0) {
|
|
42
44
|
throw new Error('No confirmed UTXOs');
|
|
43
45
|
}
|
|
46
|
+
const outpointsSet = new Set(outputsFromAddress.map((output) => output.outpoint));
|
|
44
47
|
const possibleInputs = [];
|
|
45
48
|
await Promise.all(confirmedUtxos.map(async (utxo) => {
|
|
46
49
|
const hex = await esploraClient.getTransactionHex(utxo.txid);
|
|
47
50
|
const transaction = btc_signer_1.Transaction.fromRaw(Buffer.from(hex, 'hex'), { allowUnknownOutputs: true });
|
|
48
51
|
const input = getInputFromUtxoAndTx(addressInfo.network, utxo, transaction, addressInfo.type, publicKey);
|
|
49
|
-
|
|
52
|
+
if (outpointsSet.has(ordinal_api_1.OutPoint.toString(utxo)))
|
|
53
|
+
possibleInputs.push(input);
|
|
50
54
|
}));
|
|
51
55
|
const outputs = [
|
|
52
56
|
{
|
|
@@ -74,6 +78,8 @@ async function createBitcoinPsbt(fromAddress, toAddress, amount, publicKey, opRe
|
|
|
74
78
|
dust: BigInt(546),
|
|
75
79
|
});
|
|
76
80
|
if (!transaction || !transaction.tx) {
|
|
81
|
+
console.debug('confirmedUtxos', confirmedUtxos);
|
|
82
|
+
console.debug('outputsFromAddress', outputsFromAddress);
|
|
77
83
|
console.debug(`fromAddress: ${fromAddress}, toAddress: ${toAddress}, amount: ${amount}`);
|
|
78
84
|
console.debug(`publicKey: ${publicKey}, opReturnData: ${opReturnData}`);
|
|
79
85
|
console.debug(`feeRate: ${feeRate}, confirmationTarget: ${confirmationTarget}`);
|
|
@@ -91,6 +97,10 @@ function getInputFromUtxoAndTx(network, utxo, transaction, addressType, publicKe
|
|
|
91
97
|
const inner = (0, btc_signer_1.p2wpkh)(Buffer.from(publicKey, 'hex'), (0, exports.getBtcNetwork)(network));
|
|
92
98
|
redeemScript = (0, btc_signer_1.p2sh)(inner);
|
|
93
99
|
}
|
|
100
|
+
else if (addressType === bitcoin_address_validation_1.AddressType.p2tr) {
|
|
101
|
+
const xOnlyPublicKey = Buffer.from(publicKey, 'hex').subarray(1, 33);
|
|
102
|
+
redeemScript = (0, btc_signer_1.p2tr)(xOnlyPublicKey);
|
|
103
|
+
}
|
|
94
104
|
const scriptMixin = {
|
|
95
105
|
...redeemScript,
|
|
96
106
|
};
|
|
@@ -117,30 +127,34 @@ async function estimateTxFee(fromAddress, amount, publicKey, opReturnData, feeRa
|
|
|
117
127
|
if (addressInfo.network === 'regtest') {
|
|
118
128
|
throw new Error('Bitcoin regtest not supported');
|
|
119
129
|
}
|
|
120
|
-
if (addressInfo.type ===
|
|
130
|
+
if (addressInfo.type === bitcoin_address_validation_1.AddressType.p2sh ||
|
|
131
|
+
addressInfo.type === bitcoin_address_validation_1.AddressType.p2wsh ||
|
|
132
|
+
addressInfo.type === bitcoin_address_validation_1.AddressType.p2tr) {
|
|
121
133
|
if (!publicKey) {
|
|
122
134
|
throw new Error('Public key is required to spend from the selected address type');
|
|
123
135
|
}
|
|
124
136
|
}
|
|
125
137
|
const toAddress = fromAddress;
|
|
126
138
|
const esploraClient = new esplora_1.EsploraClient(addressInfo.network);
|
|
139
|
+
const ordinalsClient = new ordinal_api_1.OrdinalsClient(addressInfo.network);
|
|
127
140
|
let confirmedUtxos = [];
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
esploraClient.getFeeEstimate(confirmationTarget),
|
|
135
|
-
]);
|
|
136
|
-
}
|
|
141
|
+
let outputsFromAddress = [];
|
|
142
|
+
[confirmedUtxos, feeRate, outputsFromAddress] = await Promise.all([
|
|
143
|
+
esploraClient.getAddressUtxos(fromAddress),
|
|
144
|
+
feeRate === undefined ? esploraClient.getFeeEstimate(confirmationTarget) : feeRate,
|
|
145
|
+
ordinalsClient.getOutputsFromAddress(fromAddress, 'cardinal'),
|
|
146
|
+
]);
|
|
137
147
|
if (confirmedUtxos.length === 0) {
|
|
138
148
|
throw new Error('No confirmed UTXOs');
|
|
139
149
|
}
|
|
140
|
-
const
|
|
150
|
+
const outpointsSet = new Set(outputsFromAddress.map((output) => output.outpoint));
|
|
151
|
+
const possibleInputs = [];
|
|
152
|
+
await Promise.all(confirmedUtxos.map(async (utxo) => {
|
|
141
153
|
const hex = await esploraClient.getTransactionHex(utxo.txid);
|
|
142
154
|
const transaction = btc_signer_1.Transaction.fromRaw(Buffer.from(hex, 'hex'), { allowUnknownOutputs: true });
|
|
143
|
-
|
|
155
|
+
const input = getInputFromUtxoAndTx(addressInfo.network, utxo, transaction, addressInfo.type, publicKey);
|
|
156
|
+
if (outpointsSet.has(ordinal_api_1.OutPoint.toString(utxo)))
|
|
157
|
+
possibleInputs.push(input);
|
|
144
158
|
}));
|
|
145
159
|
const outputs = [
|
|
146
160
|
{
|
|
@@ -172,6 +186,8 @@ async function estimateTxFee(fromAddress, amount, publicKey, opReturnData, feeRa
|
|
|
172
186
|
dust: BigInt(546),
|
|
173
187
|
});
|
|
174
188
|
if (!transaction || !transaction.tx) {
|
|
189
|
+
console.debug('confirmedUtxos', confirmedUtxos);
|
|
190
|
+
console.debug('outputsFromAddress', outputsFromAddress);
|
|
175
191
|
console.debug(`fromAddress: ${fromAddress}, amount: ${amount}`);
|
|
176
192
|
console.debug(`publicKey: ${publicKey}, opReturnData: ${opReturnData}`);
|
|
177
193
|
console.debug(`feeRate: ${feeRate}, confirmationTarget: ${confirmationTarget}`);
|
|
@@ -179,4 +195,34 @@ async function estimateTxFee(fromAddress, amount, publicKey, opReturnData, feeRa
|
|
|
179
195
|
}
|
|
180
196
|
return transaction.fee;
|
|
181
197
|
}
|
|
198
|
+
async function getBalance(address) {
|
|
199
|
+
if (!address) {
|
|
200
|
+
return { confirmed: BigInt(0), unconfirmed: BigInt(0), total: BigInt(0) };
|
|
201
|
+
}
|
|
202
|
+
const addressInfo = (0, bitcoin_address_validation_1.getAddressInfo)(address);
|
|
203
|
+
const esploraClient = new esplora_1.EsploraClient(addressInfo.network);
|
|
204
|
+
const ordinalsClient = new ordinal_api_1.OrdinalsClient(addressInfo.network);
|
|
205
|
+
const [outputs, cardinalOutputs] = await Promise.all([
|
|
206
|
+
esploraClient.getAddressUtxos(address),
|
|
207
|
+
ordinalsClient.getOutputsFromAddress(address, 'cardinal'),
|
|
208
|
+
]);
|
|
209
|
+
const cardinalOutputsSet = new Set(cardinalOutputs.map((output) => output.outpoint));
|
|
210
|
+
const total = outputs.reduce((acc, output) => {
|
|
211
|
+
if (cardinalOutputsSet.has(ordinal_api_1.OutPoint.toString(output))) {
|
|
212
|
+
return acc + output.value;
|
|
213
|
+
}
|
|
214
|
+
return acc;
|
|
215
|
+
}, 0);
|
|
216
|
+
const confirmed = outputs.reduce((acc, output) => {
|
|
217
|
+
if (cardinalOutputsSet.has(ordinal_api_1.OutPoint.toString(output)) && output.confirmed) {
|
|
218
|
+
return acc + output.value;
|
|
219
|
+
}
|
|
220
|
+
return acc;
|
|
221
|
+
}, 0);
|
|
222
|
+
return {
|
|
223
|
+
confirmed: BigInt(confirmed),
|
|
224
|
+
unconfirmed: BigInt(total - confirmed),
|
|
225
|
+
total: BigInt(total),
|
|
226
|
+
};
|
|
227
|
+
}
|
|
182
228
|
//# sourceMappingURL=utxo.js.map
|
package/dist/wallet/utxo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utxo.js","sourceRoot":"","sources":["../../src/wallet/utxo.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utxo.js","sourceRoot":"","sources":["../../src/wallet/utxo.ts"],"names":[],"mappings":"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"}
|