@rosen-bridge/rosen-extractor 3.4.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.
- package/dist/lib/getRosenData/abstract/AbstractRosenDataExtractor.d.ts +13 -9
- package/dist/lib/getRosenData/abstract/types.d.ts +13 -13
- package/dist/lib/getRosenData/bitcoin/BitcoinEsploraRosenExtractor.d.ts +21 -14
- package/dist/lib/getRosenData/bitcoin/BitcoinRosenExtractor.d.ts +21 -14
- package/dist/lib/getRosenData/bitcoin/types.d.ts +42 -42
- package/dist/lib/getRosenData/bitcoin/utils.d.ts +1 -1
- package/dist/lib/getRosenData/cardano/CardanoBlockFrostRosenExtractor.d.ts +15 -12
- package/dist/lib/getRosenData/cardano/CardanoGraphQLRosenExtractor.d.ts +15 -12
- package/dist/lib/getRosenData/cardano/CardanoKoiosRosenExtractor.d.ts +15 -12
- package/dist/lib/getRosenData/cardano/CardanoOgmiosRosenExtractor.d.ts +15 -12
- package/dist/lib/getRosenData/cardano/CardanoRosenExtractor.d.ts +15 -12
- package/dist/lib/getRosenData/cardano/types.d.ts +110 -90
- package/dist/lib/getRosenData/const.d.ts +2 -0
- package/dist/lib/getRosenData/const.d.ts.map +1 -1
- package/dist/lib/getRosenData/const.js +9 -2
- package/dist/lib/getRosenData/ergo/ErgoNodeRosenExtractor.d.ts +21 -14
- package/dist/lib/getRosenData/ergo/ErgoRosenExtractor.d.ts +12 -8
- package/dist/lib/getRosenData/ergo/types.d.ts +24 -24
- package/dist/lib/getRosenData/evm/EvmRpcRosenExtractor.d.ts +26 -0
- package/dist/lib/getRosenData/evm/EvmRpcRosenExtractor.d.ts.map +1 -0
- package/dist/lib/getRosenData/evm/EvmRpcRosenExtractor.js +118 -0
- package/dist/lib/getRosenData/evm/utils.d.ts +13 -0
- package/dist/lib/getRosenData/evm/utils.d.ts.map +1 -0
- package/dist/lib/getRosenData/evm/utils.js +31 -0
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +2 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -2
|
@@ -2,6 +2,8 @@ export declare const CARDANO_NATIVE_TOKEN = "ada";
|
|
|
2
2
|
export declare const ERGO_NATIVE_TOKEN = "erg";
|
|
3
3
|
export declare const BITCOIN_NATIVE_TOKEN = "btc";
|
|
4
4
|
export declare const BITCOIN_CHAIN = "bitcoin";
|
|
5
|
+
export declare const ETHEREUM_CHAIN = "ethereum";
|
|
6
|
+
export declare const ETHEREUM_NATIVE_TOKEN = "eth";
|
|
5
7
|
export declare const CARDANO_CHAIN = "cardano";
|
|
6
8
|
export declare const ERGO_CHAIN = "ergo";
|
|
7
9
|
export declare const SUPPORTED_CHAINS: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../../lib/getRosenData/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAC1C,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AACvC,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAC1C,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,UAAU,SAAS,CAAC;AACjC,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../../lib/getRosenData/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAC1C,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AACvC,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAC1C,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,cAAc,aAAa,CAAC;AACzC,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAC3C,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,UAAU,SAAS,CAAC;AACjC,eAAO,MAAM,gBAAgB,UAK5B,CAAC"}
|
|
@@ -2,7 +2,14 @@ export const CARDANO_NATIVE_TOKEN = 'ada';
|
|
|
2
2
|
export const ERGO_NATIVE_TOKEN = 'erg';
|
|
3
3
|
export const BITCOIN_NATIVE_TOKEN = 'btc';
|
|
4
4
|
export const BITCOIN_CHAIN = 'bitcoin';
|
|
5
|
+
export const ETHEREUM_CHAIN = 'ethereum';
|
|
6
|
+
export const ETHEREUM_NATIVE_TOKEN = 'eth';
|
|
5
7
|
export const CARDANO_CHAIN = 'cardano';
|
|
6
8
|
export const ERGO_CHAIN = 'ergo';
|
|
7
|
-
export const SUPPORTED_CHAINS = [
|
|
8
|
-
|
|
9
|
+
export const SUPPORTED_CHAINS = [
|
|
10
|
+
ERGO_CHAIN,
|
|
11
|
+
CARDANO_CHAIN,
|
|
12
|
+
BITCOIN_CHAIN,
|
|
13
|
+
ETHEREUM_CHAIN,
|
|
14
|
+
];
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2NvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEtBQUssQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDO0FBQzFDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUM7QUFDdkMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxLQUFLLENBQUM7QUFDM0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDO0FBQ2pDLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLFVBQVU7SUFDVixhQUFhO0lBQ2IsYUFBYTtJQUNiLGNBQWM7Q0FDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IENBUkRBTk9fTkFUSVZFX1RPS0VOID0gJ2FkYSc7XG5leHBvcnQgY29uc3QgRVJHT19OQVRJVkVfVE9LRU4gPSAnZXJnJztcbmV4cG9ydCBjb25zdCBCSVRDT0lOX05BVElWRV9UT0tFTiA9ICdidGMnO1xuZXhwb3J0IGNvbnN0IEJJVENPSU5fQ0hBSU4gPSAnYml0Y29pbic7XG5leHBvcnQgY29uc3QgRVRIRVJFVU1fQ0hBSU4gPSAnZXRoZXJldW0nO1xuZXhwb3J0IGNvbnN0IEVUSEVSRVVNX05BVElWRV9UT0tFTiA9ICdldGgnO1xuZXhwb3J0IGNvbnN0IENBUkRBTk9fQ0hBSU4gPSAnY2FyZGFubyc7XG5leHBvcnQgY29uc3QgRVJHT19DSEFJTiA9ICdlcmdvJztcbmV4cG9ydCBjb25zdCBTVVBQT1JURURfQ0hBSU5TID0gW1xuICBFUkdPX0NIQUlOLFxuICBDQVJEQU5PX0NIQUlOLFxuICBCSVRDT0lOX0NIQUlOLFxuICBFVEhFUkVVTV9DSEFJTixcbl07XG4iXX0=
|
|
@@ -4,18 +4,25 @@ 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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
7
|
+
lockErgoTree: string;
|
|
8
|
+
constructor(
|
|
9
|
+
lockAddress: string,
|
|
10
|
+
tokens: RosenTokens,
|
|
11
|
+
logger?: AbstractLogger
|
|
12
|
+
);
|
|
13
|
+
/**
|
|
14
|
+
* extracts RosenData from given lock transaction in Node format
|
|
15
|
+
* @param transaction the lock transaction in Node format
|
|
16
|
+
*/
|
|
17
|
+
get: (transaction: NodeTransaction) => RosenData | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* extracts and builds token transformation from NodeOutputBox and tokenMap
|
|
20
|
+
* @param box transaction output
|
|
21
|
+
* @param toChain event target chain
|
|
22
|
+
*/
|
|
23
|
+
getAssetTransformation: (
|
|
24
|
+
box: NodeOutputBox,
|
|
25
|
+
toChain: string
|
|
26
|
+
) => TokenTransformation | undefined;
|
|
20
27
|
}
|
|
21
|
-
//# sourceMappingURL=ErgoNodeRosenExtractor.d.ts.map
|
|
28
|
+
//# sourceMappingURL=ErgoNodeRosenExtractor.d.ts.map
|
|
@@ -3,12 +3,16 @@ 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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
private nodeExtractor;
|
|
7
|
+
constructor(
|
|
8
|
+
lockAddress: string,
|
|
9
|
+
tokens: RosenTokens,
|
|
10
|
+
logger?: AbstractLogger
|
|
11
|
+
);
|
|
12
|
+
/**
|
|
13
|
+
* extracts RosenData from given lock transaction in wasm sigma serialized bytes
|
|
14
|
+
* @param serializedTransaction the sigma serialized bytes of transaction
|
|
15
|
+
*/
|
|
16
|
+
get: (serializedTransaction: string) => RosenData | undefined;
|
|
13
17
|
}
|
|
14
|
-
//# sourceMappingURL=ErgoRosenExtractor.d.ts.map
|
|
18
|
+
//# sourceMappingURL=ErgoRosenExtractor.d.ts.map
|
|
@@ -1,37 +1,37 @@
|
|
|
1
1
|
interface NodeAsset {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
tokenId: string;
|
|
3
|
+
amount: bigint;
|
|
4
4
|
}
|
|
5
5
|
interface NodeAdditionalRegisters {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
24
|
+
boxId: string;
|
|
25
25
|
}
|
|
26
26
|
interface NodeDataInput {
|
|
27
|
-
|
|
27
|
+
boxId: string;
|
|
28
28
|
}
|
|
29
29
|
interface NodeTransaction {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { RosenData } from '../abstract/types';
|
|
2
|
+
import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
3
|
+
import { TransactionResponse } from 'ethers';
|
|
4
|
+
import { RosenTokens } from '@rosen-bridge/tokens';
|
|
5
|
+
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
6
|
+
export declare class EvmRpcRosenExtractor extends AbstractRosenDataExtractor<TransactionResponse> {
|
|
7
|
+
protected chain: string;
|
|
8
|
+
protected nativeToken: string;
|
|
9
|
+
constructor(lockAddress: string, tokens: RosenTokens, chain: string, nativeToken: string, logger?: AbstractLogger);
|
|
10
|
+
/**
|
|
11
|
+
* extracts RosenData from given lock transaction in RPC format
|
|
12
|
+
* cheks:
|
|
13
|
+
* Native token transfer:
|
|
14
|
+
* 1. `to` must be the lock address
|
|
15
|
+
* 2. the entire calldata must represent a valid CallDataRosenData
|
|
16
|
+
* ERC20 transfer:
|
|
17
|
+
* 1. `to` address is one of the supported assets
|
|
18
|
+
* 2. first four bytes of the call data indicate `transfer` function call: a9059cbb
|
|
19
|
+
* 3. bytes from 5 to 37 must be the lock address
|
|
20
|
+
* 4. bytes from 37 to 69 show the amount
|
|
21
|
+
* 5. bytes after 69 must represnt a valid CallDataRosenData
|
|
22
|
+
* @param transaction the lock transaction in RPC format
|
|
23
|
+
*/
|
|
24
|
+
get: (transaction: TransactionResponse) => RosenData | undefined;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=EvmRpcRosenExtractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EvmRpcRosenExtractor.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/evm/EvmRpcRosenExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAmB,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,qBAAa,oBAAqB,SAAQ,0BAA0B,CAAC,mBAAmB,CAAC;IACvF,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;gBAG5B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,cAAc;IAOzB;;;;;;;;;;;;;OAaG;IACH,GAAG,gBAAiB,mBAAmB,KAAG,SAAS,GAAG,SAAS,CAwG7D;CACH"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
2
|
+
import { parseRosenData } from './utils';
|
|
3
|
+
export class EvmRpcRosenExtractor extends AbstractRosenDataExtractor {
|
|
4
|
+
chain;
|
|
5
|
+
nativeToken;
|
|
6
|
+
constructor(lockAddress, tokens, chain, nativeToken, logger) {
|
|
7
|
+
super(lockAddress, tokens, logger);
|
|
8
|
+
this.chain = chain;
|
|
9
|
+
this.nativeToken = nativeToken;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* extracts RosenData from given lock transaction in RPC format
|
|
13
|
+
* cheks:
|
|
14
|
+
* Native token transfer:
|
|
15
|
+
* 1. `to` must be the lock address
|
|
16
|
+
* 2. the entire calldata must represent a valid CallDataRosenData
|
|
17
|
+
* ERC20 transfer:
|
|
18
|
+
* 1. `to` address is one of the supported assets
|
|
19
|
+
* 2. first four bytes of the call data indicate `transfer` function call: a9059cbb
|
|
20
|
+
* 3. bytes from 5 to 37 must be the lock address
|
|
21
|
+
* 4. bytes from 37 to 69 show the amount
|
|
22
|
+
* 5. bytes after 69 must represnt a valid CallDataRosenData
|
|
23
|
+
* @param transaction the lock transaction in RPC format
|
|
24
|
+
*/
|
|
25
|
+
get = (transaction) => {
|
|
26
|
+
const baseError = `No rosen data found for tx [${transaction.hash}]`;
|
|
27
|
+
try {
|
|
28
|
+
if (transaction.to == null) {
|
|
29
|
+
this.logger.debug(baseError + `: 'to' address is empty.`);
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
let rosenData;
|
|
33
|
+
const callData = transaction.data.substring(2);
|
|
34
|
+
let token;
|
|
35
|
+
let rosenDataRaw;
|
|
36
|
+
let tokenAddress;
|
|
37
|
+
let amount;
|
|
38
|
+
let sourceTokenId, targetTokenId;
|
|
39
|
+
if (transaction.to == this.lockAddress) {
|
|
40
|
+
// transaction must be a native token transfer
|
|
41
|
+
rosenDataRaw = callData;
|
|
42
|
+
tokenAddress = this.nativeToken;
|
|
43
|
+
amount = transaction.value.toString();
|
|
44
|
+
const tokens = this.tokens.search(this.chain, {
|
|
45
|
+
[this.tokens.getIdKey(this.chain)]: this.nativeToken,
|
|
46
|
+
});
|
|
47
|
+
if (tokens.length == 1) {
|
|
48
|
+
sourceTokenId = this.nativeToken;
|
|
49
|
+
token = tokens[0];
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.logger.debug(baseError +
|
|
53
|
+
`: native token [${this.nativeToken}] is not available in source chian's tokens map.`);
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
// transaction must be an ERC-20 token transfer
|
|
59
|
+
if (callData.substring(0, 8) != 'a9059cbb') {
|
|
60
|
+
this.logger.debug(baseError + `: Not a valid ERC20 transfer transaction.`);
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
if (BigInt('0x' + callData.substring(8, 72)).toString(16) !=
|
|
64
|
+
this.lockAddress.substring(2)) {
|
|
65
|
+
this.logger.debug(baseError + `: 'to' address is not the lock address.`);
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
amount = BigInt('0x' + callData.slice(72, 72 + 64)).toString();
|
|
69
|
+
rosenDataRaw = callData.substring(72 + 64);
|
|
70
|
+
tokenAddress = transaction.to;
|
|
71
|
+
const tokens = this.tokens.search(this.chain, {
|
|
72
|
+
[this.tokens.getIdKey(this.chain)]: tokenAddress,
|
|
73
|
+
});
|
|
74
|
+
if (tokens.length != 1) {
|
|
75
|
+
this.logger.debug(baseError +
|
|
76
|
+
`: token [${tokenAddress}] is not supported on chain: [${this.chain}].`);
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
token = tokens[0];
|
|
80
|
+
sourceTokenId = tokenAddress;
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
rosenData = parseRosenData(rosenDataRaw);
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
this.logger.debug(baseError + `: Failed to extract data from call data: ${e}`);
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
try {
|
|
90
|
+
targetTokenId = this.tokens.getID(token, rosenData.toChain);
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
this.logger.debug(baseError +
|
|
94
|
+
`: token [${tokenAddress}] is not supported on chain: [${rosenData.toChain}].`);
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
toChain: rosenData.toChain,
|
|
99
|
+
toAddress: rosenData.toAddress,
|
|
100
|
+
bridgeFee: rosenData.bridgeFee,
|
|
101
|
+
networkFee: rosenData.networkFee,
|
|
102
|
+
fromAddress: transaction.from,
|
|
103
|
+
sourceChainTokenId: sourceTokenId,
|
|
104
|
+
amount: amount,
|
|
105
|
+
targetChainTokenId: targetTokenId,
|
|
106
|
+
sourceTxId: transaction.hash,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
catch (e) {
|
|
110
|
+
this.logger.debug(`An error occurred while getting EVM rosen data from RPC: ${e}`);
|
|
111
|
+
if (e instanceof Error && e.stack) {
|
|
112
|
+
this.logger.debug(e.stack);
|
|
113
|
+
}
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZtUnBjUm9zZW5FeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2V2bS9Fdm1ScGNSb3NlbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLDBCQUEwQixNQUFNLHdDQUF3QyxDQUFDO0FBSWhGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFekMsTUFBTSxPQUFPLG9CQUFxQixTQUFRLDBCQUErQztJQUM3RSxLQUFLLENBQVM7SUFDZCxXQUFXLENBQVM7SUFFOUIsWUFDRSxXQUFtQixFQUNuQixNQUFtQixFQUNuQixLQUFhLEVBQ2IsV0FBbUIsRUFDbkIsTUFBdUI7UUFFdkIsS0FBSyxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxHQUFHLEdBQUcsQ0FBQyxXQUFnQyxFQUF5QixFQUFFO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLCtCQUErQixXQUFXLENBQUMsSUFBSSxHQUFHLENBQUM7UUFDckUsSUFBSTtZQUNGLElBQUksV0FBVyxDQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRywwQkFBMEIsQ0FBQyxDQUFDO2dCQUMxRCxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELElBQUksU0FBUyxDQUFDO1lBQ2QsTUFBTSxRQUFRLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsSUFBSSxLQUFzQyxDQUFDO1lBQzNDLElBQUksWUFBWSxDQUFDO1lBQ2pCLElBQUksWUFBWSxDQUFDO1lB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YnN0cmFjdC90eXBlcyc7XG5pbXBvcnQgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3IgZnJvbSAnLi4vYWJzdHJhY3QvQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3InO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25SZXNwb25zZSB9IGZyb20gJ2V0aGVycyc7XG5pbXBvcnQgeyBSb3NlblRva2VucywgUm9zZW5DaGFpblRva2VuIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS90b2tlbnMnO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgeyBwYXJzZVJvc2VuRGF0YSB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgRXZtUnBjUm9zZW5FeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvcjxUcmFuc2FjdGlvblJlc3BvbnNlPiB7XG4gIHByb3RlY3RlZCBjaGFpbjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgbmF0aXZlVG9rZW46IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBsb2NrQWRkcmVzczogc3RyaW5nLFxuICAgIHRva2VuczogUm9zZW5Ub2tlbnMsXG4gICAgY2hhaW46IHN0cmluZyxcbiAgICBuYXRpdmVUb2tlbjogc3RyaW5nLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyXG4gICkge1xuICAgIHN1cGVyKGxvY2tBZGRyZXNzLCB0b2tlbnMsIGxvZ2dlcik7XG4gICAgdGhpcy5jaGFpbiA9IGNoYWluO1xuICAgIHRoaXMubmF0aXZlVG9rZW4gPSBuYXRpdmVUb2tlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBleHRyYWN0cyBSb3NlbkRhdGEgZnJvbSBnaXZlbiBsb2NrIHRyYW5zYWN0aW9uIGluIFJQQyBmb3JtYXRcbiAgICogY2hla3M6XG4gICAqICAgICBOYXRpdmUgdG9rZW4gdHJhbnNmZXI6XG4gICAqICAgICAgICAgMS4gYHRvYCBtdXN0IGJlIHRoZSBsb2NrIGFkZHJlc3NcbiAgICogICAgICAgICAyLiB0aGUgZW50aXJlIGNhbGxkYXRhIG11c3QgcmVwcmVzZW50IGEgdmFsaWQgQ2FsbERhdGFSb3NlbkRhdGFcbiAgICogICAgIEVSQzIwIHRyYW5zZmVyOlxuICAgKiAgICAgICAgIDEuIGB0b2AgYWRkcmVzcyBpcyBvbmUgb2YgdGhlIHN1cHBvcnRlZCBhc3NldHNcbiAgICogICAgICAgICAyLiBmaXJzdCBmb3VyIGJ5dGVzIG9mIHRoZSBjYWxsIGRhdGEgaW5kaWNhdGUgYHRyYW5zZmVyYCBmdW5jdGlvbiBjYWxsOiBhOTA1OWNiYlxuICAgKiAgICAgICAgIDMuIGJ5dGVzIGZyb20gNSB0byAzNyBtdXN0IGJlIHRoZSBsb2NrIGFkZHJlc3NcbiAgICogICAgICAgICA0LiBieXRlcyBmcm9tIDM3IHRvIDY5IHNob3cgdGhlIGFtb3VudFxuICAgKiAgICAgICAgIDUuIGJ5dGVzIGFmdGVyIDY5IG11c3QgcmVwcmVzbnQgYSB2YWxpZCBDYWxsRGF0YVJvc2VuRGF0YVxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gdGhlIGxvY2sgdHJhbnNhY3Rpb24gaW4gUlBDIGZvcm1hdFxuICAgKi9cbiAgZ2V0ID0gKHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvblJlc3BvbnNlKTogUm9zZW5EYXRhIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBiYXNlRXJyb3IgPSBgTm8gcm9zZW4gZGF0YSBmb3VuZCBmb3IgdHggWyR7dHJhbnNhY3Rpb24uaGFzaH1dYDtcbiAgICB0cnkge1xuICAgICAgaWYgKHRyYW5zYWN0aW9uLnRvID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYmFzZUVycm9yICsgYDogJ3RvJyBhZGRyZXNzIGlzIGVtcHR5LmApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgbGV0IHJvc2VuRGF0YTtcbiAgICAgIGNvbnN0IGNhbGxEYXRhID0gdHJhbnNhY3Rpb24uZGF0YS5zdWJzdHJpbmcoMik7XG4gICAgICBsZXQgdG9rZW46IFJlY29yZDxzdHJpbmcsIFJvc2VuQ2hhaW5Ub2tlbj47XG4gICAgICBsZXQgcm9zZW5EYXRhUmF3O1xuICAgICAgbGV0IHRva2VuQWRkcmVzcztcbiAgICAgIGxldCBhbW91bnQ7XG4gICAgICBsZXQgc291cmNlVG9rZW5JZCwgdGFyZ2V0VG9rZW5JZDtcblxuICAgICAgaWYgKHRyYW5zYWN0aW9uLnRvID09IHRoaXMubG9ja0FkZHJlc3MpIHtcbiAgICAgICAgLy8gdHJhbnNhY3Rpb24gbXVzdCBiZSBhIG5hdGl2ZSB0b2tlbiB0cmFuc2ZlclxuICAgICAgICByb3NlbkRhdGFSYXcgPSBjYWxsRGF0YTtcbiAgICAgICAgdG9rZW5BZGRyZXNzID0gdGhpcy5uYXRpdmVUb2tlbjtcbiAgICAgICAgYW1vdW50ID0gdHJhbnNhY3Rpb24udmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgdG9rZW5zID0gdGhpcy50b2tlbnMuc2VhcmNoKHRoaXMuY2hhaW4sIHtcbiAgICAgICAgICBbdGhpcy50b2tlbnMuZ2V0SWRLZXkodGhpcy5jaGFpbildOiB0aGlzLm5hdGl2ZVRva2VuLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPT0gMSkge1xuICAgICAgICAgIHNvdXJjZVRva2VuSWQgPSB0aGlzLm5hdGl2ZVRva2VuO1xuICAgICAgICAgIHRva2VuID0gdG9rZW5zWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYmFzZUVycm9yICtcbiAgICAgICAgICAgICAgYDogbmF0aXZlIHRva2VuIFske3RoaXMubmF0aXZlVG9rZW59XSBpcyBub3QgYXZhaWxhYmxlIGluIHNvdXJjZSBjaGlhbidzIHRva2VucyBtYXAuYFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdHJhbnNhY3Rpb24gbXVzdCBiZSBhbiBFUkMtMjAgdG9rZW4gdHJhbnNmZXJcbiAgICAgICAgaWYgKGNhbGxEYXRhLnN1YnN0cmluZygwLCA4KSAhPSAnYTkwNTljYmInKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBOb3QgYSB2YWxpZCBFUkMyMCB0cmFuc2ZlciB0cmFuc2FjdGlvbi5gXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICBCaWdJbnQoJzB4JyArIGNhbGxEYXRhLnN1YnN0cmluZyg4LCA3MikpLnRvU3RyaW5nKDE2KSAhPVxuICAgICAgICAgIHRoaXMubG9ja0FkZHJlc3Muc3Vic3RyaW5nKDIpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYmFzZUVycm9yICsgYDogJ3RvJyBhZGRyZXNzIGlzIG5vdCB0aGUgbG9jayBhZGRyZXNzLmBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgYW1vdW50ID0gQmlnSW50KCcweCcgKyBjYWxsRGF0YS5zbGljZSg3MiwgNzIgKyA2NCkpLnRvU3RyaW5nKCk7XG4gICAgICAgIHJvc2VuRGF0YVJhdyA9IGNhbGxEYXRhLnN1YnN0cmluZyg3MiArIDY0KTtcbiAgICAgICAgdG9rZW5BZGRyZXNzID0gdHJhbnNhY3Rpb24udG87XG4gICAgICAgIGNvbnN0IHRva2VucyA9IHRoaXMudG9rZW5zLnNlYXJjaCh0aGlzLmNoYWluLCB7XG4gICAgICAgICAgW3RoaXMudG9rZW5zLmdldElkS2V5KHRoaXMuY2hhaW4pXTogdG9rZW5BZGRyZXNzLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggIT0gMSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYmFzZUVycm9yICtcbiAgICAgICAgICAgICAgYDogdG9rZW4gWyR7dG9rZW5BZGRyZXNzfV0gaXMgbm90IHN1cHBvcnRlZCBvbiBjaGFpbjogWyR7dGhpcy5jaGFpbn1dLmBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdG9rZW4gPSB0b2tlbnNbMF07XG4gICAgICAgIHNvdXJjZVRva2VuSWQgPSB0b2tlbkFkZHJlc3M7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICByb3NlbkRhdGEgPSBwYXJzZVJvc2VuRGF0YShyb3NlbkRhdGFSYXcpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBiYXNlRXJyb3IgKyBgOiBGYWlsZWQgdG8gZXh0cmFjdCBkYXRhIGZyb20gY2FsbCBkYXRhOiAke2V9YFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICB0YXJnZXRUb2tlbklkID0gdGhpcy50b2tlbnMuZ2V0SUQodG9rZW4sIHJvc2VuRGF0YS50b0NoYWluKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYmFzZUVycm9yICtcbiAgICAgICAgICAgIGA6IHRva2VuIFske3Rva2VuQWRkcmVzc31dIGlzIG5vdCBzdXBwb3J0ZWQgb24gY2hhaW46IFske3Jvc2VuRGF0YS50b0NoYWlufV0uYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG9DaGFpbjogcm9zZW5EYXRhLnRvQ2hhaW4sXG4gICAgICAgIHRvQWRkcmVzczogcm9zZW5EYXRhLnRvQWRkcmVzcyxcbiAgICAgICAgYnJpZGdlRmVlOiByb3NlbkRhdGEuYnJpZGdlRmVlLFxuICAgICAgICBuZXR3b3JrRmVlOiByb3NlbkRhdGEubmV0d29ya0ZlZSxcbiAgICAgICAgZnJvbUFkZHJlc3M6IHRyYW5zYWN0aW9uLmZyb20sXG4gICAgICAgIHNvdXJjZUNoYWluVG9rZW5JZDogc291cmNlVG9rZW5JZCxcbiAgICAgICAgYW1vdW50OiBhbW91bnQsXG4gICAgICAgIHRhcmdldENoYWluVG9rZW5JZDogdGFyZ2V0VG9rZW5JZCxcbiAgICAgICAgc291cmNlVHhJZDogdHJhbnNhY3Rpb24uaGFzaCxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBnZXR0aW5nIEVWTSByb3NlbiBkYXRhIGZyb20gUlBDOiAke2V9YFxuICAgICAgKTtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5zdGFjaykge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlLnN0YWNrKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface CallDataRosenData {
|
|
2
|
+
toChain: string;
|
|
3
|
+
toAddress: string;
|
|
4
|
+
bridgeFee: string;
|
|
5
|
+
networkFee: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* extracts rosen data from transaction's remaining call data
|
|
9
|
+
* @param scriptPubKeyHex
|
|
10
|
+
*/
|
|
11
|
+
export declare const parseRosenData: (callData: string) => CallDataRosenData;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/evm/utils.ts"],"names":[],"mappings":"AAGA,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,aAAc,MAAM,KAAG,iBA+BjD,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SUPPORTED_CHAINS } from './../const';
|
|
2
|
+
import { decodeAddress } from '@rosen-bridge/address-codec';
|
|
3
|
+
/**
|
|
4
|
+
* extracts rosen data from transaction's remaining call data
|
|
5
|
+
* @param scriptPubKeyHex
|
|
6
|
+
*/
|
|
7
|
+
export const parseRosenData = (callData) => {
|
|
8
|
+
const toChainHex = callData.slice(0, 2);
|
|
9
|
+
const toChainCode = parseInt(toChainHex, 16);
|
|
10
|
+
if (toChainCode >= SUPPORTED_CHAINS.length) {
|
|
11
|
+
throw Error(`invalid toChain code, found [${toChainCode}] but only [${SUPPORTED_CHAINS.length}] chains are supported`);
|
|
12
|
+
}
|
|
13
|
+
const toChain = SUPPORTED_CHAINS[toChainCode];
|
|
14
|
+
// parse bridgeFee
|
|
15
|
+
const bridgeFeeHex = callData.slice(2, 18);
|
|
16
|
+
const bridgeFee = BigInt('0x' + bridgeFeeHex).toString();
|
|
17
|
+
// parse networkFee
|
|
18
|
+
const networkFeeHex = callData.slice(18, 34);
|
|
19
|
+
const networkFee = BigInt('0x' + networkFeeHex).toString();
|
|
20
|
+
// parse toAddress
|
|
21
|
+
const addressLengthCode = callData.slice(34, 36);
|
|
22
|
+
const addressHex = callData.slice(36, 36 + parseInt(addressLengthCode, 16) * 2);
|
|
23
|
+
const toAddress = decodeAddress(toChain, addressHex);
|
|
24
|
+
return {
|
|
25
|
+
toChain,
|
|
26
|
+
toAddress,
|
|
27
|
+
bridgeFee,
|
|
28
|
+
networkFee,
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2V2bS91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDOUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBUzVEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFFBQWdCLEVBQXFCLEVBQUU7SUFDcEUsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QyxJQUFJLFdBQVcsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7UUFDMUMsTUFBTSxLQUFLLENBQ1QsZ0NBQWdDLFdBQVcsZUFBZSxnQkFBZ0IsQ0FBQyxNQUFNLHdCQUF3QixDQUMxRyxDQUFDO0tBQ0g7SUFDRCxNQUFNLE9BQU8sR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QyxrQkFBa0I7SUFDbEIsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0MsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUV6RCxtQkFBbUI7SUFDbkIsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUUzRCxrQkFBa0I7SUFDbEIsTUFBTSxpQkFBaUIsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUMvQixFQUFFLEVBQ0YsRUFBRSxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQ3pDLENBQUM7SUFDRixNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRXJELE9BQU87UUFDTCxPQUFPO1FBQ1AsU0FBUztRQUNULFNBQVM7UUFDVCxVQUFVO0tBQ1gsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNVUFBPUlRFRF9DSEFJTlMgfSBmcm9tICcuLy4uL2NvbnN0JztcbmltcG9ydCB7IGRlY29kZUFkZHJlc3MgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2FkZHJlc3MtY29kZWMnO1xuXG5pbnRlcmZhY2UgQ2FsbERhdGFSb3NlbkRhdGEge1xuICB0b0NoYWluOiBzdHJpbmc7XG4gIHRvQWRkcmVzczogc3RyaW5nO1xuICBicmlkZ2VGZWU6IHN0cmluZztcbiAgbmV0d29ya0ZlZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIGV4dHJhY3RzIHJvc2VuIGRhdGEgZnJvbSB0cmFuc2FjdGlvbidzIHJlbWFpbmluZyBjYWxsIGRhdGFcbiAqIEBwYXJhbSBzY3JpcHRQdWJLZXlIZXhcbiAqL1xuZXhwb3J0IGNvbnN0IHBhcnNlUm9zZW5EYXRhID0gKGNhbGxEYXRhOiBzdHJpbmcpOiBDYWxsRGF0YVJvc2VuRGF0YSA9PiB7XG4gIGNvbnN0IHRvQ2hhaW5IZXggPSBjYWxsRGF0YS5zbGljZSgwLCAyKTtcbiAgY29uc3QgdG9DaGFpbkNvZGUgPSBwYXJzZUludCh0b0NoYWluSGV4LCAxNik7XG4gIGlmICh0b0NoYWluQ29kZSA+PSBTVVBQT1JURURfQ0hBSU5TLmxlbmd0aCkge1xuICAgIHRocm93IEVycm9yKFxuICAgICAgYGludmFsaWQgdG9DaGFpbiBjb2RlLCBmb3VuZCBbJHt0b0NoYWluQ29kZX1dIGJ1dCBvbmx5IFske1NVUFBPUlRFRF9DSEFJTlMubGVuZ3RofV0gY2hhaW5zIGFyZSBzdXBwb3J0ZWRgXG4gICAgKTtcbiAgfVxuICBjb25zdCB0b0NoYWluID0gU1VQUE9SVEVEX0NIQUlOU1t0b0NoYWluQ29kZV07XG4gIC8vIHBhcnNlIGJyaWRnZUZlZVxuICBjb25zdCBicmlkZ2VGZWVIZXggPSBjYWxsRGF0YS5zbGljZSgyLCAxOCk7XG4gIGNvbnN0IGJyaWRnZUZlZSA9IEJpZ0ludCgnMHgnICsgYnJpZGdlRmVlSGV4KS50b1N0cmluZygpO1xuXG4gIC8vIHBhcnNlIG5ldHdvcmtGZWVcbiAgY29uc3QgbmV0d29ya0ZlZUhleCA9IGNhbGxEYXRhLnNsaWNlKDE4LCAzNCk7XG4gIGNvbnN0IG5ldHdvcmtGZWUgPSBCaWdJbnQoJzB4JyArIG5ldHdvcmtGZWVIZXgpLnRvU3RyaW5nKCk7XG5cbiAgLy8gcGFyc2UgdG9BZGRyZXNzXG4gIGNvbnN0IGFkZHJlc3NMZW5ndGhDb2RlID0gY2FsbERhdGEuc2xpY2UoMzQsIDM2KTtcbiAgY29uc3QgYWRkcmVzc0hleCA9IGNhbGxEYXRhLnNsaWNlKFxuICAgIDM2LFxuICAgIDM2ICsgcGFyc2VJbnQoYWRkcmVzc0xlbmd0aENvZGUsIDE2KSAqIDJcbiAgKTtcbiAgY29uc3QgdG9BZGRyZXNzID0gZGVjb2RlQWRkcmVzcyh0b0NoYWluLCBhZGRyZXNzSGV4KTtcblxuICByZXR1cm4ge1xuICAgIHRvQ2hhaW4sXG4gICAgdG9BZGRyZXNzLFxuICAgIGJyaWRnZUZlZSxcbiAgICBuZXR3b3JrRmVlLFxuICB9O1xufTtcbiJdfQ==
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default as AbstractRosenDataExtractor } from './getRosenData/abstract/AbstractRosenDataExtractor';
|
|
2
2
|
export { BitcoinEsploraRosenExtractor } from './getRosenData/bitcoin/BitcoinEsploraRosenExtractor';
|
|
3
|
+
export { EvmRpcRosenExtractor } from './getRosenData/evm/EvmRpcRosenExtractor';
|
|
3
4
|
export { BitcoinRosenExtractor } from './getRosenData/bitcoin/BitcoinRosenExtractor';
|
|
4
5
|
export { CardanoKoiosRosenExtractor } from './getRosenData/cardano/CardanoKoiosRosenExtractor';
|
|
5
6
|
export { CardanoOgmiosRosenExtractor } from './getRosenData/cardano/CardanoOgmiosRosenExtractor';
|
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,oDAAoD,CAAC;AAC3G,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,wDAAwD,CAAC;AACzG,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,oDAAoD,CAAC;AAC3G,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,wDAAwD,CAAC;AACzG,OAAO,EAAE,4BAA4B,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/lib/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default as AbstractRosenDataExtractor } from './getRosenData/abstract/AbstractRosenDataExtractor';
|
|
2
2
|
export { BitcoinEsploraRosenExtractor } from './getRosenData/bitcoin/BitcoinEsploraRosenExtractor';
|
|
3
|
+
export { EvmRpcRosenExtractor } from './getRosenData/evm/EvmRpcRosenExtractor';
|
|
3
4
|
export { BitcoinRosenExtractor } from './getRosenData/bitcoin/BitcoinRosenExtractor';
|
|
4
5
|
export { CardanoKoiosRosenExtractor } from './getRosenData/cardano/CardanoKoiosRosenExtractor';
|
|
5
6
|
export { CardanoOgmiosRosenExtractor } from './getRosenData/cardano/CardanoOgmiosRosenExtractor';
|
|
@@ -8,4 +9,4 @@ export { CardanoBlockFrostRosenExtractor } from './getRosenData/cardano/CardanoB
|
|
|
8
9
|
export { CardanoGraphQLRosenExtractor } from './getRosenData/cardano/CardanoGraphQLRosenExtractor';
|
|
9
10
|
export { ErgoRosenExtractor } from './getRosenData/ergo/ErgoRosenExtractor';
|
|
10
11
|
export { ErgoNodeRosenExtractor } from './getRosenData/ergo/ErgoNodeRosenExtractor';
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sSUFBSSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQzNHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZGVmYXVsdCBhcyBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2Fic3RyYWN0L0Fic3RyYWN0Um9zZW5EYXRhRXh0cmFjdG9yJztcbmV4cG9ydCB7IEJpdGNvaW5Fc3Bsb3JhUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9iaXRjb2luL0JpdGNvaW5Fc3Bsb3JhUm9zZW5FeHRyYWN0b3InO1xuZXhwb3J0IHsgRXZtUnBjUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9ldm0vRXZtUnBjUm9zZW5FeHRyYWN0b3InO1xuZXhwb3J0IHsgQml0Y29pblJvc2VuRXh0cmFjdG9yIH0gZnJvbSAnLi9nZXRSb3NlbkRhdGEvYml0Y29pbi9CaXRjb2luUm9zZW5FeHRyYWN0b3InO1xuZXhwb3J0IHsgQ2FyZGFub0tvaW9zUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9jYXJkYW5vL0NhcmRhbm9Lb2lvc1Jvc2VuRXh0cmFjdG9yJztcbmV4cG9ydCB7IENhcmRhbm9PZ21pb3NSb3NlbkV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2NhcmRhbm8vQ2FyZGFub09nbWlvc1Jvc2VuRXh0cmFjdG9yJztcbmV4cG9ydCB7IENhcmRhbm9Sb3NlbkV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2NhcmRhbm8vQ2FyZGFub1Jvc2VuRXh0cmFjdG9yJztcbmV4cG9ydCB7IENhcmRhbm9CbG9ja0Zyb3N0Um9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9jYXJkYW5vL0NhcmRhbm9CbG9ja0Zyb3N0Um9zZW5FeHRyYWN0b3InO1xuZXhwb3J0IHsgQ2FyZGFub0dyYXBoUUxSb3NlbkV4dHJhY3RvciB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2NhcmRhbm8vQ2FyZGFub0dyYXBoUUxSb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBFcmdvUm9zZW5FeHRyYWN0b3IgfSBmcm9tICcuL2dldFJvc2VuRGF0YS9lcmdvL0VyZ29Sb3NlbkV4dHJhY3Rvcic7XG5leHBvcnQgeyBFcmdvTm9kZVJvc2VuRXh0cmFjdG9yIH0gZnJvbSAnLi9nZXRSb3NlbkRhdGEvZXJnby9FcmdvTm9kZVJvc2VuRXh0cmFjdG9yJztcbmV4cG9ydCB7IFJvc2VuRGF0YSB9IGZyb20gJy4vZ2V0Um9zZW5EYXRhL2Fic3RyYWN0L3R5cGVzJztcbiJdfQ==
|