@my-packages-changeit/cardano-scanner 2.2.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/CHANGELOG.md ADDED
@@ -0,0 +1,138 @@
1
+ # @rosen-bridge/cardano-scanner
2
+
3
+ ## 2.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Add valid_contract field to transactions
8
+
9
+ ## 2.1.3
10
+
11
+ ### Patch Changes
12
+
13
+ - Update dependencies
14
+ - @rosen-bridge/abstract-scanner@2.0.3
15
+
16
+ ## 2.1.2
17
+
18
+ ### Patch Changes
19
+
20
+ - Update dependencies
21
+ - @rosen-bridge/abstract-scanner@2.0.2
22
+ - @rosen-clients/rate-limited-axios@2.0.1
23
+
24
+ ## 2.1.1
25
+
26
+ ### Patch Changes
27
+
28
+ - Update dependencies
29
+ - @rosen-bridge/abstract-scanner@2.0.1
30
+
31
+ ## 2.1.0
32
+
33
+ ### Minor Changes
34
+
35
+ - Add heightGap config into scanners config
36
+
37
+ ### Patch Changes
38
+
39
+ - Update dependencies
40
+ - @rosen-bridge/abstract-scanner@2.0.0
41
+ - @rosen-bridge/scanner-interfaces@1.0.0
42
+
43
+ ## 2.0.4
44
+
45
+ ### Patch Changes
46
+
47
+ - Update dependencies
48
+ - @rosen-bridge/abstract-scanner@1.0.4
49
+ - @rosen-bridge/extended-typeorm@1.1.0
50
+
51
+ ## 2.0.3
52
+
53
+ ### Patch Changes
54
+
55
+ - Update dependencies
56
+ - @rosen-bridge/abstract-scanner@1.0.3
57
+ - @rosen-clients/rate-limited-axios@2.0.0
58
+
59
+ ## 2.0.2
60
+
61
+ ### Patch Changes
62
+
63
+ - @rosen-bridge/abstract-scanner@1.0.2
64
+
65
+ ## 2.0.1
66
+
67
+ ### Patch Changes
68
+
69
+ - Update dependencies
70
+ - @rosen-bridge/scanner-interfaces@0.2.2
71
+ - @rosen-bridge/abstract-scanner@1.0.1
72
+
73
+ ## 2.0.0
74
+
75
+ ### Major Changes
76
+
77
+ - Update AbstractExtractor interface; use `BlockInfo` in `processTransactions` and rename `initializeBoxes` to `initializeData`
78
+
79
+ ### Patch Changes
80
+
81
+ - Update dependencies
82
+ - @rosen-bridge/abstract-logger@4.0.0
83
+ - @rosen-bridge/abstract-scanner@1.0.0
84
+
85
+ ## 1.0.1
86
+
87
+ ### Patch Changes
88
+
89
+ - Update dependencies
90
+ - @rosen-bridge/abstract-scanner@0.2.3
91
+
92
+ ## 1.0.0
93
+
94
+ ### Major Changes
95
+
96
+ - Change type of metadata for Blockfrost
97
+
98
+ ### Patch Changes
99
+
100
+ - Update dependencies
101
+ - @rosen-bridge/abstract-scanner@0.2.2
102
+
103
+ ## 0.2.1
104
+
105
+ ### Patch Changes
106
+
107
+ - Fix package-lock and move typescript and types/node into root
108
+ - Update eslint and plugins:
109
+ - Apply new rules such as sort imports and file name
110
+ - Update dependencies
111
+ - @rosen-bridge/scanner-interfaces@0.2.1
112
+ - @rosen-bridge/abstract-scanner@0.2.1
113
+ - @rosen-bridge/extended-typeorm@1.0.1
114
+ - @rosen-clients/rate-limited-axios@1.1.0
115
+ - @rosen-bridge/rosen-extractor@10.1.1
116
+ - @rosen-bridge/tokens@4.0.1
117
+ - @rosen-bridge/abstract-logger@3.0.1
118
+ - @rosen-bridge/json-bigint@1.1.0
119
+ - @rosen-clients/ergo-explorer@2.1.0
120
+ - @rosen-clients/ergo-node@3.1.0
121
+
122
+ ## 0.2.0
123
+
124
+ ### Minor Changes
125
+
126
+ - Use @rosen-clients/rate-limited-axios instead of @rosen-bridge/rate-limited-axios
127
+
128
+ ### Patch Changes
129
+
130
+ - Update dependencies
131
+ - @rosen-bridge/abstract-scanner@0.2.0
132
+ - @rosen-bridge/extended-typeorm@1.0.0
133
+
134
+ ## 0.1.0
135
+
136
+ - Added optional suffix support for Cardano Ogmios scanner
137
+ - This package was **extracted** from `@rosen-bridge/scanner`.
138
+ You can follow the previous history in the old package’s changelog. The last changelog update is available [here](https://github.com/rosen-bridge/scanner/blob/d4a5539b01c523b101104470b03ff7023a10b70b/packages/scanner/CHANGELOG.md).
package/README.md ADDED
@@ -0,0 +1,38 @@
1
+ # @rosen-bridge/cardano-scanner
2
+
3
+ ## Table of contents
4
+
5
+ - [Introduction](#introduction)
6
+ - [Installation](#installation)
7
+
8
+ ## Introduction
9
+
10
+ A Cardano blockchain scanner based on blackfrost , koios and ogmios API.
11
+
12
+ ## Installation
13
+
14
+ npm:
15
+
16
+ ```sh
17
+ npm i @rosen-bridge/cardano-scanner
18
+ ```
19
+
20
+ yarn:
21
+
22
+ ```sh
23
+ yarn add @rosen-bridge/cardano-scanner
24
+ ```
25
+
26
+ ### Usage
27
+
28
+ Cardano Scanner:
29
+
30
+ ```javascript
31
+ const cardanoScannerConfig = {
32
+ koiosUrl: <koios_url>,
33
+ timeout: <api_timeout>,
34
+ initialHeight: <cardano_initial_height>,
35
+ dataSource: dataSource,
36
+ }
37
+ cardanoScanner = new CardanoKoiosScanner(cardanoScannerConfig)
38
+ ```
@@ -0,0 +1,5 @@
1
+ export declare const SLOT_SHELLY_NUMBER = 1591566291;
2
+ export declare const RECONNECTION_MAX_DELAY: number;
3
+ export declare const RECONNECTION_INITIAL_DELAY: number;
4
+ export declare const RECONNECTION_MAX_ATTEMPTS: number;
5
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,aAAa,CAAC;AAC7C,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AACrD,eAAO,MAAM,0BAA0B,QAAY,CAAC;AACpD,eAAO,MAAM,yBAAyB,QAAW,CAAC"}
@@ -0,0 +1,5 @@
1
+ export const SLOT_SHELLY_NUMBER = 1591566291;
2
+ export const RECONNECTION_MAX_DELAY = 60 * 60 * 1000; // One hour
3
+ export const RECONNECTION_INITIAL_DELAY = 30 * 1000; // 30 seconds
4
+ export const RECONNECTION_MAX_ATTEMPTS = Infinity;
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxXQUFXO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxhQUFhO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBTTE9UX1NIRUxMWV9OVU1CRVIgPSAxNTkxNTY2MjkxO1xuZXhwb3J0IGNvbnN0IFJFQ09OTkVDVElPTl9NQVhfREVMQVkgPSA2MCAqIDYwICogMTAwMDsgLy8gT25lIGhvdXJcbmV4cG9ydCBjb25zdCBSRUNPTk5FQ1RJT05fSU5JVElBTF9ERUxBWSA9IDMwICogMTAwMDsgLy8gMzAgc2Vjb25kc1xuZXhwb3J0IGNvbnN0IFJFQ09OTkVDVElPTl9NQVhfQVRURU1QVFMgPSBJbmZpbml0eTtcbiJdfQ==
@@ -0,0 +1,10 @@
1
+ export * from './scanner/blockfrost';
2
+ export * from './interfaces/blockFrost';
3
+ export * from './interfaces/index';
4
+ export * from './interfaces/koios';
5
+ export * from './scanner/koios';
6
+ export * from './scanner/ogmios';
7
+ export * from './constants';
8
+ export * from './network/blockfrost';
9
+ export * from './network/koios';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ export * from './scanner/blockfrost';
2
+ export * from './interfaces/blockFrost';
3
+ export * from './interfaces/index';
4
+ export * from './interfaces/koios';
5
+ export * from './scanner/koios';
6
+ export * from './scanner/ogmios';
7
+ export * from './constants';
8
+ export * from './network/blockfrost';
9
+ export * from './network/koios';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zY2FubmVyL2Jsb2NrZnJvc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2Jsb2NrRnJvc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9rb2lvcyc7XG5leHBvcnQgKiBmcm9tICcuL3NjYW5uZXIva29pb3MnO1xuZXhwb3J0ICogZnJvbSAnLi9zY2FubmVyL29nbWlvcyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL25ldHdvcmsvYmxvY2tmcm9zdCc7XG5leHBvcnQgKiBmcm9tICcuL25ldHdvcmsva29pb3MnO1xuIl19
@@ -0,0 +1,9 @@
1
+ import { components } from '@blockfrost/openapi';
2
+ export declare class BlockFrostNullValueError extends Error {
3
+ constructor(msg: string);
4
+ }
5
+ export interface BlockFrostTransaction {
6
+ utxos: components['schemas']['tx_content_utxo'];
7
+ metadataCbor: components['schemas']['tx_content_metadata_cbor'];
8
+ }
9
+ //# sourceMappingURL=blockFrost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockFrost.d.ts","sourceRoot":"","sources":["../../lib/interfaces/blockFrost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,GAAG,EAAE,MAAM;CAGxB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAChD,YAAY,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,0BAA0B,CAAC,CAAC;CACjE"}
@@ -0,0 +1,6 @@
1
+ export class BlockFrostNullValueError extends Error {
2
+ constructor(msg) {
3
+ super('BlockFrostNullValueError: ' + msg);
4
+ }
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tGcm9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9pbnRlcmZhY2VzL2Jsb2NrRnJvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLHdCQUF5QixTQUFRLEtBQUs7SUFDakQsWUFBWSxHQUFXO1FBQ3JCLEtBQUssQ0FBQyw0QkFBNEIsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21wb25lbnRzIH0gZnJvbSAnQGJsb2NrZnJvc3Qvb3BlbmFwaSc7XG5cbmV4cG9ydCBjbGFzcyBCbG9ja0Zyb3N0TnVsbFZhbHVlRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1zZzogc3RyaW5nKSB7XG4gICAgc3VwZXIoJ0Jsb2NrRnJvc3ROdWxsVmFsdWVFcnJvcjogJyArIG1zZyk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBCbG9ja0Zyb3N0VHJhbnNhY3Rpb24ge1xuICB1dHhvczogY29tcG9uZW50c1snc2NoZW1hcyddWyd0eF9jb250ZW50X3V0eG8nXTtcbiAgbWV0YWRhdGFDYm9yOiBjb21wb25lbnRzWydzY2hlbWFzJ11bJ3R4X2NvbnRlbnRfbWV0YWRhdGFfY2JvciddO1xufVxuIl19
@@ -0,0 +1,19 @@
1
+ import { DataSource } from '@rosen-bridge/extended-typeorm';
2
+ interface OgmiosReconnectionConfig {
3
+ initialDelay?: number;
4
+ maxDelay?: number;
5
+ maxAttempts?: number;
6
+ }
7
+ interface CardanoOgmiosConfig {
8
+ nodeHostOrIp: string;
9
+ nodePort: number;
10
+ initialSlot: number;
11
+ initialHash: string;
12
+ maxTryBlock?: number;
13
+ dataSource: DataSource;
14
+ useTls?: boolean;
15
+ reconnectionConfig?: OgmiosReconnectionConfig;
16
+ suffix?: string;
17
+ }
18
+ export { OgmiosReconnectionConfig, CardanoOgmiosConfig };
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/interfaces/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,UAAU,wBAAwB;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,mBAAmB;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5cbmludGVyZmFjZSBPZ21pb3NSZWNvbm5lY3Rpb25Db25maWcge1xuICBpbml0aWFsRGVsYXk/OiBudW1iZXI7XG4gIG1heERlbGF5PzogbnVtYmVyO1xuICBtYXhBdHRlbXB0cz86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIENhcmRhbm9PZ21pb3NDb25maWcge1xuICBub2RlSG9zdE9ySXA6IHN0cmluZztcbiAgbm9kZVBvcnQ6IG51bWJlcjtcbiAgaW5pdGlhbFNsb3Q6IG51bWJlcjtcbiAgaW5pdGlhbEhhc2g6IHN0cmluZztcbiAgbWF4VHJ5QmxvY2s/OiBudW1iZXI7XG4gIGRhdGFTb3VyY2U6IERhdGFTb3VyY2U7XG4gIHVzZVRscz86IGJvb2xlYW47XG4gIHJlY29ubmVjdGlvbkNvbmZpZz86IE9nbWlvc1JlY29ubmVjdGlvbkNvbmZpZztcbiAgc3VmZml4Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgeyBPZ21pb3NSZWNvbm5lY3Rpb25Db25maWcsIENhcmRhbm9PZ21pb3NDb25maWcgfTtcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { TransactionJSON } from '@emurgo/cardano-serialization-lib-nodejs';
2
+ interface KoiosBlock {
3
+ hash: string;
4
+ block_height: number;
5
+ block_time: number;
6
+ tx_count: number;
7
+ }
8
+ interface KoiosBlockInfo {
9
+ hash: string;
10
+ block_height: number;
11
+ parent_hash: string;
12
+ child_hash?: string;
13
+ }
14
+ interface KoiosCborTx {
15
+ tx_hash: string;
16
+ block_hash: string;
17
+ block_height: number;
18
+ epoch_no: number;
19
+ absolute_slot: number;
20
+ tx_timestamp: number;
21
+ cbor: string;
22
+ valid_contract: boolean;
23
+ }
24
+ type KoiosTransaction = KoiosCborTx & TransactionJSON;
25
+ export { KoiosBlock, KoiosBlockInfo, KoiosTransaction, KoiosCborTx };
26
+ //# sourceMappingURL=koios.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"koios.d.ts","sourceRoot":"","sources":["../../lib/interfaces/koios.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,KAAK,gBAAgB,GAAG,WAAW,GAAG,eAAe,CAAC;AAEtD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia29pb3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvaW50ZXJmYWNlcy9rb2lvcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25KU09OIH0gZnJvbSAnQGVtdXJnby9jYXJkYW5vLXNlcmlhbGl6YXRpb24tbGliLW5vZGVqcyc7XG5cbmludGVyZmFjZSBLb2lvc0Jsb2NrIHtcbiAgaGFzaDogc3RyaW5nO1xuICBibG9ja19oZWlnaHQ6IG51bWJlcjtcbiAgYmxvY2tfdGltZTogbnVtYmVyO1xuICB0eF9jb3VudDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgS29pb3NCbG9ja0luZm8ge1xuICBoYXNoOiBzdHJpbmc7XG4gIGJsb2NrX2hlaWdodDogbnVtYmVyO1xuICBwYXJlbnRfaGFzaDogc3RyaW5nO1xuICBjaGlsZF9oYXNoPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgS29pb3NDYm9yVHgge1xuICB0eF9oYXNoOiBzdHJpbmc7XG4gIGJsb2NrX2hhc2g6IHN0cmluZztcbiAgYmxvY2tfaGVpZ2h0OiBudW1iZXI7XG4gIGVwb2NoX25vOiBudW1iZXI7XG4gIGFic29sdXRlX3Nsb3Q6IG51bWJlcjtcbiAgdHhfdGltZXN0YW1wOiBudW1iZXI7XG4gIGNib3I6IHN0cmluZztcbiAgdmFsaWRfY29udHJhY3Q6IGJvb2xlYW47XG59XG5cbnR5cGUgS29pb3NUcmFuc2FjdGlvbiA9IEtvaW9zQ2JvclR4ICYgVHJhbnNhY3Rpb25KU09OO1xuXG5leHBvcnQgeyBLb2lvc0Jsb2NrLCBLb2lvc0Jsb2NrSW5mbywgS29pb3NUcmFuc2FjdGlvbiwgS29pb3NDYm9yVHggfTtcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { AbstractNetworkConnector, Block } from '@rosen-bridge/scanner-interfaces';
2
+ import { BlockFrostTransaction } from '../interfaces/blockFrost';
3
+ export declare class BlockFrostNetwork extends AbstractNetworkConnector<BlockFrostTransaction> {
4
+ private client;
5
+ constructor(projectId: string, url?: string);
6
+ /**
7
+ * get block header from height
8
+ * @param height
9
+ */
10
+ getBlockAtHeight: (height: number) => Promise<Block>;
11
+ /**
12
+ * get current height for blockchain
13
+ */
14
+ getCurrentHeight: () => Promise<number>;
15
+ /**
16
+ * Try getting transactions information.
17
+ * @param txHashes
18
+ */
19
+ getTxInformation: (txId: string) => Promise<BlockFrostTransaction>;
20
+ /**
21
+ * fetch list of transaction for a specific block
22
+ * @param blockId
23
+ */
24
+ getBlockTxs: (blockId: string) => Promise<Array<BlockFrostTransaction>>;
25
+ }
26
+ //# sourceMappingURL=blockfrost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockfrost.d.ts","sourceRoot":"","sources":["../../lib/network/blockfrost.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,wBAAwB,EACxB,KAAK,EACN,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAEL,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAElC,qBAAa,iBAAkB,SAAQ,wBAAwB,CAAC,qBAAqB,CAAC;IACpF,OAAO,CAAC,MAAM,CAAgB;gBAElB,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM;IAS3C;;;OAGG;IACH,gBAAgB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,KAAK,CAAC,CAkBvD;IAEF;;OAEG;IACH,gBAAgB,QAAa,OAAO,CAAC,MAAM,CAAC,CAW1C;IAEF;;;OAGG;IACH,gBAAgB,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,qBAAqB,CAAC,CAQrE;IAEF;;;OAGG;IACH,WAAW,GACT,SAAS,MAAM,KACd,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAStC;CACH"}
@@ -0,0 +1,76 @@
1
+ import { BlockFrostAPI } from '@blockfrost/blockfrost-js';
2
+ import { AbstractNetworkConnector, } from '@rosen-bridge/scanner-interfaces';
3
+ import { BlockFrostNullValueError, } from '../interfaces/blockFrost';
4
+ export class BlockFrostNetwork extends AbstractNetworkConnector {
5
+ client;
6
+ constructor(projectId, url) {
7
+ super();
8
+ this.client = new BlockFrostAPI({
9
+ projectId: projectId,
10
+ customBackend: url,
11
+ network: 'mainnet',
12
+ });
13
+ }
14
+ /**
15
+ * get block header from height
16
+ * @param height
17
+ */
18
+ getBlockAtHeight = async (height) => {
19
+ return this.client
20
+ .blocks(height)
21
+ .then((res) => {
22
+ if (!res.height || !res.previous_block)
23
+ throw new BlockFrostNullValueError(`Block height or previous_block is null`);
24
+ return {
25
+ hash: res.hash,
26
+ height: res.height,
27
+ parentHash: res.previous_block,
28
+ timestamp: res.time,
29
+ };
30
+ })
31
+ .catch((exp) => {
32
+ throw exp;
33
+ });
34
+ };
35
+ /**
36
+ * get current height for blockchain
37
+ */
38
+ getCurrentHeight = async () => {
39
+ return this.client
40
+ .blocksLatest()
41
+ .then((block) => {
42
+ const height = block.height;
43
+ if (height)
44
+ return height;
45
+ throw new BlockFrostNullValueError('Height of last block is null');
46
+ })
47
+ .catch((exp) => {
48
+ throw exp;
49
+ });
50
+ };
51
+ /**
52
+ * Try getting transactions information.
53
+ * @param txHashes
54
+ */
55
+ getTxInformation = async (txId) => {
56
+ const txUtxos = await this.client.txsUtxos(txId);
57
+ const txMetadata = await this.client.txsMetadataCbor(txId);
58
+ return {
59
+ utxos: txUtxos,
60
+ metadataCbor: txMetadata,
61
+ };
62
+ };
63
+ /**
64
+ * fetch list of transaction for a specific block
65
+ * @param blockId
66
+ */
67
+ getBlockTxs = async (blockId) => {
68
+ const blockTxIds = await this.client.blocksTxsAll(blockId);
69
+ const blockTxs = [];
70
+ for (const txId of blockTxIds) {
71
+ blockTxs.push(await this.getTxInformation(txId));
72
+ }
73
+ return blockTxs;
74
+ };
75
+ }
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tmcm9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9uZXR3b3JrL2Jsb2NrZnJvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTFELE9BQU8sRUFDTCx3QkFBd0IsR0FFekIsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxQyxPQUFPLEVBQ0wsd0JBQXdCLEdBRXpCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsTUFBTSxPQUFPLGlCQUFrQixTQUFRLHdCQUErQztJQUM1RSxNQUFNLENBQWdCO0lBRTlCLFlBQVksU0FBaUIsRUFBRSxHQUFZO1FBQ3pDLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQztZQUM5QixTQUFTLEVBQUUsU0FBUztZQUNwQixhQUFhLEVBQUUsR0FBRztZQUNsQixPQUFPLEVBQUUsU0FBUztTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLEdBQUcsS0FBSyxFQUFFLE1BQWMsRUFBa0IsRUFBRTtRQUMxRCxPQUFPLElBQUksQ0FBQyxNQUFNO2FBQ2YsTUFBTSxDQUFDLE1BQU0sQ0FBQzthQUNkLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYztnQkFDcEMsTUFBTSxJQUFJLHdCQUF3QixDQUNoQyx3Q0FBd0MsQ0FDekMsQ0FBQztZQUNKLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNkLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtnQkFDbEIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxjQUFjO2dCQUM5QixTQUFTLEVBQUUsR0FBRyxDQUFDLElBQUk7YUFDcEIsQ0FBQztRQUNKLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2IsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsZ0JBQWdCLEdBQUcsS0FBSyxJQUFxQixFQUFFO1FBQzdDLE9BQU8sSUFBSSxDQUFDLE1BQU07YUFDZixZQUFZLEVBQUU7YUFDZCxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNkLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDNUIsSUFBSSxNQUFNO2dCQUFFLE9BQU8sTUFBTSxDQUFDO1lBQzFCLE1BQU0sSUFBSSx3QkFBd0IsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2IsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILGdCQUFnQixHQUFHLEtBQUssRUFBRSxJQUFZLEVBQWtDLEVBQUU7UUFDeEUsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNELE9BQU87WUFDTCxLQUFLLEVBQUUsT0FBTztZQUNkLFlBQVksRUFBRSxVQUFVO1NBQ3pCLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSCxXQUFXLEdBQUcsS0FBSyxFQUNqQixPQUFlLEVBQ3dCLEVBQUU7UUFDekMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUzRCxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxNQUFNLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUM5QixRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmxvY2tGcm9zdEFQSSB9IGZyb20gJ0BibG9ja2Zyb3N0L2Jsb2NrZnJvc3QtanMnO1xuXG5pbXBvcnQge1xuICBBYnN0cmFjdE5ldHdvcmtDb25uZWN0b3IsXG4gIEJsb2NrLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXItaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7XG4gIEJsb2NrRnJvc3ROdWxsVmFsdWVFcnJvcixcbiAgQmxvY2tGcm9zdFRyYW5zYWN0aW9uLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzL2Jsb2NrRnJvc3QnO1xuXG5leHBvcnQgY2xhc3MgQmxvY2tGcm9zdE5ldHdvcmsgZXh0ZW5kcyBBYnN0cmFjdE5ldHdvcmtDb25uZWN0b3I8QmxvY2tGcm9zdFRyYW5zYWN0aW9uPiB7XG4gIHByaXZhdGUgY2xpZW50OiBCbG9ja0Zyb3N0QVBJO1xuXG4gIGNvbnN0cnVjdG9yKHByb2plY3RJZDogc3RyaW5nLCB1cmw/OiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY2xpZW50ID0gbmV3IEJsb2NrRnJvc3RBUEkoe1xuICAgICAgcHJvamVjdElkOiBwcm9qZWN0SWQsXG4gICAgICBjdXN0b21CYWNrZW5kOiB1cmwsXG4gICAgICBuZXR3b3JrOiAnbWFpbm5ldCcsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IGJsb2NrIGhlYWRlciBmcm9tIGhlaWdodFxuICAgKiBAcGFyYW0gaGVpZ2h0XG4gICAqL1xuICBnZXRCbG9ja0F0SGVpZ2h0ID0gYXN5bmMgKGhlaWdodDogbnVtYmVyKTogUHJvbWlzZTxCbG9jaz4gPT4ge1xuICAgIHJldHVybiB0aGlzLmNsaWVudFxuICAgICAgLmJsb2NrcyhoZWlnaHQpXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGlmICghcmVzLmhlaWdodCB8fCAhcmVzLnByZXZpb3VzX2Jsb2NrKVxuICAgICAgICAgIHRocm93IG5ldyBCbG9ja0Zyb3N0TnVsbFZhbHVlRXJyb3IoXG4gICAgICAgICAgICBgQmxvY2sgaGVpZ2h0IG9yIHByZXZpb3VzX2Jsb2NrIGlzIG51bGxgLFxuICAgICAgICAgICk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGFzaDogcmVzLmhhc2gsXG4gICAgICAgICAgaGVpZ2h0OiByZXMuaGVpZ2h0LFxuICAgICAgICAgIHBhcmVudEhhc2g6IHJlcy5wcmV2aW91c19ibG9jayxcbiAgICAgICAgICB0aW1lc3RhbXA6IHJlcy50aW1lLFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXhwKSA9PiB7XG4gICAgICAgIHRocm93IGV4cDtcbiAgICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBnZXQgY3VycmVudCBoZWlnaHQgZm9yIGJsb2NrY2hhaW5cbiAgICovXG4gIGdldEN1cnJlbnRIZWlnaHQgPSBhc3luYyAoKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5jbGllbnRcbiAgICAgIC5ibG9ja3NMYXRlc3QoKVxuICAgICAgLnRoZW4oKGJsb2NrKSA9PiB7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGJsb2NrLmhlaWdodDtcbiAgICAgICAgaWYgKGhlaWdodCkgcmV0dXJuIGhlaWdodDtcbiAgICAgICAgdGhyb3cgbmV3IEJsb2NrRnJvc3ROdWxsVmFsdWVFcnJvcignSGVpZ2h0IG9mIGxhc3QgYmxvY2sgaXMgbnVsbCcpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXhwKSA9PiB7XG4gICAgICAgIHRocm93IGV4cDtcbiAgICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUcnkgZ2V0dGluZyB0cmFuc2FjdGlvbnMgaW5mb3JtYXRpb24uXG4gICAqIEBwYXJhbSB0eEhhc2hlc1xuICAgKi9cbiAgZ2V0VHhJbmZvcm1hdGlvbiA9IGFzeW5jICh0eElkOiBzdHJpbmcpOiBQcm9taXNlPEJsb2NrRnJvc3RUcmFuc2FjdGlvbj4gPT4ge1xuICAgIGNvbnN0IHR4VXR4b3MgPSBhd2FpdCB0aGlzLmNsaWVudC50eHNVdHhvcyh0eElkKTtcbiAgICBjb25zdCB0eE1ldGFkYXRhID0gYXdhaXQgdGhpcy5jbGllbnQudHhzTWV0YWRhdGFDYm9yKHR4SWQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHV0eG9zOiB0eFV0eG9zLFxuICAgICAgbWV0YWRhdGFDYm9yOiB0eE1ldGFkYXRhLFxuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIGZldGNoIGxpc3Qgb2YgdHJhbnNhY3Rpb24gZm9yIGEgc3BlY2lmaWMgYmxvY2tcbiAgICogQHBhcmFtIGJsb2NrSWRcbiAgICovXG4gIGdldEJsb2NrVHhzID0gYXN5bmMgKFxuICAgIGJsb2NrSWQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxBcnJheTxCbG9ja0Zyb3N0VHJhbnNhY3Rpb24+PiA9PiB7XG4gICAgY29uc3QgYmxvY2tUeElkcyA9IGF3YWl0IHRoaXMuY2xpZW50LmJsb2Nrc1R4c0FsbChibG9ja0lkKTtcblxuICAgIGNvbnN0IGJsb2NrVHhzID0gW107XG4gICAgZm9yIChjb25zdCB0eElkIG9mIGJsb2NrVHhJZHMpIHtcbiAgICAgIGJsb2NrVHhzLnB1c2goYXdhaXQgdGhpcy5nZXRUeEluZm9ybWF0aW9uKHR4SWQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmxvY2tUeHM7XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { AbstractNetworkConnector, Block } from '@rosen-bridge/scanner-interfaces';
2
+ import { KoiosTransaction } from '../interfaces/koios';
3
+ export declare class KoiosNetwork extends AbstractNetworkConnector<KoiosTransaction> {
4
+ private readonly url;
5
+ private readonly timeout;
6
+ private koios;
7
+ constructor(url: string, timeout: number, authToken?: string);
8
+ /**
9
+ * Returns block at height
10
+ * @param height
11
+ * @returns Block
12
+ */
13
+ getBlockAtHeight: (height: number) => Promise<Block>;
14
+ /**
15
+ * Returns current network height
16
+ * @returns current height
17
+ */
18
+ getCurrentHeight: () => Promise<number>;
19
+ /**
20
+ * Return transactions in a block with specified hash
21
+ * @param blockHash
22
+ * @returns array of KoiosTransaction
23
+ */
24
+ getBlockTxs: (blockHash: string) => Promise<Array<KoiosTransaction>>;
25
+ }
26
+ //# sourceMappingURL=koios.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"koios.d.ts","sourceRoot":"","sources":["../../lib/network/koios.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,wBAAwB,EACxB,KAAK,EACN,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAA2B,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,qBAAa,YAAa,SAAQ,wBAAwB,CAAC,gBAAgB,CAAC;IAC1E,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,KAAK,CAAQ;gBAET,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM;IAe5D;;;;OAIG;IACH,gBAAgB,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC,KAAK,CAAC,CAuBjD;IAEF;;;OAGG;IACH,gBAAgB,QAAO,OAAO,CAAC,MAAM,CAAC,CASpC;IAEF;;;;OAIG;IACH,WAAW,GAAI,WAAW,MAAM,KAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAmBjE;CACH"}
@@ -0,0 +1,90 @@
1
+ import { Transaction } from '@emurgo/cardano-serialization-lib-nodejs';
2
+ import JsonBigint from '@rosen-bridge/json-bigint';
3
+ import { AbstractNetworkConnector, } from '@rosen-bridge/scanner-interfaces';
4
+ import axios from '@rosen-clients/rate-limited-axios';
5
+ export class KoiosNetwork extends AbstractNetworkConnector {
6
+ url;
7
+ timeout;
8
+ koios;
9
+ constructor(url, timeout, authToken) {
10
+ super();
11
+ this.url = url;
12
+ this.timeout = timeout;
13
+ this.koios = axios.create({
14
+ baseURL: this.url,
15
+ timeout: this.timeout,
16
+ headers: { 'Content-Type': 'application/json' },
17
+ });
18
+ if (authToken) {
19
+ this.koios.defaults.headers.common['Authorization'] =
20
+ `Bearer ${authToken}`;
21
+ }
22
+ }
23
+ /**
24
+ * Returns block at height
25
+ * @param height
26
+ * @returns Block
27
+ */
28
+ getBlockAtHeight = (height) => {
29
+ return this.koios
30
+ .get('/blocks', {
31
+ params: {
32
+ block_height: `lte.${height}`,
33
+ limit: 2,
34
+ select: 'hash,block_height,block_time,tx_count',
35
+ },
36
+ })
37
+ .then((res) => {
38
+ const block = res.data[0];
39
+ const parentBlock = res.data[1];
40
+ return {
41
+ hash: block.hash,
42
+ height: block.block_height,
43
+ parentHash: parentBlock.hash,
44
+ timestamp: block.block_time,
45
+ txCount: block.tx_count,
46
+ };
47
+ })
48
+ .catch((exp) => {
49
+ throw exp;
50
+ });
51
+ };
52
+ /**
53
+ * Returns current network height
54
+ * @returns current height
55
+ */
56
+ getCurrentHeight = () => {
57
+ return this.koios
58
+ .get('/blocks', {
59
+ params: { offset: 0, limit: 1, select: 'hash,block_height' },
60
+ })
61
+ .then((res) => res.data[0].block_height)
62
+ .catch((exp) => {
63
+ throw exp;
64
+ });
65
+ };
66
+ /**
67
+ * Return transactions in a block with specified hash
68
+ * @param blockHash
69
+ * @returns array of KoiosTransaction
70
+ */
71
+ getBlockTxs = (blockHash) => {
72
+ return this.koios
73
+ .post('/block_tx_cbor', {
74
+ _block_hashes: [blockHash],
75
+ })
76
+ .then((res) => {
77
+ return res.data.map((tx) => {
78
+ const serializedTx = Transaction.from_bytes(new Uint8Array(Buffer.from(tx.cbor, 'hex')));
79
+ return {
80
+ ...tx,
81
+ ...JsonBigint.parse(serializedTx.to_json()),
82
+ };
83
+ });
84
+ })
85
+ .catch((exp) => {
86
+ throw exp;
87
+ });
88
+ };
89
+ }
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia29pb3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvbmV0d29yay9rb2lvcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFdkUsT0FBTyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUNMLHdCQUF3QixHQUV6QixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sS0FBZ0IsTUFBTSxtQ0FBbUMsQ0FBQztBQUlqRSxNQUFNLE9BQU8sWUFBYSxTQUFRLHdCQUEwQztJQUN6RCxHQUFHLENBQVM7SUFDWixPQUFPLENBQVM7SUFDekIsS0FBSyxDQUFRO0lBRXJCLFlBQVksR0FBVyxFQUFFLE9BQWUsRUFBRSxTQUFrQjtRQUMxRCxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3hCLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRztZQUNqQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsT0FBTyxFQUFFLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFO1NBQ2hELENBQUMsQ0FBQztRQUNILElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztnQkFDakQsVUFBVSxTQUFTLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsR0FBRyxDQUFDLE1BQWMsRUFBa0IsRUFBRTtRQUNwRCxPQUFPLElBQUksQ0FBQyxLQUFLO2FBQ2QsR0FBRyxDQUFvQixTQUFTLEVBQUU7WUFDakMsTUFBTSxFQUFFO2dCQUNOLFlBQVksRUFBRSxPQUFPLE1BQU0sRUFBRTtnQkFDN0IsS0FBSyxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxFQUFFLHVDQUF1QzthQUNoRDtTQUNGLENBQUM7YUFDRCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNaLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDMUIsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQyxPQUFPO2dCQUNMLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQkFDaEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxZQUFZO2dCQUMxQixVQUFVLEVBQUUsV0FBVyxDQUFDLElBQUk7Z0JBQzVCLFNBQVMsRUFBRSxLQUFLLENBQUMsVUFBVTtnQkFDM0IsT0FBTyxFQUFFLEtBQUssQ0FBQyxRQUFRO2FBQ3hCLENBQUM7UUFDSixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNiLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSCxnQkFBZ0IsR0FBRyxHQUFvQixFQUFFO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEtBQUs7YUFDZCxHQUFHLENBQW9CLFNBQVMsRUFBRTtZQUNqQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFO1NBQzdELENBQUM7YUFDRCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO2FBQ3ZDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2IsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQztJQUVGOzs7O09BSUc7SUFDSCxXQUFXLEdBQUcsQ0FBQyxTQUFpQixFQUFvQyxFQUFFO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLEtBQUs7YUFDZCxJQUFJLENBQXFCLGdCQUFnQixFQUFFO1lBQzFDLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQztTQUMzQixDQUFDO2FBQ0QsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDWixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7Z0JBQ3pCLE1BQU0sWUFBWSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQ3pDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUM1QyxDQUFDO2dCQUNGLE9BQU87b0JBQ0wsR0FBRyxFQUFFO29CQUNMLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQzVDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2IsTUFBTSxHQUFHLENBQUM7UUFDWixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICdAZW11cmdvL2NhcmRhbm8tc2VyaWFsaXphdGlvbi1saWItbm9kZWpzJztcblxuaW1wb3J0IEpzb25CaWdpbnQgZnJvbSAnQHJvc2VuLWJyaWRnZS9qc29uLWJpZ2ludCc7XG5pbXBvcnQge1xuICBBYnN0cmFjdE5ldHdvcmtDb25uZWN0b3IsXG4gIEJsb2NrLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXItaW50ZXJmYWNlcyc7XG5pbXBvcnQgYXhpb3MsIHsgQXhpb3MgfSBmcm9tICdAcm9zZW4tY2xpZW50cy9yYXRlLWxpbWl0ZWQtYXhpb3MnO1xuXG5pbXBvcnQgeyBLb2lvc0Jsb2NrLCBLb2lvc0Nib3JUeCwgS29pb3NUcmFuc2FjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMva29pb3MnO1xuXG5leHBvcnQgY2xhc3MgS29pb3NOZXR3b3JrIGV4dGVuZHMgQWJzdHJhY3ROZXR3b3JrQ29ubmVjdG9yPEtvaW9zVHJhbnNhY3Rpb24+IHtcbiAgcHJpdmF0ZSByZWFkb25seSB1cmw6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSB0aW1lb3V0OiBudW1iZXI7XG4gIHByaXZhdGUga29pb3M6IEF4aW9zO1xuXG4gIGNvbnN0cnVjdG9yKHVybDogc3RyaW5nLCB0aW1lb3V0OiBudW1iZXIsIGF1dGhUb2tlbj86IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy51cmwgPSB1cmw7XG4gICAgdGhpcy50aW1lb3V0ID0gdGltZW91dDtcbiAgICB0aGlzLmtvaW9zID0gYXhpb3MuY3JlYXRlKHtcbiAgICAgIGJhc2VVUkw6IHRoaXMudXJsLFxuICAgICAgdGltZW91dDogdGhpcy50aW1lb3V0LFxuICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgfSk7XG4gICAgaWYgKGF1dGhUb2tlbikge1xuICAgICAgdGhpcy5rb2lvcy5kZWZhdWx0cy5oZWFkZXJzLmNvbW1vblsnQXV0aG9yaXphdGlvbiddID1cbiAgICAgICAgYEJlYXJlciAke2F1dGhUb2tlbn1gO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGJsb2NrIGF0IGhlaWdodFxuICAgKiBAcGFyYW0gaGVpZ2h0XG4gICAqIEByZXR1cm5zIEJsb2NrXG4gICAqL1xuICBnZXRCbG9ja0F0SGVpZ2h0ID0gKGhlaWdodDogbnVtYmVyKTogUHJvbWlzZTxCbG9jaz4gPT4ge1xuICAgIHJldHVybiB0aGlzLmtvaW9zXG4gICAgICAuZ2V0PEFycmF5PEtvaW9zQmxvY2s+PignL2Jsb2NrcycsIHtcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgYmxvY2tfaGVpZ2h0OiBgbHRlLiR7aGVpZ2h0fWAsXG4gICAgICAgICAgbGltaXQ6IDIsXG4gICAgICAgICAgc2VsZWN0OiAnaGFzaCxibG9ja19oZWlnaHQsYmxvY2tfdGltZSx0eF9jb3VudCcsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBibG9jayA9IHJlcy5kYXRhWzBdO1xuICAgICAgICBjb25zdCBwYXJlbnRCbG9jayA9IHJlcy5kYXRhWzFdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhhc2g6IGJsb2NrLmhhc2gsXG4gICAgICAgICAgaGVpZ2h0OiBibG9jay5ibG9ja19oZWlnaHQsXG4gICAgICAgICAgcGFyZW50SGFzaDogcGFyZW50QmxvY2suaGFzaCxcbiAgICAgICAgICB0aW1lc3RhbXA6IGJsb2NrLmJsb2NrX3RpbWUsXG4gICAgICAgICAgdHhDb3VudDogYmxvY2sudHhfY291bnQsXG4gICAgICAgIH07XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChleHApID0+IHtcbiAgICAgICAgdGhyb3cgZXhwO1xuICAgICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgY3VycmVudCBuZXR3b3JrIGhlaWdodFxuICAgKiBAcmV0dXJucyBjdXJyZW50IGhlaWdodFxuICAgKi9cbiAgZ2V0Q3VycmVudEhlaWdodCA9ICgpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICAgIHJldHVybiB0aGlzLmtvaW9zXG4gICAgICAuZ2V0PEFycmF5PEtvaW9zQmxvY2s+PignL2Jsb2NrcycsIHtcbiAgICAgICAgcGFyYW1zOiB7IG9mZnNldDogMCwgbGltaXQ6IDEsIHNlbGVjdDogJ2hhc2gsYmxvY2tfaGVpZ2h0JyB9LFxuICAgICAgfSlcbiAgICAgIC50aGVuKChyZXMpID0+IHJlcy5kYXRhWzBdLmJsb2NrX2hlaWdodClcbiAgICAgIC5jYXRjaCgoZXhwKSA9PiB7XG4gICAgICAgIHRocm93IGV4cDtcbiAgICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdHJhbnNhY3Rpb25zIGluIGEgYmxvY2sgd2l0aCBzcGVjaWZpZWQgaGFzaFxuICAgKiBAcGFyYW0gYmxvY2tIYXNoXG4gICAqIEByZXR1cm5zIGFycmF5IG9mIEtvaW9zVHJhbnNhY3Rpb25cbiAgICovXG4gIGdldEJsb2NrVHhzID0gKGJsb2NrSGFzaDogc3RyaW5nKTogUHJvbWlzZTxBcnJheTxLb2lvc1RyYW5zYWN0aW9uPj4gPT4ge1xuICAgIHJldHVybiB0aGlzLmtvaW9zXG4gICAgICAucG9zdDxBcnJheTxLb2lvc0Nib3JUeD4+KCcvYmxvY2tfdHhfY2JvcicsIHtcbiAgICAgICAgX2Jsb2NrX2hhc2hlczogW2Jsb2NrSGFzaF0sXG4gICAgICB9KVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICByZXR1cm4gcmVzLmRhdGEubWFwKCh0eCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHNlcmlhbGl6ZWRUeCA9IFRyYW5zYWN0aW9uLmZyb21fYnl0ZXMoXG4gICAgICAgICAgICBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbSh0eC5jYm9yLCAnaGV4JykpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLnR4LFxuICAgICAgICAgICAgLi4uSnNvbkJpZ2ludC5wYXJzZShzZXJpYWxpemVkVHgudG9fanNvbigpKSxcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGV4cCkgPT4ge1xuICAgICAgICB0aHJvdyBleHA7XG4gICAgICB9KTtcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { GeneralScanner, ScannerConfig } from '@rosen-bridge/abstract-scanner';
2
+ import { BlockFrostTransaction } from '../interfaces/blockFrost';
3
+ declare class CardanoBlockFrostScanner extends GeneralScanner<BlockFrostTransaction> {
4
+ constructor(config: ScannerConfig<BlockFrostTransaction>);
5
+ }
6
+ export { CardanoBlockFrostScanner };
7
+ //# sourceMappingURL=blockfrost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockfrost.d.ts","sourceRoot":"","sources":["../../lib/scanner/blockfrost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,cAAM,wBAAyB,SAAQ,cAAc,CAAC,qBAAqB,CAAC;gBAC9D,MAAM,EAAE,aAAa,CAAC,qBAAqB,CAAC;CAYzD;AACD,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { GeneralScanner } from '@rosen-bridge/abstract-scanner';
2
+ class CardanoBlockFrostScanner extends GeneralScanner {
3
+ constructor(config) {
4
+ super('cardano', config.dataSource, config.initialHeight, config.network, config.blockRetrieveGap, config.logger, config.suffix, config.heightGap);
5
+ }
6
+ }
7
+ export { CardanoBlockFrostScanner };
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tmcm9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9zY2FubmVyL2Jsb2NrZnJvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBaUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQUkvRSxNQUFNLHdCQUF5QixTQUFRLGNBQXFDO0lBQzFFLFlBQVksTUFBNEM7UUFDdEQsS0FBSyxDQUNILFNBQVMsRUFDVCxNQUFNLENBQUMsVUFBVSxFQUNqQixNQUFNLENBQUMsYUFBYSxFQUNwQixNQUFNLENBQUMsT0FBTyxFQUNkLE1BQU0sQ0FBQyxnQkFBZ0IsRUFDdkIsTUFBTSxDQUFDLE1BQU0sRUFDYixNQUFNLENBQUMsTUFBTSxFQUNiLE1BQU0sQ0FBQyxTQUFTLENBQ2pCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFDRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdlbmVyYWxTY2FubmVyLCBTY2FubmVyQ29uZmlnIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1zY2FubmVyJztcblxuaW1wb3J0IHsgQmxvY2tGcm9zdFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ibG9ja0Zyb3N0JztcblxuY2xhc3MgQ2FyZGFub0Jsb2NrRnJvc3RTY2FubmVyIGV4dGVuZHMgR2VuZXJhbFNjYW5uZXI8QmxvY2tGcm9zdFRyYW5zYWN0aW9uPiB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogU2Nhbm5lckNvbmZpZzxCbG9ja0Zyb3N0VHJhbnNhY3Rpb24+KSB7XG4gICAgc3VwZXIoXG4gICAgICAnY2FyZGFubycsXG4gICAgICBjb25maWcuZGF0YVNvdXJjZSxcbiAgICAgIGNvbmZpZy5pbml0aWFsSGVpZ2h0LFxuICAgICAgY29uZmlnLm5ldHdvcmssXG4gICAgICBjb25maWcuYmxvY2tSZXRyaWV2ZUdhcCxcbiAgICAgIGNvbmZpZy5sb2dnZXIsXG4gICAgICBjb25maWcuc3VmZml4LFxuICAgICAgY29uZmlnLmhlaWdodEdhcCxcbiAgICApO1xuICB9XG59XG5leHBvcnQgeyBDYXJkYW5vQmxvY2tGcm9zdFNjYW5uZXIgfTtcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { GeneralScanner, ScannerConfig } from '@rosen-bridge/abstract-scanner';
2
+ import { KoiosTransaction } from '../interfaces/koios';
3
+ declare class CardanoKoiosScanner extends GeneralScanner<KoiosTransaction> {
4
+ constructor(config: ScannerConfig<KoiosTransaction>);
5
+ }
6
+ export { CardanoKoiosScanner };
7
+ //# sourceMappingURL=koios.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"koios.d.ts","sourceRoot":"","sources":["../../lib/scanner/koios.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,cAAM,mBAAoB,SAAQ,cAAc,CAAC,gBAAgB,CAAC;gBACpD,MAAM,EAAE,aAAa,CAAC,gBAAgB,CAAC;CAYpD;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { GeneralScanner } from '@rosen-bridge/abstract-scanner';
2
+ class CardanoKoiosScanner extends GeneralScanner {
3
+ constructor(config) {
4
+ super('cardano', config.dataSource, config.initialHeight, config.network, config.blockRetrieveGap, config.logger, config.suffix, config.heightGap);
5
+ }
6
+ }
7
+ export { CardanoKoiosScanner };
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia29pb3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvc2Nhbm5lci9rb2lvcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBSS9FLE1BQU0sbUJBQW9CLFNBQVEsY0FBZ0M7SUFDaEUsWUFBWSxNQUF1QztRQUNqRCxLQUFLLENBQ0gsU0FBUyxFQUNULE1BQU0sQ0FBQyxVQUFVLEVBQ2pCLE1BQU0sQ0FBQyxhQUFhLEVBQ3BCLE1BQU0sQ0FBQyxPQUFPLEVBQ2QsTUFBTSxDQUFDLGdCQUFnQixFQUN2QixNQUFNLENBQUMsTUFBTSxFQUNiLE1BQU0sQ0FBQyxNQUFNLEVBQ2IsTUFBTSxDQUFDLFNBQVMsQ0FDakIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR2VuZXJhbFNjYW5uZXIsIFNjYW5uZXJDb25maWcgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LXNjYW5uZXInO1xuXG5pbXBvcnQgeyBLb2lvc1RyYW5zYWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9rb2lvcyc7XG5cbmNsYXNzIENhcmRhbm9Lb2lvc1NjYW5uZXIgZXh0ZW5kcyBHZW5lcmFsU2Nhbm5lcjxLb2lvc1RyYW5zYWN0aW9uPiB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogU2Nhbm5lckNvbmZpZzxLb2lvc1RyYW5zYWN0aW9uPikge1xuICAgIHN1cGVyKFxuICAgICAgJ2NhcmRhbm8nLFxuICAgICAgY29uZmlnLmRhdGFTb3VyY2UsXG4gICAgICBjb25maWcuaW5pdGlhbEhlaWdodCxcbiAgICAgIGNvbmZpZy5uZXR3b3JrLFxuICAgICAgY29uZmlnLmJsb2NrUmV0cmlldmVHYXAsXG4gICAgICBjb25maWcubG9nZ2VyLFxuICAgICAgY29uZmlnLnN1ZmZpeCxcbiAgICAgIGNvbmZpZy5oZWlnaHRHYXAsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgeyBDYXJkYW5vS29pb3NTY2FubmVyIH07XG4iXX0=