@rosen-bridge/rosen-extractor 6.3.1 → 6.4.0-66382a71
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/lib/getRosenData/cardano/CardanoKoiosCborRosenExtractor.d.ts +19 -0
- package/dist/lib/getRosenData/cardano/CardanoKoiosCborRosenExtractor.d.ts.map +1 -0
- package/dist/lib/getRosenData/cardano/CardanoKoiosCborRosenExtractor.js +98 -0
- package/dist/lib/getRosenData/cardano/CardanoKoiosRosenExtractor.js +2 -2
- package/dist/lib/getRosenData/cardano/cardanoSerializationTypes.d.ts +703 -0
- package/dist/lib/getRosenData/cardano/cardanoSerializationTypes.d.ts.map +1 -0
- package/dist/lib/getRosenData/cardano/cardanoSerializationTypes.js +2 -0
- package/dist/lib/getRosenData/cardano/types.d.ts +12 -7
- package/dist/lib/getRosenData/cardano/types.d.ts.map +1 -1
- package/dist/lib/getRosenData/cardano/types.js +1 -1
- package/dist/lib/getRosenData/doge/DogeRpcRosenExtractor.d.ts +22 -0
- package/dist/lib/getRosenData/doge/DogeRpcRosenExtractor.d.ts.map +1 -0
- package/dist/lib/getRosenData/doge/DogeRpcRosenExtractor.js +105 -0
- package/dist/lib/getRosenData/doge/types.d.ts +30 -0
- package/dist/lib/getRosenData/doge/types.d.ts.map +1 -1
- package/dist/lib/getRosenData/doge/types.js +1 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +2 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1,19 @@
|
|
|
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 CardanoKoiosCborRosenExtractor 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=CardanoKoiosCborRosenExtractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CardanoKoiosCborRosenExtractor.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/cardano/CardanoKoiosCborRosenExtractor.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,EAKL,qBAAqB,EACtB,MAAM,0CAA0C,CAAC;AAElD,qBAAa,8BAA+B,SAAQ,0BAA0B,CAAC,oBAAoB,CAAC;IAClG,QAAQ,CAAC,KAAK,aAAiB;IAE/B;;;OAGG;IACH,cAAc,gBACC,oBAAoB,KAChC,SAAS,GAAG,SAAS,CA2DtB;IAEF;;;;OAIG;IACH,sBAAsB,QACf,qBAAqB,WACjB,MAAM,KACd,mBAAmB,GAAG,SAAS,CAuChC;CACH"}
|
|
@@ -0,0 +1,98 @@
|
|
|
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 { parseRosenData } from './utils';
|
|
6
|
+
import { BigNum, decode_metadatum_to_json_str, GeneralTransactionMetadata, MetadataJsonSchema, } from '@emurgo/cardano-serialization-lib-nodejs';
|
|
7
|
+
export class CardanoKoiosCborRosenExtractor 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
|
+
if (!transaction.auxiliary_data)
|
|
18
|
+
return undefined;
|
|
19
|
+
const metadata = transaction.auxiliary_data.metadata;
|
|
20
|
+
try {
|
|
21
|
+
if (metadata && Object.prototype.hasOwnProperty.call(metadata, '0')) {
|
|
22
|
+
const metadataObject = GeneralTransactionMetadata.from_json(JsonBigInt.stringify(metadata));
|
|
23
|
+
const data = JsonBigInt.parse(decode_metadatum_to_json_str(metadataObject.get(BigNum.from_str('0')), MetadataJsonSchema.NoConversions));
|
|
24
|
+
const rosenData = parseRosenData(data);
|
|
25
|
+
if (rosenData) {
|
|
26
|
+
const lockOutputs = transaction.body.outputs.filter((output) => output.address === this.lockAddress);
|
|
27
|
+
for (const output of lockOutputs) {
|
|
28
|
+
const assetTransformation = this.getAssetTransformation(output, rosenData.toChain);
|
|
29
|
+
if (assetTransformation) {
|
|
30
|
+
return {
|
|
31
|
+
...rosenData,
|
|
32
|
+
sourceChainTokenId: assetTransformation.from,
|
|
33
|
+
amount: assetTransformation.amount,
|
|
34
|
+
targetChainTokenId: assetTransformation.to,
|
|
35
|
+
sourceTxId: transaction.tx_hash,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
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
|
+
else
|
|
46
|
+
this.logger.debug(baseError + `: Invalid metadata: ${JsonBigInt.stringify(metadata)}`);
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
this.logger.debug(`An error occurred while getting Cardano rosen data from Koios: ${e}`);
|
|
50
|
+
if (e instanceof Error && e.stack) {
|
|
51
|
+
this.logger.debug(e.stack);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return undefined;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* extracts and builds token transformation from UTXO and tokenMap
|
|
58
|
+
* @param box transaction output
|
|
59
|
+
* @param toChain event target chain
|
|
60
|
+
*/
|
|
61
|
+
getAssetTransformation = (box, toChain) => {
|
|
62
|
+
// try to build transformation using locked assets
|
|
63
|
+
if (box.amount.multiasset) {
|
|
64
|
+
const assets = box.amount.multiasset;
|
|
65
|
+
for (const policyId of Object.keys(assets)) {
|
|
66
|
+
for (const assetName of Object.keys(assets[policyId])) {
|
|
67
|
+
const token = this.tokens.search(CARDANO_CHAIN, {
|
|
68
|
+
policyId: policyId,
|
|
69
|
+
assetName: 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
|
+
}
|
|
81
|
+
// try to build transformation using locked ADA
|
|
82
|
+
const lovelace = this.tokens.search(CARDANO_CHAIN, {
|
|
83
|
+
[this.tokens.getIdKey(CARDANO_CHAIN)]: CARDANO_NATIVE_TOKEN,
|
|
84
|
+
});
|
|
85
|
+
if (lovelace.length > 0 && Object.hasOwn(lovelace[0], toChain)) {
|
|
86
|
+
return {
|
|
87
|
+
from: CARDANO_NATIVE_TOKEN,
|
|
88
|
+
to: this.tokens.getID(lovelace[0], toChain),
|
|
89
|
+
amount: box.amount.coin,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
this.logger.debug(`No rosen asset transformation found for box with assets: ${JsonBigInt.stringify(box.amount)}`);
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FyZGFub0tvaW9zQ2JvclJvc2VuRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2dldFJvc2VuRGF0YS9jYXJkYW5vL0NhcmRhbm9Lb2lvc0Nib3JSb3NlbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTFDLE9BQU8sMEJBQTBCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUvRCxPQUFPLFVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxNQUFNLEVBQ04sNEJBQTRCLEVBQzVCLDBCQUEwQixFQUMxQixrQkFBa0IsR0FFbkIsTUFBTSwwQ0FBMEMsQ0FBQztBQUVsRCxNQUFNLE9BQU8sOEJBQStCLFNBQVEsMEJBQWdEO0lBQ3pGLEtBQUssR0FBRyxhQUFhLENBQUM7SUFFL0I7OztPQUdHO0lBQ0gsY0FBYyxHQUFHLENBQ2YsV0FBaUMsRUFDVixFQUFFO1FBQ3pCLE1BQU0sU0FBUyxHQUFHLCtCQUErQixXQUFXLENBQUMsT0FBTyxHQUFHLENBQUM7UUFDeEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDbEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDbEQsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUM7UUFDckQsSUFBSTtZQUNGLElBQUksUUFBUSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ25FLE1BQU0sY0FBYyxHQUFHLDBC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bXBvcnQgeyBpc1BsYWluT2JqZWN0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFJvc2VuRGF0YSwgVG9rZW5UcmFuc2Zvcm1hdGlvbiB9IGZyb20gJy4uL2Fic3RyYWN0L3R5cGVzJztcbmltcG9ydCBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvciBmcm9tICcuLi9hYnN0cmFjdC9BYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3Rvcic7XG5pbXBvcnQgeyBDQVJEQU5PX0NIQUlOLCBDQVJEQU5PX05BVElWRV9UT0tFTiB9IGZyb20gJy4uL2NvbnN0JztcbmltcG9ydCB7IEtvaW9zQ2JvclRyYW5zYWN0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgSnNvbkJpZ0ludCBmcm9tICdAcm9zZW4tYnJpZGdlL2pzb24tYmlnaW50JztcbmltcG9ydCB7IHBhcnNlUm9zZW5EYXRhIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge1xuICBCaWdOdW0sXG4gIGRlY29kZV9tZXRhZGF0dW1fdG9fanNvbl9zdHIsXG4gIEdlbmVyYWxUcmFuc2FjdGlvbk1ldGFkYXRhLFxuICBNZXRhZGF0YUpzb25TY2hlbWEsXG4gIFRyYW5zYWN0aW9uT3V0cHV0SlNPTixcbn0gZnJvbSAnQGVtdXJnby9jYXJkYW5vLXNlcmlhbGl6YXRpb24tbGliLW5vZGVqcyc7XG5cbmV4cG9ydCBjbGFzcyBDYXJkYW5vS29pb3NDYm9yUm9zZW5FeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvcjxLb2lvc0Nib3JUcmFuc2FjdGlvbj4ge1xuICByZWFkb25seSBjaGFpbiA9IENBUkRBTk9fQ0hBSU47XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIFJvc2VuRGF0YSBmcm9tIGdpdmVuIGxvY2sgdHJhbnNhY3Rpb24gaW4gS29pb3MgZm9ybWF0XG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbiB0aGUgbG9jayB0cmFuc2FjdGlvbiBpbiBLb2lvcyBmb3JtYXRcbiAgICovXG4gIGV4dHJhY3RSYXdEYXRhID0gKFxuICAgIHRyYW5zYWN0aW9uOiBLb2lvc0Nib3JUcmFuc2FjdGlvblxuICApOiBSb3NlbkRhdGEgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IGJhc2VFcnJvciA9IGBObyByb3NlbiBkYXRhIGZvdW5kIGZvciB0eCBbJHt0cmFuc2FjdGlvbi50eF9oYXNofV1gO1xuICAgIGlmICghdHJhbnNhY3Rpb24uYXV4aWxpYXJ5X2RhdGEpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKCF0cmFuc2FjdGlvbi5hdXhpbGlhcnlfZGF0YSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHRyYW5zYWN0aW9uLmF1eGlsaWFyeV9kYXRhLm1ldGFkYXRhO1xuICAgIHRyeSB7XG4gICAgICBpZiAobWV0YWRhdGEgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1ldGFkYXRhLCAnMCcpKSB7XG4gICAgICAgIGNvbnN0IG1ldGFkYXRhT2JqZWN0ID0gR2VuZXJhbFRyYW5zYWN0aW9uTWV0YWRhdGEuZnJvbV9qc29uKFxuICAgICAgICAgIEpzb25CaWdJbnQuc3RyaW5naWZ5KG1ldGFkYXRhKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBkYXRhID0gSnNvbkJpZ0ludC5wYXJzZShcbiAgICAgICAgICBkZWNvZGVfbWV0YWRhdHVtX3RvX2pzb25fc3RyKFxuICAgICAgICAgICAgbWV0YWRhdGFPYmplY3QuZ2V0KEJpZ051bS5mcm9tX3N0cignMCcpKSEsXG4gICAgICAgICAgICBNZXRhZGF0YUpzb25TY2hlbWEuTm9Db252ZXJzaW9uc1xuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgcm9zZW5EYXRhID0gcGFyc2VSb3NlbkRhdGEoZGF0YSk7XG4gICAgICAgIGlmIChyb3NlbkRhdGEpIHtcbiAgICAgICAgICBjb25zdCBsb2NrT3V0cHV0cyA9IHRyYW5zYWN0aW9uLmJvZHkub3V0cHV0cy5maWx0ZXIoXG4gICAgICAgICAgICAob3V0cHV0KSA9PiBvdXRwdXQuYWRkcmVzcyA9PT0gdGhpcy5sb2NrQWRkcmVzc1xuICAgICAgICAgICk7XG4gICAgICAgICAgZm9yIChjb25zdCBvdXRwdXQgb2YgbG9ja091dHB1dHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc2V0VHJhbnNmb3JtYXRpb24gPSB0aGlzLmdldEFzc2V0VHJhbnNmb3JtYXRpb24oXG4gICAgICAgICAgICAgIG91dHB1dCxcbiAgICAgICAgICAgICAgcm9zZW5EYXRhLnRvQ2hhaW5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoYXNzZXRUcmFuc2Zvcm1hdGlvbikge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLnJvc2VuRGF0YSxcbiAgICAgICAgICAgICAgICBzb3VyY2VDaGFpblRva2VuSWQ6IGFzc2V0VHJhbnNmb3JtYXRpb24uZnJvbSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IGFzc2V0VHJhbnNmb3JtYXRpb24uYW1vdW50LFxuICAgICAgICAgICAgICAgIHRhcmdldENoYWluVG9rZW5JZDogYXNzZXRUcmFuc2Zvcm1hdGlvbi50byxcbiAgICAgICAgICAgICAgICBzb3VyY2VUeElkOiB0cmFuc2FjdGlvbi50eF9oYXNoLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGJhc2VFcnJvciArIGA6IE5vIHZhbGlkIHRyYW5zZm9ybWF0aW9uIGZvdW5kIGluIGFueSBvdXRwdXQgYm94ZXNgXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBiYXNlRXJyb3IgK1xuICAgICAgICAgICAgICBgOiBJbmNvbXBsZXRlIG1ldGFkYXRhLiBpc1BsYWluOiAke2lzUGxhaW5PYmplY3QoXG4gICAgICAgICAgICAgICAgZGF0YVxuICAgICAgICAgICAgICApfSwgZGF0YTogJHtKc29uQmlnSW50LnN0cmluZ2lmeShkYXRhKX1gXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZVxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBJbnZhbGlkIG1ldGFkYXRhOiAke0pzb25CaWdJbnQuc3RyaW5naWZ5KG1ldGFkYXRhKX1gXG4gICAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIENhcmRhbm8gcm9zZW4gZGF0YSBmcm9tIEtvaW9zOiAke2V9YFxuICAgICAgKTtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5zdGFjaykge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlLnN0YWNrKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfTtcblxuICAvKipcbiAgICogZXh0cmFjdHMgYW5kIGJ1aWxkcyB0b2tlbiB0cmFuc2Zvcm1hdGlvbiBmcm9tIFVUWE8gYW5kIHRva2VuTWFwXG4gICAqIEBwYXJhbSBib3ggdHJhbnNhY3Rpb24gb3V0cHV0XG4gICAqIEBwYXJhbSB0b0NoYWluIGV2ZW50IHRhcmdldCBjaGFpblxuICAgKi9cbiAgZ2V0QXNzZXRUcmFuc2Zvcm1hdGlvbiA9IChcbiAgICBib3g6IFRyYW5zYWN0aW9uT3V0cHV0SlNPTixcbiAgICB0b0NoYWluOiBzdHJpbmdcbiAgKTogVG9rZW5UcmFuc2Zvcm1hdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgLy8gdHJ5IHRvIGJ1aWxkIHRyYW5zZm9ybWF0aW9uIHVzaW5nIGxvY2tlZCBhc3NldHNcbiAgICBpZiAoYm94LmFtb3VudC5tdWx0aWFzc2V0KSB7XG4gICAgICBjb25zdCBhc3NldHMgPSBib3guYW1vdW50Lm11bHRpYXNzZXQ7XG4gICAgICBmb3IgKGNvbnN0IHBvbGljeUlkIG9mIE9iamVjdC5rZXlzKGFzc2V0cykpIHtcbiAgICAgICAgZm9yIChjb25zdCBhc3NldE5hbWUgb2YgT2JqZWN0LmtleXMoYXNzZXRzW3BvbGljeUlkXSkpIHtcbiAgICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMudG9rZW5zLnNlYXJjaChDQVJEQU5PX0NIQUlOLCB7XG4gICAgICAgICAgICBwb2xpY3lJZDogcG9saWN5SWQsXG4gICAgICAgICAgICBhc3NldE5hbWU6IGFzc2V0TmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAodG9rZW4ubGVuZ3RoID4gMCAmJiBPYmplY3QuaGFzT3duKHRva2VuWzBdLCB0b0NoYWluKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZnJvbTogdGhpcy50b2tlbnMuZ2V0SUQodG9rZW5bMF0sIENBUkRBTk9fQ0hBSU4pLFxuICAgICAgICAgICAgICB0bzogdGhpcy50b2tlbnMuZ2V0SUQodG9rZW5bMF0sIHRvQ2hhaW4pLFxuICAgICAgICAgICAgICBhbW91bnQ6IGFzc2V0c1twb2xpY3lJZF1bYXNzZXROYW1lXS50b1N0cmluZygpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0cnkgdG8gYnVpbGQgdHJhbnNmb3JtYXRpb24gdXNpbmcgbG9ja2VkIEFEQVxuICAgIGNvbnN0IGxvdmVsYWNlID0gdGhpcy50b2tlbnMuc2VhcmNoKENBUkRBTk9fQ0hBSU4sIHtcbiAgICAgIFt0aGlzLnRva2Vucy5nZXRJZEtleShDQVJEQU5PX0NIQUlOKV06IENBUkRBTk9fTkFUSVZFX1RPS0VOLFxuICAgIH0pO1xuICAgIGlmIChsb3ZlbGFjZS5sZW5ndGggPiAwICYmIE9iamVjdC5oYXNPd24obG92ZWxhY2VbMF0sIHRvQ2hhaW4pKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmcm9tOiBDQVJEQU5PX05BVElWRV9UT0tFTixcbiAgICAgICAgdG86IHRoaXMudG9rZW5zLmdldElEKGxvdmVsYWNlWzBdLCB0b0NoYWluKSxcbiAgICAgICAgYW1vdW50OiBib3guYW1vdW50LmNvaW4sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYE5vIHJvc2VuIGFzc2V0IHRyYW5zZm9ybWF0aW9uIGZvdW5kIGZvciBib3ggd2l0aCBhc3NldHM6ICR7SnNvbkJpZ0ludC5zdHJpbmdpZnkoXG4gICAgICAgICAgYm94LmFtb3VudFxuICAgICAgICApfWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|
|
@@ -70,7 +70,7 @@ export class CardanoKoiosRosenExtractor extends AbstractRosenDataExtractor {
|
|
|
70
70
|
}
|
|
71
71
|
// try to build transformation using locked ADA
|
|
72
72
|
const lovelace = this.tokens.search(CARDANO_CHAIN, {
|
|
73
|
-
|
|
73
|
+
tokenId: CARDANO_NATIVE_TOKEN,
|
|
74
74
|
});
|
|
75
75
|
if (lovelace.length > 0 && Object.hasOwn(lovelace[0], toChain)) {
|
|
76
76
|
return {
|
|
@@ -85,4 +85,4 @@ export class CardanoKoiosRosenExtractor extends AbstractRosenDataExtractor {
|
|
|
85
85
|
}
|
|
86
86
|
};
|
|
87
87
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FyZGFub0tvaW9zUm9zZW5FeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2NhcmRhbm8vQ2FyZGFub0tvaW9zUm9zZW5FeHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUxQyxPQUFPLDBCQUEwQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFL0QsT0FBTyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV6QyxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsMEJBQTRDO0lBQ2pGLEtBQUssR0FBRyxhQUFhLENBQUM7SUFDL0I7OztPQUdHO0lBQ0gsY0FBYyxHQUFHLENBQUMsV0FBNkIsRUFBeUIsRUFBRTtRQUN4RSxNQUFNLFNBQVMsR0FBRywrQkFBK0IsV0FBVyxDQUFDLE9BQU8sR0FBRyxDQUFDO1FBQ3hFLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7UUFDdEMsSUFBSTtZQUNGLElBQUksUUFBUSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ25FLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDM0IsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2QyxJQUFJLFNBQVMsRUFBRTtvQkFDYixNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FDNUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxLQUFLLElB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RSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7Z0JBQzNDLE1BQU0sRUFBRSxHQUFHLENBQUMsS0FBSzthQUNsQixDQUFDO1NBQ0g7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLGdEQUFnRCxHQUFHLENBQUMsT0FBTyxJQUN6RCxHQUFHLENBQUMsUUFDTixrQkFBa0IsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FDekQsQ0FBQztZQUNGLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYWluT2JqZWN0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFJvc2VuRGF0YSwgVG9rZW5UcmFuc2Zvcm1hdGlvbiB9IGZyb20gJy4uL2Fic3RyYWN0L3R5cGVzJztcbmltcG9ydCBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvciBmcm9tICcuLi9hYnN0cmFjdC9BYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3Rvcic7XG5pbXBvcnQgeyBDQVJEQU5PX0NIQUlOLCBDQVJEQU5PX05BVElWRV9UT0tFTiB9IGZyb20gJy4uL2NvbnN0JztcbmltcG9ydCB7IEtvaW9zVHJhbnNhY3Rpb24sIFV0eG8gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBKc29uQmlnSW50IGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuaW1wb3J0IHsgcGFyc2VSb3NlbkRhdGEgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIENhcmRhbm9Lb2lvc1Jvc2VuRXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3I8S29pb3NUcmFuc2FjdGlvbj4ge1xuICByZWFkb25seSBjaGFpbiA9IENBUkRBTk9fQ0hBSU47XG4gIC8qKlxuICAgKiBleHRyYWN0cyBSb3NlbkRhdGEgZnJvbSBnaXZlbiBsb2NrIHRyYW5zYWN0aW9uIGluIEtvaW9zIGZvcm1hdFxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gdGhlIGxvY2sgdHJhbnNhY3Rpb24gaW4gS29pb3MgZm9ybWF0XG4gICAqL1xuICBleHRyYWN0UmF3RGF0YSA9ICh0cmFuc2FjdGlvbjogS29pb3NUcmFuc2FjdGlvbik6IFJvc2VuRGF0YSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgYmFzZUVycm9yID0gYE5vIHJvc2VuIGRhdGEgZm91bmQgZm9yIHR4IFske3RyYW5zYWN0aW9uLnR4X2hhc2h9XWA7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0cmFuc2FjdGlvbi5tZXRhZGF0YTtcbiAgICB0cnkge1xuICAgICAgaWYgKG1ldGFkYXRhICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtZXRhZGF0YSwgJzAnKSkge1xuICAgICAgICBjb25zdCBkYXRhID0gbWV0YWRhdGFbJzAnXTtcbiAgICAgICAgY29uc3Qgcm9zZW5EYXRhID0gcGFyc2VSb3NlbkRhdGEoZGF0YSk7XG4gICAgICAgIGlmIChyb3NlbkRhdGEpIHtcbiAgICAgICAgICBjb25zdCBsb2NrT3V0cHV0cyA9IHRyYW5zYWN0aW9uLm91dHB1dHMuZmlsdGVyKFxuICAgICAgICAgICAgKG91dHB1dCkgPT4gb3V0cHV0LnBheW1lbnRfYWRkci5iZWNoMzIgPT09IHRoaXMubG9ja0FkZHJlc3NcbiAgICAgICAgICApO1xuICAgICAgICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIGxvY2tPdXRwdXRzKSB7XG4gICAgICAgICAgICBjb25zdCBhc3NldFRyYW5zZm9ybWF0aW9uID0gdGhpcy5nZXRBc3NldFRyYW5zZm9ybWF0aW9uKFxuICAgICAgICAgICAgICBvdXRwdXQsXG4gICAgICAgICAgICAgIHJvc2VuRGF0YS50b0NoYWluXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKGFzc2V0VHJhbnNmb3JtYXRpb24pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5yb3NlbkRhdGEsXG4gICAgICAgICAgICAgICAgc291cmNlQ2hhaW5Ub2tlbklkOiBhc3NldFRyYW5zZm9ybWF0aW9uLmZyb20sXG4gICAgICAgICAgICAgICAgYW1vdW50OiBhc3NldFRyYW5zZm9ybWF0aW9uLmFtb3VudCxcbiAgICAgICAgICAgICAgICB0YXJnZXRDaGFpblRva2VuSWQ6IGFzc2V0VHJhbnNmb3JtYXRpb24udG8sXG4gICAgICAgICAgICAgICAgc291cmNlVHhJZDogdHJhbnNhY3Rpb24udHhfaGFzaCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBObyB2YWxpZCB0cmFuc2Zvcm1hdGlvbiBmb3VuZCBpbiBhbnkgb3V0cHV0IGJveGVzYFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYmFzZUVycm9yICtcbiAgICAgICAgICAgICAgYDogSW5jb21wbGV0ZSBtZXRhZGF0YS4gaXNQbGFpbjogJHtpc1BsYWluT2JqZWN0KFxuICAgICAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgICAgKX0sIGRhdGE6ICR7SnNvbkJpZ0ludC5zdHJpbmdpZnkoZGF0YSl9YFxuICAgICAgICAgICk7XG4gICAgICB9IGVsc2VcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYmFzZUVycm9yICsgYDogSW52YWxpZCBtZXRhZGF0YTogJHtKc29uQmlnSW50LnN0cmluZ2lmeShtZXRhZGF0YSl9YFxuICAgICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZ2V0dGluZyBDYXJkYW5vIHJvc2VuIGRhdGEgZnJvbSBLb2lvczogJHtlfWBcbiAgICAgICk7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yICYmIGUuc3RhY2spIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoZS5zdGFjayk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIGFuZCBidWlsZHMgdG9rZW4gdHJhbnNmb3JtYXRpb24gZnJvbSBVVFhPIGFuZCB0b2tlbk1hcFxuICAgKiBAcGFyYW0gYm94IHRyYW5zYWN0aW9uIG91dHB1dFxuICAgKiBAcGFyYW0gdG9DaGFpbiBldmVudCB0YXJnZXQgY2hhaW5cbiAgICovXG4gIGdldEFzc2V0VHJhbnNmb3JtYXRpb24gPSAoXG4gICAgYm94OiBVdHhvLFxuICAgIHRvQ2hhaW46IHN0cmluZ1xuICApOiBUb2tlblRyYW5zZm9ybWF0aW9uIHwgdW5kZWZpbmVkID0+IHtcbiAgICAvLyB0cnkgdG8gYnVpbGQgdHJhbnNmb3JtYXRpb24gdXNpbmcgbG9ja2VkIGFzc2V0c1xuICAgIGlmIChib3guYXNzZXRfbGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGFzc2V0IG9mIGJveC5hc3NldF9saXN0KSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlbnMuc2VhcmNoKENBUkRBTk9fQ0hBSU4sIHtcbiAgICAgICAgICBhc3NldE5hbWU6IGFzc2V0LmFzc2V0X25hbWUsXG4gICAgICAgICAgcG9saWN5SWQ6IGFzc2V0LnBvbGljeV9pZCxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh0b2tlbi5sZW5ndGggPiAwICYmIE9iamVjdC5oYXNPd24odG9rZW5bMF0sIHRvQ2hhaW4pKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmcm9tOiB0aGlzLnRva2Vucy5nZXRJRCh0b2tlblswXSwgQ0FSREFOT19DSEFJTiksXG4gICAgICAgICAgICB0bzogdGhpcy50b2tlbnMuZ2V0SUQodG9rZW5bMF0sIHRvQ2hhaW4pLFxuICAgICAgICAgICAgYW1vdW50OiBhc3NldC5xdWFudGl0eSxcbiAgICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRyeSB0byBidWlsZCB0cmFuc2Zvcm1hdGlvbiB1c2luZyBsb2NrZWQgQURBXG4gICAgY29uc3QgbG92ZWxhY2UgPSB0aGlzLnRva2Vucy5zZWFyY2goQ0FSREFOT19DSEFJTiwge1xuICAgICAgdG9rZW5JZDogQ0FSREFOT19OQVRJVkVfVE9LRU4sXG4gICAgfSk7XG4gICAgaWYgKGxvdmVsYWNlLmxlbmd0aCA+IDAgJiYgT2JqZWN0Lmhhc093bihsb3ZlbGFjZVswXSwgdG9DaGFpbikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGZyb206IENBUkRBTk9fTkFUSVZFX1RPS0VOLFxuICAgICAgICB0bzogdGhpcy50b2tlbnMuZ2V0SUQobG92ZWxhY2VbMF0sIHRvQ2hhaW4pLFxuICAgICAgICBhbW91bnQ6IGJveC52YWx1ZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgTm8gcm9zZW4gYXNzZXQgdHJhbnNmb3JtYXRpb24gZm91bmQgZm9yIGJveCBbJHtib3gudHhfaGFzaH0uJHtcbiAgICAgICAgICBib3gudHhfaW5kZXhcbiAgICAgICAgfV06IGJveCBhc3NldHM6ICR7SnNvbkJpZ0ludC5zdHJpbmdpZnkoYm94LmFzc2V0X2xpc3QpfWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|