@rosen-bridge/rosen-extractor 11.2.2 → 12.0.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/CHANGELOG.md +24 -0
- package/README.md +10 -0
- package/dist/getRosenData/abstract/abstractRosenDataExtractor.d.ts +1 -1
- package/dist/getRosenData/abstract/abstractRosenDataExtractor.d.ts.map +1 -1
- package/dist/getRosenData/abstract/abstractRosenDataExtractor.js +3 -3
- package/dist/getRosenData/bitcoin/bitcoinEsploraRosenExtractor.d.ts +3 -3
- package/dist/getRosenData/bitcoin/bitcoinEsploraRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/bitcoin/bitcoinEsploraRosenExtractor.js +2 -2
- package/dist/getRosenData/bitcoin/bitcoinRosenExtractor.d.ts +3 -3
- package/dist/getRosenData/bitcoin/bitcoinRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/bitcoin/bitcoinRosenExtractor.js +3 -3
- package/dist/getRosenData/bitcoin/bitcoinRpcRosenExtractor.d.ts +3 -3
- package/dist/getRosenData/bitcoin/bitcoinRpcRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/bitcoin/bitcoinRpcRosenExtractor.js +2 -2
- package/dist/getRosenData/bitcoin/utils.d.ts.map +1 -1
- package/dist/getRosenData/bitcoin/utils.js +1 -1
- package/dist/getRosenData/bitcoin-runes/bitcoinRunesEsploraRosenExtractor.d.ts +4 -4
- package/dist/getRosenData/bitcoin-runes/bitcoinRunesEsploraRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/bitcoin-runes/bitcoinRunesEsploraRosenExtractor.js +4 -4
- package/dist/getRosenData/bitcoin-runes/bitcoinRunesRosenExtractor.d.ts +2 -2
- package/dist/getRosenData/bitcoin-runes/bitcoinRunesRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/bitcoin-runes/bitcoinRunesRosenExtractor.js +1 -1
- package/dist/getRosenData/bitcoin-runes/bitcoinRunesRpcRosenExtractor.d.ts +4 -4
- package/dist/getRosenData/bitcoin-runes/bitcoinRunesRpcRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/bitcoin-runes/bitcoinRunesRpcRosenExtractor.js +4 -4
- package/dist/getRosenData/bitcoin-runes/utils.d.ts.map +1 -1
- package/dist/getRosenData/bitcoin-runes/utils.js +1 -1
- package/dist/getRosenData/cardano/cardanoBlockFrostRosenExtractor.d.ts +1 -1
- package/dist/getRosenData/cardano/cardanoBlockFrostRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/cardano/cardanoBlockFrostRosenExtractor.js +3 -3
- package/dist/getRosenData/cardano/cardanoKoiosRosenExtractor.d.ts +2 -2
- package/dist/getRosenData/cardano/cardanoKoiosRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/cardano/cardanoKoiosRosenExtractor.js +3 -3
- package/dist/getRosenData/cardano/cardanoOgmiosRosenExtractor.d.ts +1 -1
- package/dist/getRosenData/cardano/cardanoOgmiosRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/cardano/cardanoOgmiosRosenExtractor.js +3 -3
- package/dist/getRosenData/cardano/cardanoRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/cardano/cardanoRosenExtractor.js +1 -1
- package/dist/getRosenData/cardano/types.d.ts +1 -48
- package/dist/getRosenData/cardano/types.d.ts.map +1 -1
- package/dist/getRosenData/cardano/types.js +1 -1
- package/dist/getRosenData/cardano/utils.d.ts.map +1 -1
- package/dist/getRosenData/cardano/utils.js +2 -1
- package/dist/getRosenData/const.d.ts +2 -0
- package/dist/getRosenData/const.d.ts.map +1 -1
- package/dist/getRosenData/const.js +4 -1
- package/dist/getRosenData/doge/dogeEsploraRosenExtractor.d.ts +3 -3
- package/dist/getRosenData/doge/dogeEsploraRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/doge/dogeEsploraRosenExtractor.js +3 -3
- package/dist/getRosenData/doge/dogeRosenExtractor.d.ts +3 -3
- package/dist/getRosenData/doge/dogeRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/doge/dogeRosenExtractor.js +4 -4
- package/dist/getRosenData/doge/dogeRpcRosenExtractor.d.ts +3 -3
- package/dist/getRosenData/doge/dogeRpcRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/doge/dogeRpcRosenExtractor.js +3 -3
- package/dist/getRosenData/doge/types.d.ts +0 -6
- package/dist/getRosenData/doge/types.d.ts.map +1 -1
- package/dist/getRosenData/doge/types.js +1 -1
- package/dist/getRosenData/doge/utils.d.ts +2 -2
- package/dist/getRosenData/doge/utils.d.ts.map +1 -1
- package/dist/getRosenData/doge/utils.js +5 -26
- package/dist/getRosenData/ergo/ergoNodeRosenExtractor.d.ts +3 -3
- package/dist/getRosenData/ergo/ergoNodeRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/ergo/ergoNodeRosenExtractor.js +3 -3
- package/dist/getRosenData/ergo/ergoRosenExtractor.d.ts +3 -3
- package/dist/getRosenData/ergo/ergoRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/ergo/ergoRosenExtractor.js +3 -3
- package/dist/getRosenData/evm/evmEthersRosenExtractor.d.ts +3 -3
- package/dist/getRosenData/evm/evmEthersRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/evm/evmEthersRosenExtractor.js +2 -2
- package/dist/getRosenData/evm/evmRosenExtractor.d.ts +3 -3
- package/dist/getRosenData/evm/evmRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/evm/evmRosenExtractor.js +2 -2
- package/dist/getRosenData/evm/evmRpcRosenExtractor.d.ts +3 -3
- package/dist/getRosenData/evm/evmRpcRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/evm/evmRpcRosenExtractor.js +1 -1
- package/dist/getRosenData/evm/utils.d.ts.map +1 -1
- package/dist/getRosenData/evm/utils.js +1 -1
- package/dist/getRosenData/firo/firoRosenExtractor.d.ts +3 -3
- package/dist/getRosenData/firo/firoRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/firo/firoRosenExtractor.js +2 -2
- package/dist/getRosenData/firo/firoRpcRosenExtractor.d.ts +3 -3
- package/dist/getRosenData/firo/firoRpcRosenExtractor.d.ts.map +1 -1
- package/dist/getRosenData/firo/firoRpcRosenExtractor.js +1 -1
- package/dist/getRosenData/firo/utils.d.ts.map +1 -1
- package/dist/getRosenData/firo/utils.js +2 -2
- package/dist/getRosenData/handshake/constants.d.ts +13 -0
- package/dist/getRosenData/handshake/constants.d.ts.map +1 -0
- package/dist/getRosenData/handshake/constants.js +13 -0
- package/dist/getRosenData/handshake/handshakeRosenExtractor.d.ts +22 -0
- package/dist/getRosenData/handshake/handshakeRosenExtractor.d.ts.map +1 -0
- package/dist/getRosenData/handshake/handshakeRosenExtractor.js +104 -0
- package/dist/getRosenData/handshake/handshakeRpcRosenExtractor.d.ts +22 -0
- package/dist/getRosenData/handshake/handshakeRpcRosenExtractor.d.ts.map +1 -0
- package/dist/getRosenData/handshake/handshakeRpcRosenExtractor.js +106 -0
- package/dist/getRosenData/handshake/types.d.ts +71 -0
- package/dist/getRosenData/handshake/types.d.ts.map +1 -0
- package/dist/getRosenData/handshake/types.js +2 -0
- package/dist/getRosenData/handshake/utils.d.ts +23 -0
- package/dist/getRosenData/handshake/utils.d.ts.map +1 -0
- package/dist/getRosenData/handshake/utils.js +67 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +3 -3
- package/package.json +17 -19
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import JsonBigInt from '@rosen-bridge/json-bigint';
|
|
2
|
+
import { parseRosenData } from '../../utils';
|
|
3
|
+
import AbstractRosenDataExtractor from '../abstract/abstractRosenDataExtractor';
|
|
4
|
+
import { HANDSHAKE_CHAIN, HANDSHAKE_NATIVE_TOKEN } from '../const';
|
|
5
|
+
import { addressToHash, extractDataFromOutputs } from './utils';
|
|
6
|
+
export class HandshakeRosenExtractor extends AbstractRosenDataExtractor {
|
|
7
|
+
chain = HANDSHAKE_CHAIN;
|
|
8
|
+
lockAddressHash;
|
|
9
|
+
constructor(lockAddress, tokens, logger) {
|
|
10
|
+
super(lockAddress, tokens, logger);
|
|
11
|
+
this.lockAddressHash = addressToHash(lockAddress);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* extracts RosenData from given lock transaction in HandshakeTx format
|
|
15
|
+
* @param serializedTransaction stringified transaction in HandshakeTx format
|
|
16
|
+
*/
|
|
17
|
+
extractData = (serializedTransaction) => {
|
|
18
|
+
let transaction;
|
|
19
|
+
try {
|
|
20
|
+
transaction = JsonBigInt.parse(serializedTransaction);
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
throw new Error(`Failed to parse transaction json to HandshakeTx format while extracting rosen data: ${e}`);
|
|
24
|
+
}
|
|
25
|
+
const baseError = `No rosen data found for tx [${transaction.id}]`;
|
|
26
|
+
try {
|
|
27
|
+
const outputs = transaction.outputs;
|
|
28
|
+
if (outputs.length < 2) {
|
|
29
|
+
this.logger.debug(baseError + `: Insufficient number of outputs`);
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
// Find lock output and position
|
|
33
|
+
const lockOutputIndex = outputs.findIndex((output) => output.address?.hash === this.lockAddressHash);
|
|
34
|
+
if (lockOutputIndex === -1) {
|
|
35
|
+
this.logger.debug(baseError + `: Lock output not found`);
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
const lockOutput = outputs[lockOutputIndex];
|
|
39
|
+
// Extract data from outputs using utility function
|
|
40
|
+
const reconstructedData = extractDataFromOutputs(outputs, lockOutputIndex);
|
|
41
|
+
if (!reconstructedData) {
|
|
42
|
+
this.logger.debug(baseError + `: No data chunks found`);
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
// Parse the reconstructed data
|
|
46
|
+
let rosenData;
|
|
47
|
+
try {
|
|
48
|
+
rosenData = parseRosenData(reconstructedData);
|
|
49
|
+
this.logger.debug(`Successfully extracted Rosen data for [${rosenData.toChain}]`);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
this.logger.debug(baseError + `: Failed to parse reconstructed data: ${e}`);
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
// Find asset transformation using the lock output
|
|
56
|
+
const assetTransformation = this.getAssetTransformation(lockOutput, rosenData.toChain);
|
|
57
|
+
if (!assetTransformation) {
|
|
58
|
+
this.logger.debug(baseError + `: Failed to find rosen asset transformation`);
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
const fromAddress = `box:${transaction.inputs[0].txId}.${transaction.inputs[0].index}`;
|
|
62
|
+
return {
|
|
63
|
+
toChain: rosenData.toChain,
|
|
64
|
+
toAddress: rosenData.toAddress,
|
|
65
|
+
bridgeFee: rosenData.bridgeFee,
|
|
66
|
+
networkFee: rosenData.networkFee,
|
|
67
|
+
fromAddress: fromAddress,
|
|
68
|
+
sourceChainTokenId: assetTransformation.from,
|
|
69
|
+
amount: assetTransformation.amount,
|
|
70
|
+
targetChainTokenId: assetTransformation.to,
|
|
71
|
+
sourceTxId: transaction.id,
|
|
72
|
+
rawData: outputs
|
|
73
|
+
.map((output) => `${output.address?.hash}:${output.value}`)
|
|
74
|
+
.join(','),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
this.logger.debug(`An error occurred while getting Handshake rosen data: ${e}`);
|
|
79
|
+
if (e instanceof Error && e.stack) {
|
|
80
|
+
this.logger.debug(e.stack);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return undefined;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* extracts and builds token transformation from UTXO and tokenMap
|
|
87
|
+
* @param box transaction output
|
|
88
|
+
* @param toChain event target chain
|
|
89
|
+
*/
|
|
90
|
+
getAssetTransformation = (box, toChain) => {
|
|
91
|
+
const wrappedHns = this.tokens.search(HANDSHAKE_CHAIN, {
|
|
92
|
+
tokenId: HANDSHAKE_NATIVE_TOKEN,
|
|
93
|
+
});
|
|
94
|
+
if (wrappedHns.length > 0 && Object.hasOwn(wrappedHns[0], toChain)) {
|
|
95
|
+
return {
|
|
96
|
+
from: HANDSHAKE_NATIVE_TOKEN,
|
|
97
|
+
to: this.tokens.getID(wrappedHns[0], toChain),
|
|
98
|
+
amount: box.value.toString(),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
return undefined;
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZHNoYWtlUm9zZW5FeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2hhbmRzaGFrZS9oYW5kc2hha2VSb3NlbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUduRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sMEJBQTBCLE1BQU0sd0NBQXdDLENBQUM7QUFFaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWhFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSwwQkFBa0M7SUFDcEUsS0FBSyxHQUFHLGVBQWUsQ0FBQztJQUN2QixlQUFlLENBQVM7SUFFbEMsWUFBWSxXQUFtQixFQUFFLE1BQWdCLEVBQUUsTUFBdUI7UUFDeEUsS0FBSyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsR0FBRyxDQUFDLHFCQUE2QixFQUF5QixFQUFFO1FBQ3JFLElBQUksV0FBd0IsQ0FBQztRQUM3QixJQUFJLENBQUM7WUFDSCxXQUFXLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FDYix1RkFBdUYsQ0FBQyxFQUFFLENBQzNGLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxTQUFTLEdBQUcsK0JBQStCLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQztR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QUFJLENBQUMsR0FBRyxDQUFDO2FBQ2IsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YseURBQXlELENBQUMsRUFBRSxDQUM3RCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0lBRUY7Ozs7T0FJRztJQUNILHNCQUFzQixHQUFHLENBQ3ZCLEdBQXNCLEVBQ3RCLE9BQWUsRUFDa0IsRUFBRTtRQUNuQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUU7WUFDckQsT0FBTyxFQUFFLHNCQUFzQjtTQUNoQyxDQUFDLENBQUM7UUFFSCxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkUsT0FBTztnQkFDTCxJQUFJLEVBQUUsc0JBQXNCO2dCQUM1QixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztnQkFDN0MsTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO2FBQzdCLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdExvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCBKc29uQmlnSW50IGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuaW1wb3J0IHsgVG9rZW5NYXAgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Rva2Vucyc7XG5cbmltcG9ydCB7IHBhcnNlUm9zZW5EYXRhIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IEFic3RyYWN0Um9zZW5EYXRhRXh0cmFjdG9yIGZyb20gJy4uL2Fic3RyYWN0L2Fic3RyYWN0Um9zZW5EYXRhRXh0cmFjdG9yJztcbmltcG9ydCB7IFJvc2VuRGF0YSwgVG9rZW5UcmFuc2Zvcm1hdGlvbiB9IGZyb20gJy4uL2Fic3RyYWN0L3R5cGVzJztcbmltcG9ydCB7IEhBTkRTSEFLRV9DSEFJTiwgSEFORFNIQUtFX05BVElWRV9UT0tFTiB9IGZyb20gJy4uL2NvbnN0JztcbmltcG9ydCB7IEhhbmRzaGFrZVR4LCBIYW5kc2hha2VUeE91dHB1dCwgSGFuZHNoYWtlUm9zZW5EYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBhZGRyZXNzVG9IYXNoLCBleHRyYWN0RGF0YUZyb21PdXRwdXRzIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBIYW5kc2hha2VSb3NlbkV4dHJhY3RvciBleHRlbmRzIEFic3RyYWN0Um9zZW5EYXRhRXh0cmFjdG9yPHN0cmluZz4ge1xuICByZWFkb25seSBjaGFpbiA9IEhBTkRTSEFLRV9DSEFJTjtcbiAgcHJvdGVjdGVkIGxvY2tBZGRyZXNzSGFzaDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGxvY2tBZGRyZXNzOiBzdHJpbmcsIHRva2VuczogVG9rZW5NYXAsIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyKSB7XG4gICAgc3VwZXIobG9ja0FkZHJlc3MsIHRva2VucywgbG9nZ2VyKTtcbiAgICB0aGlzLmxvY2tBZGRyZXNzSGFzaCA9IGFkZHJlc3NUb0hhc2gobG9ja0FkZHJlc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIFJvc2VuRGF0YSBmcm9tIGdpdmVuIGxvY2sgdHJhbnNhY3Rpb24gaW4gSGFuZHNoYWtlVHggZm9ybWF0XG4gICAqIEBwYXJhbSBzZXJpYWxpemVkVHJhbnNhY3Rpb24gc3RyaW5naWZpZWQgdHJhbnNhY3Rpb24gaW4gSGFuZHNoYWtlVHggZm9ybWF0XG4gICAqL1xuICBleHRyYWN0RGF0YSA9IChzZXJpYWxpemVkVHJhbnNhY3Rpb246IHN0cmluZyk6IFJvc2VuRGF0YSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgbGV0IHRyYW5zYWN0aW9uOiBIYW5kc2hha2VUeDtcbiAgICB0cnkge1xuICAgICAgdHJhbnNhY3Rpb24gPSBKc29uQmlnSW50LnBhcnNlKHNlcmlhbGl6ZWRUcmFuc2FjdGlvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIHRyYW5zYWN0aW9uIGpzb24gdG8gSGFuZHNoYWtlVHggZm9ybWF0IHdoaWxlIGV4dHJhY3Rpbmcgcm9zZW4gZGF0YTogJHtlfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGJhc2VFcnJvciA9IGBObyByb3NlbiBkYXRhIGZvdW5kIGZvciB0eCBbJHt0cmFuc2FjdGlvbi5pZH1dYDtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3V0cHV0cyA9IHRyYW5zYWN0aW9uLm91dHB1dHM7XG4gICAgICBpZiAob3V0cHV0cy5sZW5ndGggPCAyKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGJhc2VFcnJvciArIGA6IEluc3VmZmljaWVudCBudW1iZXIgb2Ygb3V0cHV0c2ApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvLyBGaW5kIGxvY2sgb3V0cHV0IGFuZCBwb3NpdGlvblxuICAgICAgY29uc3QgbG9ja091dHB1dEluZGV4ID0gb3V0cHV0cy5maW5kSW5kZXgoXG4gICAgICAgIChvdXRwdXQpID0+IG91dHB1dC5hZGRyZXNzPy5oYXNoID09PSB0aGlzLmxvY2tBZGRyZXNzSGFzaCxcbiAgICAgICk7XG5cbiAgICAgIGlmIChsb2NrT3V0cHV0SW5kZXggPT09IC0xKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGJhc2VFcnJvciArIGA6IExvY2sgb3V0cHV0IG5vdCBmb3VuZGApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsb2NrT3V0cHV0ID0gb3V0cHV0c1tsb2NrT3V0cHV0SW5kZXhdO1xuXG4gICAgICAvLyBFeHRyYWN0IGRhdGEgZnJvbSBvdXRwdXRzIHVzaW5nIHV0aWxpdHkgZnVuY3Rpb25cbiAgICAgIGNvbnN0IHJlY29uc3RydWN0ZWREYXRhID0gZXh0cmFjdERhdGFGcm9tT3V0cHV0cyhcbiAgICAgICAgb3V0cHV0cyxcbiAgICAgICAgbG9ja091dHB1dEluZGV4LFxuICAgICAgKTtcblxuICAgICAgaWYgKCFyZWNvbnN0cnVjdGVkRGF0YSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhiYXNlRXJyb3IgKyBgOiBObyBkYXRhIGNodW5rcyBmb3VuZGApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvLyBQYXJzZSB0aGUgcmVjb25zdHJ1Y3RlZCBkYXRhXG4gICAgICBsZXQgcm9zZW5EYXRhOiBIYW5kc2hha2VSb3NlbkRhdGEgfCB1bmRlZmluZWQ7XG4gICAgICB0cnkge1xuICAgICAgICByb3NlbkRhdGEgPSBwYXJzZVJvc2VuRGF0YShyZWNvbnN0cnVjdGVkRGF0YSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBTdWNjZXNzZnVsbHkgZXh0cmFjdGVkIFJvc2VuIGRhdGEgZm9yIFske3Jvc2VuRGF0YS50b0NoYWlufV1gLFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBGYWlsZWQgdG8gcGFyc2UgcmVjb25zdHJ1Y3RlZCBkYXRhOiAke2V9YCxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgLy8gRmluZCBhc3NldCB0cmFuc2Zvcm1hdGlvbiB1c2luZyB0aGUgbG9jayBvdXRwdXRcbiAgICAgIGNvbnN0IGFzc2V0VHJhbnNmb3JtYXRpb24gPSB0aGlzLmdldEFzc2V0VHJhbnNmb3JtYXRpb24oXG4gICAgICAgIGxvY2tPdXRwdXQsXG4gICAgICAgIHJvc2VuRGF0YS50b0NoYWluLFxuICAgICAgKTtcblxuICAgICAgaWYgKCFhc3NldFRyYW5zZm9ybWF0aW9uKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGJhc2VFcnJvciArIGA6IEZhaWxlZCB0byBmaW5kIHJvc2VuIGFzc2V0IHRyYW5zZm9ybWF0aW9uYCxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZnJvbUFkZHJlc3MgPSBgYm94OiR7dHJhbnNhY3Rpb24uaW5wdXRzWzBdLnR4SWR9LiR7dHJhbnNhY3Rpb24uaW5wdXRzWzBdLmluZGV4fWA7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0b0NoYWluOiByb3NlbkRhdGEudG9DaGFpbixcbiAgICAgICAgdG9BZGRyZXNzOiByb3NlbkRhdGEudG9BZGRyZXNzLFxuICAgICAgICBicmlkZ2VGZWU6IHJvc2VuRGF0YS5icmlkZ2VGZWUsXG4gICAgICAgIG5ldHdvcmtGZWU6IHJvc2VuRGF0YS5uZXR3b3JrRmVlLFxuICAgICAgICBmcm9tQWRkcmVzczogZnJvbUFkZHJlc3MsXG4gICAgICAgIHNvdXJjZUNoYWluVG9rZW5JZDogYXNzZXRUcmFuc2Zvcm1hdGlvbi5mcm9tLFxuICAgICAgICBhbW91bnQ6IGFzc2V0VHJhbnNmb3JtYXRpb24uYW1vdW50LFxuICAgICAgICB0YXJnZXRDaGFpblRva2VuSWQ6IGFzc2V0VHJhbnNmb3JtYXRpb24udG8sXG4gICAgICAgIHNvdXJjZVR4SWQ6IHRyYW5zYWN0aW9uLmlkLFxuICAgICAgICByYXdEYXRhOiBvdXRwdXRzXG4gICAgICAgICAgLm1hcCgob3V0cHV0KSA9PiBgJHtvdXRwdXQuYWRkcmVzcz8uaGFzaH06JHtvdXRwdXQudmFsdWV9YClcbiAgICAgICAgICAuam9pbignLCcpLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGdldHRpbmcgSGFuZHNoYWtlIHJvc2VuIGRhdGE6ICR7ZX1gLFxuICAgICAgKTtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5zdGFjaykge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlLnN0YWNrKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfTtcblxuICAvKipcbiAgICogZXh0cmFjdHMgYW5kIGJ1aWxkcyB0b2tlbiB0cmFuc2Zvcm1hdGlvbiBmcm9tIFVUWE8gYW5kIHRva2VuTWFwXG4gICAqIEBwYXJhbSBib3ggdHJhbnNhY3Rpb24gb3V0cHV0XG4gICAqIEBwYXJhbSB0b0NoYWluIGV2ZW50IHRhcmdldCBjaGFpblxuICAgKi9cbiAgZ2V0QXNzZXRUcmFuc2Zvcm1hdGlvbiA9IChcbiAgICBib3g6IEhhbmRzaGFrZVR4T3V0cHV0LFxuICAgIHRvQ2hhaW46IHN0cmluZyxcbiAgKTogVG9rZW5UcmFuc2Zvcm1hdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3Qgd3JhcHBlZEhucyA9IHRoaXMudG9rZW5zLnNlYXJjaChIQU5EU0hBS0VfQ0hBSU4sIHtcbiAgICAgIHRva2VuSWQ6IEhBTkRTSEFLRV9OQVRJVkVfVE9LRU4sXG4gICAgfSk7XG5cbiAgICBpZiAod3JhcHBlZEhucy5sZW5ndGggPiAwICYmIE9iamVjdC5oYXNPd24od3JhcHBlZEhuc1swXSwgdG9DaGFpbikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZyb206IEhBTkRTSEFLRV9OQVRJVkVfVE9LRU4sXG4gICAgICAgIHRvOiB0aGlzLnRva2Vucy5nZXRJRCh3cmFwcGVkSG5zWzBdLCB0b0NoYWluKSxcbiAgICAgICAgYW1vdW50OiBib3gudmFsdWUudG9TdHJpbmcoKSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
2
|
+
import { TokenMap } from '@rosen-bridge/tokens';
|
|
3
|
+
import AbstractRosenDataExtractor from '../abstract/abstractRosenDataExtractor';
|
|
4
|
+
import { RosenData, TokenTransformation } from '../abstract/types';
|
|
5
|
+
import { HandshakeRpcTransaction, HandshakeRpcTxOutput } from './types';
|
|
6
|
+
export declare class HandshakeRpcRosenExtractor extends AbstractRosenDataExtractor<HandshakeRpcTransaction> {
|
|
7
|
+
readonly chain = "handshake";
|
|
8
|
+
protected lockAddressHash: string;
|
|
9
|
+
constructor(lockAddress: string, tokens: TokenMap, logger?: AbstractLogger);
|
|
10
|
+
/**
|
|
11
|
+
* extracts RosenData from given lock transaction in Rpc format
|
|
12
|
+
* @param transaction the lock transaction in Rpc format
|
|
13
|
+
*/
|
|
14
|
+
extractData: (transaction: HandshakeRpcTransaction) => RosenData | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* extracts and builds token transformation from UTXO and tokenMap
|
|
17
|
+
* @param box transaction output
|
|
18
|
+
* @param toChain event target chain
|
|
19
|
+
*/
|
|
20
|
+
getAssetTransformation: (box: HandshakeRpcTxOutput, toChain: string) => TokenTransformation | undefined;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=handshakeRpcRosenExtractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handshakeRpcRosenExtractor.d.ts","sourceRoot":"","sources":["../../../lib/getRosenData/handshake/handshakeRpcRosenExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EAErB,MAAM,SAAS,CAAC;AAOjB,qBAAa,0BAA2B,SAAQ,0BAA0B,CAAC,uBAAuB,CAAC;IACjG,QAAQ,CAAC,KAAK,eAAmB;IACjC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;gBAEtB,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,cAAc;IAK1E;;;OAGG;IACH,WAAW,GACT,aAAa,uBAAuB,KACnC,SAAS,GAAG,SAAS,CA0FtB;IAEF;;;;OAIG;IACH,sBAAsB,GACpB,KAAK,oBAAoB,EACzB,SAAS,MAAM,KACd,mBAAmB,GAAG,SAAS,CAgBhC;CACH"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { parseRosenData } from '../../utils';
|
|
2
|
+
import AbstractRosenDataExtractor from '../abstract/abstractRosenDataExtractor';
|
|
3
|
+
import { HANDSHAKE_CHAIN, HANDSHAKE_NATIVE_TOKEN } from '../const';
|
|
4
|
+
import { addressToHash, convertHnsToDollarydoos, extractDataFromOutputs, } from './utils';
|
|
5
|
+
export class HandshakeRpcRosenExtractor extends AbstractRosenDataExtractor {
|
|
6
|
+
chain = HANDSHAKE_CHAIN;
|
|
7
|
+
lockAddressHash;
|
|
8
|
+
constructor(lockAddress, tokens, logger) {
|
|
9
|
+
super(lockAddress, tokens, logger);
|
|
10
|
+
this.lockAddressHash = addressToHash(lockAddress);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* extracts RosenData from given lock transaction in Rpc format
|
|
14
|
+
* @param transaction the lock transaction in Rpc format
|
|
15
|
+
*/
|
|
16
|
+
extractData = (transaction) => {
|
|
17
|
+
const baseError = `No rosen data found for tx [${transaction.txid}]`;
|
|
18
|
+
try {
|
|
19
|
+
const outputs = transaction.vout;
|
|
20
|
+
if (outputs.length < 2) {
|
|
21
|
+
this.logger.debug(baseError + `: Insufficient number of outputs`);
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
// Find lock output first (need to use original RPC output for value)
|
|
25
|
+
const lockOutputIndex = outputs.findIndex((output) => output.address?.hash === this.lockAddressHash);
|
|
26
|
+
if (lockOutputIndex === -1) {
|
|
27
|
+
this.logger.debug(baseError + `: Lock output not found`);
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
const lockOutputRpc = outputs[lockOutputIndex];
|
|
31
|
+
// Convert RPC outputs to standard format (HNS to dollarydoos)
|
|
32
|
+
const convertedOutputs = outputs.map((output) => {
|
|
33
|
+
const dollarydoos = convertHnsToDollarydoos(output.value);
|
|
34
|
+
return {
|
|
35
|
+
value: BigInt(dollarydoos),
|
|
36
|
+
address: output.address,
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
// Extract data from outputs using utility function
|
|
40
|
+
const reconstructedData = extractDataFromOutputs(convertedOutputs, lockOutputIndex);
|
|
41
|
+
if (!reconstructedData) {
|
|
42
|
+
this.logger.debug(baseError + `: No data chunks found`);
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
// Parse the reconstructed data
|
|
46
|
+
let rosenData;
|
|
47
|
+
try {
|
|
48
|
+
rosenData = parseRosenData(reconstructedData);
|
|
49
|
+
this.logger.debug(`Successfully extracted Rosen data for [${rosenData.toChain}]`);
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
this.logger.debug(baseError + `: Failed to parse extracted data: ${e}`);
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
// Find asset transformation using the lock output
|
|
56
|
+
const assetTransformation = this.getAssetTransformation(lockOutputRpc, rosenData.toChain);
|
|
57
|
+
if (!assetTransformation) {
|
|
58
|
+
this.logger.debug(baseError + `: Failed to find rosen asset transformation`);
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
const fromAddress = `box:${transaction.vin[0].txid}.${transaction.vin[0].vout}`;
|
|
62
|
+
return {
|
|
63
|
+
toChain: rosenData.toChain,
|
|
64
|
+
toAddress: rosenData.toAddress,
|
|
65
|
+
bridgeFee: rosenData.bridgeFee,
|
|
66
|
+
networkFee: rosenData.networkFee,
|
|
67
|
+
fromAddress: fromAddress,
|
|
68
|
+
sourceChainTokenId: assetTransformation.from,
|
|
69
|
+
amount: assetTransformation.amount,
|
|
70
|
+
targetChainTokenId: assetTransformation.to,
|
|
71
|
+
sourceTxId: transaction.txid,
|
|
72
|
+
rawData: outputs
|
|
73
|
+
.map((output) => `${output.address?.hash}:${output.value}`)
|
|
74
|
+
.join(','),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
this.logger.debug(`An error occurred while getting Handshake rosen data from Rpc: ${e}`);
|
|
79
|
+
if (e instanceof Error && e.stack) {
|
|
80
|
+
this.logger.debug(e.stack);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return undefined;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* extracts and builds token transformation from UTXO and tokenMap
|
|
87
|
+
* @param box transaction output
|
|
88
|
+
* @param toChain event target chain
|
|
89
|
+
*/
|
|
90
|
+
getAssetTransformation = (box, toChain) => {
|
|
91
|
+
const wrappedHns = this.tokens.search(HANDSHAKE_CHAIN, {
|
|
92
|
+
tokenId: HANDSHAKE_NATIVE_TOKEN,
|
|
93
|
+
});
|
|
94
|
+
if (wrappedHns.length > 0 && Object.hasOwn(wrappedHns[0], toChain)) {
|
|
95
|
+
// Convert HNS to dollarydoos
|
|
96
|
+
const dollarydoos = convertHnsToDollarydoos(box.value);
|
|
97
|
+
return {
|
|
98
|
+
from: HANDSHAKE_NATIVE_TOKEN,
|
|
99
|
+
to: this.tokens.getID(wrappedHns[0], toChain),
|
|
100
|
+
amount: dollarydoos,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
return undefined;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZHNoYWtlUnBjUm9zZW5FeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2hhbmRzaGFrZS9oYW5kc2hha2VScGNSb3NlbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sMEJBQTBCLE1BQU0sd0NBQXdDLENBQUM7QUFFaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQU1uRSxPQUFPLEVBQ0wsYUFBYSxFQUNiLHVCQUF1QixFQUN2QixzQkFBc0IsR0FDdkIsTUFBTSxTQUFTLENBQUM7QUFFakIsTUFBTSxPQUFPLDBCQUEyQixTQUFRLDBCQUFtRDtJQUN4RixLQUFLLEdBQUcsZUFBZSxDQUFDO0lBQ3ZCLGVBQWUsQ0FBUztJQUVsQyxZQUFZLFdBQW1CLEVBQUUsTUFBZ0IsRUFBRSxNQUF1QjtRQUN4RSxLQUFLLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsZUFBZSxHQUFHLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVyxHQUFHLENBQ1osV0FBb0MsRUFDYixFQUFFO1FBQ3pCLE1BQU0sU0FBUyxHQUFHLCtCQUErQixXQUFXLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDckUsSUFBSSxDQUFDO1lBQ0gsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNqQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxrQ0FBa0MsQ0FBQyxDQUFDO2dCQUNsRSxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBRUQs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ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgVG9rZW5NYXAgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Rva2Vucyc7XG5cbmltcG9ydCB7IHBhcnNlUm9zZW5EYXRhIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IEFic3RyYWN0Um9zZW5EYXRhRXh0cmFjdG9yIGZyb20gJy4uL2Fic3RyYWN0L2Fic3RyYWN0Um9zZW5EYXRhRXh0cmFjdG9yJztcbmltcG9ydCB7IFJvc2VuRGF0YSwgVG9rZW5UcmFuc2Zvcm1hdGlvbiB9IGZyb20gJy4uL2Fic3RyYWN0L3R5cGVzJztcbmltcG9ydCB7IEhBTkRTSEFLRV9DSEFJTiwgSEFORFNIQUtFX05BVElWRV9UT0tFTiB9IGZyb20gJy4uL2NvbnN0JztcbmltcG9ydCB7XG4gIEhhbmRzaGFrZVJwY1RyYW5zYWN0aW9uLFxuICBIYW5kc2hha2VScGNUeE91dHB1dCxcbiAgSGFuZHNoYWtlUm9zZW5EYXRhLFxufSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7XG4gIGFkZHJlc3NUb0hhc2gsXG4gIGNvbnZlcnRIbnNUb0RvbGxhcnlkb29zLFxuICBleHRyYWN0RGF0YUZyb21PdXRwdXRzLFxufSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEhhbmRzaGFrZVJwY1Jvc2VuRXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3I8SGFuZHNoYWtlUnBjVHJhbnNhY3Rpb24+IHtcbiAgcmVhZG9ubHkgY2hhaW4gPSBIQU5EU0hBS0VfQ0hBSU47XG4gIHByb3RlY3RlZCBsb2NrQWRkcmVzc0hhc2g6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihsb2NrQWRkcmVzczogc3RyaW5nLCB0b2tlbnM6IFRva2VuTWFwLCBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlcikge1xuICAgIHN1cGVyKGxvY2tBZGRyZXNzLCB0b2tlbnMsIGxvZ2dlcik7XG4gICAgdGhpcy5sb2NrQWRkcmVzc0hhc2ggPSBhZGRyZXNzVG9IYXNoKGxvY2tBZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBleHRyYWN0cyBSb3NlbkRhdGEgZnJvbSBnaXZlbiBsb2NrIHRyYW5zYWN0aW9uIGluIFJwYyBmb3JtYXRcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIHRoZSBsb2NrIHRyYW5zYWN0aW9uIGluIFJwYyBmb3JtYXRcbiAgICovXG4gIGV4dHJhY3REYXRhID0gKFxuICAgIHRyYW5zYWN0aW9uOiBIYW5kc2hha2VScGNUcmFuc2FjdGlvbixcbiAgKTogUm9zZW5EYXRhIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBiYXNlRXJyb3IgPSBgTm8gcm9zZW4gZGF0YSBmb3VuZCBmb3IgdHggWyR7dHJhbnNhY3Rpb24udHhpZH1dYDtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3V0cHV0cyA9IHRyYW5zYWN0aW9uLnZvdXQ7XG4gICAgICBpZiAob3V0cHV0cy5sZW5ndGggPCAyKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGJhc2VFcnJvciArIGA6IEluc3VmZmljaWVudCBudW1iZXIgb2Ygb3V0cHV0c2ApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvLyBGaW5kIGxvY2sgb3V0cHV0IGZpcnN0IChuZWVkIHRvIHVzZSBvcmlnaW5hbCBSUEMgb3V0cHV0IGZvciB2YWx1ZSlcbiAgICAgIGNvbnN0IGxvY2tPdXRwdXRJbmRleCA9IG91dHB1dHMuZmluZEluZGV4KFxuICAgICAgICAob3V0cHV0KSA9PiBvdXRwdXQuYWRkcmVzcz8uaGFzaCA9PT0gdGhpcy5sb2NrQWRkcmVzc0hhc2gsXG4gICAgICApO1xuXG4gICAgICBpZiAobG9ja091dHB1dEluZGV4ID09PSAtMSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhiYXNlRXJyb3IgKyBgOiBMb2NrIG91dHB1dCBub3QgZm91bmRgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbG9ja091dHB1dFJwYyA9IG91dHB1dHNbbG9ja091dHB1dEluZGV4XTtcblxuICAgICAgLy8gQ29udmVydCBSUEMgb3V0cHV0cyB0byBzdGFuZGFyZCBmb3JtYXQgKEhOUyB0byBkb2xsYXJ5ZG9vcylcbiAgICAgIGNvbnN0IGNvbnZlcnRlZE91dHB1dHMgPSBvdXRwdXRzLm1hcCgob3V0cHV0KSA9PiB7XG4gICAgICAgIGNvbnN0IGRvbGxhcnlkb29zID0gY29udmVydEhuc1RvRG9sbGFyeWRvb3Mob3V0cHV0LnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB2YWx1ZTogQmlnSW50KGRvbGxhcnlkb29zKSxcbiAgICAgICAgICBhZGRyZXNzOiBvdXRwdXQuYWRkcmVzcyxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBFeHRyYWN0IGRhdGEgZnJvbSBvdXRwdXRzIHVzaW5nIHV0aWxpdHkgZnVuY3Rpb25cbiAgICAgIGNvbnN0IHJlY29uc3RydWN0ZWREYXRhID0gZXh0cmFjdERhdGFGcm9tT3V0cHV0cyhcbiAgICAgICAgY29udmVydGVkT3V0cHV0cyxcbiAgICAgICAgbG9ja091dHB1dEluZGV4LFxuICAgICAgKTtcblxuICAgICAgaWYgKCFyZWNvbnN0cnVjdGVkRGF0YSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhiYXNlRXJyb3IgKyBgOiBObyBkYXRhIGNodW5rcyBmb3VuZGApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvLyBQYXJzZSB0aGUgcmVjb25zdHJ1Y3RlZCBkYXRhXG4gICAgICBsZXQgcm9zZW5EYXRhOiBIYW5kc2hha2VSb3NlbkRhdGEgfCB1bmRlZmluZWQ7XG4gICAgICB0cnkge1xuICAgICAgICByb3NlbkRhdGEgPSBwYXJzZVJvc2VuRGF0YShyZWNvbnN0cnVjdGVkRGF0YSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBTdWNjZXNzZnVsbHkgZXh0cmFjdGVkIFJvc2VuIGRhdGEgZm9yIFske3Jvc2VuRGF0YS50b0NoYWlufV1gLFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhiYXNlRXJyb3IgKyBgOiBGYWlsZWQgdG8gcGFyc2UgZXh0cmFjdGVkIGRhdGE6ICR7ZX1gKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgLy8gRmluZCBhc3NldCB0cmFuc2Zvcm1hdGlvbiB1c2luZyB0aGUgbG9jayBvdXRwdXRcbiAgICAgIGNvbnN0IGFzc2V0VHJhbnNmb3JtYXRpb24gPSB0aGlzLmdldEFzc2V0VHJhbnNmb3JtYXRpb24oXG4gICAgICAgIGxvY2tPdXRwdXRScGMsXG4gICAgICAgIHJvc2VuRGF0YS50b0NoYWluLFxuICAgICAgKTtcblxuICAgICAgaWYgKCFhc3NldFRyYW5zZm9ybWF0aW9uKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGJhc2VFcnJvciArIGA6IEZhaWxlZCB0byBmaW5kIHJvc2VuIGFzc2V0IHRyYW5zZm9ybWF0aW9uYCxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZnJvbUFkZHJlc3MgPSBgYm94OiR7dHJhbnNhY3Rpb24udmluWzBdLnR4aWR9LiR7dHJhbnNhY3Rpb24udmluWzBdLnZvdXR9YDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRvQ2hhaW46IHJvc2VuRGF0YS50b0NoYWluLFxuICAgICAgICB0b0FkZHJlc3M6IHJvc2VuRGF0YS50b0FkZHJlc3MsXG4gICAgICAgIGJyaWRnZUZlZTogcm9zZW5EYXRhLmJyaWRnZUZlZSxcbiAgICAgICAgbmV0d29ya0ZlZTogcm9zZW5EYXRhLm5ldHdvcmtGZWUsXG4gICAgICAgIGZyb21BZGRyZXNzOiBmcm9tQWRkcmVzcyxcbiAgICAgICAgc291cmNlQ2hhaW5Ub2tlbklkOiBhc3NldFRyYW5zZm9ybWF0aW9uLmZyb20sXG4gICAgICAgIGFtb3VudDogYXNzZXRUcmFuc2Zvcm1hdGlvbi5hbW91bnQsXG4gICAgICAgIHRhcmdldENoYWluVG9rZW5JZDogYXNzZXRUcmFuc2Zvcm1hdGlvbi50byxcbiAgICAgICAgc291cmNlVHhJZDogdHJhbnNhY3Rpb24udHhpZCxcbiAgICAgICAgcmF3RGF0YTogb3V0cHV0c1xuICAgICAgICAgIC5tYXAoKG91dHB1dCkgPT4gYCR7b3V0cHV0LmFkZHJlc3M/Lmhhc2h9OiR7b3V0cHV0LnZhbHVlfWApXG4gICAgICAgICAgLmpvaW4oJywnKSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIEhhbmRzaGFrZSByb3NlbiBkYXRhIGZyb20gUnBjOiAke2V9YCxcbiAgICAgICk7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yICYmIGUuc3RhY2spIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoZS5zdGFjayk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIGFuZCBidWlsZHMgdG9rZW4gdHJhbnNmb3JtYXRpb24gZnJvbSBVVFhPIGFuZCB0b2tlbk1hcFxuICAgKiBAcGFyYW0gYm94IHRyYW5zYWN0aW9uIG91dHB1dFxuICAgKiBAcGFyYW0gdG9DaGFpbiBldmVudCB0YXJnZXQgY2hhaW5cbiAgICovXG4gIGdldEFzc2V0VHJhbnNmb3JtYXRpb24gPSAoXG4gICAgYm94OiBIYW5kc2hha2VScGNUeE91dHB1dCxcbiAgICB0b0NoYWluOiBzdHJpbmcsXG4gICk6IFRva2VuVHJhbnNmb3JtYXRpb24gfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHdyYXBwZWRIbnMgPSB0aGlzLnRva2Vucy5zZWFyY2goSEFORFNIQUtFX0NIQUlOLCB7XG4gICAgICB0b2tlbklkOiBIQU5EU0hBS0VfTkFUSVZFX1RPS0VOLFxuICAgIH0pO1xuXG4gICAgaWYgKHdyYXBwZWRIbnMubGVuZ3RoID4gMCAmJiBPYmplY3QuaGFzT3duKHdyYXBwZWRIbnNbMF0sIHRvQ2hhaW4pKSB7XG4gICAgICAvLyBDb252ZXJ0IEhOUyB0byBkb2xsYXJ5ZG9vc1xuICAgICAgY29uc3QgZG9sbGFyeWRvb3MgPSBjb252ZXJ0SG5zVG9Eb2xsYXJ5ZG9vcyhib3gudmFsdWUpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBmcm9tOiBIQU5EU0hBS0VfTkFUSVZFX1RPS0VOLFxuICAgICAgICB0bzogdGhpcy50b2tlbnMuZ2V0SUQod3JhcHBlZEhuc1swXSwgdG9DaGFpbiksXG4gICAgICAgIGFtb3VudDogZG9sbGFyeWRvb3MsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export interface HandshakeRosenData {
|
|
2
|
+
toChain: string;
|
|
3
|
+
toAddress: string;
|
|
4
|
+
bridgeFee: string;
|
|
5
|
+
networkFee: string;
|
|
6
|
+
}
|
|
7
|
+
export interface HandshakeRpcTxInput {
|
|
8
|
+
txid: string;
|
|
9
|
+
vout: number;
|
|
10
|
+
txinwitness: Array<string>;
|
|
11
|
+
sequence: number;
|
|
12
|
+
}
|
|
13
|
+
export interface HandshakeRpcTxOutput {
|
|
14
|
+
value: number;
|
|
15
|
+
n: number;
|
|
16
|
+
address: {
|
|
17
|
+
version: number;
|
|
18
|
+
hash: string;
|
|
19
|
+
string: string;
|
|
20
|
+
};
|
|
21
|
+
covenant: {
|
|
22
|
+
type: number;
|
|
23
|
+
action: string;
|
|
24
|
+
items: string[];
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface HandshakeRpcTransaction {
|
|
28
|
+
txid: string;
|
|
29
|
+
version: number;
|
|
30
|
+
size: number;
|
|
31
|
+
vsize: number;
|
|
32
|
+
locktime: number;
|
|
33
|
+
vin: Array<{
|
|
34
|
+
txid: string;
|
|
35
|
+
vout: number;
|
|
36
|
+
txinwitness?: string[];
|
|
37
|
+
sequence: number;
|
|
38
|
+
}>;
|
|
39
|
+
vout: Array<HandshakeRpcTxOutput>;
|
|
40
|
+
hash: string;
|
|
41
|
+
}
|
|
42
|
+
export interface HandshakeTxInput {
|
|
43
|
+
txId: string;
|
|
44
|
+
index: number;
|
|
45
|
+
}
|
|
46
|
+
export interface HandshakeTxOutput {
|
|
47
|
+
value: bigint;
|
|
48
|
+
address: {
|
|
49
|
+
version: number;
|
|
50
|
+
hash: string;
|
|
51
|
+
string: string;
|
|
52
|
+
};
|
|
53
|
+
covenant: {
|
|
54
|
+
type: number;
|
|
55
|
+
action: string;
|
|
56
|
+
items: string[];
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export interface DataExtractionOutput {
|
|
60
|
+
value: bigint;
|
|
61
|
+
address?: {
|
|
62
|
+
hash: string;
|
|
63
|
+
version?: number;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export interface HandshakeTx {
|
|
67
|
+
id: string;
|
|
68
|
+
inputs: HandshakeTxInput[];
|
|
69
|
+
outputs: HandshakeTxOutput[];
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/getRosenData/handshake/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,KAAK,CAAC;QACT,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,IAAI,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9C;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2hhbmRzaGFrZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBIYW5kc2hha2VSb3NlbkRhdGEge1xuICB0b0NoYWluOiBzdHJpbmc7XG4gIHRvQWRkcmVzczogc3RyaW5nO1xuICBicmlkZ2VGZWU6IHN0cmluZztcbiAgbmV0d29ya0ZlZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhhbmRzaGFrZVJwY1R4SW5wdXQge1xuICB0eGlkOiBzdHJpbmc7XG4gIHZvdXQ6IG51bWJlcjtcbiAgdHhpbndpdG5lc3M6IEFycmF5PHN0cmluZz47XG4gIHNlcXVlbmNlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFuZHNoYWtlUnBjVHhPdXRwdXQge1xuICB2YWx1ZTogbnVtYmVyO1xuICBuOiBudW1iZXI7XG4gIGFkZHJlc3M6IHtcbiAgICB2ZXJzaW9uOiBudW1iZXI7XG4gICAgaGFzaDogc3RyaW5nO1xuICAgIHN0cmluZzogc3RyaW5nO1xuICB9O1xuICBjb3ZlbmFudDoge1xuICAgIHR5cGU6IG51bWJlcjtcbiAgICBhY3Rpb246IHN0cmluZztcbiAgICBpdGVtczogc3RyaW5nW107XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFuZHNoYWtlUnBjVHJhbnNhY3Rpb24ge1xuICB0eGlkOiBzdHJpbmc7XG4gIHZlcnNpb246IG51bWJlcjtcbiAgc2l6ZTogbnVtYmVyO1xuICB2c2l6ZTogbnVtYmVyO1xuICBsb2NrdGltZTogbnVtYmVyO1xuICB2aW46IEFycmF5PHtcbiAgICB0eGlkOiBzdHJpbmc7XG4gICAgdm91dDogbnVtYmVyO1xuICAgIHR4aW53aXRuZXNzPzogc3RyaW5nW107XG4gICAgc2VxdWVuY2U6IG51bWJlcjtcbiAgfT47XG4gIHZvdXQ6IEFycmF5PEhhbmRzaGFrZVJwY1R4T3V0cHV0PjtcbiAgaGFzaDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhhbmRzaGFrZVR4SW5wdXQge1xuICB0eElkOiBzdHJpbmc7XG4gIGluZGV4OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFuZHNoYWtlVHhPdXRwdXQge1xuICB2YWx1ZTogYmlnaW50O1xuICBhZGRyZXNzOiB7XG4gICAgdmVyc2lvbjogbnVtYmVyO1xuICAgIGhhc2g6IHN0cmluZztcbiAgICBzdHJpbmc6IHN0cmluZztcbiAgfTtcbiAgY292ZW5hbnQ6IHtcbiAgICB0eXBlOiBudW1iZXI7XG4gICAgYWN0aW9uOiBzdHJpbmc7XG4gICAgaXRlbXM6IHN0cmluZ1tdO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFFeHRyYWN0aW9uT3V0cHV0IHtcbiAgdmFsdWU6IGJpZ2ludDtcbiAgYWRkcmVzcz86IHsgaGFzaDogc3RyaW5nOyB2ZXJzaW9uPzogbnVtYmVyIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFuZHNoYWtlVHgge1xuICBpZDogc3RyaW5nO1xuICBpbnB1dHM6IEhhbmRzaGFrZVR4SW5wdXRbXTtcbiAgb3V0cHV0czogSGFuZHNoYWtlVHhPdXRwdXRbXTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DataExtractionOutput } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Extracts the hash from a Handshake address using bitcoinjs-lib
|
|
4
|
+
* @param addr The Handshake address to convert
|
|
5
|
+
* @returns The address hash as a hex string
|
|
6
|
+
*/
|
|
7
|
+
export declare const addressToHash: (addr: string) => string;
|
|
8
|
+
/**
|
|
9
|
+
* Extracts data chunks from transaction outputs using value-based ordering
|
|
10
|
+
* Data is encoded in P2WPKH address hashes (version 0, values 1000+)
|
|
11
|
+
* @param outputs - array of outputs with value, address.hash, address.version
|
|
12
|
+
* @param lockAddressIndex - index of the lock address output
|
|
13
|
+
* @returns reconstructedData as string or undefined
|
|
14
|
+
*/
|
|
15
|
+
export declare const extractDataFromOutputs: (outputs: DataExtractionOutput[], lockAddressIndex: number) => string | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Converts HNS value to dollarydoos (satoshi-equivalent) using string-based arithmetic
|
|
18
|
+
* This avoids floating-point precision errors when converting from HNS decimal format
|
|
19
|
+
* @param value The HNS value as a number (e.g., 0.001, 1.5)
|
|
20
|
+
* @returns The value in dollarydoos as a string (e.g., "1000", "1500000")
|
|
21
|
+
*/
|
|
22
|
+
export declare const convertHnsToDollarydoos: (value: number) => string;
|
|
23
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/getRosenData/handshake/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,MAQ5C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,GACjC,SAAS,oBAAoB,EAAE,EAC/B,kBAAkB,MAAM,KACvB,MAAM,GAAG,SA2CX,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,OAAO,MAAM,KAAG,MAIvD,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import * as bitcoinLib from 'bitcoinjs-lib';
|
|
2
|
+
import { HANDSHAKE_NETWORK, MIN_UTXO_VALUE } from './constants';
|
|
3
|
+
/**
|
|
4
|
+
* Extracts the hash from a Handshake address using bitcoinjs-lib
|
|
5
|
+
* @param addr The Handshake address to convert
|
|
6
|
+
* @returns The address hash as a hex string
|
|
7
|
+
*/
|
|
8
|
+
export const addressToHash = (addr) => {
|
|
9
|
+
const outputScript = bitcoinLib.address.toOutputScript(addr, HANDSHAKE_NETWORK);
|
|
10
|
+
// Output script format for witness v0: OP_0 <length> <hash>
|
|
11
|
+
// We want just the hash part (skip first 2 bytes: OP_0 and length)
|
|
12
|
+
return outputScript.subarray(2).toString('hex');
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Extracts data chunks from transaction outputs using value-based ordering
|
|
16
|
+
* Data is encoded in P2WPKH address hashes (version 0, values 1000+)
|
|
17
|
+
* @param outputs - array of outputs with value, address.hash, address.version
|
|
18
|
+
* @param lockAddressIndex - index of the lock address output
|
|
19
|
+
* @returns reconstructedData as string or undefined
|
|
20
|
+
*/
|
|
21
|
+
export const extractDataFromOutputs = (outputs, lockAddressIndex) => {
|
|
22
|
+
const extractedChunks = [];
|
|
23
|
+
// Extract data chunks step by step
|
|
24
|
+
// Search outputs before lock address (data chunks come before lock output)
|
|
25
|
+
for (let chunkIndex = 0; chunkIndex < 4; chunkIndex++) {
|
|
26
|
+
for (let outputIndex = 0; outputIndex < lockAddressIndex; outputIndex++) {
|
|
27
|
+
const output = outputs[outputIndex];
|
|
28
|
+
if (!output.address || !output.address.hash)
|
|
29
|
+
continue;
|
|
30
|
+
const value = output.value;
|
|
31
|
+
const addrHash = output.address.hash;
|
|
32
|
+
const version = typeof output.address.version === 'bigint'
|
|
33
|
+
? Number(output.address.version)
|
|
34
|
+
: output.address.version;
|
|
35
|
+
// Check if this output matches the expected chunk
|
|
36
|
+
if (value === BigInt(MIN_UTXO_VALUE) + BigInt(chunkIndex) &&
|
|
37
|
+
version === 0 &&
|
|
38
|
+
addrHash.length === 40) {
|
|
39
|
+
extractedChunks.push({
|
|
40
|
+
index: chunkIndex,
|
|
41
|
+
data: addrHash,
|
|
42
|
+
});
|
|
43
|
+
break; // Move to next chunk
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Reconstruct data by sorting chunks by index
|
|
48
|
+
const reconstructedData = extractedChunks.length > 0
|
|
49
|
+
? extractedChunks
|
|
50
|
+
.sort((a, b) => a.index - b.index)
|
|
51
|
+
.map((chunk) => chunk.data)
|
|
52
|
+
.join('')
|
|
53
|
+
: undefined;
|
|
54
|
+
return reconstructedData;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Converts HNS value to dollarydoos (satoshi-equivalent) using string-based arithmetic
|
|
58
|
+
* This avoids floating-point precision errors when converting from HNS decimal format
|
|
59
|
+
* @param value The HNS value as a number (e.g., 0.001, 1.5)
|
|
60
|
+
* @returns The value in dollarydoos as a string (e.g., "1000", "1500000")
|
|
61
|
+
*/
|
|
62
|
+
export const convertHnsToDollarydoos = (value) => {
|
|
63
|
+
const parts = value.toString().split('.');
|
|
64
|
+
const part1 = ((parts[1] ?? '') + '0'.repeat(6)).substring(0, 6);
|
|
65
|
+
return (parts[0] === '0' ? '' : parts[0]) + part1;
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2hhbmRzaGFrZS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2hFOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFZLEVBQVUsRUFBRTtJQUNwRCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FDcEQsSUFBSSxFQUNKLGlCQUFpQixDQUNsQixDQUFDO0lBQ0YsNERBQTREO0lBQzVELG1FQUFtRTtJQUNuRSxPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xELENBQUMsQ0FBQztBQUVGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQ3BDLE9BQStCLEVBQy9CLGdCQUF3QixFQUNKLEVBQUU7SUFDdEIsTUFBTSxlQUFlLEdBQTJDLEVBQUUsQ0FBQztJQUVuRSxtQ0FBbUM7SUFDbkMsMkVBQTJFO0lBQzNFLEtBQUssSUFBSSxVQUFVLEdBQUcsQ0FBQyxFQUFFLFVBQVUsR0FBRyxDQUFDLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQztRQUN0RCxLQUFLLElBQUksV0FBVyxHQUFHLENBQUMsRUFBRSxXQUFXLEdBQUcsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUN4RSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUk7Z0JBQUUsU0FBUztZQUV0RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQzNCLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ3JDLE1BQU0sT0FBTyxHQUNYLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEtBQUssUUFBUTtnQkFDeEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1lBRTdCLGtEQUFrRDtZQUNsRCxJQUNFLEtBQUssS0FBSyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztnQkFDckQsT0FBTyxLQUFLLENBQUM7Z0JBQ2IsUUFBUSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQ3RCLENBQUM7Z0JBQ0QsZUFBZSxDQUFDLElBQUksQ0FBQztvQkFDbkIsS0FBSyxFQUFFLFVBQVU7b0JBQ2pCLElBQUksRUFBRSxRQUFRO2lCQUNmLENBQUMsQ0FBQztnQkFDSCxNQUFNLENBQUMscUJBQXFCO1lBQzlCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELDhDQUE4QztJQUM5QyxNQUFNLGlCQUFpQixHQUNyQixlQUFlLENBQUMsTUFBTSxHQUFHLENBQUM7UUFDeEIsQ0FBQyxDQUFDLGVBQWU7YUFDWixJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7YUFDakMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2FBQzFCLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDYixDQUFDLENBQUMsU0FBUyxDQUFDO0lBRWhCLE9BQU8saUJBQWlCLENBQUM7QUFDM0IsQ0FBQyxDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEtBQWEsRUFBVSxFQUFFO0lBQy9ELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDcEQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYml0Y29pbkxpYiBmcm9tICdiaXRjb2luanMtbGliJztcblxuaW1wb3J0IHsgSEFORFNIQUtFX05FVFdPUkssIE1JTl9VVFhPX1ZBTFVFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRGF0YUV4dHJhY3Rpb25PdXRwdXQgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBFeHRyYWN0cyB0aGUgaGFzaCBmcm9tIGEgSGFuZHNoYWtlIGFkZHJlc3MgdXNpbmcgYml0Y29pbmpzLWxpYlxuICogQHBhcmFtIGFkZHIgVGhlIEhhbmRzaGFrZSBhZGRyZXNzIHRvIGNvbnZlcnRcbiAqIEByZXR1cm5zIFRoZSBhZGRyZXNzIGhhc2ggYXMgYSBoZXggc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRyZXNzVG9IYXNoID0gKGFkZHI6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG91dHB1dFNjcmlwdCA9IGJpdGNvaW5MaWIuYWRkcmVzcy50b091dHB1dFNjcmlwdChcbiAgICBhZGRyLFxuICAgIEhBTkRTSEFLRV9ORVRXT1JLLFxuICApO1xuICAvLyBPdXRwdXQgc2NyaXB0IGZvcm1hdCBmb3Igd2l0bmVzcyB2MDogT1BfMCA8bGVuZ3RoPiA8aGFzaD5cbiAgLy8gV2Ugd2FudCBqdXN0IHRoZSBoYXNoIHBhcnQgKHNraXAgZmlyc3QgMiBieXRlczogT1BfMCBhbmQgbGVuZ3RoKVxuICByZXR1cm4gb3V0cHV0U2NyaXB0LnN1YmFycmF5KDIpLnRvU3RyaW5nKCdoZXgnKTtcbn07XG5cbi8qKlxuICogRXh0cmFjdHMgZGF0YSBjaHVua3MgZnJvbSB0cmFuc2FjdGlvbiBvdXRwdXRzIHVzaW5nIHZhbHVlLWJhc2VkIG9yZGVyaW5nXG4gKiBEYXRhIGlzIGVuY29kZWQgaW4gUDJXUEtIIGFkZHJlc3MgaGFzaGVzICh2ZXJzaW9uIDAsIHZhbHVlcyAxMDAwKylcbiAqIEBwYXJhbSBvdXRwdXRzIC0gYXJyYXkgb2Ygb3V0cHV0cyB3aXRoIHZhbHVlLCBhZGRyZXNzLmhhc2gsIGFkZHJlc3MudmVyc2lvblxuICogQHBhcmFtIGxvY2tBZGRyZXNzSW5kZXggLSBpbmRleCBvZiB0aGUgbG9jayBhZGRyZXNzIG91dHB1dFxuICogQHJldHVybnMgcmVjb25zdHJ1Y3RlZERhdGEgYXMgc3RyaW5nIG9yIHVuZGVmaW5lZFxuICovXG5leHBvcnQgY29uc3QgZXh0cmFjdERhdGFGcm9tT3V0cHV0cyA9IChcbiAgb3V0cHV0czogRGF0YUV4dHJhY3Rpb25PdXRwdXRbXSxcbiAgbG9ja0FkZHJlc3NJbmRleDogbnVtYmVyLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgZXh0cmFjdGVkQ2h1bmtzOiBBcnJheTx7IGluZGV4OiBudW1iZXI7IGRhdGE6IHN0cmluZyB9PiA9IFtdO1xuXG4gIC8vIEV4dHJhY3QgZGF0YSBjaHVua3Mgc3RlcCBieSBzdGVwXG4gIC8vIFNlYXJjaCBvdXRwdXRzIGJlZm9yZSBsb2NrIGFkZHJlc3MgKGRhdGEgY2h1bmtzIGNvbWUgYmVmb3JlIGxvY2sgb3V0cHV0KVxuICBmb3IgKGxldCBjaHVua0luZGV4ID0gMDsgY2h1bmtJbmRleCA8IDQ7IGNodW5rSW5kZXgrKykge1xuICAgIGZvciAobGV0IG91dHB1dEluZGV4ID0gMDsgb3V0cHV0SW5kZXggPCBsb2NrQWRkcmVzc0luZGV4OyBvdXRwdXRJbmRleCsrKSB7XG4gICAgICBjb25zdCBvdXRwdXQgPSBvdXRwdXRzW291dHB1dEluZGV4XTtcblxuICAgICAgaWYgKCFvdXRwdXQuYWRkcmVzcyB8fCAhb3V0cHV0LmFkZHJlc3MuaGFzaCkgY29udGludWU7XG5cbiAgICAgIGNvbnN0IHZhbHVlID0gb3V0cHV0LnZhbHVlO1xuICAgICAgY29uc3QgYWRkckhhc2ggPSBvdXRwdXQuYWRkcmVzcy5oYXNoO1xuICAgICAgY29uc3QgdmVyc2lvbiA9XG4gICAgICAgIHR5cGVvZiBvdXRwdXQuYWRkcmVzcy52ZXJzaW9uID09PSAnYmlnaW50J1xuICAgICAgICAgID8gTnVtYmVyKG91dHB1dC5hZGRyZXNzLnZlcnNpb24pXG4gICAgICAgICAgOiBvdXRwdXQuYWRkcmVzcy52ZXJzaW9uO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGlzIG91dHB1dCBtYXRjaGVzIHRoZSBleHBlY3RlZCBjaHVua1xuICAgICAgaWYgKFxuICAgICAgICB2YWx1ZSA9PT0gQmlnSW50KE1JTl9VVFhPX1ZBTFVFKSArIEJpZ0ludChjaHVua0luZGV4KSAmJlxuICAgICAgICB2ZXJzaW9uID09PSAwICYmXG4gICAgICAgIGFkZHJIYXNoLmxlbmd0aCA9PT0gNDBcbiAgICAgICkge1xuICAgICAgICBleHRyYWN0ZWRDaHVua3MucHVzaCh7XG4gICAgICAgICAgaW5kZXg6IGNodW5rSW5kZXgsXG4gICAgICAgICAgZGF0YTogYWRkckhhc2gsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhazsgLy8gTW92ZSB0byBuZXh0IGNodW5rXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVjb25zdHJ1Y3QgZGF0YSBieSBzb3J0aW5nIGNodW5rcyBieSBpbmRleFxuICBjb25zdCByZWNvbnN0cnVjdGVkRGF0YSA9XG4gICAgZXh0cmFjdGVkQ2h1bmtzLmxlbmd0aCA+IDBcbiAgICAgID8gZXh0cmFjdGVkQ2h1bmtzXG4gICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KVxuICAgICAgICAgIC5tYXAoKGNodW5rKSA9PiBjaHVuay5kYXRhKVxuICAgICAgICAgIC5qb2luKCcnKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHJlY29uc3RydWN0ZWREYXRhO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBITlMgdmFsdWUgdG8gZG9sbGFyeWRvb3MgKHNhdG9zaGktZXF1aXZhbGVudCkgdXNpbmcgc3RyaW5nLWJhc2VkIGFyaXRobWV0aWNcbiAqIFRoaXMgYXZvaWRzIGZsb2F0aW5nLXBvaW50IHByZWNpc2lvbiBlcnJvcnMgd2hlbiBjb252ZXJ0aW5nIGZyb20gSE5TIGRlY2ltYWwgZm9ybWF0XG4gKiBAcGFyYW0gdmFsdWUgVGhlIEhOUyB2YWx1ZSBhcyBhIG51bWJlciAoZS5nLiwgMC4wMDEsIDEuNSlcbiAqIEByZXR1cm5zIFRoZSB2YWx1ZSBpbiBkb2xsYXJ5ZG9vcyBhcyBhIHN0cmluZyAoZS5nLiwgXCIxMDAwXCIsIFwiMTUwMDAwMFwiKVxuICovXG5leHBvcnQgY29uc3QgY29udmVydEhuc1RvRG9sbGFyeWRvb3MgPSAodmFsdWU6IG51bWJlcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHBhcnRzID0gdmFsdWUudG9TdHJpbmcoKS5zcGxpdCgnLicpO1xuICBjb25zdCBwYXJ0MSA9ICgocGFydHNbMV0gPz8gJycpICsgJzAnLnJlcGVhdCg2KSkuc3Vic3RyaW5nKDAsIDYpO1xuICByZXR1cm4gKHBhcnRzWzBdID09PSAnMCcgPyAnJyA6IHBhcnRzWzBdKSArIHBhcnQxO1xufTtcbiJdfQ==
|
package/dist/index.d.ts
CHANGED
|
@@ -21,5 +21,7 @@ export { FiroRpcRosenExtractor } from './getRosenData/firo/firoRpcRosenExtractor
|
|
|
21
21
|
export { BitcoinRunesEsploraRosenExtractor } from './getRosenData/bitcoin-runes/bitcoinRunesEsploraRosenExtractor';
|
|
22
22
|
export { BitcoinRunesRosenExtractor } from './getRosenData/bitcoin-runes/bitcoinRunesRosenExtractor';
|
|
23
23
|
export { BitcoinRunesRpcRosenExtractor } from './getRosenData/bitcoin-runes/bitcoinRunesRpcRosenExtractor';
|
|
24
|
+
export { HandshakeRosenExtractor } from './getRosenData/handshake/handshakeRosenExtractor';
|
|
25
|
+
export { HandshakeRpcRosenExtractor } from './getRosenData/handshake/handshakeRpcRosenExtractor';
|
|
24
26
|
export { parseRosenData } from './utils';
|
|
25
27
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,oDAAoD,CAAC;AAC3G,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,wDAAwD,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,iCAAiC,EAAE,MAAM,gEAAgE,CAAC;AACnH,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AACrG,OAAO,EAAE,6BAA6B,EAAE,MAAM,4DAA4D,CAAC;AAC3G,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,oDAAoD,CAAC;AAC3G,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,wDAAwD,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,iCAAiC,EAAE,MAAM,gEAAgE,CAAC;AACnH,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAC;AACrG,OAAO,EAAE,6BAA6B,EAAE,MAAM,4DAA4D,CAAC;AAC3G,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { initEccLib } from 'bitcoinjs-lib';
|
|
2
1
|
import ecc from '@bitcoinerlab/secp256k1';
|
|
2
|
+
import { initEccLib } from 'bitcoinjs-lib';
|
|
3
3
|
initEccLib(ecc);
|
|
4
4
|
export { default as AbstractRosenDataExtractor } from './getRosenData/abstract/abstractRosenDataExtractor';
|
|
5
5
|
export { BitcoinEsploraRosenExtractor } from './getRosenData/bitcoin/bitcoinEsploraRosenExtractor';
|
|
@@ -23,5 +23,7 @@ export { FiroRpcRosenExtractor } from './getRosenData/firo/firoRpcRosenExtractor
|
|
|
23
23
|
export { BitcoinRunesEsploraRosenExtractor } from './getRosenData/bitcoin-runes/bitcoinRunesEsploraRosenExtractor';
|
|
24
24
|
export { BitcoinRunesRosenExtractor } from './getRosenData/bitcoin-runes/bitcoinRunesRosenExtractor';
|
|
25
25
|
export { BitcoinRunesRpcRosenExtractor } from './getRosenData/bitcoin-runes/bitcoinRunesRpcRosenExtractor';
|
|
26
|
+
export { HandshakeRosenExtractor } from './getRosenData/handshake/handshakeRosenExtractor';
|
|
27
|
+
export { HandshakeRpcRosenExtractor } from './getRosenData/handshake/handshakeRpcRosenExtractor';
|
|
26
28
|
export { parseRosenData } from './utils';
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxHQUFHLE1BQU0seUJBQXlCLENBQUM7QUFDMUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFaEIsT0FBTyxFQUFFLE9BQU8sSUFBSSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ25ILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQ3JHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQzNHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZWNjIGZyb20gJ0BiaXRjb2luZXJsYWIvc2VjcDI1NmsxJztcbmltcG9ydCB7IGluaXRFY2NMaWIgfSBmcm9tICdiaXRjb2luanMtbGliJztcblxuaW5pdEVjY0xpYihlY2MpO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIEFic3RyYWN0Um9zZW5EYXRhRXh0cmFjdG9yIH0gZnJvbSAnLi9nZXRSb3NlbkRhdGEvYWJzdHJhY3QvYWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3InO1xuZXhwb3J0IHsgQml0Y29pbkVzcGxvcmFSb3NlbkV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2JpdGNvaW4vYml0Y29pbkVzcGxvcmFSb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBCaXRjb2luUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9iaXRjb2luL2JpdGNvaW5Sb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBCaXRjb2luUnBjUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9iaXRjb2luL2JpdGNvaW5ScGNSb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBFdm1FdGhlcnNSb3NlbkV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2V2bS9ldm1FdGhlcnNSb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBFdm1ScGNSb3NlbkV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2V2bS9ldm1ScGNSb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBFdm1Sb3NlbkV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2V2bS9ldm1Sb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBDYXJkYW5vS29pb3NSb3NlbkV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2NhcmRhbm8vY2FyZGFub0tvaW9zUm9zZW5FeHRyYWN0b3InO1xuZXhwb3J0IHsgQ2FyZGFub09nbWlvc1Jvc2VuRXh0cmFjdG9yIH0gZnJvbSAnLi9nZXRSb3NlbkRhdGEvY2FyZGFuby9jYXJkYW5vT2dtaW9zUm9zZW5FeHRyYWN0b3InO1xuZXhwb3J0IHsgT21naW9zTm9DYm9yRXJyb3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9jYXJkYW5vL2Vycm9ycyc7XG5leHBvcnQgeyBDYXJkYW5vUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9jYXJkYW5vL2NhcmRhbm9Sb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBDYXJkYW5vQmxvY2tGcm9zdFJvc2VuRXh0cmFjdG9yIH0gZnJvbSAnLi9nZXRSb3NlbkRhdGEvY2FyZGFuby9jYXJkYW5vQmxvY2tGcm9zdFJvc2VuRXh0cmFjdG9yJztcbmV4cG9ydCB7IEVyZ29Sb3NlbkV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2VyZ28vZXJnb1Jvc2VuRXh0cmFjdG9yJztcbmV4cG9ydCB7IEVyZ29Ob2RlUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9lcmdvL2VyZ29Ob2RlUm9zZW5FeHRyYWN0b3InO1xuZXhwb3J0IHsgUm9zZW5EYXRhLCBUb2tlblRyYW5zZm9ybWF0aW9uIH0gZnJvbSAnLi9nZXRSb3NlbkRhdGEvYWJzdHJhY3QvdHlwZXMnO1xuZXhwb3J0IHsgRG9nZUVzcGxvcmFSb3NlbkV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2RvZ2UvZG9nZUVzcGxvcmFSb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBEb2dlUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9kb2dlL2RvZ2VSb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBEb2dlUnBjUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9kb2dlL2RvZ2VScGNSb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBGaXJvUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9maXJvL2Zpcm9Sb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBGaXJvUnBjUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9maXJvL2Zpcm9ScGNSb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBCaXRjb2luUnVuZXNFc3Bsb3JhUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9iaXRjb2luLXJ1bmVzL2JpdGNvaW5SdW5lc0VzcGxvcmFSb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBCaXRjb2luUnVuZXNSb3NlbkV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2JpdGNvaW4tcnVuZXMvYml0Y29pblJ1bmVzUm9zZW5FeHRyYWN0b3InO1xuZXhwb3J0IHsgQml0Y29pblJ1bmVzUnBjUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9iaXRjb2luLXJ1bmVzL2JpdGNvaW5SdW5lc1JwY1Jvc2VuRXh0cmFjdG9yJztcbmV4cG9ydCB7IEhhbmRzaGFrZVJvc2VuRXh0cmFjdG9yIH0gZnJvbSAnLi9nZXRSb3NlbkRhdGEvaGFuZHNoYWtlL2hhbmRzaGFrZVJvc2VuRXh0cmFjdG9yJztcbmV4cG9ydCB7IEhhbmRzaGFrZVJwY1Jvc2VuRXh0cmFjdG9yIH0gZnJvbSAnLi9nZXRSb3NlbkRhdGEvaGFuZHNoYWtlL2hhbmRzaGFrZVJwY1Jvc2VuRXh0cmFjdG9yJztcbmV4cG9ydCB7IHBhcnNlUm9zZW5EYXRhIH0gZnJvbSAnLi91dGlscyc7XG4iXX0=
|