@rosen-bridge/rosen-extractor 8.1.0 → 9.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/dist/getRosenData/{runes/RunesEsploraRosenExtractor.d.ts → bitcoin-runes/BitcoinRunesEsploraRosenExtractor.d.ts} +2 -2
- package/dist/getRosenData/bitcoin-runes/BitcoinRunesEsploraRosenExtractor.d.ts.map +1 -0
- package/dist/getRosenData/bitcoin-runes/BitcoinRunesEsploraRosenExtractor.js +114 -0
- package/dist/{lib/getRosenData/runes/RunesRosenExtractor.d.ts → getRosenData/bitcoin-runes/BitcoinRunesRosenExtractor.d.ts} +2 -2
- package/dist/getRosenData/bitcoin-runes/BitcoinRunesRosenExtractor.d.ts.map +1 -0
- package/dist/getRosenData/bitcoin-runes/BitcoinRunesRosenExtractor.js +121 -0
- package/dist/getRosenData/{runes/RunesRpcRosenExtractor.d.ts → bitcoin-runes/BitcoinRunesRpcRosenExtractor.d.ts} +2 -2
- package/dist/getRosenData/bitcoin-runes/BitcoinRunesRpcRosenExtractor.d.ts.map +1 -0
- package/dist/getRosenData/bitcoin-runes/BitcoinRunesRpcRosenExtractor.js +114 -0
- package/dist/getRosenData/bitcoin-runes/constants.d.ts.map +1 -0
- package/dist/getRosenData/bitcoin-runes/constants.js +2 -0
- package/dist/getRosenData/bitcoin-runes/types.d.ts.map +1 -0
- package/dist/getRosenData/bitcoin-runes/types.js +2 -0
- package/dist/getRosenData/bitcoin-runes/utils.d.ts.map +1 -0
- package/dist/getRosenData/bitcoin-runes/utils.js +9 -0
- package/dist/getRosenData/const.d.ts +1 -1
- package/dist/getRosenData/const.d.ts.map +1 -1
- package/dist/getRosenData/const.js +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/package.json +1 -1
- package/dist/getRosenData/runes/RunesEsploraRosenExtractor.d.ts.map +0 -1
- package/dist/getRosenData/runes/RunesEsploraRosenExtractor.js +0 -113
- package/dist/getRosenData/runes/RunesRosenExtractor.d.ts +0 -36
- package/dist/getRosenData/runes/RunesRosenExtractor.d.ts.map +0 -1
- package/dist/getRosenData/runes/RunesRosenExtractor.js +0 -120
- package/dist/getRosenData/runes/RunesRpcRosenExtractor.d.ts.map +0 -1
- package/dist/getRosenData/runes/RunesRpcRosenExtractor.js +0 -113
- package/dist/getRosenData/runes/constants.d.ts.map +0 -1
- package/dist/getRosenData/runes/constants.js +0 -2
- package/dist/getRosenData/runes/types.d.ts.map +0 -1
- package/dist/getRosenData/runes/types.js +0 -2
- package/dist/getRosenData/runes/utils.d.ts.map +0 -1
- package/dist/getRosenData/runes/utils.js +0 -9
- package/dist/lib/getRosenData/abstract/AbstractRosenDataExtractor.d.ts +0 -19
- package/dist/lib/getRosenData/abstract/AbstractRosenDataExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/abstract/AbstractRosenDataExtractor.js +0 -32
- package/dist/lib/getRosenData/abstract/types.d.ts +0 -18
- package/dist/lib/getRosenData/abstract/types.d.ts.map +0 -1
- package/dist/lib/getRosenData/abstract/types.js +0 -2
- package/dist/lib/getRosenData/bitcoin/BitcoinEsploraRosenExtractor.d.ts +0 -22
- package/dist/lib/getRosenData/bitcoin/BitcoinEsploraRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/bitcoin/BitcoinEsploraRosenExtractor.js +0 -105
- package/dist/lib/getRosenData/bitcoin/BitcoinRosenExtractor.d.ts +0 -22
- package/dist/lib/getRosenData/bitcoin/BitcoinRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/bitcoin/BitcoinRosenExtractor.js +0 -113
- package/dist/lib/getRosenData/bitcoin/BitcoinRpcRosenExtractor.d.ts +0 -22
- package/dist/lib/getRosenData/bitcoin/BitcoinRpcRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/bitcoin/BitcoinRpcRosenExtractor.js +0 -106
- package/dist/lib/getRosenData/bitcoin/types.d.ts +0 -89
- package/dist/lib/getRosenData/bitcoin/types.d.ts.map +0 -1
- package/dist/lib/getRosenData/bitcoin/types.js +0 -2
- package/dist/lib/getRosenData/bitcoin/utils.d.ts +0 -7
- package/dist/lib/getRosenData/bitcoin/utils.d.ts.map +0 -1
- package/dist/lib/getRosenData/bitcoin/utils.js +0 -17
- package/dist/lib/getRosenData/cardano/CardanoBlockFrostRosenExtractor.d.ts +0 -18
- package/dist/lib/getRosenData/cardano/CardanoBlockFrostRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/cardano/CardanoBlockFrostRosenExtractor.js +0 -94
- package/dist/lib/getRosenData/cardano/CardanoGraphQLRosenExtractor.d.ts +0 -18
- package/dist/lib/getRosenData/cardano/CardanoGraphQLRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/cardano/CardanoGraphQLRosenExtractor.js +0 -92
- package/dist/lib/getRosenData/cardano/CardanoKoiosRosenExtractor.d.ts +0 -19
- package/dist/lib/getRosenData/cardano/CardanoKoiosRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/cardano/CardanoKoiosRosenExtractor.js +0 -95
- package/dist/lib/getRosenData/cardano/CardanoOgmiosRosenExtractor.d.ts +0 -18
- package/dist/lib/getRosenData/cardano/CardanoOgmiosRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/cardano/CardanoOgmiosRosenExtractor.js +0 -97
- package/dist/lib/getRosenData/cardano/CardanoRosenExtractor.d.ts +0 -18
- package/dist/lib/getRosenData/cardano/CardanoRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/cardano/CardanoRosenExtractor.js +0 -88
- package/dist/lib/getRosenData/cardano/types.d.ts +0 -102
- package/dist/lib/getRosenData/cardano/types.d.ts.map +0 -1
- package/dist/lib/getRosenData/cardano/types.js +0 -2
- package/dist/lib/getRosenData/cardano/utils.d.ts +0 -19
- package/dist/lib/getRosenData/cardano/utils.d.ts.map +0 -1
- package/dist/lib/getRosenData/cardano/utils.js +0 -32
- package/dist/lib/getRosenData/const.d.ts +0 -13
- package/dist/lib/getRosenData/const.d.ts.map +0 -1
- package/dist/lib/getRosenData/const.js +0 -21
- package/dist/lib/getRosenData/doge/DogeEsploraRosenExtractor.d.ts +0 -22
- package/dist/lib/getRosenData/doge/DogeEsploraRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/doge/DogeEsploraRosenExtractor.js +0 -104
- package/dist/lib/getRosenData/doge/DogeRosenExtractor.d.ts +0 -22
- package/dist/lib/getRosenData/doge/DogeRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/doge/DogeRosenExtractor.js +0 -112
- package/dist/lib/getRosenData/doge/DogeRpcRosenExtractor.d.ts +0 -22
- package/dist/lib/getRosenData/doge/DogeRpcRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/doge/DogeRpcRosenExtractor.js +0 -105
- package/dist/lib/getRosenData/doge/types.d.ts +0 -87
- package/dist/lib/getRosenData/doge/types.d.ts.map +0 -1
- package/dist/lib/getRosenData/doge/types.js +0 -2
- package/dist/lib/getRosenData/doge/utils.d.ts +0 -13
- package/dist/lib/getRosenData/doge/utils.d.ts.map +0 -1
- package/dist/lib/getRosenData/doge/utils.js +0 -58
- package/dist/lib/getRosenData/ergo/ErgoNodeRosenExtractor.d.ts +0 -22
- package/dist/lib/getRosenData/ergo/ErgoNodeRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/ergo/ErgoNodeRosenExtractor.js +0 -105
- package/dist/lib/getRosenData/ergo/ErgoRosenExtractor.d.ts +0 -15
- package/dist/lib/getRosenData/ergo/ErgoRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/ergo/ErgoRosenExtractor.js +0 -33
- package/dist/lib/getRosenData/ergo/types.d.ts +0 -37
- package/dist/lib/getRosenData/ergo/types.d.ts.map +0 -1
- package/dist/lib/getRosenData/ergo/types.js +0 -2
- package/dist/lib/getRosenData/evm/EvmEthersRosenExtractor.d.ts +0 -23
- package/dist/lib/getRosenData/evm/EvmEthersRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/evm/EvmEthersRosenExtractor.js +0 -54
- package/dist/lib/getRosenData/evm/EvmRosenExtractor.d.ts +0 -16
- package/dist/lib/getRosenData/evm/EvmRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/evm/EvmRosenExtractor.js +0 -31
- package/dist/lib/getRosenData/evm/EvmRpcRosenExtractor.d.ts +0 -26
- package/dist/lib/getRosenData/evm/EvmRpcRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/evm/EvmRpcRosenExtractor.js +0 -123
- package/dist/lib/getRosenData/evm/utils.d.ts +0 -7
- package/dist/lib/getRosenData/evm/utils.d.ts.map +0 -1
- package/dist/lib/getRosenData/evm/utils.js +0 -9
- package/dist/lib/getRosenData/runes/RunesEsploraRosenExtractor.d.ts +0 -36
- package/dist/lib/getRosenData/runes/RunesEsploraRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/runes/RunesEsploraRosenExtractor.js +0 -113
- package/dist/lib/getRosenData/runes/RunesRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/runes/RunesRosenExtractor.js +0 -120
- package/dist/lib/getRosenData/runes/RunesRpcRosenExtractor.d.ts +0 -36
- package/dist/lib/getRosenData/runes/RunesRpcRosenExtractor.d.ts.map +0 -1
- package/dist/lib/getRosenData/runes/RunesRpcRosenExtractor.js +0 -113
- package/dist/lib/getRosenData/runes/constants.d.ts +0 -2
- package/dist/lib/getRosenData/runes/constants.d.ts.map +0 -1
- package/dist/lib/getRosenData/runes/constants.js +0 -2
- package/dist/lib/getRosenData/runes/types.d.ts +0 -5
- package/dist/lib/getRosenData/runes/types.d.ts.map +0 -1
- package/dist/lib/getRosenData/runes/types.js +0 -2
- package/dist/lib/getRosenData/runes/utils.d.ts +0 -7
- package/dist/lib/getRosenData/runes/utils.d.ts.map +0 -1
- package/dist/lib/getRosenData/runes/utils.js +0 -9
- package/dist/lib/index.d.ts +0 -23
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/index.js +0 -25
- package/dist/lib/types.d.ts +0 -7
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js +0 -2
- package/dist/lib/utils.d.ts +0 -7
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/utils.js +0 -31
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- /package/dist/getRosenData/{runes → bitcoin-runes}/constants.d.ts +0 -0
- /package/dist/getRosenData/{runes → bitcoin-runes}/types.d.ts +0 -0
- /package/dist/getRosenData/{runes → bitcoin-runes}/utils.d.ts +0 -0
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { isPlainObject } from 'lodash-es';
|
|
2
|
-
import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
3
|
-
import { CARDANO_CHAIN, CARDANO_NATIVE_TOKEN } from '../const';
|
|
4
|
-
import JsonBigInt from '@rosen-bridge/json-bigint';
|
|
5
|
-
import { getCardanoTokenId, parseRosenData } from './utils';
|
|
6
|
-
export class CardanoBlockFrostRosenExtractor extends AbstractRosenDataExtractor {
|
|
7
|
-
chain = CARDANO_CHAIN;
|
|
8
|
-
/**
|
|
9
|
-
* extracts RosenData from given lock transaction in blockfrost format
|
|
10
|
-
* @param transaction the lock transaction in blockfrost format
|
|
11
|
-
*/
|
|
12
|
-
extractRawData = (transaction) => {
|
|
13
|
-
const baseError = `No rosen data found for tx [${transaction.utxos.hash}]`;
|
|
14
|
-
const metadata = transaction.metadata;
|
|
15
|
-
try {
|
|
16
|
-
if (metadata.length === 0) {
|
|
17
|
-
this.logger.debug(baseError + `: No metadata`);
|
|
18
|
-
return undefined;
|
|
19
|
-
}
|
|
20
|
-
const data = metadata.find((data) => data.label === '0')?.json_metadata;
|
|
21
|
-
const rosenData = parseRosenData(data);
|
|
22
|
-
if (rosenData) {
|
|
23
|
-
const lockOutputs = transaction.utxos.outputs.filter((output) => output.address === this.lockAddress);
|
|
24
|
-
for (let i = 0; i < lockOutputs.length; i++) {
|
|
25
|
-
const output = lockOutputs[i];
|
|
26
|
-
const assetTransformation = this.getAssetTransformation(output, rosenData.toChain);
|
|
27
|
-
if (assetTransformation) {
|
|
28
|
-
return {
|
|
29
|
-
...rosenData,
|
|
30
|
-
sourceChainTokenId: assetTransformation.from,
|
|
31
|
-
amount: assetTransformation.amount,
|
|
32
|
-
targetChainTokenId: assetTransformation.to,
|
|
33
|
-
sourceTxId: transaction.utxos.hash,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
else
|
|
37
|
-
this.logger.debug(`No rosen asset transformation found for box [${transaction.utxos.hash}.${i}]: box assets: ${JsonBigInt.stringify(output.amount)}`);
|
|
38
|
-
}
|
|
39
|
-
this.logger.debug(baseError + `: No valid transformation found in any output boxes`);
|
|
40
|
-
}
|
|
41
|
-
else
|
|
42
|
-
this.logger.debug(baseError +
|
|
43
|
-
`: Incomplete metadata. isPlain: ${isPlainObject(data)}, data: ${JsonBigInt.stringify(data)}`);
|
|
44
|
-
}
|
|
45
|
-
catch (e) {
|
|
46
|
-
this.logger.debug(`An error occurred while getting Cardano rosen data from BlockFrost: ${e}`);
|
|
47
|
-
if (e instanceof Error && e.stack) {
|
|
48
|
-
this.logger.debug(e.stack);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return undefined;
|
|
52
|
-
};
|
|
53
|
-
/**
|
|
54
|
-
* extracts and builds token transformation from UTXO and tokenMap
|
|
55
|
-
* @param box transaction output
|
|
56
|
-
* @param toChain event target chain
|
|
57
|
-
*/
|
|
58
|
-
getAssetTransformation = (box, toChain) => {
|
|
59
|
-
// try to build transformation using locked assets
|
|
60
|
-
for (const asset of box.amount) {
|
|
61
|
-
if (asset.unit === 'lovelace')
|
|
62
|
-
continue;
|
|
63
|
-
const policyId = asset.unit.slice(0, 56);
|
|
64
|
-
const assetName = asset.unit.slice(56);
|
|
65
|
-
const token = this.tokens.search(CARDANO_CHAIN, {
|
|
66
|
-
tokenId: getCardanoTokenId(policyId, assetName),
|
|
67
|
-
});
|
|
68
|
-
if (token.length > 0 && Object.hasOwn(token[0], toChain))
|
|
69
|
-
return {
|
|
70
|
-
from: this.tokens.getID(token[0], CARDANO_CHAIN),
|
|
71
|
-
to: this.tokens.getID(token[0], toChain),
|
|
72
|
-
amount: asset.quantity,
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
// try to build transformation using locked ADA
|
|
76
|
-
const lovelace = this.tokens.search(CARDANO_CHAIN, {
|
|
77
|
-
tokenId: CARDANO_NATIVE_TOKEN,
|
|
78
|
-
});
|
|
79
|
-
if (lovelace.length > 0 && Object.hasOwn(lovelace[0], toChain)) {
|
|
80
|
-
const boxLovelaceAmount = box.amount.find((asset) => asset.unit === 'lovelace');
|
|
81
|
-
if (!boxLovelaceAmount)
|
|
82
|
-
throw Error(`ImpossibleBehavior: Found blockfrost tx output with no lovelace amount`);
|
|
83
|
-
return {
|
|
84
|
-
from: CARDANO_NATIVE_TOKEN,
|
|
85
|
-
to: this.tokens.getID(lovelace[0], toChain),
|
|
86
|
-
amount: boxLovelaceAmount.quantity,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FyZGFub0Jsb2NrRnJvc3RSb3NlbkV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9nZXRSb3NlbkRhdGEvY2FyZGFuby9DYXJkYW5vQmxvY2tGcm9zdFJvc2VuRXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUMsT0FBTywwQkFBMEIsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9ELE9BQU8sVUFBVSxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFNUQsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLDBCQUFpRDtJQUMzRixLQUFLLEdBQUcsYUFBYSxDQUFDO0lBQy9COzs7T0FHRztJQUNILGNBQWMsR0FBRyxDQUNmLFdBQWtDLEVBQ1gsRUFBRTtRQUN6QixNQUFNLFNBQVMsR0FBRywrQkFBK0IsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUMzRSxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBQ3RDLElBQUksQ0FBQztZQUNILElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxDQUFDO2dCQUMvQyxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBQ0QsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxHQUFHLENBQUMsRUFBRSxhQUFhLENBQUM7WUFDeEUsTUFBTSxTQUFTLEdBQUcsY0FB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cyc7XG5pbXBvcnQgeyBSb3NlbkRhdGEsIFRva2VuVHJhbnNmb3JtYXRpb24gfSBmcm9tICcuLi9hYnN0cmFjdC90eXBlcyc7XG5pbXBvcnQgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3IgZnJvbSAnLi4vYWJzdHJhY3QvQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3InO1xuaW1wb3J0IHsgQ0FSREFOT19DSEFJTiwgQ0FSREFOT19OQVRJVkVfVE9LRU4gfSBmcm9tICcuLi9jb25zdCc7XG5pbXBvcnQgeyBCbG9ja0Zyb3N0T3V0cHV0Qm94LCBCbG9ja0Zyb3N0VHJhbnNhY3Rpb24gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBKc29uQmlnSW50IGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuaW1wb3J0IHsgZ2V0Q2FyZGFub1Rva2VuSWQsIHBhcnNlUm9zZW5EYXRhIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBDYXJkYW5vQmxvY2tGcm9zdFJvc2VuRXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3I8QmxvY2tGcm9zdFRyYW5zYWN0aW9uPiB7XG4gIHJlYWRvbmx5IGNoYWluID0gQ0FSREFOT19DSEFJTjtcbiAgLyoqXG4gICAqIGV4dHJhY3RzIFJvc2VuRGF0YSBmcm9tIGdpdmVuIGxvY2sgdHJhbnNhY3Rpb24gaW4gYmxvY2tmcm9zdCBmb3JtYXRcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIHRoZSBsb2NrIHRyYW5zYWN0aW9uIGluIGJsb2NrZnJvc3QgZm9ybWF0XG4gICAqL1xuICBleHRyYWN0UmF3RGF0YSA9IChcbiAgICB0cmFuc2FjdGlvbjogQmxvY2tGcm9zdFRyYW5zYWN0aW9uXG4gICk6IFJvc2VuRGF0YSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgYmFzZUVycm9yID0gYE5vIHJvc2VuIGRhdGEgZm91bmQgZm9yIHR4IFske3RyYW5zYWN0aW9uLnV0eG9zLmhhc2h9XWA7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0cmFuc2FjdGlvbi5tZXRhZGF0YTtcbiAgICB0cnkge1xuICAgICAgaWYgKG1ldGFkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhiYXNlRXJyb3IgKyBgOiBObyBtZXRhZGF0YWApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgY29uc3QgZGF0YSA9IG1ldGFkYXRhLmZpbmQoKGRhdGEpID0+IGRhdGEubGFiZWwgPT09ICcwJyk/Lmpzb25fbWV0YWRhdGE7XG4gICAgICBjb25zdCByb3NlbkRhdGEgPSBwYXJzZVJvc2VuRGF0YShkYXRhKTtcbiAgICAgIGlmIChyb3NlbkRhdGEpIHtcbiAgICAgICAgY29uc3QgbG9ja091dHB1dHMgPSB0cmFuc2FjdGlvbi51dHhvcy5vdXRwdXRzLmZpbHRlcihcbiAgICAgICAgICAob3V0cHV0KSA9PiBvdXRwdXQuYWRkcmVzcyA9PT0gdGhpcy5sb2NrQWRkcmVzc1xuICAgICAgICApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxvY2tPdXRwdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgY29uc3Qgb3V0cHV0ID0gbG9ja091dHB1dHNbaV07XG4gICAgICAgICAgY29uc3QgYXNzZXRUcmFuc2Zvcm1hdGlvbiA9IHRoaXMuZ2V0QXNzZXRUcmFuc2Zvcm1hdGlvbihcbiAgICAgICAgICAgIG91dHB1dCxcbiAgICAgICAgICAgIHJvc2VuRGF0YS50b0NoYWluXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoYXNzZXRUcmFuc2Zvcm1hdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4ucm9zZW5EYXRhLFxuICAgICAgICAgICAgICBzb3VyY2VDaGFpblRva2VuSWQ6IGFzc2V0VHJhbnNmb3JtYXRpb24uZnJvbSxcbiAgICAgICAgICAgICAgYW1vdW50OiBhc3NldFRyYW5zZm9ybWF0aW9uLmFtb3VudCxcbiAgICAgICAgICAgICAgdGFyZ2V0Q2hhaW5Ub2tlbklkOiBhc3NldFRyYW5zZm9ybWF0aW9uLnRvLFxuICAgICAgICAgICAgICBzb3VyY2VUeElkOiB0cmFuc2FjdGlvbi51dHhvcy5oYXNoLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgICBgTm8gcm9zZW4gYXNzZXQgdHJhbnNmb3JtYXRpb24gZm91bmQgZm9yIGJveCBbJHtcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi51dHhvcy5oYXNoXG4gICAgICAgICAgICAgIH0uJHtpfV06IGJveCBhc3NldHM6ICR7SnNvbkJpZ0ludC5zdHJpbmdpZnkob3V0cHV0LmFtb3VudCl9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBObyB2YWxpZCB0cmFuc2Zvcm1hdGlvbiBmb3VuZCBpbiBhbnkgb3V0cHV0IGJveGVzYFxuICAgICAgICApO1xuICAgICAgfSBlbHNlXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGJhc2VFcnJvciArXG4gICAgICAgICAgICBgOiBJbmNvbXBsZXRlIG1ldGFkYXRhLiBpc1BsYWluOiAke2lzUGxhaW5PYmplY3QoXG4gICAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgICl9LCBkYXRhOiAke0pzb25CaWdJbnQuc3RyaW5naWZ5KGRhdGEpfWBcbiAgICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGdldHRpbmcgQ2FyZGFubyByb3NlbiBkYXRhIGZyb20gQmxvY2tGcm9zdDogJHtlfWBcbiAgICAgICk7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yICYmIGUuc3RhY2spIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoZS5zdGFjayk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIGFuZCBidWlsZHMgdG9rZW4gdHJhbnNmb3JtYXRpb24gZnJvbSBVVFhPIGFuZCB0b2tlbk1hcFxuICAgKiBAcGFyYW0gYm94IHRyYW5zYWN0aW9uIG91dHB1dFxuICAgKiBAcGFyYW0gdG9DaGFpbiBldmVudCB0YXJnZXQgY2hhaW5cbiAgICovXG4gIGdldEFzc2V0VHJhbnNmb3JtYXRpb24gPSAoXG4gICAgYm94OiBCbG9ja0Zyb3N0T3V0cHV0Qm94LFxuICAgIHRvQ2hhaW46IHN0cmluZ1xuICApOiBUb2tlblRyYW5zZm9ybWF0aW9uIHwgdW5kZWZpbmVkID0+IHtcbiAgICAvLyB0cnkgdG8gYnVpbGQgdHJhbnNmb3JtYXRpb24gdXNpbmcgbG9ja2VkIGFzc2V0c1xuICAgIGZvciAoY29uc3QgYXNzZXQgb2YgYm94LmFtb3VudCkge1xuICAgICAgaWYgKGFzc2V0LnVuaXQgPT09ICdsb3ZlbGFjZScpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgcG9saWN5SWQgPSBhc3NldC51bml0LnNsaWNlKDAsIDU2KTtcbiAgICAgIGNvbnN0IGFzc2V0TmFtZSA9IGFzc2V0LnVuaXQuc2xpY2UoNTYpO1xuICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLnRva2Vucy5zZWFyY2goQ0FSREFOT19DSEFJTiwge1xuICAgICAgICB0b2tlbklkOiBnZXRDYXJkYW5vVG9rZW5JZChwb2xpY3lJZCwgYXNzZXROYW1lKSxcbiAgICAgIH0pO1xuICAgICAgaWYgKHRva2VuLmxlbmd0aCA+IDAgJiYgT2JqZWN0Lmhhc093bih0b2tlblswXSwgdG9DaGFpbikpXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZnJvbTogdGhpcy50b2tlbnMuZ2V0SUQodG9rZW5bMF0sIENBUkRBTk9fQ0hBSU4pLFxuICAgICAgICAgIHRvOiB0aGlzLnRva2Vucy5nZXRJRCh0b2tlblswXSwgdG9DaGFpbiksXG4gICAgICAgICAgYW1vdW50OiBhc3NldC5xdWFudGl0eSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyB0cnkgdG8gYnVpbGQgdHJhbnNmb3JtYXRpb24gdXNpbmcgbG9ja2VkIEFEQVxuICAgIGNvbnN0IGxvdmVsYWNlID0gdGhpcy50b2tlbnMuc2VhcmNoKENBUkRBTk9fQ0hBSU4sIHtcbiAgICAgIHRva2VuSWQ6IENBUkRBTk9fTkFUSVZFX1RPS0VOLFxuICAgIH0pO1xuICAgIGlmIChsb3ZlbGFjZS5sZW5ndGggPiAwICYmIE9iamVjdC5oYXNPd24obG92ZWxhY2VbMF0sIHRvQ2hhaW4pKSB7XG4gICAgICBjb25zdCBib3hMb3ZlbGFjZUFtb3VudCA9IGJveC5hbW91bnQuZmluZChcbiAgICAgICAgKGFzc2V0KSA9PiBhc3NldC51bml0ID09PSAnbG92ZWxhY2UnXG4gICAgICApO1xuICAgICAgaWYgKCFib3hMb3ZlbGFjZUFtb3VudClcbiAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgYEltcG9zc2libGVCZWhhdmlvcjogRm91bmQgYmxvY2tmcm9zdCB0eCBvdXRwdXQgd2l0aCBubyBsb3ZlbGFjZSBhbW91bnRgXG4gICAgICAgICk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZyb206IENBUkRBTk9fTkFUSVZFX1RPS0VOLFxuICAgICAgICB0bzogdGhpcy50b2tlbnMuZ2V0SUQobG92ZWxhY2VbMF0sIHRvQ2hhaW4pLFxuICAgICAgICBhbW91bnQ6IGJveExvdmVsYWNlQW1vdW50LnF1YW50aXR5LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG59XG4iXX0=
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { RosenData, TokenTransformation } from '../abstract/types';
|
|
2
|
-
import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
3
|
-
import { GraphQLTransaction, GraphQLTxOutput } from './types';
|
|
4
|
-
export declare class CardanoGraphQLRosenExtractor extends AbstractRosenDataExtractor<GraphQLTransaction> {
|
|
5
|
-
readonly chain = "cardano";
|
|
6
|
-
/**
|
|
7
|
-
* extracts RosenData from given lock transaction in graphql format
|
|
8
|
-
* @param transaction the lock transaction in graphql format
|
|
9
|
-
*/
|
|
10
|
-
extractRawData: (transaction: GraphQLTransaction) => RosenData | undefined;
|
|
11
|
-
/**
|
|
12
|
-
* extracts and builds token transformation from UTXO and tokenMap
|
|
13
|
-
* @param box transaction output
|
|
14
|
-
* @param toChain event target chain
|
|
15
|
-
*/
|
|
16
|
-
getAssetTransformation: (box: GraphQLTxOutput, toChain: string) => TokenTransformation | undefined;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=CardanoGraphQLRosenExtractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CardanoGraphQLRosenExtractor.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/cardano/CardanoGraphQLRosenExtractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI9D,qBAAa,4BAA6B,SAAQ,0BAA0B,CAAC,kBAAkB,CAAC;IAC9F,QAAQ,CAAC,KAAK,aAAiB;IAC/B;;;OAGG;IACH,cAAc,GAAI,aAAa,kBAAkB,KAAG,SAAS,GAAG,SAAS,CA4DvE;IAEF;;;;OAIG;IACH,sBAAsB,GACpB,KAAK,eAAe,EACpB,SAAS,MAAM,KACd,mBAAmB,GAAG,SAAS,CA8BhC;CACH"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { isPlainObject } from 'lodash-es';
|
|
2
|
-
import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
3
|
-
import { CARDANO_CHAIN, CARDANO_NATIVE_TOKEN } from '../const';
|
|
4
|
-
import JsonBigInt from '@rosen-bridge/json-bigint';
|
|
5
|
-
import { getCardanoTokenId, parseRosenData } from './utils';
|
|
6
|
-
export class CardanoGraphQLRosenExtractor extends AbstractRosenDataExtractor {
|
|
7
|
-
chain = CARDANO_CHAIN;
|
|
8
|
-
/**
|
|
9
|
-
* extracts RosenData from given lock transaction in graphql format
|
|
10
|
-
* @param transaction the lock transaction in graphql format
|
|
11
|
-
*/
|
|
12
|
-
extractRawData = (transaction) => {
|
|
13
|
-
const baseError = `No rosen data found for tx [${transaction.hash}]`;
|
|
14
|
-
const metadata = transaction.metadata;
|
|
15
|
-
try {
|
|
16
|
-
if (!metadata || metadata.length === 0) {
|
|
17
|
-
this.logger.debug(baseError + `: No metadata`);
|
|
18
|
-
return undefined;
|
|
19
|
-
}
|
|
20
|
-
const data = metadata.find((data) => data?.key === '0')?.value;
|
|
21
|
-
const rosenData = parseRosenData(data);
|
|
22
|
-
if (rosenData) {
|
|
23
|
-
const lockOutputs = transaction.outputs.filter((output) => output?.address === this.lockAddress);
|
|
24
|
-
for (let i = 0; i < lockOutputs.length; i++) {
|
|
25
|
-
const output = lockOutputs[i];
|
|
26
|
-
if (!output) {
|
|
27
|
-
this.logger.debug(`No rosen asset transformation found for box [${transaction.hash}.${i}]: box is undefined!`);
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
const assetTransformation = this.getAssetTransformation(output, rosenData.toChain);
|
|
31
|
-
if (assetTransformation) {
|
|
32
|
-
return {
|
|
33
|
-
...rosenData,
|
|
34
|
-
sourceChainTokenId: assetTransformation.from,
|
|
35
|
-
amount: assetTransformation.amount,
|
|
36
|
-
targetChainTokenId: assetTransformation.to,
|
|
37
|
-
sourceTxId: transaction.hash,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
else
|
|
41
|
-
this.logger.debug(`No rosen asset transformation found for box [${transaction.hash}.${i}]: box assets: ${JsonBigInt.stringify(output.tokens)}`);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
this.logger.debug(baseError + `: No valid transformation found in any output boxes`);
|
|
45
|
-
}
|
|
46
|
-
else
|
|
47
|
-
this.logger.debug(baseError +
|
|
48
|
-
`: Incomplete metadata. isPlain: ${isPlainObject(data)}, data: ${JsonBigInt.stringify(data)}`);
|
|
49
|
-
}
|
|
50
|
-
catch (e) {
|
|
51
|
-
this.logger.debug(`An error occurred while getting Cardano rosen data from GraphQL: ${e}`);
|
|
52
|
-
if (e instanceof Error && e.stack) {
|
|
53
|
-
this.logger.debug(e.stack);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return undefined;
|
|
57
|
-
};
|
|
58
|
-
/**
|
|
59
|
-
* extracts and builds token transformation from UTXO and tokenMap
|
|
60
|
-
* @param box transaction output
|
|
61
|
-
* @param toChain event target chain
|
|
62
|
-
*/
|
|
63
|
-
getAssetTransformation = (box, toChain) => {
|
|
64
|
-
// try to build transformation using locked assets
|
|
65
|
-
for (const boxToken of box.tokens) {
|
|
66
|
-
const token = this.tokens.search(CARDANO_CHAIN, {
|
|
67
|
-
tokenId: getCardanoTokenId(boxToken.asset.policyId, boxToken.asset.assetName),
|
|
68
|
-
});
|
|
69
|
-
if (token.length > 0 && Object.hasOwn(token[0], toChain))
|
|
70
|
-
return {
|
|
71
|
-
from: this.tokens.getID(token[0], CARDANO_CHAIN),
|
|
72
|
-
to: this.tokens.getID(token[0], toChain),
|
|
73
|
-
amount: boxToken.quantity,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
// try to build transformation using locked ADA
|
|
77
|
-
const lovelace = this.tokens.search(CARDANO_CHAIN, {
|
|
78
|
-
tokenId: CARDANO_NATIVE_TOKEN,
|
|
79
|
-
});
|
|
80
|
-
if (lovelace.length > 0 && Object.hasOwn(lovelace[0], toChain)) {
|
|
81
|
-
return {
|
|
82
|
-
from: CARDANO_NATIVE_TOKEN,
|
|
83
|
-
to: this.tokens.getID(lovelace[0], toChain),
|
|
84
|
-
amount: box.value,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
return undefined;
|
|
89
|
-
}
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FyZGFub0dyYXBoUUxSb3NlbkV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9nZXRSb3NlbkRhdGEvY2FyZGFuby9DYXJkYW5vR3JhcGhRTFJvc2VuRXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFMUMsT0FBTywwQkFBMEIsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRS9ELE9BQU8sVUFBVSxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFNUQsTUFBTSxPQUFPLDRCQUE2QixTQUFRLDBCQUE4QztJQUNyRixLQUFLLEdBQUcsYUFBYSxDQUFDO0lBQy9COzs7T0FHRztJQUNILGNBQWMsR0FBRyxDQUFDLFdBQStCLEVBQXlCLEVBQUU7UUFDMUUsTUFBTSxTQUFTLEdBQUcsK0JBQStCLFdBQVcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUNyRSxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO1FBQ3RDLElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLGVBQWUsQ0FBQyxDQUFDO2dCQUMvQyxPQUFPLFNBQVMsQ0FBQztZQUNuQixDQUFDO1lBQ0QsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDL0QsTUFBTSxTQUFTLEdBQUcsY0FB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TSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDO29CQUNoRCxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztvQkFDeEMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxRQUFRO2lCQUMxQixDQUFDO1FBQ04sQ0FBQztRQUVELCtDQUErQztRQUMvQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUU7WUFDakQsT0FBTyxFQUFFLG9CQUFvQjtTQUM5QixDQUFDLENBQUM7UUFDSCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDL0QsT0FBTztnQkFDTCxJQUFJLEVBQUUsb0JBQW9CO2dCQUMxQixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztnQkFDM0MsTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLO2FBQ2xCLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhaW5PYmplY3QgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgUm9zZW5EYXRhLCBUb2tlblRyYW5zZm9ybWF0aW9uIH0gZnJvbSAnLi4vYWJzdHJhY3QvdHlwZXMnO1xuaW1wb3J0IEFic3RyYWN0Um9zZW5EYXRhRXh0cmFjdG9yIGZyb20gJy4uL2Fic3RyYWN0L0Fic3RyYWN0Um9zZW5EYXRhRXh0cmFjdG9yJztcbmltcG9ydCB7IENBUkRBTk9fQ0hBSU4sIENBUkRBTk9fTkFUSVZFX1RPS0VOIH0gZnJvbSAnLi4vY29uc3QnO1xuaW1wb3J0IHsgR3JhcGhRTFRyYW5zYWN0aW9uLCBHcmFwaFFMVHhPdXRwdXQgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBKc29uQmlnSW50IGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuaW1wb3J0IHsgZ2V0Q2FyZGFub1Rva2VuSWQsIHBhcnNlUm9zZW5EYXRhIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBDYXJkYW5vR3JhcGhRTFJvc2VuRXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3I8R3JhcGhRTFRyYW5zYWN0aW9uPiB7XG4gIHJlYWRvbmx5IGNoYWluID0gQ0FSREFOT19DSEFJTjtcbiAgLyoqXG4gICAqIGV4dHJhY3RzIFJvc2VuRGF0YSBmcm9tIGdpdmVuIGxvY2sgdHJhbnNhY3Rpb24gaW4gZ3JhcGhxbCBmb3JtYXRcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIHRoZSBsb2NrIHRyYW5zYWN0aW9uIGluIGdyYXBocWwgZm9ybWF0XG4gICAqL1xuICBleHRyYWN0UmF3RGF0YSA9ICh0cmFuc2FjdGlvbjogR3JhcGhRTFRyYW5zYWN0aW9uKTogUm9zZW5EYXRhIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBiYXNlRXJyb3IgPSBgTm8gcm9zZW4gZGF0YSBmb3VuZCBmb3IgdHggWyR7dHJhbnNhY3Rpb24uaGFzaH1dYDtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRyYW5zYWN0aW9uLm1ldGFkYXRhO1xuICAgIHRyeSB7XG4gICAgICBpZiAoIW1ldGFkYXRhIHx8IG1ldGFkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhiYXNlRXJyb3IgKyBgOiBObyBtZXRhZGF0YWApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgY29uc3QgZGF0YSA9IG1ldGFkYXRhLmZpbmQoKGRhdGEpID0+IGRhdGE/LmtleSA9PT0gJzAnKT8udmFsdWU7XG4gICAgICBjb25zdCByb3NlbkRhdGEgPSBwYXJzZVJvc2VuRGF0YShkYXRhKTtcbiAgICAgIGlmIChyb3NlbkRhdGEpIHtcbiAgICAgICAgY29uc3QgbG9ja091dHB1dHMgPSB0cmFuc2FjdGlvbi5vdXRwdXRzLmZpbHRlcihcbiAgICAgICAgICAob3V0cHV0KSA9PiBvdXRwdXQ/LmFkZHJlc3MgPT09IHRoaXMubG9ja0FkZHJlc3NcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsb2NrT3V0cHV0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNvbnN0IG91dHB1dCA9IGxvY2tPdXRwdXRzW2ldO1xuICAgICAgICAgIGlmICghb3V0cHV0KSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgICAgYE5vIHJvc2VuIGFzc2V0IHRyYW5zZm9ybWF0aW9uIGZvdW5kIGZvciBib3ggWyR7dHJhbnNhY3Rpb24uaGFzaH0uJHtpfV06IGJveCBpcyB1bmRlZmluZWQhYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYXNzZXRUcmFuc2Zvcm1hdGlvbiA9IHRoaXMuZ2V0QXNzZXRUcmFuc2Zvcm1hdGlvbihcbiAgICAgICAgICAgICAgb3V0cHV0LFxuICAgICAgICAgICAgICByb3NlbkRhdGEudG9DaGFpblxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChhc3NldFRyYW5zZm9ybWF0aW9uKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4ucm9zZW5EYXRhLFxuICAgICAgICAgICAgICAgIHNvdXJjZUNoYWluVG9rZW5JZDogYXNzZXRUcmFuc2Zvcm1hdGlvbi5mcm9tLFxuICAgICAgICAgICAgICAgIGFtb3VudDogYXNzZXRUcmFuc2Zvcm1hdGlvbi5hbW91bnQsXG4gICAgICAgICAgICAgICAgdGFyZ2V0Q2hhaW5Ub2tlbklkOiBhc3NldFRyYW5zZm9ybWF0aW9uLnRvLFxuICAgICAgICAgICAgICAgIHNvdXJjZVR4SWQ6IHRyYW5zYWN0aW9uLmhhc2gsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICAgICAgYE5vIHJvc2VuIGFzc2V0IHRyYW5zZm9ybWF0aW9uIGZvdW5kIGZvciBib3ggWyR7XG4gICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi5oYXNoXG4gICAgICAgICAgICAgICAgfS4ke2l9XTogYm94IGFzc2V0czogJHtKc29uQmlnSW50LnN0cmluZ2lmeShvdXRwdXQudG9rZW5zKX1gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGJhc2VFcnJvciArIGA6IE5vIHZhbGlkIHRyYW5zZm9ybWF0aW9uIGZvdW5kIGluIGFueSBvdXRwdXQgYm94ZXNgXG4gICAgICAgICk7XG4gICAgICB9IGVsc2VcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYmFzZUVycm9yICtcbiAgICAgICAgICAgIGA6IEluY29tcGxldGUgbWV0YWRhdGEuIGlzUGxhaW46ICR7aXNQbGFpbk9iamVjdChcbiAgICAgICAgICAgICAgZGF0YVxuICAgICAgICAgICAgKX0sIGRhdGE6ICR7SnNvbkJpZ0ludC5zdHJpbmdpZnkoZGF0YSl9YFxuICAgICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZ2V0dGluZyBDYXJkYW5vIHJvc2VuIGRhdGEgZnJvbSBHcmFwaFFMOiAke2V9YFxuICAgICAgKTtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5zdGFjaykge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlLnN0YWNrKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfTtcblxuICAvKipcbiAgICogZXh0cmFjdHMgYW5kIGJ1aWxkcyB0b2tlbiB0cmFuc2Zvcm1hdGlvbiBmcm9tIFVUWE8gYW5kIHRva2VuTWFwXG4gICAqIEBwYXJhbSBib3ggdHJhbnNhY3Rpb24gb3V0cHV0XG4gICAqIEBwYXJhbSB0b0NoYWluIGV2ZW50IHRhcmdldCBjaGFpblxuICAgKi9cbiAgZ2V0QXNzZXRUcmFuc2Zvcm1hdGlvbiA9IChcbiAgICBib3g6IEdyYXBoUUxUeE91dHB1dCxcbiAgICB0b0NoYWluOiBzdHJpbmdcbiAgKTogVG9rZW5UcmFuc2Zvcm1hdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgLy8gdHJ5IHRvIGJ1aWxkIHRyYW5zZm9ybWF0aW9uIHVzaW5nIGxvY2tlZCBhc3NldHNcbiAgICBmb3IgKGNvbnN0IGJveFRva2VuIG9mIGJveC50b2tlbnMpIHtcbiAgICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlbnMuc2VhcmNoKENBUkRBTk9fQ0hBSU4sIHtcbiAgICAgICAgdG9rZW5JZDogZ2V0Q2FyZGFub1Rva2VuSWQoXG4gICAgICAgICAgYm94VG9rZW4uYXNzZXQucG9saWN5SWQsXG4gICAgICAgICAgYm94VG9rZW4uYXNzZXQuYXNzZXROYW1lXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICAgIGlmICh0b2tlbi5sZW5ndGggPiAwICYmIE9iamVjdC5oYXNPd24odG9rZW5bMF0sIHRvQ2hhaW4pKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGZyb206IHRoaXMudG9rZW5zLmdldElEKHRva2VuWzBdLCBDQVJEQU5PX0NIQUlOKSxcbiAgICAgICAgICB0bzogdGhpcy50b2tlbnMuZ2V0SUQodG9rZW5bMF0sIHRvQ2hhaW4pLFxuICAgICAgICAgIGFtb3VudDogYm94VG9rZW4ucXVhbnRpdHksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gdHJ5IHRvIGJ1aWxkIHRyYW5zZm9ybWF0aW9uIHVzaW5nIGxvY2tlZCBBREFcbiAgICBjb25zdCBsb3ZlbGFjZSA9IHRoaXMudG9rZW5zLnNlYXJjaChDQVJEQU5PX0NIQUlOLCB7XG4gICAgICB0b2tlbklkOiBDQVJEQU5PX05BVElWRV9UT0tFTixcbiAgICB9KTtcbiAgICBpZiAobG92ZWxhY2UubGVuZ3RoID4gMCAmJiBPYmplY3QuaGFzT3duKGxvdmVsYWNlWzBdLCB0b0NoYWluKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZnJvbTogQ0FSREFOT19OQVRJVkVfVE9LRU4sXG4gICAgICAgIHRvOiB0aGlzLnRva2Vucy5nZXRJRChsb3ZlbGFjZVswXSwgdG9DaGFpbiksXG4gICAgICAgIGFtb3VudDogYm94LnZhbHVlLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG59XG4iXX0=
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { RosenData, TokenTransformation } from '../abstract/types';
|
|
2
|
-
import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
3
|
-
import { KoiosCborTransaction } from './types';
|
|
4
|
-
import { TransactionOutputJSON } from '@emurgo/cardano-serialization-lib-nodejs';
|
|
5
|
-
export declare class CardanoKoiosRosenExtractor extends AbstractRosenDataExtractor<KoiosCborTransaction> {
|
|
6
|
-
readonly chain = "cardano";
|
|
7
|
-
/**
|
|
8
|
-
* extracts RosenData from given lock transaction in Koios format
|
|
9
|
-
* @param transaction the lock transaction in Koios format
|
|
10
|
-
*/
|
|
11
|
-
extractRawData: (transaction: KoiosCborTransaction) => RosenData | undefined;
|
|
12
|
-
/**
|
|
13
|
-
* extracts and builds token transformation from UTXO and tokenMap
|
|
14
|
-
* @param box transaction output
|
|
15
|
-
* @param toChain event target chain
|
|
16
|
-
*/
|
|
17
|
-
getAssetTransformation: (box: TransactionOutputJSON, toChain: string) => TokenTransformation | undefined;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=CardanoKoiosRosenExtractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CardanoKoiosRosenExtractor.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/cardano/CardanoKoiosRosenExtractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,EACL,qBAAqB,EAKtB,MAAM,0CAA0C,CAAC;AAElD,qBAAa,0BAA2B,SAAQ,0BAA0B,CAAC,oBAAoB,CAAC;IAC9F,QAAQ,CAAC,KAAK,aAAiB;IAE/B;;;OAGG;IACH,cAAc,GACZ,aAAa,oBAAoB,KAChC,SAAS,GAAG,SAAS,CA0DtB;IAEF;;;;OAIG;IACH,sBAAsB,GACpB,KAAK,qBAAqB,EAC1B,SAAS,MAAM,KACd,mBAAmB,GAAG,SAAS,CAsChC;CACH"}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { isPlainObject } from 'lodash-es';
|
|
2
|
-
import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
3
|
-
import { CARDANO_CHAIN, CARDANO_NATIVE_TOKEN } from '../const';
|
|
4
|
-
import JsonBigInt from '@rosen-bridge/json-bigint';
|
|
5
|
-
import { getCardanoTokenId, parseRosenData } from './utils';
|
|
6
|
-
import { decode_metadatum_to_json_str, BigNum, GeneralTransactionMetadata, MetadataJsonSchema, } from '@emurgo/cardano-serialization-lib-nodejs';
|
|
7
|
-
export class CardanoKoiosRosenExtractor extends AbstractRosenDataExtractor {
|
|
8
|
-
chain = CARDANO_CHAIN;
|
|
9
|
-
/**
|
|
10
|
-
* extracts RosenData from given lock transaction in Koios format
|
|
11
|
-
* @param transaction the lock transaction in Koios format
|
|
12
|
-
*/
|
|
13
|
-
extractRawData = (transaction) => {
|
|
14
|
-
const baseError = `No rosen data found for tx [${transaction.tx_hash}]`;
|
|
15
|
-
if (!transaction.auxiliary_data)
|
|
16
|
-
return undefined;
|
|
17
|
-
const metadata = transaction.auxiliary_data.metadata;
|
|
18
|
-
try {
|
|
19
|
-
if (metadata && Object.prototype.hasOwnProperty.call(metadata, '0')) {
|
|
20
|
-
const metadataObject = GeneralTransactionMetadata.from_json(JsonBigInt.stringify(metadata));
|
|
21
|
-
const data = JsonBigInt.parse(decode_metadatum_to_json_str(metadataObject.get(BigNum.from_str('0')), MetadataJsonSchema.NoConversions));
|
|
22
|
-
const rosenData = parseRosenData(data);
|
|
23
|
-
if (rosenData) {
|
|
24
|
-
const lockOutputs = transaction.body.outputs.filter((output) => output.address === this.lockAddress);
|
|
25
|
-
for (const output of lockOutputs) {
|
|
26
|
-
const assetTransformation = this.getAssetTransformation(output, rosenData.toChain);
|
|
27
|
-
if (assetTransformation) {
|
|
28
|
-
return {
|
|
29
|
-
...rosenData,
|
|
30
|
-
sourceChainTokenId: assetTransformation.from,
|
|
31
|
-
amount: assetTransformation.amount,
|
|
32
|
-
targetChainTokenId: assetTransformation.to,
|
|
33
|
-
sourceTxId: transaction.tx_hash,
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
this.logger.debug(baseError + `: No valid transformation found in any output boxes`);
|
|
38
|
-
}
|
|
39
|
-
else
|
|
40
|
-
this.logger.debug(baseError +
|
|
41
|
-
`: Incomplete metadata. isPlain: ${isPlainObject(data)}, data: ${JsonBigInt.stringify(data)}`);
|
|
42
|
-
}
|
|
43
|
-
else
|
|
44
|
-
this.logger.debug(baseError + `: Invalid metadata: ${JsonBigInt.stringify(metadata)}`);
|
|
45
|
-
}
|
|
46
|
-
catch (e) {
|
|
47
|
-
this.logger.debug(`An error occurred while getting Cardano rosen data from Koios: ${e}`);
|
|
48
|
-
if (e instanceof Error && e.stack) {
|
|
49
|
-
this.logger.debug(e.stack);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return undefined;
|
|
53
|
-
};
|
|
54
|
-
/**
|
|
55
|
-
* extracts and builds token transformation from UTXO and tokenMap
|
|
56
|
-
* @param box transaction output
|
|
57
|
-
* @param toChain event target chain
|
|
58
|
-
*/
|
|
59
|
-
getAssetTransformation = (box, toChain) => {
|
|
60
|
-
// try to build transformation using locked assets
|
|
61
|
-
if (box.amount.multiasset) {
|
|
62
|
-
const assets = box.amount.multiasset;
|
|
63
|
-
for (const policyId of Object.keys(assets)) {
|
|
64
|
-
for (const assetName of Object.keys(assets[policyId])) {
|
|
65
|
-
const token = this.tokens.search(CARDANO_CHAIN, {
|
|
66
|
-
tokenId: getCardanoTokenId(policyId, assetName),
|
|
67
|
-
});
|
|
68
|
-
if (token.length > 0 && Object.hasOwn(token[0], toChain)) {
|
|
69
|
-
return {
|
|
70
|
-
from: this.tokens.getID(token[0], CARDANO_CHAIN),
|
|
71
|
-
to: this.tokens.getID(token[0], toChain),
|
|
72
|
-
amount: assets[policyId][assetName].toString(),
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
// try to build transformation using locked ADA
|
|
79
|
-
const lovelace = this.tokens.search(CARDANO_CHAIN, {
|
|
80
|
-
tokenId: CARDANO_NATIVE_TOKEN,
|
|
81
|
-
});
|
|
82
|
-
if (lovelace.length > 0 && Object.hasOwn(lovelace[0], toChain)) {
|
|
83
|
-
return {
|
|
84
|
-
from: CARDANO_NATIVE_TOKEN,
|
|
85
|
-
to: this.tokens.getID(lovelace[0], toChain),
|
|
86
|
-
amount: box.amount.coin,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
this.logger.debug(`No rosen asset transformation found for box with assets: ${JsonBigInt.stringify(box.amount)}`);
|
|
91
|
-
return undefined;
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FyZGFub0tvaW9zUm9zZW5FeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2NhcmRhbm8vQ2FyZGFub0tvaW9zUm9zZW5FeHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUxQyxPQUFPLDBCQUEwQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFL0QsT0FBTyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM1RCxPQUFPLEVBRUwsNEJBQTRCLEVBQzVCLE1BQU0sRUFDTiwwQkFBMEIsRUFDMUIsa0JBQWtCLEdBQ25CLE1BQU0sMENBQTBDLENBQUM7QUFFbEQsTUFBTSxPQUFPLDBCQUEyQixTQUFRLDBCQUFnRDtJQUNyRixLQUFLLEdBQUcsYUFBYSxDQUFDO0lBRS9COzs7T0FHRztJQUNILGNBQWMsR0FBRyxDQUNmLFdBQWlDLEVBQ1YsRUFBRTtRQUN6QixNQUFNLFNBQVMsR0FBRywrQkFBK0IsV0FBVyxDQUFDLE9BQU8sR0FBRyxDQUFDO1FBQ3hFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ2xELE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1FBQ3JELElBQUksQ0FBQztZQUNILElBQUksUUFBUSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEUsTUFBTSxjQUFjLEdBQUcsMEJBQTBCLENBQUMsU0FBUyxDQUN6RCxVQUFVLENBQUMsU0FBUyxD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QztJQUNILENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGFpbk9iamVjdCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBSb3NlbkRhdGEsIFRva2VuVHJhbnNmb3JtYXRpb24gfSBmcm9tICcuLi9hYnN0cmFjdC90eXBlcyc7XG5pbXBvcnQgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3IgZnJvbSAnLi4vYWJzdHJhY3QvQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3InO1xuaW1wb3J0IHsgQ0FSREFOT19DSEFJTiwgQ0FSREFOT19OQVRJVkVfVE9LRU4gfSBmcm9tICcuLi9jb25zdCc7XG5pbXBvcnQgeyBLb2lvc0Nib3JUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IEpzb25CaWdJbnQgZnJvbSAnQHJvc2VuLWJyaWRnZS9qc29uLWJpZ2ludCc7XG5pbXBvcnQgeyBnZXRDYXJkYW5vVG9rZW5JZCwgcGFyc2VSb3NlbkRhdGEgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uT3V0cHV0SlNPTixcbiAgZGVjb2RlX21ldGFkYXR1bV90b19qc29uX3N0cixcbiAgQmlnTnVtLFxuICBHZW5lcmFsVHJhbnNhY3Rpb25NZXRhZGF0YSxcbiAgTWV0YWRhdGFKc29uU2NoZW1hLFxufSBmcm9tICdAZW11cmdvL2NhcmRhbm8tc2VyaWFsaXphdGlvbi1saWItbm9kZWpzJztcblxuZXhwb3J0IGNsYXNzIENhcmRhbm9Lb2lvc1Jvc2VuRXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3I8S29pb3NDYm9yVHJhbnNhY3Rpb24+IHtcbiAgcmVhZG9ubHkgY2hhaW4gPSBDQVJEQU5PX0NIQUlOO1xuXG4gIC8qKlxuICAgKiBleHRyYWN0cyBSb3NlbkRhdGEgZnJvbSBnaXZlbiBsb2NrIHRyYW5zYWN0aW9uIGluIEtvaW9zIGZvcm1hdFxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gdGhlIGxvY2sgdHJhbnNhY3Rpb24gaW4gS29pb3MgZm9ybWF0XG4gICAqL1xuICBleHRyYWN0UmF3RGF0YSA9IChcbiAgICB0cmFuc2FjdGlvbjogS29pb3NDYm9yVHJhbnNhY3Rpb25cbiAgKTogUm9zZW5EYXRhIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBiYXNlRXJyb3IgPSBgTm8gcm9zZW4gZGF0YSBmb3VuZCBmb3IgdHggWyR7dHJhbnNhY3Rpb24udHhfaGFzaH1dYDtcbiAgICBpZiAoIXRyYW5zYWN0aW9uLmF1eGlsaWFyeV9kYXRhKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdHJhbnNhY3Rpb24uYXV4aWxpYXJ5X2RhdGEubWV0YWRhdGE7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChtZXRhZGF0YSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobWV0YWRhdGEsICcwJykpIHtcbiAgICAgICAgY29uc3QgbWV0YWRhdGFPYmplY3QgPSBHZW5lcmFsVHJhbnNhY3Rpb25NZXRhZGF0YS5mcm9tX2pzb24oXG4gICAgICAgICAgSnNvbkJpZ0ludC5zdHJpbmdpZnkobWV0YWRhdGEpXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBKc29uQmlnSW50LnBhcnNlKFxuICAgICAgICAgIGRlY29kZV9tZXRhZGF0dW1fdG9fanNvbl9zdHIoXG4gICAgICAgICAgICBtZXRhZGF0YU9iamVjdC5nZXQoQmlnTnVtLmZyb21fc3RyKCcwJykpISxcbiAgICAgICAgICAgIE1ldGFkYXRhSnNvblNjaGVtYS5Ob0NvbnZlcnNpb25zXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCByb3NlbkRhdGEgPSBwYXJzZVJvc2VuRGF0YShkYXRhKTtcbiAgICAgICAgaWYgKHJvc2VuRGF0YSkge1xuICAgICAgICAgIGNvbnN0IGxvY2tPdXRwdXRzID0gdHJhbnNhY3Rpb24uYm9keS5vdXRwdXRzLmZpbHRlcihcbiAgICAgICAgICAgIChvdXRwdXQpID0+IG91dHB1dC5hZGRyZXNzID09PSB0aGlzLmxvY2tBZGRyZXNzXG4gICAgICAgICAgKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiBsb2NrT3V0cHV0cykge1xuICAgICAgICAgICAgY29uc3QgYXNzZXRUcmFuc2Zvcm1hdGlvbiA9IHRoaXMuZ2V0QXNzZXRUcmFuc2Zvcm1hdGlvbihcbiAgICAgICAgICAgICAgb3V0cHV0LFxuICAgICAgICAgICAgICByb3NlbkRhdGEudG9DaGFpblxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChhc3NldFRyYW5zZm9ybWF0aW9uKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4ucm9zZW5EYXRhLFxuICAgICAgICAgICAgICAgIHNvdXJjZUNoYWluVG9rZW5JZDogYXNzZXRUcmFuc2Zvcm1hdGlvbi5mcm9tLFxuICAgICAgICAgICAgICAgIGFtb3VudDogYXNzZXRUcmFuc2Zvcm1hdGlvbi5hbW91bnQsXG4gICAgICAgICAgICAgICAgdGFyZ2V0Q2hhaW5Ub2tlbklkOiBhc3NldFRyYW5zZm9ybWF0aW9uLnRvLFxuICAgICAgICAgICAgICAgIHNvdXJjZVR4SWQ6IHRyYW5zYWN0aW9uLnR4X2hhc2gsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYmFzZUVycm9yICsgYDogTm8gdmFsaWQgdHJhbnNmb3JtYXRpb24gZm91bmQgaW4gYW55IG91dHB1dCBib3hlc2BcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2VcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGJhc2VFcnJvciArXG4gICAgICAgICAgICAgIGA6IEluY29tcGxldGUgbWV0YWRhdGEuIGlzUGxhaW46ICR7aXNQbGFpbk9iamVjdChcbiAgICAgICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICAgICl9LCBkYXRhOiAke0pzb25CaWdJbnQuc3RyaW5naWZ5KGRhdGEpfWBcbiAgICAgICAgICApO1xuICAgICAgfSBlbHNlXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGJhc2VFcnJvciArIGA6IEludmFsaWQgbWV0YWRhdGE6ICR7SnNvbkJpZ0ludC5zdHJpbmdpZnkobWV0YWRhdGEpfWBcbiAgICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGdldHRpbmcgQ2FyZGFubyByb3NlbiBkYXRhIGZyb20gS29pb3M6ICR7ZX1gXG4gICAgICApO1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvciAmJiBlLnN0YWNrKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGUuc3RhY2spO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9O1xuXG4gIC8qKlxuICAgKiBleHRyYWN0cyBhbmQgYnVpbGRzIHRva2VuIHRyYW5zZm9ybWF0aW9uIGZyb20gVVRYTyBhbmQgdG9rZW5NYXBcbiAgICogQHBhcmFtIGJveCB0cmFuc2FjdGlvbiBvdXRwdXRcbiAgICogQHBhcmFtIHRvQ2hhaW4gZXZlbnQgdGFyZ2V0IGNoYWluXG4gICAqL1xuICBnZXRBc3NldFRyYW5zZm9ybWF0aW9uID0gKFxuICAgIGJveDogVHJhbnNhY3Rpb25PdXRwdXRKU09OLFxuICAgIHRvQ2hhaW46IHN0cmluZ1xuICApOiBUb2tlblRyYW5zZm9ybWF0aW9uIHwgdW5kZWZpbmVkID0+IHtcbiAgICAvLyB0cnkgdG8gYnVpbGQgdHJhbnNmb3JtYXRpb24gdXNpbmcgbG9ja2VkIGFzc2V0c1xuICAgIGlmIChib3guYW1vdW50Lm11bHRpYXNzZXQpIHtcbiAgICAgIGNvbnN0IGFzc2V0cyA9IGJveC5hbW91bnQubXVsdGlhc3NldDtcbiAgICAgIGZvciAoY29uc3QgcG9saWN5SWQgb2YgT2JqZWN0LmtleXMoYXNzZXRzKSkge1xuICAgICAgICBmb3IgKGNvbnN0IGFzc2V0TmFtZSBvZiBPYmplY3Qua2V5cyhhc3NldHNbcG9saWN5SWRdKSkge1xuICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlbnMuc2VhcmNoKENBUkRBTk9fQ0hBSU4sIHtcbiAgICAgICAgICAgIHRva2VuSWQ6IGdldENhcmRhbm9Ub2tlbklkKHBvbGljeUlkLCBhc3NldE5hbWUpLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICh0b2tlbi5sZW5ndGggPiAwICYmIE9iamVjdC5oYXNPd24odG9rZW5bMF0sIHRvQ2hhaW4pKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBmcm9tOiB0aGlzLnRva2Vucy5nZXRJRCh0b2tlblswXSwgQ0FSREFOT19DSEFJTiksXG4gICAgICAgICAgICAgIHRvOiB0aGlzLnRva2Vucy5nZXRJRCh0b2tlblswXSwgdG9DaGFpbiksXG4gICAgICAgICAgICAgIGFtb3VudDogYXNzZXRzW3BvbGljeUlkXVthc3NldE5hbWVdLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRyeSB0byBidWlsZCB0cmFuc2Zvcm1hdGlvbiB1c2luZyBsb2NrZWQgQURBXG4gICAgY29uc3QgbG92ZWxhY2UgPSB0aGlzLnRva2Vucy5zZWFyY2goQ0FSREFOT19DSEFJTiwge1xuICAgICAgdG9rZW5JZDogQ0FSREFOT19OQVRJVkVfVE9LRU4sXG4gICAgfSk7XG4gICAgaWYgKGxvdmVsYWNlLmxlbmd0aCA+IDAgJiYgT2JqZWN0Lmhhc093bihsb3ZlbGFjZVswXSwgdG9DaGFpbikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZyb206IENBUkRBTk9fTkFUSVZFX1RPS0VOLFxuICAgICAgICB0bzogdGhpcy50b2tlbnMuZ2V0SUQobG92ZWxhY2VbMF0sIHRvQ2hhaW4pLFxuICAgICAgICBhbW91bnQ6IGJveC5hbW91bnQuY29pbixcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgTm8gcm9zZW4gYXNzZXQgdHJhbnNmb3JtYXRpb24gZm91bmQgZm9yIGJveCB3aXRoIGFzc2V0czogJHtKc29uQmlnSW50LnN0cmluZ2lmeShcbiAgICAgICAgICBib3guYW1vdW50XG4gICAgICAgICl9YFxuICAgICAgKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9O1xufVxuIl19
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { RosenData, TokenTransformation } from '../abstract/types';
|
|
2
|
-
import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
3
|
-
import { Transaction, TransactionOutput } from '@cardano-ogmios/schema';
|
|
4
|
-
export declare class CardanoOgmiosRosenExtractor extends AbstractRosenDataExtractor<Transaction> {
|
|
5
|
-
readonly chain = "cardano";
|
|
6
|
-
/**
|
|
7
|
-
* extracts RosenData from given lock transaction in Ogmios format
|
|
8
|
-
* @param transaction the lock transaction in Koios format
|
|
9
|
-
*/
|
|
10
|
-
extractRawData: (transaction: Transaction) => RosenData | undefined;
|
|
11
|
-
/**
|
|
12
|
-
* extracts and builds token transformation from TxOut and tokenMap
|
|
13
|
-
* @param box transaction output
|
|
14
|
-
* @param toChain event target chain
|
|
15
|
-
*/
|
|
16
|
-
getAssetTransformation: (box: TransactionOutput, toChain: string) => TokenTransformation | undefined;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=CardanoOgmiosRosenExtractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CardanoOgmiosRosenExtractor.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/cardano/CardanoOgmiosRosenExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAEL,WAAW,EACX,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAIhC,qBAAa,2BAA4B,SAAQ,0BAA0B,CAAC,WAAW,CAAC;IACtF,QAAQ,CAAC,KAAK,aAAiB;IAC/B;;;OAGG;IACH,cAAc,GAAI,aAAa,WAAW,KAAG,SAAS,GAAG,SAAS,CAqDhE;IAEF;;;;OAIG;IACH,sBAAsB,GACpB,KAAK,iBAAiB,EACtB,SAAS,MAAM,KACd,mBAAmB,GAAG,SAAS,CAuChC;CACH"}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
2
|
-
import { CARDANO_CHAIN, CARDANO_NATIVE_TOKEN } from '../const';
|
|
3
|
-
import JsonBigInt from '@rosen-bridge/json-bigint';
|
|
4
|
-
import { getCardanoTokenId, parseRosenData } from './utils';
|
|
5
|
-
export class CardanoOgmiosRosenExtractor extends AbstractRosenDataExtractor {
|
|
6
|
-
chain = CARDANO_CHAIN;
|
|
7
|
-
/**
|
|
8
|
-
* extracts RosenData from given lock transaction in Ogmios format
|
|
9
|
-
* @param transaction the lock transaction in Koios format
|
|
10
|
-
*/
|
|
11
|
-
extractRawData = (transaction) => {
|
|
12
|
-
const baseError = `No rosen data found for tx [${transaction.id}]`;
|
|
13
|
-
const metadata = transaction.metadata;
|
|
14
|
-
try {
|
|
15
|
-
if (metadata) {
|
|
16
|
-
const blob = metadata.labels;
|
|
17
|
-
if (blob && blob['0'] && blob['0'].json) {
|
|
18
|
-
const data = blob['0'].json;
|
|
19
|
-
const rosenData = parseRosenData(data);
|
|
20
|
-
if (rosenData) {
|
|
21
|
-
const lockOutputs = transaction.outputs.filter((output) => output.address === this.lockAddress);
|
|
22
|
-
for (const output of lockOutputs) {
|
|
23
|
-
const assetTransformation = this.getAssetTransformation(output, rosenData.toChain);
|
|
24
|
-
if (assetTransformation) {
|
|
25
|
-
return {
|
|
26
|
-
...rosenData,
|
|
27
|
-
sourceChainTokenId: assetTransformation.from,
|
|
28
|
-
amount: assetTransformation.amount,
|
|
29
|
-
targetChainTokenId: assetTransformation.to,
|
|
30
|
-
sourceTxId: transaction.id,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
this.logger.debug(baseError + `: No valid transformation found in any output boxes`);
|
|
35
|
-
}
|
|
36
|
-
else
|
|
37
|
-
this.logger.debug(baseError +
|
|
38
|
-
`: Incomplete metadata: ${JsonBigInt.stringify(metadata)}`);
|
|
39
|
-
}
|
|
40
|
-
else
|
|
41
|
-
this.logger.debug(baseError + `: Invalid blob: ${JsonBigInt.stringify(metadata)}`);
|
|
42
|
-
}
|
|
43
|
-
else
|
|
44
|
-
this.logger.debug(baseError + `: Invalid metadata: ${JsonBigInt.stringify(metadata)}`);
|
|
45
|
-
}
|
|
46
|
-
catch (e) {
|
|
47
|
-
this.logger.debug(`An error occurred while getting Cardano rosen data from Ogmios: ${e}`);
|
|
48
|
-
if (e instanceof Error && e.stack) {
|
|
49
|
-
this.logger.debug(e.stack);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return undefined;
|
|
53
|
-
};
|
|
54
|
-
/**
|
|
55
|
-
* extracts and builds token transformation from TxOut and tokenMap
|
|
56
|
-
* @param box transaction output
|
|
57
|
-
* @param toChain event target chain
|
|
58
|
-
*/
|
|
59
|
-
getAssetTransformation = (box, toChain) => {
|
|
60
|
-
// try to build transformation using locked assets
|
|
61
|
-
const assets = box.value;
|
|
62
|
-
for (const policyId of Object.keys(assets)) {
|
|
63
|
-
if (policyId === CARDANO_NATIVE_TOKEN)
|
|
64
|
-
continue;
|
|
65
|
-
// according to ogmios v6 docs assets are stores as
|
|
66
|
-
// [policyId]: {[assetName]: amount}
|
|
67
|
-
for (const assetName of Object.keys(assets[policyId])) {
|
|
68
|
-
const token = this.tokens.search(CARDANO_CHAIN, {
|
|
69
|
-
tokenId: getCardanoTokenId(policyId, assetName),
|
|
70
|
-
});
|
|
71
|
-
if (token.length > 0 && Object.hasOwn(token[0], toChain)) {
|
|
72
|
-
return {
|
|
73
|
-
from: this.tokens.getID(token[0], CARDANO_CHAIN),
|
|
74
|
-
to: this.tokens.getID(token[0], toChain),
|
|
75
|
-
amount: assets[policyId][assetName].toString(),
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
// try to build transformation using locked ADA
|
|
81
|
-
const lovelace = this.tokens.search(CARDANO_CHAIN, {
|
|
82
|
-
tokenId: CARDANO_NATIVE_TOKEN,
|
|
83
|
-
});
|
|
84
|
-
if (lovelace.length > 0 && Object.hasOwn(lovelace[0], toChain)) {
|
|
85
|
-
return {
|
|
86
|
-
from: CARDANO_NATIVE_TOKEN,
|
|
87
|
-
to: this.tokens.getID(lovelace[0], toChain),
|
|
88
|
-
amount: assets.ada.lovelace.toString(),
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
this.logger.debug(`No rosen asset transformation found for Ogmios box with assets: ${JsonBigInt.stringify(box.value.assets)}`);
|
|
93
|
-
return undefined;
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FyZGFub09nbWlvc1Jvc2VuRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2dldFJvc2VuRGF0YS9jYXJkYW5vL0NhcmRhbm9PZ21pb3NSb3NlbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLDBCQUEwQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFNL0QsT0FBTyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU1RCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsMEJBQXVDO0lBQzdFLEtBQUssR0FBRyxhQUFhLENBQUM7SUFDL0I7OztPQUdHO0lBQ0gsY0FBYyxHQUFHLENBQUMsV0FBd0IsRUFBeUIsRUFBRTtRQUNuRSxNQUFNLFNBQVMsR0FBRywrQkFBK0IsV0FBVyxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ25FLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7UUFDdEMsSUFBSSxDQUFDO1lBQ0gsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUM3QixJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBc0IsQ0FBQztvQkFDOUMsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN2QyxJQUFJLFNBQVMsRUFBRSxDQUFDO3dCQUNkLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsTUFBTSxD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S0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQzt3QkFDeEMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUU7cUJBQy9DLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsK0NBQStDO1FBQy9DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRTtZQUNqRCxPQUFPLEVBQUUsb0JBQW9CO1NBQzlCLENBQUMsQ0FBQztRQUNILElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMvRCxPQUFPO2dCQUNMLElBQUksRUFBRSxvQkFBb0I7Z0JBQzFCLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO2dCQUMzQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO2FBQ3ZDLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLG1FQUFtRSxVQUFVLENBQUMsU0FBUyxDQUNyRixHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDakIsRUFBRSxDQUNKLENBQUM7WUFDRixPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO0lBQ0gsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3NlbkRhdGEsIFRva2VuVHJhbnNmb3JtYXRpb24gfSBmcm9tICcuLi9hYnN0cmFjdC90eXBlcyc7XG5pbXBvcnQgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3IgZnJvbSAnLi4vYWJzdHJhY3QvQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3InO1xuaW1wb3J0IHsgQ0FSREFOT19DSEFJTiwgQ0FSREFOT19OQVRJVkVfVE9LRU4gfSBmcm9tICcuLi9jb25zdCc7XG5pbXBvcnQge1xuICBPYmplY3ROb1NjaGVtYSxcbiAgVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uT3V0cHV0LFxufSBmcm9tICdAY2FyZGFuby1vZ21pb3Mvc2NoZW1hJztcbmltcG9ydCBKc29uQmlnSW50IGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuaW1wb3J0IHsgZ2V0Q2FyZGFub1Rva2VuSWQsIHBhcnNlUm9zZW5EYXRhIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBDYXJkYW5vT2dtaW9zUm9zZW5FeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvcjxUcmFuc2FjdGlvbj4ge1xuICByZWFkb25seSBjaGFpbiA9IENBUkRBTk9fQ0hBSU47XG4gIC8qKlxuICAgKiBleHRyYWN0cyBSb3NlbkRhdGEgZnJvbSBnaXZlbiBsb2NrIHRyYW5zYWN0aW9uIGluIE9nbWlvcyBmb3JtYXRcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIHRoZSBsb2NrIHRyYW5zYWN0aW9uIGluIEtvaW9zIGZvcm1hdFxuICAgKi9cbiAgZXh0cmFjdFJhd0RhdGEgPSAodHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uKTogUm9zZW5EYXRhIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBiYXNlRXJyb3IgPSBgTm8gcm9zZW4gZGF0YSBmb3VuZCBmb3IgdHggWyR7dHJhbnNhY3Rpb24uaWR9XWA7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0cmFuc2FjdGlvbi5tZXRhZGF0YTtcbiAgICB0cnkge1xuICAgICAgaWYgKG1ldGFkYXRhKSB7XG4gICAgICAgIGNvbnN0IGJsb2IgPSBtZXRhZGF0YS5sYWJlbHM7XG4gICAgICAgIGlmIChibG9iICYmIGJsb2JbJzAnXSAmJiBibG9iWycwJ10uanNvbikge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBibG9iWycwJ10uanNvbiBhcyBPYmplY3ROb1NjaGVtYTtcbiAgICAgICAgICBjb25zdCByb3NlbkRhdGEgPSBwYXJzZVJvc2VuRGF0YShkYXRhKTtcbiAgICAgICAgICBpZiAocm9zZW5EYXRhKSB7XG4gICAgICAgICAgICBjb25zdCBsb2NrT3V0cHV0cyA9IHRyYW5zYWN0aW9uLm91dHB1dHMuZmlsdGVyKFxuICAgICAgICAgICAgICAob3V0cHV0KSA9PiBvdXRwdXQuYWRkcmVzcyA9PT0gdGhpcy5sb2NrQWRkcmVzc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIGxvY2tPdXRwdXRzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFzc2V0VHJhbnNmb3JtYXRpb24gPSB0aGlzLmdldEFzc2V0VHJhbnNmb3JtYXRpb24oXG4gICAgICAgICAgICAgICAgb3V0cHV0LFxuICAgICAgICAgICAgICAgIHJvc2VuRGF0YS50b0NoYWluXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmIChhc3NldFRyYW5zZm9ybWF0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIC4uLnJvc2VuRGF0YSxcbiAgICAgICAgICAgICAgICAgIHNvdXJjZUNoYWluVG9rZW5JZDogYXNzZXRUcmFuc2Zvcm1hdGlvbi5mcm9tLFxuICAgICAgICAgICAgICAgICAgYW1vdW50OiBhc3NldFRyYW5zZm9ybWF0aW9uLmFtb3VudCxcbiAgICAgICAgICAgICAgICAgIHRhcmdldENoYWluVG9rZW5JZDogYXNzZXRUcmFuc2Zvcm1hdGlvbi50byxcbiAgICAgICAgICAgICAgICAgIHNvdXJjZVR4SWQ6IHRyYW5zYWN0aW9uLmlkLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBObyB2YWxpZCB0cmFuc2Zvcm1hdGlvbiBmb3VuZCBpbiBhbnkgb3V0cHV0IGJveGVzYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgICBiYXNlRXJyb3IgK1xuICAgICAgICAgICAgICAgIGA6IEluY29tcGxldGUgbWV0YWRhdGE6ICR7SnNvbkJpZ0ludC5zdHJpbmdpZnkobWV0YWRhdGEpfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYmFzZUVycm9yICsgYDogSW52YWxpZCBibG9iOiAke0pzb25CaWdJbnQuc3RyaW5naWZ5KG1ldGFkYXRhKX1gXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZVxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBJbnZhbGlkIG1ldGFkYXRhOiAke0pzb25CaWdJbnQuc3RyaW5naWZ5KG1ldGFkYXRhKX1gXG4gICAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIENhcmRhbm8gcm9zZW4gZGF0YSBmcm9tIE9nbWlvczogJHtlfWBcbiAgICAgICk7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yICYmIGUuc3RhY2spIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoZS5zdGFjayk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIGFuZCBidWlsZHMgdG9rZW4gdHJhbnNmb3JtYXRpb24gZnJvbSBUeE91dCBhbmQgdG9rZW5NYXBcbiAgICogQHBhcmFtIGJveCB0cmFuc2FjdGlvbiBvdXRwdXRcbiAgICogQHBhcmFtIHRvQ2hhaW4gZXZlbnQgdGFyZ2V0IGNoYWluXG4gICAqL1xuICBnZXRBc3NldFRyYW5zZm9ybWF0aW9uID0gKFxuICAgIGJveDogVHJhbnNhY3Rpb25PdXRwdXQsXG4gICAgdG9DaGFpbjogc3RyaW5nXG4gICk6IFRva2VuVHJhbnNmb3JtYXRpb24gfCB1bmRlZmluZWQgPT4ge1xuICAgIC8vIHRyeSB0byBidWlsZCB0cmFuc2Zvcm1hdGlvbiB1c2luZyBsb2NrZWQgYXNzZXRzXG4gICAgY29uc3QgYXNzZXRzID0gYm94LnZhbHVlO1xuICAgIGZvciAoY29uc3QgcG9saWN5SWQgb2YgT2JqZWN0LmtleXMoYXNzZXRzKSkge1xuICAgICAgaWYgKHBvbGljeUlkID09PSBDQVJEQU5PX05BVElWRV9UT0tFTikgY29udGludWU7XG4gICAgICAvLyBhY2NvcmRpbmcgdG8gb2dtaW9zIHY2IGRvY3MgYXNzZXRzIGFyZSBzdG9yZXMgYXNcbiAgICAgIC8vICAgICAgW3BvbGljeUlkXToge1thc3NldE5hbWVdOiBhbW91bnR9XG4gICAgICBmb3IgKGNvbnN0IGFzc2V0TmFtZSBvZiBPYmplY3Qua2V5cyhhc3NldHNbcG9saWN5SWRdKSkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMudG9rZW5zLnNlYXJjaChDQVJEQU5PX0NIQUlOLCB7XG4gICAgICAgICAgdG9rZW5JZDogZ2V0Q2FyZGFub1Rva2VuSWQocG9saWN5SWQsIGFzc2V0TmFtZSksXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAodG9rZW4ubGVuZ3RoID4gMCAmJiBPYmplY3QuaGFzT3duKHRva2VuWzBdLCB0b0NoYWluKSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmcm9tOiB0aGlzLnRva2Vucy5nZXRJRCh0b2tlblswXSwgQ0FSREFOT19DSEFJTiksXG4gICAgICAgICAgICB0bzogdGhpcy50b2tlbnMuZ2V0SUQodG9rZW5bMF0sIHRvQ2hhaW4pLFxuICAgICAgICAgICAgYW1vdW50OiBhc3NldHNbcG9saWN5SWRdW2Fzc2V0TmFtZV0udG9TdHJpbmcoKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gdHJ5IHRvIGJ1aWxkIHRyYW5zZm9ybWF0aW9uIHVzaW5nIGxvY2tlZCBBREFcbiAgICBjb25zdCBsb3ZlbGFjZSA9IHRoaXMudG9rZW5zLnNlYXJjaChDQVJEQU5PX0NIQUlOLCB7XG4gICAgICB0b2tlbklkOiBDQVJEQU5PX05BVElWRV9UT0tFTixcbiAgICB9KTtcbiAgICBpZiAobG92ZWxhY2UubGVuZ3RoID4gMCAmJiBPYmplY3QuaGFzT3duKGxvdmVsYWNlWzBdLCB0b0NoYWluKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZnJvbTogQ0FSREFOT19OQVRJVkVfVE9LRU4sXG4gICAgICAgIHRvOiB0aGlzLnRva2Vucy5nZXRJRChsb3ZlbGFjZVswXSwgdG9DaGFpbiksXG4gICAgICAgIGFtb3VudDogYXNzZXRzLmFkYS5sb3ZlbGFjZS50b1N0cmluZygpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBObyByb3NlbiBhc3NldCB0cmFuc2Zvcm1hdGlvbiBmb3VuZCBmb3IgT2dtaW9zIGJveCB3aXRoIGFzc2V0czogJHtKc29uQmlnSW50LnN0cmluZ2lmeShcbiAgICAgICAgICBib3gudmFsdWUuYXNzZXRzXG4gICAgICAgICl9YFxuICAgICAgKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9O1xufVxuIl19
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
2
|
-
import { RosenData, TokenTransformation } from '../abstract/types';
|
|
3
|
-
import { CardanoBoxCandidate } from './types';
|
|
4
|
-
export declare class CardanoRosenExtractor extends AbstractRosenDataExtractor<string> {
|
|
5
|
-
readonly chain = "cardano";
|
|
6
|
-
/**
|
|
7
|
-
* extracts RosenData from given lock transaction in CardanoTx format
|
|
8
|
-
* @param serializedTransaction stringified transaction in CardanoTx format
|
|
9
|
-
*/
|
|
10
|
-
extractRawData: (serializedTransaction: string) => RosenData | undefined;
|
|
11
|
-
/**
|
|
12
|
-
* extracts and builds token transformation from CardanoBoxCandidate and tokenMap
|
|
13
|
-
* @param box transaction output in CardanoBoxCandidate format
|
|
14
|
-
* @param toChain event target chain
|
|
15
|
-
*/
|
|
16
|
-
getAssetTransformation: (box: CardanoBoxCandidate, toChain: string) => TokenTransformation | undefined;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=CardanoRosenExtractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CardanoRosenExtractor.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/cardano/CardanoRosenExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAa,MAAM,SAAS,CAAC;AAKzD,qBAAa,qBAAsB,SAAQ,0BAA0B,CAAC,MAAM,CAAC;IAC3E,QAAQ,CAAC,KAAK,aAAiB;IAC/B;;;OAGG;IACH,cAAc,GAAI,uBAAuB,MAAM,KAAG,SAAS,GAAG,SAAS,CAiDrE;IAEF;;;;OAIG;IACH,sBAAsB,GACpB,KAAK,mBAAmB,EACxB,SAAS,MAAM,KACd,mBAAmB,GAAG,SAAS,CAkChC;CACH"}
|