@rosen-bridge/rosen-extractor 6.3.0 → 6.3.1-4dda6b53

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.
Files changed (48) hide show
  1. package/dist/lib/getRosenData/abstract/AbstractRosenDataExtractor.d.ts +14 -20
  2. package/dist/lib/getRosenData/abstract/types.d.ts +13 -13
  3. package/dist/lib/getRosenData/bitcoin/BitcoinEsploraRosenExtractor.d.ts +15 -24
  4. package/dist/lib/getRosenData/bitcoin/BitcoinRosenExtractor.d.ts +15 -22
  5. package/dist/lib/getRosenData/bitcoin/BitcoinRpcRosenExtractor.d.ts +15 -22
  6. package/dist/lib/getRosenData/bitcoin/types.d.ts +66 -66
  7. package/dist/lib/getRosenData/bitcoin/utils.d.ts +1 -1
  8. package/dist/lib/getRosenData/cardano/CardanoBlockFrostRosenExtractor.d.ts +13 -16
  9. package/dist/lib/getRosenData/cardano/CardanoGraphQLRosenExtractor.d.ts +13 -16
  10. package/dist/lib/getRosenData/cardano/CardanoKoiosRosenExtractor.d.ts +15 -17
  11. package/dist/lib/getRosenData/cardano/CardanoKoiosRosenExtractor.d.ts.map +1 -1
  12. package/dist/lib/getRosenData/cardano/CardanoKoiosRosenExtractor.js +25 -19
  13. package/dist/lib/getRosenData/cardano/CardanoOgmiosRosenExtractor.d.ts +13 -16
  14. package/dist/lib/getRosenData/cardano/CardanoRosenExtractor.d.ts +13 -16
  15. package/dist/lib/getRosenData/cardano/types.d.ts +99 -115
  16. package/dist/lib/getRosenData/cardano/types.d.ts.map +1 -1
  17. package/dist/lib/getRosenData/cardano/types.js +1 -1
  18. package/dist/lib/getRosenData/cardano/utils.d.ts +15 -10
  19. package/dist/lib/getRosenData/cardano/utils.d.ts.map +1 -1
  20. package/dist/lib/getRosenData/cardano/utils.js +93 -1
  21. package/dist/lib/getRosenData/doge/DogeEsploraRosenExtractor.d.ts +22 -0
  22. package/dist/lib/getRosenData/doge/DogeEsploraRosenExtractor.d.ts.map +1 -0
  23. package/dist/lib/getRosenData/doge/DogeEsploraRosenExtractor.js +104 -0
  24. package/dist/lib/getRosenData/doge/DogeRosenExtractor.d.ts +22 -0
  25. package/dist/lib/getRosenData/doge/DogeRosenExtractor.d.ts.map +1 -0
  26. package/dist/lib/getRosenData/doge/DogeRosenExtractor.js +112 -0
  27. package/dist/lib/getRosenData/doge/DogeRpcRosenExtractor.d.ts +22 -0
  28. package/dist/lib/getRosenData/doge/DogeRpcRosenExtractor.d.ts.map +1 -0
  29. package/dist/lib/getRosenData/doge/DogeRpcRosenExtractor.js +105 -0
  30. package/dist/lib/getRosenData/doge/types.d.ts +89 -0
  31. package/dist/lib/getRosenData/doge/types.d.ts.map +1 -0
  32. package/dist/lib/getRosenData/doge/types.js +2 -0
  33. package/dist/lib/getRosenData/doge/utils.d.ts +13 -0
  34. package/dist/lib/getRosenData/doge/utils.d.ts.map +1 -0
  35. package/dist/lib/getRosenData/doge/utils.js +58 -0
  36. package/dist/lib/getRosenData/ergo/ErgoNodeRosenExtractor.d.ts +15 -22
  37. package/dist/lib/getRosenData/ergo/ErgoRosenExtractor.d.ts +9 -13
  38. package/dist/lib/getRosenData/ergo/types.d.ts +24 -24
  39. package/dist/lib/getRosenData/evm/EvmEthersRosenExtractor.d.ts +9 -15
  40. package/dist/lib/getRosenData/evm/EvmRosenExtractor.d.ts +9 -15
  41. package/dist/lib/getRosenData/evm/EvmRpcRosenExtractor.d.ts +19 -25
  42. package/dist/lib/getRosenData/evm/utils.d.ts +5 -5
  43. package/dist/lib/index.d.ts +1 -1
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/package.json +3 -2
  46. package/dist/lib/getRosenData/Utils.d.ts +0 -59
  47. package/dist/lib/getRosenData/Utils.d.ts.map +0 -1
  48. package/dist/lib/getRosenData/Utils.js +0 -96
@@ -0,0 +1,22 @@
1
+ import { RosenData, TokenTransformation } from '../abstract/types';
2
+ import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
3
+ import { DogeTxOutput } from './types';
4
+ import { TokenMap } from '@rosen-bridge/tokens';
5
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
6
+ export declare class DogeRosenExtractor extends AbstractRosenDataExtractor<string> {
7
+ readonly chain = "doge";
8
+ protected lockScriptPubKey: string;
9
+ constructor(lockAddress: string, tokens: TokenMap, logger?: AbstractLogger);
10
+ /**
11
+ * extracts RosenData from given lock transaction in DogeTx format
12
+ * @param serializedTransaction stringified transaction in DogeTx format
13
+ */
14
+ extractRawData: (serializedTransaction: string) => 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: DogeTxOutput, toChain: string) => TokenTransformation | undefined;
21
+ }
22
+ //# sourceMappingURL=DogeRosenExtractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DogeRosenExtractor.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/doge/DogeRosenExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAU,YAAY,EAAgB,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAI/D,qBAAa,kBAAmB,SAAQ,0BAA0B,CAAC,MAAM,CAAC;IACxE,QAAQ,CAAC,KAAK,UAAc;IAC5B,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAEvB,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,cAAc;IAK1E;;;OAGG;IACH,cAAc,0BAA2B,MAAM,KAAG,SAAS,GAAG,SAAS,CAqFrE;IAEF;;;;OAIG;IACH,sBAAsB,QACf,YAAY,WACR,MAAM,KACd,mBAAmB,GAAG,SAAS,CAehC;CACH"}
@@ -0,0 +1,112 @@
1
+ import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
2
+ import { DOGE_CHAIN, DOGE_NATIVE_TOKEN } from '../const';
3
+ import { parseRosenData, addressToOutputScript } from './utils';
4
+ import JsonBigInt from '@rosen-bridge/json-bigint';
5
+ export class DogeRosenExtractor extends AbstractRosenDataExtractor {
6
+ chain = DOGE_CHAIN;
7
+ lockScriptPubKey;
8
+ constructor(lockAddress, tokens, logger) {
9
+ super(lockAddress, tokens, logger);
10
+ this.lockScriptPubKey = addressToOutputScript(lockAddress);
11
+ }
12
+ /**
13
+ * extracts RosenData from given lock transaction in DogeTx format
14
+ * @param serializedTransaction stringified transaction in DogeTx format
15
+ */
16
+ extractRawData = (serializedTransaction) => {
17
+ let transaction;
18
+ try {
19
+ transaction = JsonBigInt.parse(serializedTransaction);
20
+ }
21
+ catch (e) {
22
+ throw new Error(`Failed to parse transaction json to DogeTx format while extracting rosen data: ${e}`);
23
+ }
24
+ const baseError = `No rosen data found for tx [${transaction.id}]`;
25
+ try {
26
+ const outputs = transaction.outputs;
27
+ if (outputs.length < 2) {
28
+ this.logger.debug(baseError + `: Insufficient number of boxes`);
29
+ return undefined;
30
+ }
31
+ let validData = false; // an OP_RETURN box with valid data is found
32
+ let validLock = false; // a lock box is found with available asset transformation
33
+ // parse rosen data from OP_RETURN box
34
+ let opReturnData;
35
+ for (let i = 0; i < outputs.length; i++) {
36
+ const output = outputs[i];
37
+ if (output.scriptPubKey.slice(0, 2) !== '6a')
38
+ continue; // not an OP_RETURN utxo
39
+ try {
40
+ opReturnData = parseRosenData(output.scriptPubKey);
41
+ validData = true;
42
+ break;
43
+ }
44
+ catch (e) {
45
+ this.logger.debug(`Failed to extract data from OP_RETURN box [${transaction.id}.${i}]: ${e}`);
46
+ }
47
+ }
48
+ if (!validData || !opReturnData) {
49
+ this.logger.debug(baseError + `: No OP_RETURN box with valid data is found`);
50
+ return undefined;
51
+ }
52
+ // find target chain token id
53
+ let assetTransformation;
54
+ for (let i = 0; i < outputs.length; i++) {
55
+ const output = outputs[i];
56
+ if (output.scriptPubKey !== this.lockScriptPubKey)
57
+ continue; // utxo address is not lock address
58
+ assetTransformation = this.getAssetTransformation(output, opReturnData.toChain);
59
+ if (assetTransformation) {
60
+ validLock = true;
61
+ break;
62
+ }
63
+ }
64
+ if (!validLock || !assetTransformation) {
65
+ this.logger.debug(baseError + `: Failed to find rosen asset transformation`);
66
+ return undefined;
67
+ }
68
+ const fromAddress = `box:${transaction.inputs[0].txId}.${transaction.inputs[0].index}`;
69
+ return {
70
+ toChain: opReturnData.toChain,
71
+ toAddress: opReturnData.toAddress,
72
+ bridgeFee: opReturnData.bridgeFee,
73
+ networkFee: opReturnData.networkFee,
74
+ fromAddress: fromAddress,
75
+ sourceChainTokenId: assetTransformation.from,
76
+ amount: assetTransformation.amount,
77
+ targetChainTokenId: assetTransformation.to,
78
+ sourceTxId: transaction.id,
79
+ };
80
+ }
81
+ catch (e) {
82
+ this.logger.debug(`An error occurred while getting Doge rosen data: ${e}`);
83
+ if (e instanceof Error && e.stack) {
84
+ this.logger.debug(e.stack);
85
+ }
86
+ }
87
+ return undefined;
88
+ };
89
+ /**
90
+ * extracts and builds token transformation from UTXO and tokenMap
91
+ * @param box transaction output
92
+ * @param toChain event target chain
93
+ */
94
+ getAssetTransformation = (box, toChain) => {
95
+ // try to build transformation using locked DOGE
96
+ const wrappedDoge = this.tokens.search(DOGE_CHAIN, {
97
+ tokenId: DOGE_NATIVE_TOKEN,
98
+ });
99
+ if (wrappedDoge.length > 0 && Object.hasOwn(wrappedDoge[0], toChain)) {
100
+ const satoshiAmount = box.value;
101
+ return {
102
+ from: DOGE_NATIVE_TOKEN,
103
+ to: this.tokens.getID(wrappedDoge[0], toChain),
104
+ amount: satoshiAmount.toString(),
105
+ };
106
+ }
107
+ else {
108
+ return undefined;
109
+ }
110
+ };
111
+ }
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG9nZVJvc2VuRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2dldFJvc2VuRGF0YS9kb2dlL0RvZ2VSb3NlbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLDBCQUEwQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNoRSxPQUFPLFVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUVuRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsMEJBQWtDO0lBQy9ELEtBQUssR0FBRyxVQUFVLENBQUM7SUFDbEIsZ0JBQWdCLENBQVM7SUFFbkMsWUFBWSxXQUFtQixFQUFFLE1BQWdCLEVBQUUsTUFBdUI7UUFDeEUsS0FBSyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLEdBQUcsQ0FBQyxxQkFBNkIsRUFBeUIsRUFBRTtRQUN4RSxJQUFJLFdBQW1CLENBQUM7UUFDeEIsSUFBSTtZQUNGLFdBQVcsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7U0FDdkQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE1BQU0sSUFBSSxLQUFLLENBQ2Isa0ZBQWtGLENBQUMsRUFBRSxDQUN0RixDQUFDO1NBQ0g7UUFDRCxNQUFNLFNBQVMsR0FBRywrQkFBK0IsV0FBVyxDQUFDLEVBQUUsR0FBRyxDQUFDO1FBQ25FLElBQUk7WUFDRixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDO1lBQ3BDLElBQUksT0FBTyxD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QUNWLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLG9EQUFvRCxDQUFDLEVBQUUsQ0FDeEQsQ0FBQztZQUNGLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDNUI7U0FDRjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUMsQ0FBQztJQUVGOzs7O09BSUc7SUFDSCxzQkFBc0IsR0FBRyxDQUN2QixHQUFpQixFQUNqQixPQUFlLEVBQ2tCLEVBQUU7UUFDbkMsZ0RBQWdEO1FBQ2hELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUNqRCxPQUFPLEVBQUUsaUJBQWlCO1NBQzNCLENBQUMsQ0FBQztRQUNILElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDcEUsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUNoQyxPQUFPO2dCQUNMLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO2dCQUM5QyxNQUFNLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRTthQUNqQyxDQUFDO1NBQ0g7YUFBTTtZQUNMLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3NlbkRhdGEsIFRva2VuVHJhbnNmb3JtYXRpb24gfSBmcm9tICcuLi9hYnN0cmFjdC90eXBlcyc7XG5pbXBvcnQgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3IgZnJvbSAnLi4vYWJzdHJhY3QvQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3InO1xuaW1wb3J0IHsgRE9HRV9DSEFJTiwgRE9HRV9OQVRJVkVfVE9LRU4gfSBmcm9tICcuLi9jb25zdCc7XG5pbXBvcnQgeyBEb2dlVHgsIERvZ2VUeE91dHB1dCwgT3BSZXR1cm5EYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBUb2tlbk1hcCB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvdG9rZW5zJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgcGFyc2VSb3NlbkRhdGEsIGFkZHJlc3NUb091dHB1dFNjcmlwdCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEpzb25CaWdJbnQgZnJvbSAnQHJvc2VuLWJyaWRnZS9qc29uLWJpZ2ludCc7XG5cbmV4cG9ydCBjbGFzcyBEb2dlUm9zZW5FeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvcjxzdHJpbmc+IHtcbiAgcmVhZG9ubHkgY2hhaW4gPSBET0dFX0NIQUlOO1xuICBwcm90ZWN0ZWQgbG9ja1NjcmlwdFB1YktleTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGxvY2tBZGRyZXNzOiBzdHJpbmcsIHRva2VuczogVG9rZW5NYXAsIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyKSB7XG4gICAgc3VwZXIobG9ja0FkZHJlc3MsIHRva2VucywgbG9nZ2VyKTtcbiAgICB0aGlzLmxvY2tTY3JpcHRQdWJLZXkgPSBhZGRyZXNzVG9PdXRwdXRTY3JpcHQobG9ja0FkZHJlc3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIFJvc2VuRGF0YSBmcm9tIGdpdmVuIGxvY2sgdHJhbnNhY3Rpb24gaW4gRG9nZVR4IGZvcm1hdFxuICAgKiBAcGFyYW0gc2VyaWFsaXplZFRyYW5zYWN0aW9uIHN0cmluZ2lmaWVkIHRyYW5zYWN0aW9uIGluIERvZ2VUeCBmb3JtYXRcbiAgICovXG4gIGV4dHJhY3RSYXdEYXRhID0gKHNlcmlhbGl6ZWRUcmFuc2FjdGlvbjogc3RyaW5nKTogUm9zZW5EYXRhIHwgdW5kZWZpbmVkID0+IHtcbiAgICBsZXQgdHJhbnNhY3Rpb246IERvZ2VUeDtcbiAgICB0cnkge1xuICAgICAgdHJhbnNhY3Rpb24gPSBKc29uQmlnSW50LnBhcnNlKHNlcmlhbGl6ZWRUcmFuc2FjdGlvbik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIHBhcnNlIHRyYW5zYWN0aW9uIGpzb24gdG8gRG9nZVR4IGZvcm1hdCB3aGlsZSBleHRyYWN0aW5nIHJvc2VuIGRhdGE6ICR7ZX1gXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBiYXNlRXJyb3IgPSBgTm8gcm9zZW4gZGF0YSBmb3VuZCBmb3IgdHggWyR7dHJhbnNhY3Rpb24uaWR9XWA7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG91dHB1dHMgPSB0cmFuc2FjdGlvbi5vdXRwdXRzO1xuICAgICAgaWYgKG91dHB1dHMubGVuZ3RoIDwgMikge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhiYXNlRXJyb3IgKyBgOiBJbnN1ZmZpY2llbnQgbnVtYmVyIG9mIGJveGVzYCk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGxldCB2YWxpZERhdGEgPSBmYWxzZTsgLy8gYW4gT1BfUkVUVVJOIGJveCB3aXRoIHZhbGlkIGRhdGEgaXMgZm91bmRcbiAgICAgIGxldCB2YWxpZExvY2sgPSBmYWxzZTsgLy8gYSBsb2NrIGJveCBpcyBmb3VuZCB3aXRoIGF2YWlsYWJsZSBhc3NldCB0cmFuc2Zvcm1hdGlvblxuXG4gICAgICAvLyBwYXJzZSByb3NlbiBkYXRhIGZyb20gT1BfUkVUVVJOIGJveFxuICAgICAgbGV0IG9wUmV0dXJuRGF0YTogT3BSZXR1cm5EYXRhIHwgdW5kZWZpbmVkO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvdXRwdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbaV07XG4gICAgICAgIGlmIChvdXRwdXQuc2NyaXB0UHViS2V5LnNsaWNlKDAsIDIpICE9PSAnNmEnKSBjb250aW51ZTsgLy8gbm90IGFuIE9QX1JFVFVSTiB1dHhvXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBvcFJldHVybkRhdGEgPSBwYXJzZVJvc2VuRGF0YShvdXRwdXQuc2NyaXB0UHViS2V5KTtcbiAgICAgICAgICB2YWxpZERhdGEgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIGV4dHJhY3QgZGF0YSBmcm9tIE9QX1JFVFVSTiBib3ggWyR7dHJhbnNhY3Rpb24uaWR9LiR7aX1dOiAke2V9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghdmFsaWREYXRhIHx8ICFvcFJldHVybkRhdGEpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYmFzZUVycm9yICsgYDogTm8gT1BfUkVUVVJOIGJveCB3aXRoIHZhbGlkIGRhdGEgaXMgZm91bmRgXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGZpbmQgdGFyZ2V0IGNoYWluIHRva2VuIGlkXG4gICAgICBsZXQgYXNzZXRUcmFuc2Zvcm1hdGlvbjogVG9rZW5UcmFuc2Zvcm1hdGlvbiB8IHVuZGVmaW5lZDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3V0cHV0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBvdXRwdXQgPSBvdXRwdXRzW2ldO1xuICAgICAgICBpZiAob3V0cHV0LnNjcmlwdFB1YktleSAhPT0gdGhpcy5sb2NrU2NyaXB0UHViS2V5KSBjb250aW51ZTsgLy8gdXR4byBhZGRyZXNzIGlzIG5vdCBsb2NrIGFkZHJlc3NcbiAgICAgICAgYXNzZXRUcmFuc2Zvcm1hdGlvbiA9IHRoaXMuZ2V0QXNzZXRUcmFuc2Zvcm1hdGlvbihcbiAgICAgICAgICBvdXRwdXQsXG4gICAgICAgICAgb3BSZXR1cm5EYXRhLnRvQ2hhaW5cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGFzc2V0VHJhbnNmb3JtYXRpb24pIHtcbiAgICAgICAgICB2YWxpZExvY2sgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXZhbGlkTG9jayB8fCAhYXNzZXRUcmFuc2Zvcm1hdGlvbikge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBGYWlsZWQgdG8gZmluZCByb3NlbiBhc3NldCB0cmFuc2Zvcm1hdGlvbmBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZnJvbUFkZHJlc3MgPSBgYm94OiR7dHJhbnNhY3Rpb24uaW5wdXRzWzBdLnR4SWR9LiR7dHJhbnNhY3Rpb24uaW5wdXRzWzBdLmluZGV4fWA7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0b0NoYWluOiBvcFJldHVybkRhdGEudG9DaGFpbixcbiAgICAgICAgdG9BZGRyZXNzOiBvcFJldHVybkRhdGEudG9BZGRyZXNzLFxuICAgICAgICBicmlkZ2VGZWU6IG9wUmV0dXJuRGF0YS5icmlkZ2VGZWUsXG4gICAgICAgIG5ldHdvcmtGZWU6IG9wUmV0dXJuRGF0YS5uZXR3b3JrRmVlLFxuICAgICAgICBmcm9tQWRkcmVzczogZnJvbUFkZHJlc3MsXG4gICAgICAgIHNvdXJjZUNoYWluVG9rZW5JZDogYXNzZXRUcmFuc2Zvcm1hdGlvbi5mcm9tLFxuICAgICAgICBhbW91bnQ6IGFzc2V0VHJhbnNmb3JtYXRpb24uYW1vdW50LFxuICAgICAgICB0YXJnZXRDaGFpblRva2VuSWQ6IGFzc2V0VHJhbnNmb3JtYXRpb24udG8sXG4gICAgICAgIHNvdXJjZVR4SWQ6IHRyYW5zYWN0aW9uLmlkLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGdldHRpbmcgRG9nZSByb3NlbiBkYXRhOiAke2V9YFxuICAgICAgKTtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5zdGFjaykge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlLnN0YWNrKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfTtcblxuICAvKipcbiAgICogZXh0cmFjdHMgYW5kIGJ1aWxkcyB0b2tlbiB0cmFuc2Zvcm1hdGlvbiBmcm9tIFVUWE8gYW5kIHRva2VuTWFwXG4gICAqIEBwYXJhbSBib3ggdHJhbnNhY3Rpb24gb3V0cHV0XG4gICAqIEBwYXJhbSB0b0NoYWluIGV2ZW50IHRhcmdldCBjaGFpblxuICAgKi9cbiAgZ2V0QXNzZXRUcmFuc2Zvcm1hdGlvbiA9IChcbiAgICBib3g6IERvZ2VUeE91dHB1dCxcbiAgICB0b0NoYWluOiBzdHJpbmdcbiAgKTogVG9rZW5UcmFuc2Zvcm1hdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgLy8gdHJ5IHRvIGJ1aWxkIHRyYW5zZm9ybWF0aW9uIHVzaW5nIGxvY2tlZCBET0dFXG4gICAgY29uc3Qgd3JhcHBlZERvZ2UgPSB0aGlzLnRva2Vucy5zZWFyY2goRE9HRV9DSEFJTiwge1xuICAgICAgdG9rZW5JZDogRE9HRV9OQVRJVkVfVE9LRU4sXG4gICAgfSk7XG4gICAgaWYgKHdyYXBwZWREb2dlLmxlbmd0aCA+IDAgJiYgT2JqZWN0Lmhhc093bih3cmFwcGVkRG9nZVswXSwgdG9DaGFpbikpIHtcbiAgICAgIGNvbnN0IHNhdG9zaGlBbW91bnQgPSBib3gudmFsdWU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmcm9tOiBET0dFX05BVElWRV9UT0tFTixcbiAgICAgICAgdG86IHRoaXMudG9rZW5zLmdldElEKHdyYXBwZWREb2dlWzBdLCB0b0NoYWluKSxcbiAgICAgICAgYW1vdW50OiBzYXRvc2hpQW1vdW50LnRvU3RyaW5nKCksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { RosenData, TokenTransformation } from '../abstract/types';
2
+ import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
3
+ import { DogeRpcTransaction, DogeRpcTxOutput } from './types';
4
+ import { TokenMap } from '@rosen-bridge/tokens';
5
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
6
+ export declare class DogeRpcRosenExtractor extends AbstractRosenDataExtractor<DogeRpcTransaction> {
7
+ readonly chain = "doge";
8
+ protected lockScriptPubKey: 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
+ extractRawData: (transaction: DogeRpcTransaction) => 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: DogeRpcTxOutput, toChain: string) => TokenTransformation | undefined;
21
+ }
22
+ //# sourceMappingURL=DogeRpcRosenExtractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DogeRpcRosenExtractor.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/doge/DogeRpcRosenExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,qBAAa,qBAAsB,SAAQ,0BAA0B,CAAC,kBAAkB,CAAC;IACvF,QAAQ,CAAC,KAAK,UAAc;IAC5B,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAEvB,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,cAAc;IAK1E;;;OAGG;IACH,cAAc,gBAAiB,kBAAkB,KAAG,SAAS,GAAG,SAAS,CA6EvE;IAEF;;;;OAIG;IACH,sBAAsB,QACf,eAAe,WACX,MAAM,KACd,mBAAmB,GAAG,SAAS,CAgBhC;CACH"}
@@ -0,0 +1,105 @@
1
+ import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
2
+ import { DOGE_CHAIN, DOGE_NATIVE_TOKEN } from '../const';
3
+ import { parseRosenData, addressToOutputScript } from './utils';
4
+ export class DogeRpcRosenExtractor extends AbstractRosenDataExtractor {
5
+ chain = DOGE_CHAIN;
6
+ lockScriptPubKey;
7
+ constructor(lockAddress, tokens, logger) {
8
+ super(lockAddress, tokens, logger);
9
+ this.lockScriptPubKey = addressToOutputScript(lockAddress);
10
+ }
11
+ /**
12
+ * extracts RosenData from given lock transaction in Rpc format
13
+ * @param transaction the lock transaction in Rpc format
14
+ */
15
+ extractRawData = (transaction) => {
16
+ const baseError = `No rosen data found for tx [${transaction.txid}]`;
17
+ try {
18
+ const outputs = transaction.vout;
19
+ if (outputs.length < 2) {
20
+ this.logger.debug(baseError + `: Insufficient number of boxes`);
21
+ return undefined;
22
+ }
23
+ let validData = false; // an OP_RETURN box with valid data is found
24
+ let validLock = false; // a lock box is found with available asset transformation
25
+ // parse rosen data from OP_RETURN box
26
+ let opReturnData;
27
+ for (let i = 0; i < outputs.length; i++) {
28
+ const output = outputs[i];
29
+ if (output.scriptPubKey.hex.slice(0, 2) !== '6a')
30
+ continue; // not an OP_RETURN utxo
31
+ try {
32
+ opReturnData = parseRosenData(output.scriptPubKey.hex);
33
+ validData = true;
34
+ break;
35
+ }
36
+ catch (e) {
37
+ this.logger.debug(`Failed to extract data from OP_RETURN box [${transaction.txid}.${i}]: ${e}`);
38
+ }
39
+ }
40
+ if (!validData || !opReturnData) {
41
+ this.logger.debug(baseError + `: No OP_RETURN box with valid data is found`);
42
+ return undefined;
43
+ }
44
+ // find target chain token id
45
+ let assetTransformation;
46
+ for (let i = 0; i < outputs.length; i++) {
47
+ const output = outputs[i];
48
+ if (output.scriptPubKey.hex !== this.lockScriptPubKey)
49
+ continue; // utxo address is not lock address
50
+ assetTransformation = this.getAssetTransformation(output, opReturnData.toChain);
51
+ if (assetTransformation) {
52
+ validLock = true;
53
+ break;
54
+ }
55
+ }
56
+ if (!validLock || !assetTransformation) {
57
+ this.logger.debug(baseError + `: Failed to find rosen asset transformation`);
58
+ return undefined;
59
+ }
60
+ const fromAddress = `box:${transaction.vin[0].txid}.${transaction.vin[0].vout}`;
61
+ return {
62
+ toChain: opReturnData.toChain,
63
+ toAddress: opReturnData.toAddress,
64
+ bridgeFee: opReturnData.bridgeFee,
65
+ networkFee: opReturnData.networkFee,
66
+ fromAddress: fromAddress,
67
+ sourceChainTokenId: assetTransformation.from,
68
+ amount: assetTransformation.amount,
69
+ targetChainTokenId: assetTransformation.to,
70
+ sourceTxId: transaction.txid,
71
+ };
72
+ }
73
+ catch (e) {
74
+ this.logger.debug(`An error occurred while getting Doge rosen data from Rpc: ${e}`);
75
+ if (e instanceof Error && e.stack) {
76
+ this.logger.debug(e.stack);
77
+ }
78
+ }
79
+ return undefined;
80
+ };
81
+ /**
82
+ * extracts and builds token transformation from UTXO and tokenMap
83
+ * @param box transaction output
84
+ * @param toChain event target chain
85
+ */
86
+ getAssetTransformation = (box, toChain) => {
87
+ // try to build transformation using locked DOGE
88
+ const wrappedDoge = this.tokens.search(DOGE_CHAIN, {
89
+ tokenId: DOGE_NATIVE_TOKEN,
90
+ });
91
+ if (wrappedDoge.length > 0 && Object.hasOwn(wrappedDoge[0], toChain)) {
92
+ const parts = box.value.toString().split('.');
93
+ const part1 = ((parts[1] ?? '') + '0'.repeat(8)).substring(0, 8);
94
+ return {
95
+ from: DOGE_NATIVE_TOKEN,
96
+ to: this.tokens.getID(wrappedDoge[0], toChain),
97
+ amount: (parts[0] === '0' ? '' : parts[0]) + part1,
98
+ };
99
+ }
100
+ else {
101
+ return undefined;
102
+ }
103
+ };
104
+ }
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG9nZVJwY1Jvc2VuRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2dldFJvc2VuRGF0YS9kb2dlL0RvZ2VScGNSb3NlbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLDBCQUEwQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVoRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsMEJBQThDO0lBQzlFLEtBQUssR0FBRyxVQUFVLENBQUM7SUFDbEIsZ0JBQWdCLENBQVM7SUFFbkMsWUFBWSxXQUFtQixFQUFFLE1BQWdCLEVBQUUsTUFBdUI7UUFDeEUsS0FBSyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7O09BR0c7SUFDSCxjQUFjLEdBQUcsQ0FBQyxXQUErQixFQUF5QixFQUFFO1FBQzFFLE1BQU0sU0FBUyxHQUFHLCtCQUErQixXQUFXLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDckUsSUFBSTtZQUNGLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDakMsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLGdDQUFnQyxDQUFDLENBQUM7Z0JBQ2hFLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1lBRUQsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsNENBQTRDO1lBQ25FLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLDBE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dGEsIFRva2VuVHJhbnNmb3JtYXRpb24gfSBmcm9tICcuLi9hYnN0cmFjdC90eXBlcyc7XG5pbXBvcnQgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3IgZnJvbSAnLi4vYWJzdHJhY3QvQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3InO1xuaW1wb3J0IHsgRE9HRV9DSEFJTiwgRE9HRV9OQVRJVkVfVE9LRU4gfSBmcm9tICcuLi9jb25zdCc7XG5pbXBvcnQgeyBEb2dlUnBjVHJhbnNhY3Rpb24sIERvZ2VScGNUeE91dHB1dCwgT3BSZXR1cm5EYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBUb2tlbk1hcCB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvdG9rZW5zJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgcGFyc2VSb3NlbkRhdGEsIGFkZHJlc3NUb091dHB1dFNjcmlwdCB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgRG9nZVJwY1Jvc2VuRXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3I8RG9nZVJwY1RyYW5zYWN0aW9uPiB7XG4gIHJlYWRvbmx5IGNoYWluID0gRE9HRV9DSEFJTjtcbiAgcHJvdGVjdGVkIGxvY2tTY3JpcHRQdWJLZXk6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihsb2NrQWRkcmVzczogc3RyaW5nLCB0b2tlbnM6IFRva2VuTWFwLCBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlcikge1xuICAgIHN1cGVyKGxvY2tBZGRyZXNzLCB0b2tlbnMsIGxvZ2dlcik7XG4gICAgdGhpcy5sb2NrU2NyaXB0UHViS2V5ID0gYWRkcmVzc1RvT3V0cHV0U2NyaXB0KGxvY2tBZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBleHRyYWN0cyBSb3NlbkRhdGEgZnJvbSBnaXZlbiBsb2NrIHRyYW5zYWN0aW9uIGluIFJwYyBmb3JtYXRcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIHRoZSBsb2NrIHRyYW5zYWN0aW9uIGluIFJwYyBmb3JtYXRcbiAgICovXG4gIGV4dHJhY3RSYXdEYXRhID0gKHRyYW5zYWN0aW9uOiBEb2dlUnBjVHJhbnNhY3Rpb24pOiBSb3NlbkRhdGEgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IGJhc2VFcnJvciA9IGBObyByb3NlbiBkYXRhIGZvdW5kIGZvciB0eCBbJHt0cmFuc2FjdGlvbi50eGlkfV1gO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvdXRwdXRzID0gdHJhbnNhY3Rpb24udm91dDtcbiAgICAgIGlmIChvdXRwdXRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYmFzZUVycm9yICsgYDogSW5zdWZmaWNpZW50IG51bWJlciBvZiBib3hlc2ApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBsZXQgdmFsaWREYXRhID0gZmFsc2U7IC8vIGFuIE9QX1JFVFVSTiBib3ggd2l0aCB2YWxpZCBkYXRhIGlzIGZvdW5kXG4gICAgICBsZXQgdmFsaWRMb2NrID0gZmFsc2U7IC8vIGEgbG9jayBib3ggaXMgZm91bmQgd2l0aCBhdmFpbGFibGUgYXNzZXQgdHJhbnNmb3JtYXRpb25cblxuICAgICAgLy8gcGFyc2Ugcm9zZW4gZGF0YSBmcm9tIE9QX1JFVFVSTiBib3hcbiAgICAgIGxldCBvcFJldHVybkRhdGE6IE9wUmV0dXJuRGF0YSB8IHVuZGVmaW5lZDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3V0cHV0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBvdXRwdXQgPSBvdXRwdXRzW2ldO1xuICAgICAgICBpZiAob3V0cHV0LnNjcmlwdFB1YktleS5oZXguc2xpY2UoMCwgMikgIT09ICc2YScpIGNvbnRpbnVlOyAvLyBub3QgYW4gT1BfUkVUVVJOIHV0eG9cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIG9wUmV0dXJuRGF0YSA9IHBhcnNlUm9zZW5EYXRhKG91dHB1dC5zY3JpcHRQdWJLZXkuaGV4KTtcbiAgICAgICAgICB2YWxpZERhdGEgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIGV4dHJhY3QgZGF0YSBmcm9tIE9QX1JFVFVSTiBib3ggWyR7dHJhbnNhY3Rpb24udHhpZH0uJHtpfV06ICR7ZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCF2YWxpZERhdGEgfHwgIW9wUmV0dXJuRGF0YSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBObyBPUF9SRVRVUk4gYm94IHdpdGggdmFsaWQgZGF0YSBpcyBmb3VuZGBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgLy8gZmluZCB0YXJnZXQgY2hhaW4gdG9rZW4gaWRcbiAgICAgIGxldCBhc3NldFRyYW5zZm9ybWF0aW9uOiBUb2tlblRyYW5zZm9ybWF0aW9uIHwgdW5kZWZpbmVkO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvdXRwdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG91dHB1dCA9IG91dHB1dHNbaV07XG4gICAgICAgIGlmIChvdXRwdXQuc2NyaXB0UHViS2V5LmhleCAhPT0gdGhpcy5sb2NrU2NyaXB0UHViS2V5KSBjb250aW51ZTsgLy8gdXR4byBhZGRyZXNzIGlzIG5vdCBsb2NrIGFkZHJlc3NcbiAgICAgICAgYXNzZXRUcmFuc2Zvcm1hdGlvbiA9IHRoaXMuZ2V0QXNzZXRUcmFuc2Zvcm1hdGlvbihcbiAgICAgICAgICBvdXRwdXQsXG4gICAgICAgICAgb3BSZXR1cm5EYXRhLnRvQ2hhaW5cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGFzc2V0VHJhbnNmb3JtYXRpb24pIHtcbiAgICAgICAgICB2YWxpZExvY2sgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXZhbGlkTG9jayB8fCAhYXNzZXRUcmFuc2Zvcm1hdGlvbikge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBGYWlsZWQgdG8gZmluZCByb3NlbiBhc3NldCB0cmFuc2Zvcm1hdGlvbmBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZnJvbUFkZHJlc3MgPSBgYm94OiR7dHJhbnNhY3Rpb24udmluWzBdLnR4aWR9LiR7dHJhbnNhY3Rpb24udmluWzBdLnZvdXR9YDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRvQ2hhaW46IG9wUmV0dXJuRGF0YS50b0NoYWluLFxuICAgICAgICB0b0FkZHJlc3M6IG9wUmV0dXJuRGF0YS50b0FkZHJlc3MsXG4gICAgICAgIGJyaWRnZUZlZTogb3BSZXR1cm5EYXRhLmJyaWRnZUZlZSxcbiAgICAgICAgbmV0d29ya0ZlZTogb3BSZXR1cm5EYXRhLm5ldHdvcmtGZWUsXG4gICAgICAgIGZyb21BZGRyZXNzOiBmcm9tQWRkcmVzcyxcbiAgICAgICAgc291cmNlQ2hhaW5Ub2tlbklkOiBhc3NldFRyYW5zZm9ybWF0aW9uLmZyb20sXG4gICAgICAgIGFtb3VudDogYXNzZXRUcmFuc2Zvcm1hdGlvbi5hbW91bnQsXG4gICAgICAgIHRhcmdldENoYWluVG9rZW5JZDogYXNzZXRUcmFuc2Zvcm1hdGlvbi50byxcbiAgICAgICAgc291cmNlVHhJZDogdHJhbnNhY3Rpb24udHhpZCxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIERvZ2Ugcm9zZW4gZGF0YSBmcm9tIFJwYzogJHtlfWBcbiAgICAgICk7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yICYmIGUuc3RhY2spIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoZS5zdGFjayk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIGFuZCBidWlsZHMgdG9rZW4gdHJhbnNmb3JtYXRpb24gZnJvbSBVVFhPIGFuZCB0b2tlbk1hcFxuICAgKiBAcGFyYW0gYm94IHRyYW5zYWN0aW9uIG91dHB1dFxuICAgKiBAcGFyYW0gdG9DaGFpbiBldmVudCB0YXJnZXQgY2hhaW5cbiAgICovXG4gIGdldEFzc2V0VHJhbnNmb3JtYXRpb24gPSAoXG4gICAgYm94OiBEb2dlUnBjVHhPdXRwdXQsXG4gICAgdG9DaGFpbjogc3RyaW5nXG4gICk6IFRva2VuVHJhbnNmb3JtYXRpb24gfCB1bmRlZmluZWQgPT4ge1xuICAgIC8vIHRyeSB0byBidWlsZCB0cmFuc2Zvcm1hdGlvbiB1c2luZyBsb2NrZWQgRE9HRVxuICAgIGNvbnN0IHdyYXBwZWREb2dlID0gdGhpcy50b2tlbnMuc2VhcmNoKERPR0VfQ0hBSU4sIHtcbiAgICAgIHRva2VuSWQ6IERPR0VfTkFUSVZFX1RPS0VOLFxuICAgIH0pO1xuICAgIGlmICh3cmFwcGVkRG9nZS5sZW5ndGggPiAwICYmIE9iamVjdC5oYXNPd24od3JhcHBlZERvZ2VbMF0sIHRvQ2hhaW4pKSB7XG4gICAgICBjb25zdCBwYXJ0cyA9IGJveC52YWx1ZS50b1N0cmluZygpLnNwbGl0KCcuJyk7XG4gICAgICBjb25zdCBwYXJ0MSA9ICgocGFydHNbMV0gPz8gJycpICsgJzAnLnJlcGVhdCg4KSkuc3Vic3RyaW5nKDAsIDgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZnJvbTogRE9HRV9OQVRJVkVfVE9LRU4sXG4gICAgICAgIHRvOiB0aGlzLnRva2Vucy5nZXRJRCh3cmFwcGVkRG9nZVswXSwgdG9DaGFpbiksXG4gICAgICAgIGFtb3VudDogKHBhcnRzWzBdID09PSAnMCcgPyAnJyA6IHBhcnRzWzBdKSArIHBhcnQxLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,89 @@
1
+ export interface OpReturnData {
2
+ toChain: string;
3
+ toAddress: string;
4
+ bridgeFee: string;
5
+ networkFee: string;
6
+ }
7
+ export interface EsploraTxInput {
8
+ txid: string;
9
+ vout: number;
10
+ prevout: {
11
+ scriptpubkey: string;
12
+ scriptpubkey_asm: string;
13
+ scriptpubkey_type: string;
14
+ scriptpubkey_address: string;
15
+ value: number;
16
+ };
17
+ scriptsig: string;
18
+ scriptsig_asm: string;
19
+ is_coinbase: false;
20
+ sequence: number;
21
+ }
22
+ export interface EsploraTxOutput {
23
+ scriptpubkey: string;
24
+ scriptpubkey_asm: string;
25
+ scriptpubkey_type: string;
26
+ scriptpubkey_address: string;
27
+ value: number;
28
+ }
29
+ export interface DogeEsploraTransaction {
30
+ txid: string;
31
+ version: number;
32
+ locktime: number;
33
+ vin: Array<EsploraTxInput>;
34
+ vout: Array<EsploraTxOutput>;
35
+ size: number;
36
+ weight: number;
37
+ fee: number;
38
+ status: {
39
+ confirmed: true;
40
+ block_height: number;
41
+ block_hash: string;
42
+ block_time: number;
43
+ };
44
+ }
45
+ export interface DogeTxInput {
46
+ txId: string;
47
+ index: number;
48
+ scriptPubKey: string;
49
+ }
50
+ export interface DogeTxOutput {
51
+ scriptPubKey: string;
52
+ value: bigint;
53
+ }
54
+ export interface DogeTx {
55
+ id: string;
56
+ inputs: DogeTxInput[];
57
+ outputs: DogeTxOutput[];
58
+ }
59
+ export interface DogeRpcTxInput {
60
+ txid: string;
61
+ vout: number;
62
+ scriptSig: {
63
+ asm: string;
64
+ hex: string;
65
+ };
66
+ sequence: number;
67
+ }
68
+ export interface DogeRpcTxOutput {
69
+ value: number;
70
+ n: number;
71
+ scriptPubKey: {
72
+ asm: string;
73
+ hex: string;
74
+ type: string;
75
+ address?: string;
76
+ };
77
+ }
78
+ export interface DogeRpcTransaction {
79
+ txid: string;
80
+ hash: string;
81
+ version: number;
82
+ size: number;
83
+ vsize: number;
84
+ weight: number;
85
+ locktime: number;
86
+ vin: Array<DogeRpcTxInput>;
87
+ vout: Array<DogeRpcTxOutput>;
88
+ }
89
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/doge/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,KAAK,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAC3B,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE;QACN,SAAS,EAAE,IAAI,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE;QACT,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,YAAY,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAC3B,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;CAC9B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2RvZ2UvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgT3BSZXR1cm5EYXRhIHtcbiAgdG9DaGFpbjogc3RyaW5nO1xuICB0b0FkZHJlc3M6IHN0cmluZztcbiAgYnJpZGdlRmVlOiBzdHJpbmc7XG4gIG5ldHdvcmtGZWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFc3Bsb3JhVHhJbnB1dCB7XG4gIHR4aWQ6IHN0cmluZztcbiAgdm91dDogbnVtYmVyO1xuICBwcmV2b3V0OiB7XG4gICAgc2NyaXB0cHVia2V5OiBzdHJpbmc7XG4gICAgc2NyaXB0cHVia2V5X2FzbTogc3RyaW5nO1xuICAgIHNjcmlwdHB1YmtleV90eXBlOiBzdHJpbmc7XG4gICAgc2NyaXB0cHVia2V5X2FkZHJlc3M6IHN0cmluZztcbiAgICB2YWx1ZTogbnVtYmVyO1xuICB9O1xuICBzY3JpcHRzaWc6IHN0cmluZztcbiAgc2NyaXB0c2lnX2FzbTogc3RyaW5nO1xuICBpc19jb2luYmFzZTogZmFsc2U7XG4gIHNlcXVlbmNlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXNwbG9yYVR4T3V0cHV0IHtcbiAgc2NyaXB0cHVia2V5OiBzdHJpbmc7XG4gIHNjcmlwdHB1YmtleV9hc206IHN0cmluZztcbiAgc2NyaXB0cHVia2V5X3R5cGU6IHN0cmluZztcbiAgc2NyaXB0cHVia2V5X2FkZHJlc3M6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2dlRXNwbG9yYVRyYW5zYWN0aW9uIHtcbiAgdHhpZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBudW1iZXI7XG4gIGxvY2t0aW1lOiBudW1iZXI7XG4gIHZpbjogQXJyYXk8RXNwbG9yYVR4SW5wdXQ+O1xuICB2b3V0OiBBcnJheTxFc3Bsb3JhVHhPdXRwdXQ+O1xuICBzaXplOiBudW1iZXI7XG4gIHdlaWdodDogbnVtYmVyO1xuICBmZWU6IG51bWJlcjtcbiAgc3RhdHVzOiB7XG4gICAgY29uZmlybWVkOiB0cnVlO1xuICAgIGJsb2NrX2hlaWdodDogbnVtYmVyO1xuICAgIGJsb2NrX2hhc2g6IHN0cmluZztcbiAgICBibG9ja190aW1lOiBudW1iZXI7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9nZVR4SW5wdXQge1xuICB0eElkOiBzdHJpbmc7XG4gIGluZGV4OiBudW1iZXI7XG4gIHNjcmlwdFB1YktleTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvZ2VUeE91dHB1dCB7XG4gIHNjcmlwdFB1YktleTogc3RyaW5nO1xuICB2YWx1ZTogYmlnaW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvZ2VUeCB7XG4gIGlkOiBzdHJpbmc7XG4gIGlucHV0czogRG9nZVR4SW5wdXRbXTtcbiAgb3V0cHV0czogRG9nZVR4T3V0cHV0W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9nZVJwY1R4SW5wdXQge1xuICB0eGlkOiBzdHJpbmc7XG4gIHZvdXQ6IG51bWJlcjtcbiAgc2NyaXB0U2lnOiB7XG4gICAgYXNtOiBzdHJpbmc7XG4gICAgaGV4OiBzdHJpbmc7XG4gIH07XG4gIHNlcXVlbmNlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9nZVJwY1R4T3V0cHV0IHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbjogbnVtYmVyO1xuICBzY3JpcHRQdWJLZXk6IHtcbiAgICBhc206IHN0cmluZztcbiAgICBoZXg6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgYWRkcmVzcz86IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2dlUnBjVHJhbnNhY3Rpb24ge1xuICB0eGlkOiBzdHJpbmc7XG4gIGhhc2g6IHN0cmluZztcbiAgdmVyc2lvbjogbnVtYmVyO1xuICBzaXplOiBudW1iZXI7XG4gIHZzaXplOiBudW1iZXI7XG4gIHdlaWdodDogbnVtYmVyO1xuICBsb2NrdGltZTogbnVtYmVyO1xuICB2aW46IEFycmF5PERvZ2VScGNUeElucHV0PjtcbiAgdm91dDogQXJyYXk8RG9nZVJwY1R4T3V0cHV0Pjtcbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { OpReturnData } from './types';
2
+ /**
3
+ * Converts a Dogecoin address to its corresponding output script
4
+ * @param addr The Dogecoin address to convert
5
+ * @returns The output script as a hex string
6
+ */
7
+ export declare const addressToOutputScript: (addr: string) => string;
8
+ /**
9
+ * extracts rosen data from OP_RETURN box script pub key
10
+ * @param scriptPubKeyHex
11
+ */
12
+ export declare const parseRosenData: (scriptPubKeyHex: string) => OpReturnData;
13
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/doge/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAevC;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,SAAU,MAAM,KAAG,MAEpD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,oBAAqB,MAAM,KAAG,YA4CxD,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { decodeAddress } from '@rosen-bridge/address-codec';
2
+ import { SUPPORTED_CHAINS } from '../const';
3
+ import { address } from 'bitcoinjs-lib';
4
+ const dogecoinNetwork = {
5
+ messagePrefix: '\x19Dogecoin Signed Message:\n',
6
+ bech32: 'dc',
7
+ bip32: {
8
+ public: 0x02facafd,
9
+ private: 0x02fac398,
10
+ },
11
+ pubKeyHash: 0x1e,
12
+ scriptHash: 0x16,
13
+ wif: 0x9e,
14
+ };
15
+ /**
16
+ * Converts a Dogecoin address to its corresponding output script
17
+ * @param addr The Dogecoin address to convert
18
+ * @returns The output script as a hex string
19
+ */
20
+ export const addressToOutputScript = (addr) => {
21
+ return address.toOutputScript(addr, dogecoinNetwork).toString('hex');
22
+ };
23
+ /**
24
+ * extracts rosen data from OP_RETURN box script pub key
25
+ * @param scriptPubKeyHex
26
+ */
27
+ export const parseRosenData = (scriptPubKeyHex) => {
28
+ // check OP_RETURN opcode
29
+ if (scriptPubKeyHex.slice(0, 2) !== '6a')
30
+ throw Error(`script does not start with OP_RETURN opcode (6a)`);
31
+ // check script length (should not use more than one OP_RETURN)
32
+ const dataLength = scriptPubKeyHex.slice(2, 4);
33
+ if (parseInt(dataLength, 16) + 2 !== scriptPubKeyHex.length / 2)
34
+ throw Error(`script length is unexpected [${parseInt(dataLength, 16) + 3} !== ${scriptPubKeyHex.length / 2}]`);
35
+ // parse toChain
36
+ const toChainHex = scriptPubKeyHex.slice(4, 6);
37
+ const toChainCode = parseInt(toChainHex, 16);
38
+ if (toChainCode >= SUPPORTED_CHAINS.length)
39
+ throw Error(`invalid toChain code, found [${toChainCode}] but only [${SUPPORTED_CHAINS.length}] chains are supported`);
40
+ const toChain = SUPPORTED_CHAINS[toChainCode];
41
+ // parse bridgeFee
42
+ const bridgeFeeHex = scriptPubKeyHex.slice(6, 22);
43
+ const bridgeFee = BigInt('0x' + bridgeFeeHex).toString();
44
+ // parse networkFee
45
+ const networkFeeHex = scriptPubKeyHex.slice(22, 38);
46
+ const networkFee = BigInt('0x' + networkFeeHex).toString();
47
+ // parse toAddress
48
+ const addressLengthCode = scriptPubKeyHex.slice(38, 40);
49
+ const addressHex = scriptPubKeyHex.slice(40, 40 + parseInt(addressLengthCode, 16) * 2);
50
+ const toAddress = decodeAddress(toChain, addressHex);
51
+ return {
52
+ toChain,
53
+ toAddress,
54
+ bridgeFee,
55
+ networkFee,
56
+ };
57
+ };
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2RvZ2UvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU1QyxPQUFPLEVBQUUsT0FBTyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRWxELE1BQU0sZUFBZSxHQUFHO0lBQ3RCLGFBQWEsRUFBRSxnQ0FBZ0M7SUFDL0MsTUFBTSxFQUFFLElBQUk7SUFDWixLQUFLLEVBQUU7UUFDTCxNQUFNLEVBQUUsVUFBVTtRQUNsQixPQUFPLEVBQUUsVUFBVTtLQUNwQjtJQUNELFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLEdBQUcsRUFBRSxJQUFJO0NBQ1YsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLElBQVksRUFBVSxFQUFFO0lBQzVELE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZFLENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLGVBQXVCLEVBQWdCLEVBQUU7SUFDdEUseUJBQXlCO0lBQ3pCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSTtRQUN0QyxNQUFNLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQ2xFLCtEQUErRDtJQUMvRCxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUM3RCxNQUFNLEtBQUssQ0FDVCxnQ0FBZ0MsUUFBUSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQzFELGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FDM0IsR0FBRyxDQUNKLENBQUM7SUFFSixnQkFBZ0I7SUFDaEIsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QyxJQUFJLFdBQVcsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNO1FBQ3hDLE1BQU0sS0FBSyxDQUNULGdDQUFnQyxXQUFXLGVBQWUsZ0JBQWdCLENBQUMsTUFBTSx3QkFBd0IsQ0FDMUcsQ0FBQztJQUNKLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTlDLGtCQUFrQjtJQUNsQixNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRXpELG1CQUFtQjtJQUNuQixNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRTNELGtCQUFrQjtJQUNsQixNQUFNLGlCQUFpQixHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQ3RDLEVBQUUsRUFDRixFQUFFLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FDekMsQ0FBQztJQUNGLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFckQsT0FBTztRQUNMLE9BQU87UUFDUCxTQUFTO1FBQ1QsU0FBUztRQUNULFVBQVU7S0FDWCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVjb2RlQWRkcmVzcyB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWRkcmVzcy1jb2RlYyc7XG5pbXBvcnQgeyBTVVBQT1JURURfQ0hBSU5TIH0gZnJvbSAnLi4vY29uc3QnO1xuaW1wb3J0IHsgT3BSZXR1cm5EYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBhZGRyZXNzLCBuZXR3b3JrcyB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuXG5jb25zdCBkb2dlY29pbk5ldHdvcmsgPSB7XG4gIG1lc3NhZ2VQcmVmaXg6ICdcXHgxOURvZ2Vjb2luIFNpZ25lZCBNZXNzYWdlOlxcbicsXG4gIGJlY2gzMjogJ2RjJyxcbiAgYmlwMzI6IHtcbiAgICBwdWJsaWM6IDB4MDJmYWNhZmQsXG4gICAgcHJpdmF0ZTogMHgwMmZhYzM5OCxcbiAgfSxcbiAgcHViS2V5SGFzaDogMHgxZSxcbiAgc2NyaXB0SGFzaDogMHgxNixcbiAgd2lmOiAweDllLFxufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIERvZ2Vjb2luIGFkZHJlc3MgdG8gaXRzIGNvcnJlc3BvbmRpbmcgb3V0cHV0IHNjcmlwdFxuICogQHBhcmFtIGFkZHIgVGhlIERvZ2Vjb2luIGFkZHJlc3MgdG8gY29udmVydFxuICogQHJldHVybnMgVGhlIG91dHB1dCBzY3JpcHQgYXMgYSBoZXggc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRyZXNzVG9PdXRwdXRTY3JpcHQgPSAoYWRkcjogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGFkZHJlc3MudG9PdXRwdXRTY3JpcHQoYWRkciwgZG9nZWNvaW5OZXR3b3JrKS50b1N0cmluZygnaGV4Jyk7XG59O1xuXG4vKipcbiAqIGV4dHJhY3RzIHJvc2VuIGRhdGEgZnJvbSBPUF9SRVRVUk4gYm94IHNjcmlwdCBwdWIga2V5XG4gKiBAcGFyYW0gc2NyaXB0UHViS2V5SGV4XG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZVJvc2VuRGF0YSA9IChzY3JpcHRQdWJLZXlIZXg6IHN0cmluZyk6IE9wUmV0dXJuRGF0YSA9PiB7XG4gIC8vIGNoZWNrIE9QX1JFVFVSTiBvcGNvZGVcbiAgaWYgKHNjcmlwdFB1YktleUhleC5zbGljZSgwLCAyKSAhPT0gJzZhJylcbiAgICB0aHJvdyBFcnJvcihgc2NyaXB0IGRvZXMgbm90IHN0YXJ0IHdpdGggT1BfUkVUVVJOIG9wY29kZSAoNmEpYCk7XG4gIC8vIGNoZWNrIHNjcmlwdCBsZW5ndGggKHNob3VsZCBub3QgdXNlIG1vcmUgdGhhbiBvbmUgT1BfUkVUVVJOKVxuICBjb25zdCBkYXRhTGVuZ3RoID0gc2NyaXB0UHViS2V5SGV4LnNsaWNlKDIsIDQpO1xuICBpZiAocGFyc2VJbnQoZGF0YUxlbmd0aCwgMTYpICsgMiAhPT0gc2NyaXB0UHViS2V5SGV4Lmxlbmd0aCAvIDIpXG4gICAgdGhyb3cgRXJyb3IoXG4gICAgICBgc2NyaXB0IGxlbmd0aCBpcyB1bmV4cGVjdGVkIFske3BhcnNlSW50KGRhdGFMZW5ndGgsIDE2KSArIDN9ICE9PSAke1xuICAgICAgICBzY3JpcHRQdWJLZXlIZXgubGVuZ3RoIC8gMlxuICAgICAgfV1gXG4gICAgKTtcblxuICAvLyBwYXJzZSB0b0NoYWluXG4gIGNvbnN0IHRvQ2hhaW5IZXggPSBzY3JpcHRQdWJLZXlIZXguc2xpY2UoNCwgNik7XG4gIGNvbnN0IHRvQ2hhaW5Db2RlID0gcGFyc2VJbnQodG9DaGFpbkhleCwgMTYpO1xuICBpZiAodG9DaGFpbkNvZGUgPj0gU1VQUE9SVEVEX0NIQUlOUy5sZW5ndGgpXG4gICAgdGhyb3cgRXJyb3IoXG4gICAgICBgaW52YWxpZCB0b0NoYWluIGNvZGUsIGZvdW5kIFske3RvQ2hhaW5Db2RlfV0gYnV0IG9ubHkgWyR7U1VQUE9SVEVEX0NIQUlOUy5sZW5ndGh9XSBjaGFpbnMgYXJlIHN1cHBvcnRlZGBcbiAgICApO1xuICBjb25zdCB0b0NoYWluID0gU1VQUE9SVEVEX0NIQUlOU1t0b0NoYWluQ29kZV07XG5cbiAgLy8gcGFyc2UgYnJpZGdlRmVlXG4gIGNvbnN0IGJyaWRnZUZlZUhleCA9IHNjcmlwdFB1YktleUhleC5zbGljZSg2LCAyMik7XG4gIGNvbnN0IGJyaWRnZUZlZSA9IEJpZ0ludCgnMHgnICsgYnJpZGdlRmVlSGV4KS50b1N0cmluZygpO1xuXG4gIC8vIHBhcnNlIG5ldHdvcmtGZWVcbiAgY29uc3QgbmV0d29ya0ZlZUhleCA9IHNjcmlwdFB1YktleUhleC5zbGljZSgyMiwgMzgpO1xuICBjb25zdCBuZXR3b3JrRmVlID0gQmlnSW50KCcweCcgKyBuZXR3b3JrRmVlSGV4KS50b1N0cmluZygpO1xuXG4gIC8vIHBhcnNlIHRvQWRkcmVzc1xuICBjb25zdCBhZGRyZXNzTGVuZ3RoQ29kZSA9IHNjcmlwdFB1YktleUhleC5zbGljZSgzOCwgNDApO1xuICBjb25zdCBhZGRyZXNzSGV4ID0gc2NyaXB0UHViS2V5SGV4LnNsaWNlKFxuICAgIDQwLFxuICAgIDQwICsgcGFyc2VJbnQoYWRkcmVzc0xlbmd0aENvZGUsIDE2KSAqIDJcbiAgKTtcbiAgY29uc3QgdG9BZGRyZXNzID0gZGVjb2RlQWRkcmVzcyh0b0NoYWluLCBhZGRyZXNzSGV4KTtcblxuICByZXR1cm4ge1xuICAgIHRvQ2hhaW4sXG4gICAgdG9BZGRyZXNzLFxuICAgIGJyaWRnZUZlZSxcbiAgICBuZXR3b3JrRmVlLFxuICB9O1xufTtcbiJdfQ==
@@ -4,26 +4,19 @@ import { NodeOutputBox, NodeTransaction } from './types';
4
4
  import { RosenTokens } from '@rosen-bridge/tokens';
5
5
  import { AbstractLogger } from '@rosen-bridge/abstract-logger';
6
6
  export declare class ErgoNodeRosenExtractor extends AbstractRosenDataExtractor<NodeTransaction> {
7
- readonly chain = 'ergo';
8
- lockErgoTree: string;
9
- constructor(
10
- lockAddress: string,
11
- tokens: RosenTokens,
12
- logger?: AbstractLogger
13
- );
14
- /**
15
- * extracts RosenData from given lock transaction in Node format
16
- * @param transaction the lock transaction in Node format
17
- */
18
- extractRawData: (transaction: NodeTransaction) => RosenData | undefined;
19
- /**
20
- * extracts and builds token transformation from NodeOutputBox and tokenMap
21
- * @param box transaction output
22
- * @param toChain event target chain
23
- */
24
- getAssetTransformation: (
25
- box: NodeOutputBox,
26
- toChain: string
27
- ) => TokenTransformation | undefined;
7
+ readonly chain = "ergo";
8
+ lockErgoTree: string;
9
+ constructor(lockAddress: string, tokens: RosenTokens, logger?: AbstractLogger);
10
+ /**
11
+ * extracts RosenData from given lock transaction in Node format
12
+ * @param transaction the lock transaction in Node format
13
+ */
14
+ extractRawData: (transaction: NodeTransaction) => RosenData | undefined;
15
+ /**
16
+ * extracts and builds token transformation from NodeOutputBox and tokenMap
17
+ * @param box transaction output
18
+ * @param toChain event target chain
19
+ */
20
+ getAssetTransformation: (box: NodeOutputBox, toChain: string) => TokenTransformation | undefined;
28
21
  }
29
- //# sourceMappingURL=ErgoNodeRosenExtractor.d.ts.map
22
+ //# sourceMappingURL=ErgoNodeRosenExtractor.d.ts.map
@@ -3,17 +3,13 @@ import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
3
3
  import { RosenTokens } from '@rosen-bridge/tokens';
4
4
  import { AbstractLogger } from '@rosen-bridge/abstract-logger';
5
5
  export declare class ErgoRosenExtractor extends AbstractRosenDataExtractor<string> {
6
- readonly chain = 'ergo';
7
- private nodeExtractor;
8
- constructor(
9
- lockAddress: string,
10
- tokens: RosenTokens,
11
- logger?: AbstractLogger
12
- );
13
- /**
14
- * extracts RosenData from given lock transaction in wasm sigma serialized bytes
15
- * @param serializedTransaction the sigma serialized bytes of transaction
16
- */
17
- extractRawData: (serializedTransaction: string) => RosenData | undefined;
6
+ readonly chain = "ergo";
7
+ private nodeExtractor;
8
+ constructor(lockAddress: string, tokens: RosenTokens, logger?: AbstractLogger);
9
+ /**
10
+ * extracts RosenData from given lock transaction in wasm sigma serialized bytes
11
+ * @param serializedTransaction the sigma serialized bytes of transaction
12
+ */
13
+ extractRawData: (serializedTransaction: string) => RosenData | undefined;
18
14
  }
19
- //# sourceMappingURL=ErgoRosenExtractor.d.ts.map
15
+ //# sourceMappingURL=ErgoRosenExtractor.d.ts.map
@@ -1,37 +1,37 @@
1
1
  interface NodeAsset {
2
- tokenId: string;
3
- amount: bigint;
2
+ tokenId: string;
3
+ amount: bigint;
4
4
  }
5
5
  interface NodeAdditionalRegisters {
6
- R4?: string;
7
- R5?: string;
8
- R6?: string;
9
- R7?: string;
10
- R8?: string;
11
- R9?: string;
6
+ R4?: string;
7
+ R5?: string;
8
+ R6?: string;
9
+ R7?: string;
10
+ R8?: string;
11
+ R9?: string;
12
12
  }
13
13
  interface NodeOutputBox {
14
- boxId: string;
15
- value: bigint;
16
- ergoTree: string;
17
- creationHeight: bigint | number;
18
- assets?: Array<NodeAsset>;
19
- additionalRegisters?: NodeAdditionalRegisters;
20
- transactionId: string;
21
- index: bigint | number;
14
+ boxId: string;
15
+ value: bigint;
16
+ ergoTree: string;
17
+ creationHeight: bigint | number;
18
+ assets?: Array<NodeAsset>;
19
+ additionalRegisters?: NodeAdditionalRegisters;
20
+ transactionId: string;
21
+ index: bigint | number;
22
22
  }
23
23
  interface NodeInputBox {
24
- boxId: string;
24
+ boxId: string;
25
25
  }
26
26
  interface NodeDataInput {
27
- boxId: string;
27
+ boxId: string;
28
28
  }
29
29
  interface NodeTransaction {
30
- id: string;
31
- inputs: Array<NodeInputBox>;
32
- dataInputs: Array<NodeDataInput>;
33
- outputs: Array<NodeOutputBox>;
34
- size?: bigint;
30
+ id: string;
31
+ inputs: Array<NodeInputBox>;
32
+ dataInputs: Array<NodeDataInput>;
33
+ outputs: Array<NodeOutputBox>;
34
+ size?: bigint;
35
35
  }
36
36
  export { NodeOutputBox, NodeTransaction };
37
- //# sourceMappingURL=types.d.ts.map
37
+ //# sourceMappingURL=types.d.ts.map