@rosen-bridge/rosen-extractor 3.3.0 → 3.5.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.
Files changed (37) hide show
  1. package/dist/lib/getRosenData/abstract/AbstractRosenDataExtractor.d.ts +13 -9
  2. package/dist/lib/getRosenData/abstract/types.d.ts +13 -13
  3. package/dist/lib/getRosenData/bitcoin/BitcoinEsploraRosenExtractor.d.ts +22 -20
  4. package/dist/lib/getRosenData/bitcoin/BitcoinEsploraRosenExtractor.d.ts.map +1 -1
  5. package/dist/lib/getRosenData/bitcoin/BitcoinEsploraRosenExtractor.js +4 -42
  6. package/dist/lib/getRosenData/bitcoin/BitcoinRosenExtractor.d.ts +28 -0
  7. package/dist/lib/getRosenData/bitcoin/BitcoinRosenExtractor.d.ts.map +1 -0
  8. package/dist/lib/getRosenData/bitcoin/BitcoinRosenExtractor.js +94 -0
  9. package/dist/lib/getRosenData/bitcoin/types.d.ts +48 -34
  10. package/dist/lib/getRosenData/bitcoin/types.d.ts.map +1 -1
  11. package/dist/lib/getRosenData/bitcoin/types.js +1 -1
  12. package/dist/lib/getRosenData/bitcoin/utils.d.ts +7 -0
  13. package/dist/lib/getRosenData/bitcoin/utils.d.ts.map +1 -0
  14. package/dist/lib/getRosenData/bitcoin/utils.js +41 -0
  15. package/dist/lib/getRosenData/cardano/CardanoBlockFrostRosenExtractor.d.ts +15 -12
  16. package/dist/lib/getRosenData/cardano/CardanoGraphQLRosenExtractor.d.ts +15 -12
  17. package/dist/lib/getRosenData/cardano/CardanoKoiosRosenExtractor.d.ts +15 -12
  18. package/dist/lib/getRosenData/cardano/CardanoOgmiosRosenExtractor.d.ts +15 -12
  19. package/dist/lib/getRosenData/cardano/CardanoRosenExtractor.d.ts +15 -12
  20. package/dist/lib/getRosenData/cardano/types.d.ts +110 -90
  21. package/dist/lib/getRosenData/const.d.ts +2 -0
  22. package/dist/lib/getRosenData/const.d.ts.map +1 -1
  23. package/dist/lib/getRosenData/const.js +9 -2
  24. package/dist/lib/getRosenData/ergo/ErgoNodeRosenExtractor.d.ts +21 -14
  25. package/dist/lib/getRosenData/ergo/ErgoRosenExtractor.d.ts +12 -8
  26. package/dist/lib/getRosenData/ergo/types.d.ts +24 -24
  27. package/dist/lib/getRosenData/evm/EvmRpcRosenExtractor.d.ts +26 -0
  28. package/dist/lib/getRosenData/evm/EvmRpcRosenExtractor.d.ts.map +1 -0
  29. package/dist/lib/getRosenData/evm/EvmRpcRosenExtractor.js +118 -0
  30. package/dist/lib/getRosenData/evm/utils.d.ts +13 -0
  31. package/dist/lib/getRosenData/evm/utils.d.ts.map +1 -0
  32. package/dist/lib/getRosenData/evm/utils.js +31 -0
  33. package/dist/lib/index.d.ts +2 -0
  34. package/dist/lib/index.d.ts.map +1 -1
  35. package/dist/lib/index.js +3 -1
  36. package/dist/tsconfig.tsbuildinfo +1 -1
  37. package/package.json +4 -3
@@ -2,13 +2,17 @@ import { RosenTokens, TokenMap } from '@rosen-bridge/tokens';
2
2
  import { RosenData } from './types';
3
3
  import { AbstractLogger } from '@rosen-bridge/abstract-logger';
4
4
  export default abstract class AbstractRosenDataExtractor<TransactionType> {
5
- protected readonly logger: AbstractLogger;
6
- protected readonly tokens: TokenMap;
7
- protected readonly lockAddress: string;
8
- constructor(lockAddress: string, tokens: RosenTokens, logger?: AbstractLogger);
9
- /**
10
- * extracts RosenData from given lock transaction
11
- */
12
- abstract get: (transaction: TransactionType) => RosenData | undefined;
5
+ protected readonly logger: AbstractLogger;
6
+ protected readonly tokens: TokenMap;
7
+ protected readonly lockAddress: string;
8
+ constructor(
9
+ lockAddress: string,
10
+ tokens: RosenTokens,
11
+ logger?: AbstractLogger
12
+ );
13
+ /**
14
+ * extracts RosenData from given lock transaction
15
+ */
16
+ abstract get: (transaction: TransactionType) => RosenData | undefined;
13
17
  }
14
- //# sourceMappingURL=AbstractRosenDataExtractor.d.ts.map
18
+ //# sourceMappingURL=AbstractRosenDataExtractor.d.ts.map
@@ -1,18 +1,18 @@
1
1
  interface RosenData {
2
- toChain: string;
3
- toAddress: string;
4
- bridgeFee: string;
5
- networkFee: string;
6
- fromAddress: string;
7
- sourceChainTokenId: string;
8
- amount: string;
9
- targetChainTokenId: string;
10
- sourceTxId: string;
2
+ toChain: string;
3
+ toAddress: string;
4
+ bridgeFee: string;
5
+ networkFee: string;
6
+ fromAddress: string;
7
+ sourceChainTokenId: string;
8
+ amount: string;
9
+ targetChainTokenId: string;
10
+ sourceTxId: string;
11
11
  }
12
12
  interface TokenTransformation {
13
- from: string;
14
- to: string;
15
- amount: string;
13
+ from: string;
14
+ to: string;
15
+ amount: string;
16
16
  }
17
17
  export { RosenData, TokenTransformation };
18
- //# sourceMappingURL=types.d.ts.map
18
+ //# sourceMappingURL=types.d.ts.map
@@ -1,26 +1,28 @@
1
1
  import { RosenData, TokenTransformation } from '../abstract/types';
2
2
  import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
3
- import { BitcoinEsploraTransaction, EsploraTxOutput, OpReturnData } from './types';
3
+ import { BitcoinEsploraTransaction, EsploraTxOutput } from './types';
4
4
  import { RosenTokens } from '@rosen-bridge/tokens';
5
5
  import { AbstractLogger } from '@rosen-bridge/abstract-logger';
6
6
  export declare class BitcoinEsploraRosenExtractor extends AbstractRosenDataExtractor<BitcoinEsploraTransaction> {
7
- protected lockScriptPubKey: string;
8
- constructor(lockAddress: string, tokens: RosenTokens, logger?: AbstractLogger);
9
- /**
10
- * extracts RosenData from given lock transaction in Esplora format
11
- * @param transaction the lock transaction in Esplora format
12
- */
13
- get: (transaction: BitcoinEsploraTransaction) => RosenData | undefined;
14
- /**
15
- * extracts rosen data from OP_RETURN box script pub key
16
- * @param scriptPubKeyHex
17
- */
18
- parseRosenData: (scriptPubKeyHex: string) => OpReturnData;
19
- /**
20
- * extracts and builds token transformation from UTXO and tokenMap
21
- * @param box transaction output
22
- * @param toChain event target chain
23
- */
24
- getAssetTransformation: (box: EsploraTxOutput, toChain: string) => TokenTransformation | undefined;
7
+ protected lockScriptPubKey: string;
8
+ constructor(
9
+ lockAddress: string,
10
+ tokens: RosenTokens,
11
+ logger?: AbstractLogger
12
+ );
13
+ /**
14
+ * extracts RosenData from given lock transaction in Esplora format
15
+ * @param transaction the lock transaction in Esplora format
16
+ */
17
+ get: (transaction: BitcoinEsploraTransaction) => RosenData | undefined;
18
+ /**
19
+ * extracts and builds token transformation from UTXO and tokenMap
20
+ * @param box transaction output
21
+ * @param toChain event target chain
22
+ */
23
+ getAssetTransformation: (
24
+ box: EsploraTxOutput,
25
+ toChain: string
26
+ ) => TokenTransformation | undefined;
25
27
  }
26
- //# sourceMappingURL=BitcoinEsploraRosenExtractor.d.ts.map
28
+ //# sourceMappingURL=BitcoinEsploraRosenExtractor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BitcoinEsploraRosenExtractor.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/bitcoin/BitcoinEsploraRosenExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAMhF,OAAO,EACL,yBAAyB,EACzB,eAAe,EACf,YAAY,EACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAI/D,qBAAa,4BAA6B,SAAQ,0BAA0B,CAAC,yBAAyB,CAAC;IACrG,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAGjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,cAAc;IAMzB;;;OAGG;IACH,GAAG,gBAAiB,yBAAyB,KAAG,SAAS,GAAG,SAAS,CA6DnE;IAEF;;;OAGG;IACH,cAAc,oBAAqB,MAAM,KAAG,YAAY,CA+CtD;IAEF;;;;OAIG;IACH,sBAAsB,QACf,eAAe,WACX,MAAM,KACd,mBAAmB,GAAG,SAAS,CAehC;CACH"}
1
+ {"version":3,"file":"BitcoinEsploraRosenExtractor.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/bitcoin/BitcoinEsploraRosenExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EACL,yBAAyB,EACzB,eAAe,EAEhB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAI/D,qBAAa,4BAA6B,SAAQ,0BAA0B,CAAC,yBAAyB,CAAC;IACrG,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAGjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,cAAc;IAMzB;;;OAGG;IACH,GAAG,gBAAiB,yBAAyB,KAAG,SAAS,GAAG,SAAS,CA6DnE;IAEF;;;;OAIG;IACH,sBAAsB,QACf,eAAe,WACX,MAAM,KACd,mBAAmB,GAAG,SAAS,CAehC;CACH"}
@@ -1,7 +1,7 @@
1
1
  import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
2
- import { BITCOIN_CHAIN, BITCOIN_NATIVE_TOKEN, SUPPORTED_CHAINS, } from '../const';
3
- import { decodeAddress } from '@rosen-bridge/address-codec';
2
+ import { BITCOIN_CHAIN, BITCOIN_NATIVE_TOKEN } from '../const';
4
3
  import { address } from 'bitcoinjs-lib';
4
+ import { parseRosenData } from './utils';
5
5
  export class BitcoinEsploraRosenExtractor extends AbstractRosenDataExtractor {
6
6
  lockScriptPubKey;
7
7
  constructor(lockAddress, tokens, logger) {
@@ -31,7 +31,7 @@ export class BitcoinEsploraRosenExtractor extends AbstractRosenDataExtractor {
31
31
  // parse rosen data from OP_RETURN box
32
32
  let opReturnData;
33
33
  try {
34
- opReturnData = this.parseRosenData(outputs[0].scriptpubkey);
34
+ opReturnData = parseRosenData(outputs[0].scriptpubkey);
35
35
  }
36
36
  catch (e) {
37
37
  this.logger.debug(baseError + `: Failed to extract data from OP_RETURN box: ${e}`);
@@ -64,44 +64,6 @@ export class BitcoinEsploraRosenExtractor extends AbstractRosenDataExtractor {
64
64
  }
65
65
  return undefined;
66
66
  };
67
- /**
68
- * extracts rosen data from OP_RETURN box script pub key
69
- * @param scriptPubKeyHex
70
- */
71
- parseRosenData = (scriptPubKeyHex) => {
72
- // check OP_RETURN opcode
73
- if (scriptPubKeyHex.slice(0, 2) !== '6a')
74
- throw Error(`script does not start with OP_RETURN opcode (6a)`);
75
- // check OP_PUSHDATA1 opcode
76
- if (scriptPubKeyHex.slice(2, 4) !== '4c')
77
- throw Error(`script 2nd opcode is not OP_PUSHDATA1 (4c)`);
78
- // check script length (should not use more than one OP_RETURN)
79
- const dataLength = scriptPubKeyHex.slice(4, 6);
80
- if (parseInt(dataLength, 16) + 3 !== scriptPubKeyHex.length / 2)
81
- throw Error(`script length is unexpected [${parseInt(dataLength, 16) + 3} !== ${scriptPubKeyHex.length / 2}]`);
82
- // parse toChain
83
- const toChainHex = scriptPubKeyHex.slice(6, 8);
84
- const toChainCode = parseInt(toChainHex, 16);
85
- if (toChainCode >= SUPPORTED_CHAINS.length)
86
- throw Error(`invalid toChain code, found [${toChainCode}] but only [${SUPPORTED_CHAINS.length}] chains are supported`);
87
- const toChain = SUPPORTED_CHAINS[toChainCode];
88
- // parse bridgeFee
89
- const bridgeFeeHex = scriptPubKeyHex.slice(8, 24);
90
- const bridgeFee = BigInt('0x' + bridgeFeeHex).toString();
91
- // parse networkFee
92
- const networkFeeHex = scriptPubKeyHex.slice(24, 40);
93
- const networkFee = BigInt('0x' + networkFeeHex).toString();
94
- // parse toAddress
95
- const addressLengthCode = scriptPubKeyHex.slice(40, 42);
96
- const addressHex = scriptPubKeyHex.slice(42, 42 + parseInt(addressLengthCode, 16) * 2);
97
- const toAddress = decodeAddress(toChain, addressHex);
98
- return {
99
- toChain,
100
- toAddress,
101
- bridgeFee,
102
- networkFee,
103
- };
104
- };
105
67
  /**
106
68
  * extracts and builds token transformation from UTXO and tokenMap
107
69
  * @param box transaction output
@@ -125,4 +87,4 @@ export class BitcoinEsploraRosenExtractor extends AbstractRosenDataExtractor {
125
87
  }
126
88
  };
127
89
  }
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQml0Y29pbkVzcGxvcmFSb3NlbkV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9nZXRSb3NlbkRhdGEvYml0Y29pbi9CaXRjb2luRXNwbG9yYVJvc2VuRXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sMEJBQTBCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUNMLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsZ0JBQWdCLEdBQ2pCLE1BQU0sVUFBVSxDQUFDO0FBUWxCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhDLE1BQU0sT0FBTyw0QkFBNkIsU0FBUSwwQkFBcUQ7SUFDM0YsZ0JBQWdCLENBQVM7SUFFbkMsWUFDRSxXQUFtQixFQUNuQixNQUFtQixFQUNuQixNQUF1QjtRQUV2QixLQUFLLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOzs7T0FHRztJQUNILEdBQUcsR0FBRyxDQUFDLFdBQXNDLEVBQXlCLEVBQUU7UUFDdEUsTUFBTSxTQUFTLEdBQUcsK0JBQStCLFdBQVcsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUNyRSxJQUFJO1lBQ0YsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztZQUNqQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsZ0NBQWdDLENBQUMsQ0FBQztnQkFDaEUsT0FBTyxTQUFTLENBQUM7YUFDbEI7WUFDRCxJQUFJ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LGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FDekMsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFckQsT0FBTztZQUNMLE9BQU87WUFDUCxTQUFTO1lBQ1QsU0FBUztZQUNULFVBQVU7U0FDWCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUY7Ozs7T0FJRztJQUNILHNCQUFzQixHQUFHLENBQ3ZCLEdBQW9CLEVBQ3BCLE9BQWUsRUFDa0IsRUFBRTtRQUNuQywrQ0FBK0M7UUFDL0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQ25ELENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxvQkFBb0I7U0FDNUQsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRTtZQUNsRSxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQ2hDLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLG9CQUFvQjtnQkFDMUIsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7Z0JBQzdDLE1BQU0sRUFBRSxhQUFhLENBQUMsUUFBUSxFQUFFO2FBQ2pDLENBQUM7U0FDSDthQUFNO1lBQ0wsT0FBTyxTQUFTLENBQUM7U0FDbEI7SUFDSCxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvc2VuRGF0YSwgVG9rZW5UcmFuc2Zvcm1hdGlvbiB9IGZyb20gJy4uL2Fic3RyYWN0L3R5cGVzJztcbmltcG9ydCBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvciBmcm9tICcuLi9hYnN0cmFjdC9BYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3Rvcic7XG5pbXBvcnQge1xuICBCSVRDT0lOX0NIQUlOLFxuICBCSVRDT0lOX05BVElWRV9UT0tFTixcbiAgU1VQUE9SVEVEX0NIQUlOUyxcbn0gZnJvbSAnLi4vY29uc3QnO1xuaW1wb3J0IHtcbiAgQml0Y29pbkVzcGxvcmFUcmFuc2FjdGlvbixcbiAgRXNwbG9yYVR4T3V0cHV0LFxuICBPcFJldHVybkRhdGEsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgUm9zZW5Ub2tlbnMgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Rva2Vucyc7XG5pbXBvcnQgeyBBYnN0cmFjdExvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IGRlY29kZUFkZHJlc3MgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2FkZHJlc3MtY29kZWMnO1xuaW1wb3J0IHsgYWRkcmVzcyB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuXG5leHBvcnQgY2xhc3MgQml0Y29pbkVzcGxvcmFSb3NlbkV4dHJhY3RvciBleHRlbmRzIEFic3RyYWN0Um9zZW5EYXRhRXh0cmFjdG9yPEJpdGNvaW5Fc3Bsb3JhVHJhbnNhY3Rpb24+IHtcbiAgcHJvdGVjdGVkIGxvY2tTY3JpcHRQdWJLZXk6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBsb2NrQWRkcmVzczogc3RyaW5nLFxuICAgIHRva2VuczogUm9zZW5Ub2tlbnMsXG4gICAgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXJcbiAgKSB7XG4gICAgc3VwZXIobG9ja0FkZHJlc3MsIHRva2VucywgbG9nZ2VyKTtcbiAgICB0aGlzLmxvY2tTY3JpcHRQdWJLZXkgPSBhZGRyZXNzLnRvT3V0cHV0U2NyaXB0KGxvY2tBZGRyZXNzKS50b1N0cmluZygnaGV4Jyk7XG4gIH1cblxuICAvKipcbiAgICogZXh0cmFjdHMgUm9zZW5EYXRhIGZyb20gZ2l2ZW4gbG9jayB0cmFuc2FjdGlvbiBpbiBFc3Bsb3JhIGZvcm1hdFxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gdGhlIGxvY2sgdHJhbnNhY3Rpb24gaW4gRXNwbG9yYSBmb3JtYXRcbiAgICovXG4gIGdldCA9ICh0cmFuc2FjdGlvbjogQml0Y29pbkVzcGxvcmFUcmFuc2FjdGlvbik6IFJvc2VuRGF0YSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgYmFzZUVycm9yID0gYE5vIHJvc2VuIGRhdGEgZm91bmQgZm9yIHR4IFske3RyYW5zYWN0aW9uLnR4aWR9XWA7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG91dHB1dHMgPSB0cmFuc2FjdGlvbi52b3V0O1xuICAgICAgaWYgKG91dHB1dHMubGVuZ3RoIDwgMikge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhiYXNlRXJyb3IgKyBgOiBJbnN1ZmZpY2llbnQgbnVtYmVyIG9mIGJveGVzYCk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAob3V0cHV0c1swXS5zY3JpcHRwdWJrZXlfdHlwZSAhPT0gJ29wX3JldHVybicpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYmFzZUVycm9yICsgYDogMXN0IGJveCBpcyBub3QgT1BfUkVUVVJOIGJveGApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKG91dHB1dHNbMV0uc2NyaXB0cHVia2V5ICE9PSB0aGlzLmxvY2tTY3JpcHRQdWJLZXkpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYmFzZUVycm9yICsgYDogMm5kIGJveCBpcyBub3QgdG8gbG9jayBhZGRyZXNzYCk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIHBhcnNlIHJvc2VuIGRhdGEgZnJvbSBPUF9SRVRVUk4gYm94XG4gICAgICBsZXQgb3BSZXR1cm5EYXRhOiBPcFJldHVybkRhdGE7XG4gICAgICB0cnkge1xuICAgICAgICBvcFJldHVybkRhdGEgPSB0aGlzLnBhcnNlUm9zZW5EYXRhKG91dHB1dHNbMF0uc2NyaXB0cHVia2V5KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYmFzZUVycm9yICsgYDogRmFpbGVkIHRvIGV4dHJhY3QgZGF0YSBmcm9tIE9QX1JFVFVSTiBib3g6ICR7ZX1gXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGZpbmQgdGFyZ2V0IGNoYWluIHRva2VuIGlkXG4gICAgICBjb25zdCBhc3NldFRyYW5zZm9ybWF0aW9uID0gdGhpcy5nZXRBc3NldFRyYW5zZm9ybWF0aW9uKFxuICAgICAgICBvdXRwdXRzWzFdLFxuICAgICAgICBvcFJldHVybkRhdGE/LnRvQ2hhaW5cbiAgICAgICk7XG4gICAgICBpZiAoIWFzc2V0VHJhbnNmb3JtYXRpb24pIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYmFzZUVycm9yICsgYDogRmFpbGVkIHRvIGZpbmQgcm9zZW4gYXNzZXQgdHJhbnNmb3JtYXRpb25gXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZyb21BZGRyZXNzID0gdHJhbnNhY3Rpb24udmluWzBdLnByZXZvdXQuc2NyaXB0cHVia2V5X2FkZHJlc3M7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0b0NoYWluOiBvcFJldHVybkRhdGEudG9DaGFpbixcbiAgICAgICAgdG9BZGRyZXNzOiBvcFJldHVybkRhdGEudG9BZGRyZXNzLFxuICAgICAgICBicmlkZ2VGZWU6IG9wUmV0dXJuRGF0YS5icmlkZ2VGZWUsXG4gICAgICAgIG5ldHdvcmtGZWU6IG9wUmV0dXJuRGF0YS5uZXR3b3JrRmVlLFxuICAgICAgICBmcm9tQWRkcmVzczogZnJvbUFkZHJlc3MsXG4gICAgICAgIHNvdXJjZUNoYWluVG9rZW5JZDogYXNzZXRUcmFuc2Zvcm1hdGlvbi5mcm9tLFxuICAgICAgICBhbW91bnQ6IGFzc2V0VHJhbnNmb3JtYXRpb24uYW1vdW50LFxuICAgICAgICB0YXJnZXRDaGFpblRva2VuSWQ6IGFzc2V0VHJhbnNmb3JtYXRpb24udG8sXG4gICAgICAgIHNvdXJjZVR4SWQ6IHRyYW5zYWN0aW9uLnR4aWQsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZ2V0dGluZyBCaXRjb2luIHJvc2VuIGRhdGEgZnJvbSBFc3Bsb3JhOiAke2V9YFxuICAgICAgKTtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5zdGFjaykge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlLnN0YWNrKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfTtcblxuICAvKipcbiAgICogZXh0cmFjdHMgcm9zZW4gZGF0YSBmcm9tIE9QX1JFVFVSTiBib3ggc2NyaXB0IHB1YiBrZXlcbiAgICogQHBhcmFtIHNjcmlwdFB1YktleUhleFxuICAgKi9cbiAgcGFyc2VSb3NlbkRhdGEgPSAoc2NyaXB0UHViS2V5SGV4OiBzdHJpbmcpOiBPcFJldHVybkRhdGEgPT4ge1xuICAgIC8vIGNoZWNrIE9QX1JFVFVSTiBvcGNvZGVcbiAgICBpZiAoc2NyaXB0UHViS2V5SGV4LnNsaWNlKDAsIDIpICE9PSAnNmEnKVxuICAgICAgdGhyb3cgRXJyb3IoYHNjcmlwdCBkb2VzIG5vdCBzdGFydCB3aXRoIE9QX1JFVFVSTiBvcGNvZGUgKDZhKWApO1xuICAgIC8vIGNoZWNrIE9QX1BVU0hEQVRBMSBvcGNvZGVcbiAgICBpZiAoc2NyaXB0UHViS2V5SGV4LnNsaWNlKDIsIDQpICE9PSAnNGMnKVxuICAgICAgdGhyb3cgRXJyb3IoYHNjcmlwdCAybmQgb3Bjb2RlIGlzIG5vdCBPUF9QVVNIREFUQTEgKDRjKWApO1xuICAgIC8vIGNoZWNrIHNjcmlwdCBsZW5ndGggKHNob3VsZCBub3QgdXNlIG1vcmUgdGhhbiBvbmUgT1BfUkVUVVJOKVxuICAgIGNvbnN0IGRhdGFMZW5ndGggPSBzY3JpcHRQdWJLZXlIZXguc2xpY2UoNCwgNik7XG4gICAgaWYgKHBhcnNlSW50KGRhdGFMZW5ndGgsIDE2KSArIDMgIT09IHNjcmlwdFB1YktleUhleC5sZW5ndGggLyAyKVxuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBzY3JpcHQgbGVuZ3RoIGlzIHVuZXhwZWN0ZWQgWyR7cGFyc2VJbnQoZGF0YUxlbmd0aCwgMTYpICsgM30gIT09ICR7XG4gICAgICAgICAgc2NyaXB0UHViS2V5SGV4Lmxlbmd0aCAvIDJcbiAgICAgICAgfV1gXG4gICAgICApO1xuXG4gICAgLy8gcGFyc2UgdG9DaGFpblxuICAgIGNvbnN0IHRvQ2hhaW5IZXggPSBzY3JpcHRQdWJLZXlIZXguc2xpY2UoNiwgOCk7XG4gICAgY29uc3QgdG9DaGFpbkNvZGUgPSBwYXJzZUludCh0b0NoYWluSGV4LCAxNik7XG4gICAgaWYgKHRvQ2hhaW5Db2RlID49IFNVUFBPUlRFRF9DSEFJTlMubGVuZ3RoKVxuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBpbnZhbGlkIHRvQ2hhaW4gY29kZSwgZm91bmQgWyR7dG9DaGFpbkNvZGV9XSBidXQgb25seSBbJHtTVVBQT1JURURfQ0hBSU5TLmxlbmd0aH1dIGNoYWlucyBhcmUgc3VwcG9ydGVkYFxuICAgICAgKTtcbiAgICBjb25zdCB0b0NoYWluID0gU1VQUE9SVEVEX0NIQUlOU1t0b0NoYWluQ29kZV07XG5cbiAgICAvLyBwYXJzZSBicmlkZ2VGZWVcbiAgICBjb25zdCBicmlkZ2VGZWVIZXggPSBzY3JpcHRQdWJLZXlIZXguc2xpY2UoOCwgMjQpO1xuICAgIGNvbnN0IGJyaWRnZUZlZSA9IEJpZ0ludCgnMHgnICsgYnJpZGdlRmVlSGV4KS50b1N0cmluZygpO1xuXG4gICAgLy8gcGFyc2UgbmV0d29ya0ZlZVxuICAgIGNvbnN0IG5ldHdvcmtGZWVIZXggPSBzY3JpcHRQdWJLZXlIZXguc2xpY2UoMjQsIDQwKTtcbiAgICBjb25zdCBuZXR3b3JrRmVlID0gQmlnSW50KCcweCcgKyBuZXR3b3JrRmVlSGV4KS50b1N0cmluZygpO1xuXG4gICAgLy8gcGFyc2UgdG9BZGRyZXNzXG4gICAgY29uc3QgYWRkcmVzc0xlbmd0aENvZGUgPSBzY3JpcHRQdWJLZXlIZXguc2xpY2UoNDAsIDQyKTtcbiAgICBjb25zdCBhZGRyZXNzSGV4ID0gc2NyaXB0UHViS2V5SGV4LnNsaWNlKFxuICAgICAgNDIsXG4gICAgICA0MiArIHBhcnNlSW50KGFkZHJlc3NMZW5ndGhDb2RlLCAxNikgKiAyXG4gICAgKTtcbiAgICBjb25zdCB0b0FkZHJlc3MgPSBkZWNvZGVBZGRyZXNzKHRvQ2hhaW4sIGFkZHJlc3NIZXgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRvQ2hhaW4sXG4gICAgICB0b0FkZHJlc3MsXG4gICAgICBicmlkZ2VGZWUsXG4gICAgICBuZXR3b3JrRmVlLFxuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIGFuZCBidWlsZHMgdG9rZW4gdHJhbnNmb3JtYXRpb24gZnJvbSBVVFhPIGFuZCB0b2tlbk1hcFxuICAgKiBAcGFyYW0gYm94IHRyYW5zYWN0aW9uIG91dHB1dFxuICAgKiBAcGFyYW0gdG9DaGFpbiBldmVudCB0YXJnZXQgY2hhaW5cbiAgICovXG4gIGdldEFzc2V0VHJhbnNmb3JtYXRpb24gPSAoXG4gICAgYm94OiBFc3Bsb3JhVHhPdXRwdXQsXG4gICAgdG9DaGFpbjogc3RyaW5nXG4gICk6IFRva2VuVHJhbnNmb3JtYXRpb24gfCB1bmRlZmluZWQgPT4ge1xuICAgIC8vIHRyeSB0byBidWlsZCB0cmFuc2Zvcm1hdGlvbiB1c2luZyBsb2NrZWQgQlRDXG4gICAgY29uc3Qgd3JhcHBlZEJ0YyA9IHRoaXMudG9rZW5zLnNlYXJjaChCSVRDT0lOX0NIQUlOLCB7XG4gICAgICBbdGhpcy50b2tlbnMuZ2V0SWRLZXkoQklUQ09JTl9DSEFJTildOiBCSVRDT0lOX05BVElWRV9UT0tFTixcbiAgICB9KTtcbiAgICBpZiAod3JhcHBlZEJ0Yy5sZW5ndGggPiAwICYmIE9iamVjdC5oYXNPd24od3JhcHBlZEJ0Y1swXSwgdG9DaGFpbikpIHtcbiAgICAgIGNvbnN0IHNhdG9zaGlBbW91bnQgPSBib3gudmFsdWU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmcm9tOiBCSVRDT0lOX05BVElWRV9UT0tFTixcbiAgICAgICAgdG86IHRoaXMudG9rZW5zLmdldElEKHdyYXBwZWRCdGNbMF0sIHRvQ2hhaW4pLFxuICAgICAgICBhbW91bnQ6IHNhdG9zaGlBbW91bnQudG9TdHJpbmcoKSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9O1xufVxuIl19
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQml0Y29pbkVzcGxvcmFSb3NlbkV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9nZXRSb3NlbkRhdGEvYml0Y29pbi9CaXRjb2luRXNwbG9yYVJvc2VuRXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sMEJBQTBCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQVEvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFekMsTUFBTSxPQUFPLDRCQUE2QixTQUFRLDBCQUFxRDtJQUMzRixnQkFBZ0IsQ0FBUztJQUVuQyxZQUNFLFdBQW1CLEVBQ25CLE1BQW1CLEVBQ25CLE1BQXVCO1FBRXZCLEtBQUssQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsR0FBRyxHQUFHLENBQUMsV0FBc0MsRUFBeUIsRUFBRTtRQUN0RSxNQUFNLFNBQVMsR0FBRywrQkFBK0IsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDO1FBQ3JFLElBQUk7WUFDRixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2pDLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxnQ0FBZ0MsQ0FBQyxDQUFDO2dCQUNoRSxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELElBQUksT0FBTyxDQUFDLENBQUMs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LENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO2dCQUM3QyxNQUFNLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRTthQUNqQyxDQUFDO1NBQ0g7YUFBTTtZQUNMLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3NlbkRhdGEsIFRva2VuVHJhbnNmb3JtYXRpb24gfSBmcm9tICcuLi9hYnN0cmFjdC90eXBlcyc7XG5pbXBvcnQgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3IgZnJvbSAnLi4vYWJzdHJhY3QvQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3InO1xuaW1wb3J0IHsgQklUQ09JTl9DSEFJTiwgQklUQ09JTl9OQVRJVkVfVE9LRU4gfSBmcm9tICcuLi9jb25zdCc7XG5pbXBvcnQge1xuICBCaXRjb2luRXNwbG9yYVRyYW5zYWN0aW9uLFxuICBFc3Bsb3JhVHhPdXRwdXQsXG4gIE9wUmV0dXJuRGF0YSxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBSb3NlblRva2VucyB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvdG9rZW5zJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgYWRkcmVzcyB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0IHsgcGFyc2VSb3NlbkRhdGEgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEJpdGNvaW5Fc3Bsb3JhUm9zZW5FeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvcjxCaXRjb2luRXNwbG9yYVRyYW5zYWN0aW9uPiB7XG4gIHByb3RlY3RlZCBsb2NrU2NyaXB0UHViS2V5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbG9ja0FkZHJlc3M6IHN0cmluZyxcbiAgICB0b2tlbnM6IFJvc2VuVG9rZW5zLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyXG4gICkge1xuICAgIHN1cGVyKGxvY2tBZGRyZXNzLCB0b2tlbnMsIGxvZ2dlcik7XG4gICAgdGhpcy5sb2NrU2NyaXB0UHViS2V5ID0gYWRkcmVzcy50b091dHB1dFNjcmlwdChsb2NrQWRkcmVzcykudG9TdHJpbmcoJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIFJvc2VuRGF0YSBmcm9tIGdpdmVuIGxvY2sgdHJhbnNhY3Rpb24gaW4gRXNwbG9yYSBmb3JtYXRcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uIHRoZSBsb2NrIHRyYW5zYWN0aW9uIGluIEVzcGxvcmEgZm9ybWF0XG4gICAqL1xuICBnZXQgPSAodHJhbnNhY3Rpb246IEJpdGNvaW5Fc3Bsb3JhVHJhbnNhY3Rpb24pOiBSb3NlbkRhdGEgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IGJhc2VFcnJvciA9IGBObyByb3NlbiBkYXRhIGZvdW5kIGZvciB0eCBbJHt0cmFuc2FjdGlvbi50eGlkfV1gO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvdXRwdXRzID0gdHJhbnNhY3Rpb24udm91dDtcbiAgICAgIGlmIChvdXRwdXRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYmFzZUVycm9yICsgYDogSW5zdWZmaWNpZW50IG51bWJlciBvZiBib3hlc2ApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKG91dHB1dHNbMF0uc2NyaXB0cHVia2V5X3R5cGUgIT09ICdvcF9yZXR1cm4nKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGJhc2VFcnJvciArIGA6IDFzdCBib3ggaXMgbm90IE9QX1JFVFVSTiBib3hgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmIChvdXRwdXRzWzFdLnNjcmlwdHB1YmtleSAhPT0gdGhpcy5sb2NrU2NyaXB0UHViS2V5KSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGJhc2VFcnJvciArIGA6IDJuZCBib3ggaXMgbm90IHRvIGxvY2sgYWRkcmVzc2ApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvLyBwYXJzZSByb3NlbiBkYXRhIGZyb20gT1BfUkVUVVJOIGJveFxuICAgICAgbGV0IG9wUmV0dXJuRGF0YTogT3BSZXR1cm5EYXRhO1xuICAgICAgdHJ5IHtcbiAgICAgICAgb3BSZXR1cm5EYXRhID0gcGFyc2VSb3NlbkRhdGEob3V0cHV0c1swXS5zY3JpcHRwdWJrZXkpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBGYWlsZWQgdG8gZXh0cmFjdCBkYXRhIGZyb20gT1BfUkVUVVJOIGJveDogJHtlfWBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgLy8gZmluZCB0YXJnZXQgY2hhaW4gdG9rZW4gaWRcbiAgICAgIGNvbnN0IGFzc2V0VHJhbnNmb3JtYXRpb24gPSB0aGlzLmdldEFzc2V0VHJhbnNmb3JtYXRpb24oXG4gICAgICAgIG91dHB1dHNbMV0sXG4gICAgICAgIG9wUmV0dXJuRGF0YT8udG9DaGFpblxuICAgICAgKTtcbiAgICAgIGlmICghYXNzZXRUcmFuc2Zvcm1hdGlvbikge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBGYWlsZWQgdG8gZmluZCByb3NlbiBhc3NldCB0cmFuc2Zvcm1hdGlvbmBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZnJvbUFkZHJlc3MgPSB0cmFuc2FjdGlvbi52aW5bMF0ucHJldm91dC5zY3JpcHRwdWJrZXlfYWRkcmVzcztcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRvQ2hhaW46IG9wUmV0dXJuRGF0YS50b0NoYWluLFxuICAgICAgICB0b0FkZHJlc3M6IG9wUmV0dXJuRGF0YS50b0FkZHJlc3MsXG4gICAgICAgIGJyaWRnZUZlZTogb3BSZXR1cm5EYXRhLmJyaWRnZUZlZSxcbiAgICAgICAgbmV0d29ya0ZlZTogb3BSZXR1cm5EYXRhLm5ldHdvcmtGZWUsXG4gICAgICAgIGZyb21BZGRyZXNzOiBmcm9tQWRkcmVzcyxcbiAgICAgICAgc291cmNlQ2hhaW5Ub2tlbklkOiBhc3NldFRyYW5zZm9ybWF0aW9uLmZyb20sXG4gICAgICAgIGFtb3VudDogYXNzZXRUcmFuc2Zvcm1hdGlvbi5hbW91bnQsXG4gICAgICAgIHRhcmdldENoYWluVG9rZW5JZDogYXNzZXRUcmFuc2Zvcm1hdGlvbi50byxcbiAgICAgICAgc291cmNlVHhJZDogdHJhbnNhY3Rpb24udHhpZCxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIEJpdGNvaW4gcm9zZW4gZGF0YSBmcm9tIEVzcGxvcmE6ICR7ZX1gXG4gICAgICApO1xuICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvciAmJiBlLnN0YWNrKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGUuc3RhY2spO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9O1xuXG4gIC8qKlxuICAgKiBleHRyYWN0cyBhbmQgYnVpbGRzIHRva2VuIHRyYW5zZm9ybWF0aW9uIGZyb20gVVRYTyBhbmQgdG9rZW5NYXBcbiAgICogQHBhcmFtIGJveCB0cmFuc2FjdGlvbiBvdXRwdXRcbiAgICogQHBhcmFtIHRvQ2hhaW4gZXZlbnQgdGFyZ2V0IGNoYWluXG4gICAqL1xuICBnZXRBc3NldFRyYW5zZm9ybWF0aW9uID0gKFxuICAgIGJveDogRXNwbG9yYVR4T3V0cHV0LFxuICAgIHRvQ2hhaW46IHN0cmluZ1xuICApOiBUb2tlblRyYW5zZm9ybWF0aW9uIHwgdW5kZWZpbmVkID0+IHtcbiAgICAvLyB0cnkgdG8gYnVpbGQgdHJhbnNmb3JtYXRpb24gdXNpbmcgbG9ja2VkIEJUQ1xuICAgIGNvbnN0IHdyYXBwZWRCdGMgPSB0aGlzLnRva2Vucy5zZWFyY2goQklUQ09JTl9DSEFJTiwge1xuICAgICAgW3RoaXMudG9rZW5zLmdldElkS2V5KEJJVENPSU5fQ0hBSU4pXTogQklUQ09JTl9OQVRJVkVfVE9LRU4sXG4gICAgfSk7XG4gICAgaWYgKHdyYXBwZWRCdGMubGVuZ3RoID4gMCAmJiBPYmplY3QuaGFzT3duKHdyYXBwZWRCdGNbMF0sIHRvQ2hhaW4pKSB7XG4gICAgICBjb25zdCBzYXRvc2hpQW1vdW50ID0gYm94LnZhbHVlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZnJvbTogQklUQ09JTl9OQVRJVkVfVE9LRU4sXG4gICAgICAgIHRvOiB0aGlzLnRva2Vucy5nZXRJRCh3cmFwcGVkQnRjWzBdLCB0b0NoYWluKSxcbiAgICAgICAgYW1vdW50OiBzYXRvc2hpQW1vdW50LnRvU3RyaW5nKCksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { RosenData, TokenTransformation } from '../abstract/types';
2
+ import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
3
+ import { BitcoinTxOutput } from './types';
4
+ import { RosenTokens } from '@rosen-bridge/tokens';
5
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
6
+ export declare class BitcoinRosenExtractor extends AbstractRosenDataExtractor<string> {
7
+ protected lockScriptPubKey: string;
8
+ constructor(
9
+ lockAddress: string,
10
+ tokens: RosenTokens,
11
+ logger?: AbstractLogger
12
+ );
13
+ /**
14
+ * extracts RosenData from given lock transaction in BitcoinTx format
15
+ * @param serializedTransaction stringified transaction in BitcoinTx format
16
+ */
17
+ get: (serializedTransaction: string) => RosenData | undefined;
18
+ /**
19
+ * extracts and builds token transformation from UTXO and tokenMap
20
+ * @param box transaction output
21
+ * @param toChain event target chain
22
+ */
23
+ getAssetTransformation: (
24
+ box: BitcoinTxOutput,
25
+ toChain: string
26
+ ) => TokenTransformation | undefined;
27
+ }
28
+ //# sourceMappingURL=BitcoinRosenExtractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BitcoinRosenExtractor.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/bitcoin/BitcoinRosenExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAa,eAAe,EAAgB,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAK/D,qBAAa,qBAAsB,SAAQ,0BAA0B,CAAC,MAAM,CAAC;IAC3E,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAGjC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,MAAM,CAAC,EAAE,cAAc;IAMzB;;;OAGG;IACH,GAAG,0BAA2B,MAAM,KAAG,SAAS,GAAG,SAAS,CAmE1D;IAEF;;;;OAIG;IACH,sBAAsB,QACf,eAAe,WACX,MAAM,KACd,mBAAmB,GAAG,SAAS,CAehC;CACH"}
@@ -0,0 +1,94 @@
1
+ import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
2
+ import { BITCOIN_CHAIN, BITCOIN_NATIVE_TOKEN } from '../const';
3
+ import { address } from 'bitcoinjs-lib';
4
+ import { parseRosenData } from './utils';
5
+ import JsonBigInt from '@rosen-bridge/json-bigint';
6
+ export class BitcoinRosenExtractor extends AbstractRosenDataExtractor {
7
+ lockScriptPubKey;
8
+ constructor(lockAddress, tokens, logger) {
9
+ super(lockAddress, tokens, logger);
10
+ this.lockScriptPubKey = address.toOutputScript(lockAddress).toString('hex');
11
+ }
12
+ /**
13
+ * extracts RosenData from given lock transaction in BitcoinTx format
14
+ * @param serializedTransaction stringified transaction in BitcoinTx format
15
+ */
16
+ get = (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 BitcoinTx 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
+ if (outputs[1].scriptPubKey !== this.lockScriptPubKey) {
32
+ this.logger.debug(baseError + `: 2nd box is not to lock address`);
33
+ return undefined;
34
+ }
35
+ // parse rosen data from OP_RETURN box
36
+ let opReturnData;
37
+ try {
38
+ opReturnData = parseRosenData(outputs[0].scriptPubKey);
39
+ }
40
+ catch (e) {
41
+ this.logger.debug(baseError + `: Failed to extract data from OP_RETURN box: ${e}`);
42
+ return undefined;
43
+ }
44
+ // find target chain token id
45
+ const assetTransformation = this.getAssetTransformation(outputs[1], opReturnData?.toChain);
46
+ if (!assetTransformation) {
47
+ this.logger.debug(baseError + `: Failed to find rosen asset transformation`);
48
+ return undefined;
49
+ }
50
+ const fromAddress = address.fromOutputScript(Buffer.from(transaction.inputs[0].scriptPubKey, 'hex'));
51
+ return {
52
+ toChain: opReturnData.toChain,
53
+ toAddress: opReturnData.toAddress,
54
+ bridgeFee: opReturnData.bridgeFee,
55
+ networkFee: opReturnData.networkFee,
56
+ fromAddress: fromAddress,
57
+ sourceChainTokenId: assetTransformation.from,
58
+ amount: assetTransformation.amount,
59
+ targetChainTokenId: assetTransformation.to,
60
+ sourceTxId: transaction.id,
61
+ };
62
+ }
63
+ catch (e) {
64
+ this.logger.debug(`An error occurred while getting Bitcoin rosen data: ${e}`);
65
+ if (e instanceof Error && e.stack) {
66
+ this.logger.debug(e.stack);
67
+ }
68
+ }
69
+ return undefined;
70
+ };
71
+ /**
72
+ * extracts and builds token transformation from UTXO and tokenMap
73
+ * @param box transaction output
74
+ * @param toChain event target chain
75
+ */
76
+ getAssetTransformation = (box, toChain) => {
77
+ // try to build transformation using locked BTC
78
+ const wrappedBtc = this.tokens.search(BITCOIN_CHAIN, {
79
+ [this.tokens.getIdKey(BITCOIN_CHAIN)]: BITCOIN_NATIVE_TOKEN,
80
+ });
81
+ if (wrappedBtc.length > 0 && Object.hasOwn(wrappedBtc[0], toChain)) {
82
+ const satoshiAmount = box.value;
83
+ return {
84
+ from: BITCOIN_NATIVE_TOKEN,
85
+ to: this.tokens.getID(wrappedBtc[0], toChain),
86
+ amount: satoshiAmount.toString(),
87
+ };
88
+ }
89
+ else {
90
+ return undefined;
91
+ }
92
+ };
93
+ }
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQml0Y29pblJvc2VuRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2dldFJvc2VuRGF0YS9iaXRjb2luL0JpdGNvaW5Sb3NlbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLDBCQUEwQixNQUFNLHdDQUF3QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sVUFBVSxNQUFNLDJCQUEyQixDQUFDO0FBRW5ELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSwwQkFBa0M7SUFDakUsZ0JBQWdCLENBQVM7SUFFbkMsWUFDRSxXQUFtQixFQUNuQixNQUFtQixFQUNuQixNQUF1QjtRQUV2QixLQUFLLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVEOzs7T0FHRztJQUNILEdBQUcsR0FBRyxDQUFDLHFCQUE2QixFQUF5QixFQUFFO1FBQzdELElBQUksV0FBc0IsQ0FBQztRQUMzQixJQUFJO1lBQ0YsV0FBVyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUN2RDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FDYixxRkFBcUYsQ0FBQyxFQUFFLENBQ3pGLENBQUM7U0FDSDtRQUNELE1BQU0sU0FBUyxHQUFHLCtCQUErQixXQUFXLENBQUMsRUFBRSxHQUFHLENBQUM7UUFDbkUsSUFBSTtZQUNGLE1BQU0s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TUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUNoQyxPQUFPO2dCQUNMLElBQUksRUFBRSxvQkFBb0I7Z0JBQzFCLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO2dCQUM3QyxNQUFNLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRTthQUNqQyxDQUFDO1NBQ0g7YUFBTTtZQUNMLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3NlbkRhdGEsIFRva2VuVHJhbnNmb3JtYXRpb24gfSBmcm9tICcuLi9hYnN0cmFjdC90eXBlcyc7XG5pbXBvcnQgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3IgZnJvbSAnLi4vYWJzdHJhY3QvQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3InO1xuaW1wb3J0IHsgQklUQ09JTl9DSEFJTiwgQklUQ09JTl9OQVRJVkVfVE9LRU4gfSBmcm9tICcuLi9jb25zdCc7XG5pbXBvcnQgeyBCaXRjb2luVHgsIEJpdGNvaW5UeE91dHB1dCwgT3BSZXR1cm5EYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBSb3NlblRva2VucyB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvdG9rZW5zJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgYWRkcmVzcyB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0IHsgcGFyc2VSb3NlbkRhdGEgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBKc29uQmlnSW50IGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuXG5leHBvcnQgY2xhc3MgQml0Y29pblJvc2VuRXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3I8c3RyaW5nPiB7XG4gIHByb3RlY3RlZCBsb2NrU2NyaXB0UHViS2V5OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgbG9ja0FkZHJlc3M6IHN0cmluZyxcbiAgICB0b2tlbnM6IFJvc2VuVG9rZW5zLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyXG4gICkge1xuICAgIHN1cGVyKGxvY2tBZGRyZXNzLCB0b2tlbnMsIGxvZ2dlcik7XG4gICAgdGhpcy5sb2NrU2NyaXB0UHViS2V5ID0gYWRkcmVzcy50b091dHB1dFNjcmlwdChsb2NrQWRkcmVzcykudG9TdHJpbmcoJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIFJvc2VuRGF0YSBmcm9tIGdpdmVuIGxvY2sgdHJhbnNhY3Rpb24gaW4gQml0Y29pblR4IGZvcm1hdFxuICAgKiBAcGFyYW0gc2VyaWFsaXplZFRyYW5zYWN0aW9uIHN0cmluZ2lmaWVkIHRyYW5zYWN0aW9uIGluIEJpdGNvaW5UeCBmb3JtYXRcbiAgICovXG4gIGdldCA9IChzZXJpYWxpemVkVHJhbnNhY3Rpb246IHN0cmluZyk6IFJvc2VuRGF0YSB8IHVuZGVmaW5lZCA9PiB7XG4gICAgbGV0IHRyYW5zYWN0aW9uOiBCaXRjb2luVHg7XG4gICAgdHJ5IHtcbiAgICAgIHRyYW5zYWN0aW9uID0gSnNvbkJpZ0ludC5wYXJzZShzZXJpYWxpemVkVHJhbnNhY3Rpb24pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byBwYXJzZSB0cmFuc2FjdGlvbiBqc29uIHRvIEJpdGNvaW5UeCBmb3JtYXQgd2hpbGUgZXh0cmFjdGluZyByb3NlbiBkYXRhOiAke2V9YFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgYmFzZUVycm9yID0gYE5vIHJvc2VuIGRhdGEgZm91bmQgZm9yIHR4IFske3RyYW5zYWN0aW9uLmlkfV1gO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvdXRwdXRzID0gdHJhbnNhY3Rpb24ub3V0cHV0cztcbiAgICAgIGlmIChvdXRwdXRzLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYmFzZUVycm9yICsgYDogSW5zdWZmaWNpZW50IG51bWJlciBvZiBib3hlc2ApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgaWYgKG91dHB1dHNbMV0uc2NyaXB0UHViS2V5ICE9PSB0aGlzLmxvY2tTY3JpcHRQdWJLZXkpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYmFzZUVycm9yICsgYDogMm5kIGJveCBpcyBub3QgdG8gbG9jayBhZGRyZXNzYCk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIHBhcnNlIHJvc2VuIGRhdGEgZnJvbSBPUF9SRVRVUk4gYm94XG4gICAgICBsZXQgb3BSZXR1cm5EYXRhOiBPcFJldHVybkRhdGE7XG4gICAgICB0cnkge1xuICAgICAgICBvcFJldHVybkRhdGEgPSBwYXJzZVJvc2VuRGF0YShvdXRwdXRzWzBdLnNjcmlwdFB1YktleSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGJhc2VFcnJvciArIGA6IEZhaWxlZCB0byBleHRyYWN0IGRhdGEgZnJvbSBPUF9SRVRVUk4gYm94OiAke2V9YFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvLyBmaW5kIHRhcmdldCBjaGFpbiB0b2tlbiBpZFxuICAgICAgY29uc3QgYXNzZXRUcmFuc2Zvcm1hdGlvbiA9IHRoaXMuZ2V0QXNzZXRUcmFuc2Zvcm1hdGlvbihcbiAgICAgICAgb3V0cHV0c1sxXSxcbiAgICAgICAgb3BSZXR1cm5EYXRhPy50b0NoYWluXG4gICAgICApO1xuICAgICAgaWYgKCFhc3NldFRyYW5zZm9ybWF0aW9uKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGJhc2VFcnJvciArIGA6IEZhaWxlZCB0byBmaW5kIHJvc2VuIGFzc2V0IHRyYW5zZm9ybWF0aW9uYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmcm9tQWRkcmVzcyA9IGFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChcbiAgICAgICAgQnVmZmVyLmZyb20odHJhbnNhY3Rpb24uaW5wdXRzWzBdLnNjcmlwdFB1YktleSwgJ2hleCcpXG4gICAgICApO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG9DaGFpbjogb3BSZXR1cm5EYXRhLnRvQ2hhaW4sXG4gICAgICAgIHRvQWRkcmVzczogb3BSZXR1cm5EYXRhLnRvQWRkcmVzcyxcbiAgICAgICAgYnJpZGdlRmVlOiBvcFJldHVybkRhdGEuYnJpZGdlRmVlLFxuICAgICAgICBuZXR3b3JrRmVlOiBvcFJldHVybkRhdGEubmV0d29ya0ZlZSxcbiAgICAgICAgZnJvbUFkZHJlc3M6IGZyb21BZGRyZXNzLFxuICAgICAgICBzb3VyY2VDaGFpblRva2VuSWQ6IGFzc2V0VHJhbnNmb3JtYXRpb24uZnJvbSxcbiAgICAgICAgYW1vdW50OiBhc3NldFRyYW5zZm9ybWF0aW9uLmFtb3VudCxcbiAgICAgICAgdGFyZ2V0Q2hhaW5Ub2tlbklkOiBhc3NldFRyYW5zZm9ybWF0aW9uLnRvLFxuICAgICAgICBzb3VyY2VUeElkOiB0cmFuc2FjdGlvbi5pZCxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIEJpdGNvaW4gcm9zZW4gZGF0YTogJHtlfWBcbiAgICAgICk7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIEVycm9yICYmIGUuc3RhY2spIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoZS5zdGFjayk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgLyoqXG4gICAqIGV4dHJhY3RzIGFuZCBidWlsZHMgdG9rZW4gdHJhbnNmb3JtYXRpb24gZnJvbSBVVFhPIGFuZCB0b2tlbk1hcFxuICAgKiBAcGFyYW0gYm94IHRyYW5zYWN0aW9uIG91dHB1dFxuICAgKiBAcGFyYW0gdG9DaGFpbiBldmVudCB0YXJnZXQgY2hhaW5cbiAgICovXG4gIGdldEFzc2V0VHJhbnNmb3JtYXRpb24gPSAoXG4gICAgYm94OiBCaXRjb2luVHhPdXRwdXQsXG4gICAgdG9DaGFpbjogc3RyaW5nXG4gICk6IFRva2VuVHJhbnNmb3JtYXRpb24gfCB1bmRlZmluZWQgPT4ge1xuICAgIC8vIHRyeSB0byBidWlsZCB0cmFuc2Zvcm1hdGlvbiB1c2luZyBsb2NrZWQgQlRDXG4gICAgY29uc3Qgd3JhcHBlZEJ0YyA9IHRoaXMudG9rZW5zLnNlYXJjaChCSVRDT0lOX0NIQUlOLCB7XG4gICAgICBbdGhpcy50b2tlbnMuZ2V0SWRLZXkoQklUQ09JTl9DSEFJTildOiBCSVRDT0lOX05BVElWRV9UT0tFTixcbiAgICB9KTtcbiAgICBpZiAod3JhcHBlZEJ0Yy5sZW5ndGggPiAwICYmIE9iamVjdC5oYXNPd24od3JhcHBlZEJ0Y1swXSwgdG9DaGFpbikpIHtcbiAgICAgIGNvbnN0IHNhdG9zaGlBbW91bnQgPSBib3gudmFsdWU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmcm9tOiBCSVRDT0lOX05BVElWRV9UT0tFTixcbiAgICAgICAgdG86IHRoaXMudG9rZW5zLmdldElEKHdyYXBwZWRCdGNbMF0sIHRvQ2hhaW4pLFxuICAgICAgICBhbW91bnQ6IHNhdG9zaGlBbW91bnQudG9TdHJpbmcoKSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9O1xufVxuIl19
@@ -1,45 +1,59 @@
1
1
  export interface OpReturnData {
2
- toChain: string;
3
- toAddress: string;
4
- bridgeFee: string;
5
- networkFee: string;
2
+ toChain: string;
3
+ toAddress: string;
4
+ bridgeFee: string;
5
+ networkFee: string;
6
6
  }
7
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 {
8
+ txid: string;
9
+ vout: number;
10
+ prevout: {
23
11
  scriptpubkey: string;
24
12
  scriptpubkey_asm: string;
25
13
  scriptpubkey_type: string;
26
14
  scriptpubkey_address: string;
27
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
28
  }
29
29
  export interface BitcoinEsploraTransaction {
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
- };
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 BitcoinTxInput {
46
+ txId: string;
47
+ index: number;
48
+ scriptPubKey: string;
49
+ }
50
+ export interface BitcoinTxOutput {
51
+ scriptPubKey: string;
52
+ value: bigint;
53
+ }
54
+ export interface BitcoinTx {
55
+ id: string;
56
+ inputs: BitcoinTxInput[];
57
+ outputs: BitcoinTxOutput[];
44
58
  }
45
- //# sourceMappingURL=types.d.ts.map
59
+ //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/bitcoin/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,yBAAyB;IACxC,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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/bitcoin/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,yBAAyB;IACxC,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,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B"}
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2JpdGNvaW4vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgT3BSZXR1cm5EYXRhIHtcbiAgdG9DaGFpbjogc3RyaW5nO1xuICB0b0FkZHJlc3M6IHN0cmluZztcbiAgYnJpZGdlRmVlOiBzdHJpbmc7XG4gIG5ldHdvcmtGZWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFc3Bsb3JhVHhJbnB1dCB7XG4gIHR4aWQ6IHN0cmluZztcbiAgdm91dDogbnVtYmVyO1xuICBwcmV2b3V0OiB7XG4gICAgc2NyaXB0cHVia2V5OiBzdHJpbmc7XG4gICAgc2NyaXB0cHVia2V5X2FzbTogc3RyaW5nO1xuICAgIHNjcmlwdHB1YmtleV90eXBlOiBzdHJpbmc7XG4gICAgc2NyaXB0cHVia2V5X2FkZHJlc3M6IHN0cmluZztcbiAgICB2YWx1ZTogbnVtYmVyO1xuICB9O1xuICBzY3JpcHRzaWc6IHN0cmluZztcbiAgc2NyaXB0c2lnX2FzbTogc3RyaW5nO1xuICBpc19jb2luYmFzZTogZmFsc2U7XG4gIHNlcXVlbmNlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXNwbG9yYVR4T3V0cHV0IHtcbiAgc2NyaXB0cHVia2V5OiBzdHJpbmc7XG4gIHNjcmlwdHB1YmtleV9hc206IHN0cmluZztcbiAgc2NyaXB0cHVia2V5X3R5cGU6IHN0cmluZztcbiAgc2NyaXB0cHVia2V5X2FkZHJlc3M6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCaXRjb2luRXNwbG9yYVRyYW5zYWN0aW9uIHtcbiAgdHhpZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBudW1iZXI7XG4gIGxvY2t0aW1lOiBudW1iZXI7XG4gIHZpbjogQXJyYXk8RXNwbG9yYVR4SW5wdXQ+O1xuICB2b3V0OiBBcnJheTxFc3Bsb3JhVHhPdXRwdXQ+O1xuICBzaXplOiBudW1iZXI7XG4gIHdlaWdodDogbnVtYmVyO1xuICBmZWU6IG51bWJlcjtcbiAgc3RhdHVzOiB7XG4gICAgY29uZmlybWVkOiB0cnVlO1xuICAgIGJsb2NrX2hlaWdodDogbnVtYmVyO1xuICAgIGJsb2NrX2hhc2g6IHN0cmluZztcbiAgICBibG9ja190aW1lOiBudW1iZXI7XG4gIH07XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2JpdGNvaW4vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgT3BSZXR1cm5EYXRhIHtcbiAgdG9DaGFpbjogc3RyaW5nO1xuICB0b0FkZHJlc3M6IHN0cmluZztcbiAgYnJpZGdlRmVlOiBzdHJpbmc7XG4gIG5ldHdvcmtGZWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFc3Bsb3JhVHhJbnB1dCB7XG4gIHR4aWQ6IHN0cmluZztcbiAgdm91dDogbnVtYmVyO1xuICBwcmV2b3V0OiB7XG4gICAgc2NyaXB0cHVia2V5OiBzdHJpbmc7XG4gICAgc2NyaXB0cHVia2V5X2FzbTogc3RyaW5nO1xuICAgIHNjcmlwdHB1YmtleV90eXBlOiBzdHJpbmc7XG4gICAgc2NyaXB0cHVia2V5X2FkZHJlc3M6IHN0cmluZztcbiAgICB2YWx1ZTogbnVtYmVyO1xuICB9O1xuICBzY3JpcHRzaWc6IHN0cmluZztcbiAgc2NyaXB0c2lnX2FzbTogc3RyaW5nO1xuICBpc19jb2luYmFzZTogZmFsc2U7XG4gIHNlcXVlbmNlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXNwbG9yYVR4T3V0cHV0IHtcbiAgc2NyaXB0cHVia2V5OiBzdHJpbmc7XG4gIHNjcmlwdHB1YmtleV9hc206IHN0cmluZztcbiAgc2NyaXB0cHVia2V5X3R5cGU6IHN0cmluZztcbiAgc2NyaXB0cHVia2V5X2FkZHJlc3M6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCaXRjb2luRXNwbG9yYVRyYW5zYWN0aW9uIHtcbiAgdHhpZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBudW1iZXI7XG4gIGxvY2t0aW1lOiBudW1iZXI7XG4gIHZpbjogQXJyYXk8RXNwbG9yYVR4SW5wdXQ+O1xuICB2b3V0OiBBcnJheTxFc3Bsb3JhVHhPdXRwdXQ+O1xuICBzaXplOiBudW1iZXI7XG4gIHdlaWdodDogbnVtYmVyO1xuICBmZWU6IG51bWJlcjtcbiAgc3RhdHVzOiB7XG4gICAgY29uZmlybWVkOiB0cnVlO1xuICAgIGJsb2NrX2hlaWdodDogbnVtYmVyO1xuICAgIGJsb2NrX2hhc2g6IHN0cmluZztcbiAgICBibG9ja190aW1lOiBudW1iZXI7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQml0Y29pblR4SW5wdXQge1xuICB0eElkOiBzdHJpbmc7XG4gIGluZGV4OiBudW1iZXI7XG4gIHNjcmlwdFB1YktleTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJpdGNvaW5UeE91dHB1dCB7XG4gIHNjcmlwdFB1YktleTogc3RyaW5nO1xuICB2YWx1ZTogYmlnaW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJpdGNvaW5UeCB7XG4gIGlkOiBzdHJpbmc7XG4gIGlucHV0czogQml0Y29pblR4SW5wdXRbXTtcbiAgb3V0cHV0czogQml0Y29pblR4T3V0cHV0W107XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { OpReturnData } from './types';
2
+ /**
3
+ * extracts rosen data from OP_RETURN box script pub key
4
+ * @param scriptPubKeyHex
5
+ */
6
+ export declare const parseRosenData: (scriptPubKeyHex: string) => OpReturnData;
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/bitcoin/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;GAGG;AACH,eAAO,MAAM,cAAc,oBAAqB,MAAM,KAAG,YA+CxD,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { decodeAddress } from '@rosen-bridge/address-codec';
2
+ import { SUPPORTED_CHAINS } from '../const';
3
+ /**
4
+ * extracts rosen data from OP_RETURN box script pub key
5
+ * @param scriptPubKeyHex
6
+ */
7
+ export const parseRosenData = (scriptPubKeyHex) => {
8
+ // check OP_RETURN opcode
9
+ if (scriptPubKeyHex.slice(0, 2) !== '6a')
10
+ throw Error(`script does not start with OP_RETURN opcode (6a)`);
11
+ // check OP_PUSHDATA1 opcode
12
+ if (scriptPubKeyHex.slice(2, 4) !== '4c')
13
+ throw Error(`script 2nd opcode is not OP_PUSHDATA1 (4c)`);
14
+ // check script length (should not use more than one OP_RETURN)
15
+ const dataLength = scriptPubKeyHex.slice(4, 6);
16
+ if (parseInt(dataLength, 16) + 3 !== scriptPubKeyHex.length / 2)
17
+ throw Error(`script length is unexpected [${parseInt(dataLength, 16) + 3} !== ${scriptPubKeyHex.length / 2}]`);
18
+ // parse toChain
19
+ const toChainHex = scriptPubKeyHex.slice(6, 8);
20
+ const toChainCode = parseInt(toChainHex, 16);
21
+ if (toChainCode >= SUPPORTED_CHAINS.length)
22
+ throw Error(`invalid toChain code, found [${toChainCode}] but only [${SUPPORTED_CHAINS.length}] chains are supported`);
23
+ const toChain = SUPPORTED_CHAINS[toChainCode];
24
+ // parse bridgeFee
25
+ const bridgeFeeHex = scriptPubKeyHex.slice(8, 24);
26
+ const bridgeFee = BigInt('0x' + bridgeFeeHex).toString();
27
+ // parse networkFee
28
+ const networkFeeHex = scriptPubKeyHex.slice(24, 40);
29
+ const networkFee = BigInt('0x' + networkFeeHex).toString();
30
+ // parse toAddress
31
+ const addressLengthCode = scriptPubKeyHex.slice(40, 42);
32
+ const addressHex = scriptPubKeyHex.slice(42, 42 + parseInt(addressLengthCode, 16) * 2);
33
+ const toAddress = decodeAddress(toChain, addressHex);
34
+ return {
35
+ toChain,
36
+ toAddress,
37
+ bridgeFee,
38
+ networkFee,
39
+ };
40
+ };
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2JpdGNvaW4vdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUc1Qzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxlQUF1QixFQUFnQixFQUFFO0lBQ3RFLHlCQUF5QjtJQUN6QixJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUk7UUFDdEMsTUFBTSxLQUFLLENBQUMsa0RBQWtELENBQUMsQ0FBQztJQUNsRSw0QkFBNEI7SUFDNUIsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJO1FBQ3RDLE1BQU0sS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDNUQsK0RBQStEO0lBQy9ELE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLElBQUksUUFBUSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQzdELE1BQU0sS0FBSyxDQUNULGdDQUFnQyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFDMUQsZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUMzQixHQUFHLENBQ0osQ0FBQztJQUVKLGdCQUFnQjtJQUNoQixNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLElBQUksV0FBVyxJQUFJLGdCQUFnQixDQUFDLE1BQU07UUFDeEMsTUFBTSxLQUFLLENBQ1QsZ0NBQWdDLFdBQVcsZUFBZSxnQkFBZ0IsQ0FBQyxNQUFNLHdCQUF3QixDQUMxRyxDQUFDO0lBQ0osTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFOUMsa0JBQWtCO0lBQ2xCLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFekQsbUJBQW1CO0lBQ25CLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFM0Qsa0JBQWtCO0lBQ2xCLE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEQsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FDdEMsRUFBRSxFQUNGLEVBQUUsR0FBRyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUN6QyxDQUFDO0lBQ0YsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUVyRCxPQUFPO1FBQ0wsT0FBTztRQUNQLFNBQVM7UUFDVCxTQUFTO1FBQ1QsVUFBVTtLQUNYLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWNvZGVBZGRyZXNzIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hZGRyZXNzLWNvZGVjJztcbmltcG9ydCB7IFNVUFBPUlRFRF9DSEFJTlMgfSBmcm9tICcuLi9jb25zdCc7XG5pbXBvcnQgeyBPcFJldHVybkRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBleHRyYWN0cyByb3NlbiBkYXRhIGZyb20gT1BfUkVUVVJOIGJveCBzY3JpcHQgcHViIGtleVxuICogQHBhcmFtIHNjcmlwdFB1YktleUhleFxuICovXG5leHBvcnQgY29uc3QgcGFyc2VSb3NlbkRhdGEgPSAoc2NyaXB0UHViS2V5SGV4OiBzdHJpbmcpOiBPcFJldHVybkRhdGEgPT4ge1xuICAvLyBjaGVjayBPUF9SRVRVUk4gb3Bjb2RlXG4gIGlmIChzY3JpcHRQdWJLZXlIZXguc2xpY2UoMCwgMikgIT09ICc2YScpXG4gICAgdGhyb3cgRXJyb3IoYHNjcmlwdCBkb2VzIG5vdCBzdGFydCB3aXRoIE9QX1JFVFVSTiBvcGNvZGUgKDZhKWApO1xuICAvLyBjaGVjayBPUF9QVVNIREFUQTEgb3Bjb2RlXG4gIGlmIChzY3JpcHRQdWJLZXlIZXguc2xpY2UoMiwgNCkgIT09ICc0YycpXG4gICAgdGhyb3cgRXJyb3IoYHNjcmlwdCAybmQgb3Bjb2RlIGlzIG5vdCBPUF9QVVNIREFUQTEgKDRjKWApO1xuICAvLyBjaGVjayBzY3JpcHQgbGVuZ3RoIChzaG91bGQgbm90IHVzZSBtb3JlIHRoYW4gb25lIE9QX1JFVFVSTilcbiAgY29uc3QgZGF0YUxlbmd0aCA9IHNjcmlwdFB1YktleUhleC5zbGljZSg0LCA2KTtcbiAgaWYgKHBhcnNlSW50KGRhdGFMZW5ndGgsIDE2KSArIDMgIT09IHNjcmlwdFB1YktleUhleC5sZW5ndGggLyAyKVxuICAgIHRocm93IEVycm9yKFxuICAgICAgYHNjcmlwdCBsZW5ndGggaXMgdW5leHBlY3RlZCBbJHtwYXJzZUludChkYXRhTGVuZ3RoLCAxNikgKyAzfSAhPT0gJHtcbiAgICAgICAgc2NyaXB0UHViS2V5SGV4Lmxlbmd0aCAvIDJcbiAgICAgIH1dYFxuICAgICk7XG5cbiAgLy8gcGFyc2UgdG9DaGFpblxuICBjb25zdCB0b0NoYWluSGV4ID0gc2NyaXB0UHViS2V5SGV4LnNsaWNlKDYsIDgpO1xuICBjb25zdCB0b0NoYWluQ29kZSA9IHBhcnNlSW50KHRvQ2hhaW5IZXgsIDE2KTtcbiAgaWYgKHRvQ2hhaW5Db2RlID49IFNVUFBPUlRFRF9DSEFJTlMubGVuZ3RoKVxuICAgIHRocm93IEVycm9yKFxuICAgICAgYGludmFsaWQgdG9DaGFpbiBjb2RlLCBmb3VuZCBbJHt0b0NoYWluQ29kZX1dIGJ1dCBvbmx5IFske1NVUFBPUlRFRF9DSEFJTlMubGVuZ3RofV0gY2hhaW5zIGFyZSBzdXBwb3J0ZWRgXG4gICAgKTtcbiAgY29uc3QgdG9DaGFpbiA9IFNVUFBPUlRFRF9DSEFJTlNbdG9DaGFpbkNvZGVdO1xuXG4gIC8vIHBhcnNlIGJyaWRnZUZlZVxuICBjb25zdCBicmlkZ2VGZWVIZXggPSBzY3JpcHRQdWJLZXlIZXguc2xpY2UoOCwgMjQpO1xuICBjb25zdCBicmlkZ2VGZWUgPSBCaWdJbnQoJzB4JyArIGJyaWRnZUZlZUhleCkudG9TdHJpbmcoKTtcblxuICAvLyBwYXJzZSBuZXR3b3JrRmVlXG4gIGNvbnN0IG5ldHdvcmtGZWVIZXggPSBzY3JpcHRQdWJLZXlIZXguc2xpY2UoMjQsIDQwKTtcbiAgY29uc3QgbmV0d29ya0ZlZSA9IEJpZ0ludCgnMHgnICsgbmV0d29ya0ZlZUhleCkudG9TdHJpbmcoKTtcblxuICAvLyBwYXJzZSB0b0FkZHJlc3NcbiAgY29uc3QgYWRkcmVzc0xlbmd0aENvZGUgPSBzY3JpcHRQdWJLZXlIZXguc2xpY2UoNDAsIDQyKTtcbiAgY29uc3QgYWRkcmVzc0hleCA9IHNjcmlwdFB1YktleUhleC5zbGljZShcbiAgICA0MixcbiAgICA0MiArIHBhcnNlSW50KGFkZHJlc3NMZW5ndGhDb2RlLCAxNikgKiAyXG4gICk7XG4gIGNvbnN0IHRvQWRkcmVzcyA9IGRlY29kZUFkZHJlc3ModG9DaGFpbiwgYWRkcmVzc0hleCk7XG5cbiAgcmV0dXJuIHtcbiAgICB0b0NoYWluLFxuICAgIHRvQWRkcmVzcyxcbiAgICBicmlkZ2VGZWUsXG4gICAgbmV0d29ya0ZlZSxcbiAgfTtcbn07XG4iXX0=
@@ -2,16 +2,19 @@ import { RosenData, TokenTransformation } from '../abstract/types';
2
2
  import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
3
3
  import { BlockFrostOutputBox, BlockFrostTransaction } from './types';
4
4
  export declare class CardanoBlockFrostRosenExtractor extends AbstractRosenDataExtractor<BlockFrostTransaction> {
5
- /**
6
- * extracts RosenData from given lock transaction in blockfrost format
7
- * @param transaction the lock transaction in blockfrost format
8
- */
9
- get: (transaction: BlockFrostTransaction) => RosenData | undefined;
10
- /**
11
- * extracts and builds token transformation from UTXO and tokenMap
12
- * @param box transaction output
13
- * @param toChain event target chain
14
- */
15
- getAssetTransformation: (box: BlockFrostOutputBox, toChain: string) => TokenTransformation | undefined;
5
+ /**
6
+ * extracts RosenData from given lock transaction in blockfrost format
7
+ * @param transaction the lock transaction in blockfrost format
8
+ */
9
+ get: (transaction: BlockFrostTransaction) => RosenData | undefined;
10
+ /**
11
+ * extracts and builds token transformation from UTXO and tokenMap
12
+ * @param box transaction output
13
+ * @param toChain event target chain
14
+ */
15
+ getAssetTransformation: (
16
+ box: BlockFrostOutputBox,
17
+ toChain: string
18
+ ) => TokenTransformation | undefined;
16
19
  }
17
- //# sourceMappingURL=CardanoBlockFrostRosenExtractor.d.ts.map
20
+ //# sourceMappingURL=CardanoBlockFrostRosenExtractor.d.ts.map
@@ -2,16 +2,19 @@ import { RosenData, TokenTransformation } from '../abstract/types';
2
2
  import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
3
3
  import { GraphQLTransaction, GraphQLTxOutput } from './types';
4
4
  export declare class CardanoGraphQLRosenExtractor extends AbstractRosenDataExtractor<GraphQLTransaction> {
5
- /**
6
- * extracts RosenData from given lock transaction in graphql format
7
- * @param transaction the lock transaction in graphql format
8
- */
9
- get: (transaction: GraphQLTransaction) => RosenData | undefined;
10
- /**
11
- * extracts and builds token transformation from UTXO and tokenMap
12
- * @param box transaction output
13
- * @param toChain event target chain
14
- */
15
- getAssetTransformation: (box: GraphQLTxOutput, toChain: string) => TokenTransformation | undefined;
5
+ /**
6
+ * extracts RosenData from given lock transaction in graphql format
7
+ * @param transaction the lock transaction in graphql format
8
+ */
9
+ get: (transaction: GraphQLTransaction) => RosenData | undefined;
10
+ /**
11
+ * extracts and builds token transformation from UTXO and tokenMap
12
+ * @param box transaction output
13
+ * @param toChain event target chain
14
+ */
15
+ getAssetTransformation: (
16
+ box: GraphQLTxOutput,
17
+ toChain: string
18
+ ) => TokenTransformation | undefined;
16
19
  }
17
- //# sourceMappingURL=CardanoGraphQLRosenExtractor.d.ts.map
20
+ //# sourceMappingURL=CardanoGraphQLRosenExtractor.d.ts.map