@my-packages-changeit/bitcoin-runes-observation-extractor 3.0.6

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 (31) hide show
  1. package/CHANGELOG.md +232 -0
  2. package/README.md +24 -0
  3. package/dist/abstractRunesProtocolNetwork.d.ts +13 -0
  4. package/dist/abstractRunesProtocolNetwork.d.ts.map +1 -0
  5. package/dist/abstractRunesProtocolNetwork.js +8 -0
  6. package/dist/bitcoinRunesAbstractObservationExtractor.d.ts +22 -0
  7. package/dist/bitcoinRunesAbstractObservationExtractor.d.ts.map +1 -0
  8. package/dist/bitcoinRunesAbstractObservationExtractor.js +81 -0
  9. package/dist/bitcoinRunesEsploraObservationExtractor.d.ts +18 -0
  10. package/dist/bitcoinRunesEsploraObservationExtractor.d.ts.map +1 -0
  11. package/dist/bitcoinRunesEsploraObservationExtractor.js +16 -0
  12. package/dist/bitcoinRunesRpcObservationExtractor.d.ts +18 -0
  13. package/dist/bitcoinRunesRpcObservationExtractor.d.ts.map +1 -0
  14. package/dist/bitcoinRunesRpcObservationExtractor.js +16 -0
  15. package/dist/constants.d.ts +2 -0
  16. package/dist/constants.d.ts.map +1 -0
  17. package/dist/constants.js +2 -0
  18. package/dist/index.d.ts +7 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +7 -0
  21. package/dist/ordiscanRunesProtocolNetwork.d.ts +17 -0
  22. package/dist/ordiscanRunesProtocolNetwork.d.ts.map +1 -0
  23. package/dist/ordiscanRunesProtocolNetwork.js +53 -0
  24. package/dist/tsconfig.tsbuildinfo +1 -0
  25. package/dist/types.d.ts +57 -0
  26. package/dist/types.d.ts.map +1 -0
  27. package/dist/types.js +2 -0
  28. package/dist/unisatRunesProtocolNetwork.d.ts +18 -0
  29. package/dist/unisatRunesProtocolNetwork.d.ts.map +1 -0
  30. package/dist/unisatRunesProtocolNetwork.js +78 -0
  31. package/package.json +50 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,232 @@
1
+ # @rosen-bridge/bitcoin-runes-observation-extractor
2
+
3
+ ## 3.0.6
4
+
5
+ ### Patch Changes
6
+
7
+ - Update dependencies
8
+ - @rosen-bridge/abstract-observation-extractor@1.0.10
9
+ - @rosen-bridge/bitcoin-scanner@1.1.3
10
+
11
+ ## 3.0.5
12
+
13
+ ### Patch Changes
14
+
15
+ - Update dependencies
16
+ - @rosen-bridge/abstract-observation-extractor@1.0.9
17
+ - @rosen-bridge/bitcoin-scanner@1.1.2
18
+ - @rosen-bridge/rosen-extractor@12.1.1
19
+ - @rosen-bridge/tokens@6.0.2
20
+ - @rosen-clients/rate-limited-axios@2.0.1
21
+
22
+ ## 3.0.4
23
+
24
+ ### Patch Changes
25
+
26
+ - Update dependencies
27
+ - @rosen-bridge/abstract-observation-extractor@1.0.8
28
+ - @rosen-bridge/bitcoin-scanner@1.1.1
29
+
30
+ ## 3.0.3
31
+
32
+ ### Patch Changes
33
+
34
+ - Update dependencies
35
+ - @rosen-bridge/abstract-observation-extractor@1.0.7
36
+ - @rosen-bridge/bitcoin-scanner@1.1.0
37
+ - @rosen-bridge/scanner-interfaces@1.0.0
38
+
39
+ ## 3.0.2
40
+
41
+ ### Patch Changes
42
+
43
+ - Fix bug where pagination was ignored while fetching address or transaction runes
44
+
45
+ ## 3.0.1
46
+
47
+ ### Patch Changes
48
+
49
+ - Update dependencies
50
+ - @rosen-bridge/abstract-observation-extractor@1.0.6
51
+ - @rosen-bridge/rosen-extractor@12.0.2
52
+
53
+ ## 3.0.0
54
+
55
+ ### Major Changes
56
+
57
+ - Any service that uses this packages requires to initialize the `AddressManager`, provided by `@rosen-bridge/address-manager`, so the Rosen extractor becomes functional
58
+
59
+ ### Patch Changes
60
+
61
+ - Update dependencies
62
+ - @rosen-bridge/abstract-observation-extractor@1.0.5
63
+ - @rosen-bridge/bitcoin-scanner@1.0.4
64
+ - @rosen-bridge/extended-typeorm@1.1.0
65
+ - @rosen-bridge/rosen-extractor@12.0.1
66
+ - @rosen-bridge/tokens@6.0.1
67
+
68
+ ## 2.0.4
69
+
70
+ ### Patch Changes
71
+
72
+ - Update dependencies
73
+ - @rosen-bridge/abstract-observation-extractor@1.0.4
74
+ - @rosen-bridge/bitcoin-scanner@1.0.3
75
+ - @rosen-clients/rate-limited-axios@2.0.0
76
+
77
+ ## 2.0.3
78
+
79
+ ### Patch Changes
80
+
81
+ - Update dependencies
82
+ - @rosen-bridge/abstract-observation-extractor@1.0.3
83
+ - @rosen-bridge/bitcoin-scanner@1.0.2
84
+ - @rosen-bridge/rosen-extractor@11.3.0
85
+
86
+ ## 2.0.2
87
+
88
+ ### Patch Changes
89
+
90
+ - Update dependencies:
91
+ - @rosen-bridge/rosen-extractor@11.2.2
92
+ - @rosen-bridge/tokens@6.0.0
93
+ - @rosen-bridge/abstract-observation-extractor@1.0.2
94
+
95
+ ## 2.0.1
96
+
97
+ ### Patch Changes
98
+
99
+ - Update dependencies
100
+ - @rosen-bridge/abstract-observation-extractor@1.0.1
101
+ - @rosen-bridge/bitcoin-scanner@1.0.1
102
+ - @rosen-bridge/rosen-extractor@11.2.1
103
+ - @rosen-bridge/scanner-interfaces@0.2.2
104
+ - @rosen-bridge/tokens@5.0.1
105
+
106
+ ## 2.0.0
107
+
108
+ ### Major Changes
109
+
110
+ - Update AbstractExtractor interface; use `BlockInfo` in `processTransactions` and rename `initializeBoxes` to `initializeData`
111
+
112
+ ### Patch Changes
113
+
114
+ - Update dependencies
115
+ - @rosen-bridge/abstract-logger@4.0.0
116
+ - @rosen-bridge/abstract-observation-extractor@1.0.0
117
+ - @rosen-bridge/bitcoin-scanner@1.0.0
118
+ - @rosen-bridge/rosen-extractor@11.2.0
119
+ - @rosen-bridge/tokens@5.0.0
120
+
121
+ ## 1.1.1
122
+
123
+ ### Patch Changes
124
+
125
+ - Update dependencies
126
+ - @rosen-bridge/abstract-observation-extractor@0.2.3
127
+ - @rosen-bridge/bitcoin-scanner@0.2.3
128
+ - @rosen-bridge/rosen-extractor@11.1.1
129
+
130
+ ## 1.1.0
131
+
132
+ ### Minor Changes
133
+
134
+ - Add `storeRawData` option to store observations raw-data into the database
135
+
136
+ ### Patch Changes
137
+
138
+ - Update Dependencies
139
+ - @rosen-bridge/abstract-observation-extractor@0.2.2
140
+ - @rosen-bridge/rosen-extractor@11.1.0
141
+
142
+ ## 1.0.3
143
+
144
+ ### Patch Changes
145
+
146
+ - Replace default exports with named exports
147
+
148
+ ~~## 1.0.2~~
149
+
150
+ ### Patch Changes
151
+
152
+ - Replace default exports with named exports
153
+
154
+ ## 1.0.1
155
+
156
+ ### Patch Changes
157
+
158
+ - Export abstract, unisat & ordiscan RunesProtocolNetwork
159
+
160
+ ## 1.0.0
161
+
162
+ ### Major Changes
163
+
164
+ - Add implementation for the new OrdiscanRunesProtocolNetwork and UnisatRunesProtocolNetwork extending the AbstractRunesProtocolNetwork that implements getTxOutputRunes
165
+
166
+ ## 0.3.1
167
+
168
+ ### Patch Changes
169
+
170
+ - Update Dependencies
171
+ - @rosen-bridge/abstract-observation-extractor@0.2.1
172
+ - @rosen-bridge/bitcoin-scanner@0.2.2
173
+ - @rosen-bridge/rosen-extractor@11.0.0
174
+
175
+ ## 0.3.0
176
+
177
+ ### Minor Changes
178
+
179
+ - Add rawData to the return data of the extractor's `processTransactions` method
180
+
181
+ ### Patch Changes
182
+
183
+ - Fix package-lock and move typescript and types/node into root
184
+ - Update eslint and plugins:
185
+ - Apply new rules such as sort imports and file name
186
+ - Update dependencies
187
+ - @rosen-bridge/extended-typeorm@1.0.1
188
+ - @rosen-clients/rate-limited-axios@1.1.0
189
+ - @rosen-bridge/rosen-extractor@10.1.1
190
+ - @rosen-bridge/tokens@4.0.1
191
+ - @rosen-bridge/abstract-logger@3.0.1
192
+ - @rosen-bridge/json-bigint@1.1.0
193
+ - @rosen-clients/ergo-explorer@2.1.0
194
+ - @rosen-clients/ergo-node@3.1.0
195
+ - @rosen-bridge/abstract-observation-extractor@0.2.0
196
+ - @rosen-bridge/bitcoin-scanner@0.2.1
197
+ - @rosen-bridge/scanner-interfaces@0.2.1
198
+
199
+ ## 0.2.0
200
+
201
+ ### Minor Changes
202
+
203
+ - Use @rosen-clients/rate-limited-axios instead of @rosen-bridge/rate-limited-axios
204
+
205
+ ### Patch Changes
206
+
207
+ - Handle Unisat indexed height (it throws error if the given block is not indexed by Unisat yet)
208
+ - Change unisatApiKey header to Authorization and Bearer
209
+ - Update dependencies
210
+ - @rosen-bridge/scanner-interfaces@0.2.0
211
+ - @rosen-bridge/abstract-observation-extractor@0.1.2
212
+ - @rosen-bridge/bitcoin-scanner@0.2.0
213
+ - @rosen-bridge/extended-typeorm@1.0.0
214
+ - @rosen-bridge/tokens@4.0.0
215
+ - @rosen-bridge/rosen-extractor@10.0.0
216
+ - @rosen-bridge/json-bigint@1.0.0
217
+ - @rosen-bridge/abstract-logger@3.0.0
218
+
219
+ ## 0.1.1
220
+
221
+ ### Patch Changes
222
+
223
+ - Fix getTxOutputRunes incorrect output array
224
+ - Remove eslint and prettier related dependencies
225
+ - Update vitest.config and tsconfig files to match the kodegen template
226
+ - Update dependencies
227
+ - @rosen-bridge/abstract-observation-extractor@0.1.1
228
+
229
+ ## 0.1.0
230
+
231
+ - The package has been **renamed** from `@rosen-bridge/runes-observation-extractor`.
232
+ You can track the previous history in the changelog of the old package. The latest update is available [here](https://github.com/rosen-bridge/scanner/blob/415b6caac5fbb065fb7cee5e517894ace67c9f81/packages/observation-extractors/runes-observation-extractor/CHANGELOG.md).
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # @rosen-bridge/bitcoin-runes-observation-extractor
2
+
3
+ ## Table of contents
4
+
5
+ - [Introduction](#introduction)
6
+ - [Installation](#installation)
7
+
8
+ ## Introduction
9
+
10
+ Event observation data extractor for Bitcoin Runes chain
11
+
12
+ ## Installation
13
+
14
+ npm:
15
+
16
+ ```sh
17
+ npm i @rosen-bridge/bitcoin-runes-observation-extractor
18
+ ```
19
+
20
+ yarn:
21
+
22
+ ```sh
23
+ yarn add @rosen-bridge/bitcoin-runes-observation-extractor
24
+ ```
@@ -0,0 +1,13 @@
1
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
+ import { TxOutputRune } from './types';
3
+ export declare abstract class AbstractRunesProtocolNetwork {
4
+ logger: AbstractLogger;
5
+ constructor(logger?: AbstractLogger);
6
+ /**
7
+ * returns the Runes transfer of a transaction
8
+ * @param txId
9
+ * @param height
10
+ */
11
+ abstract getTxOutputRunes(txId: string, height: number): Promise<TxOutputRune[]>;
12
+ }
13
+ //# sourceMappingURL=abstractRunesProtocolNetwork.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstractRunesProtocolNetwork.d.ts","sourceRoot":"","sources":["../lib/abstractRunesProtocolNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,8BAAsB,4BAA4B;IAChD,MAAM,EAAE,cAAc,CAAC;gBAEX,MAAM,CAAC,EAAE,cAAc;IAInC;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CACvB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,EAAE,CAAC;CAC3B"}
@@ -0,0 +1,8 @@
1
+ import { DummyLogger } from '@rosen-bridge/abstract-logger';
2
+ export class AbstractRunesProtocolNetwork {
3
+ logger;
4
+ constructor(logger) {
5
+ this.logger = logger ? logger : new DummyLogger();
6
+ }
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RSdW5lc1Byb3RvY29sTmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9hYnN0cmFjdFJ1bmVzUHJvdG9jb2xOZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJNUUsTUFBTSxPQUFnQiw0QkFBNEI7SUFDaEQsTUFBTSxDQUFpQjtJQUV2QixZQUFZLE1BQXVCO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUM7SUFDcEQsQ0FBQztDQVdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuXG5pbXBvcnQgeyBUeE91dHB1dFJ1bmUgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0UnVuZXNQcm90b2NvbE5ldHdvcmsge1xuICBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyO1xuXG4gIGNvbnN0cnVjdG9yKGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyKSB7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXIgPyBsb2dnZXIgOiBuZXcgRHVtbXlMb2dnZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm5zIHRoZSBSdW5lcyB0cmFuc2ZlciBvZiBhIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB0eElkXG4gICAqIEBwYXJhbSBoZWlnaHRcbiAgICovXG4gIGFic3RyYWN0IGdldFR4T3V0cHV0UnVuZXMoXG4gICAgdHhJZDogc3RyaW5nLFxuICAgIGhlaWdodDogbnVtYmVyLFxuICApOiBQcm9taXNlPFR4T3V0cHV0UnVuZVtdPjtcbn1cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
+ import { AbstractObservationExtractor } from '@rosen-bridge/abstract-observation-extractor';
3
+ import { DataSource } from '@rosen-bridge/extended-typeorm';
4
+ import { AbstractRosenDataExtractor } from '@rosen-bridge/rosen-extractor';
5
+ import { BlockInfo } from '@rosen-bridge/scanner-interfaces';
6
+ import { TokenMap } from '@rosen-bridge/tokens';
7
+ import { AbstractRunesProtocolNetwork } from './abstractRunesProtocolNetwork';
8
+ export declare abstract class BitcoinRunesAbstractObservationExtractor<TransactionType> extends AbstractObservationExtractor<TransactionType> {
9
+ protected readonly lockAddress: string;
10
+ protected readonly runesProtocolNetwork: AbstractRunesProtocolNetwork;
11
+ readonly FROM_CHAIN = "bitcoin-runes";
12
+ constructor(lockAddress: string, runesProtocolNetwork: AbstractRunesProtocolNetwork, dataSource: DataSource, tokens: TokenMap, extractor: AbstractRosenDataExtractor<TransactionType>, logger?: AbstractLogger);
13
+ /**
14
+ * gets block id and transactions corresponding to the block and saves if they are valid rosen
15
+ * transactions and in case of success return true and in case of failure returns false
16
+ * additionally, if it fails due to unexpected reasons such as network issues, it re-throws the error
17
+ * @param txs
18
+ * @param block
19
+ */
20
+ processTransactions: (txs: Array<TransactionType>, block: BlockInfo) => Promise<boolean>;
21
+ }
22
+ //# sourceMappingURL=bitcoinRunesAbstractObservationExtractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitcoinRunesAbstractObservationExtractor.d.ts","sourceRoot":"","sources":["../lib/bitcoinRunesAbstractObservationExtractor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EACL,4BAA4B,EAE7B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EACL,0BAA0B,EAE3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAG9E,8BAAsB,wCAAwC,CAC5D,eAAe,CACf,SAAQ,4BAA4B,CAAC,eAAe,CAAC;IAInD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM;IACtC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,4BAA4B;IAJvE,QAAQ,CAAC,UAAU,mBAAuB;gBAGrB,WAAW,EAAE,MAAM,EACnB,oBAAoB,EAAE,4BAA4B,EACrE,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,QAAQ,EAChB,SAAS,EAAE,0BAA0B,CAAC,eAAe,CAAC,EACtD,MAAM,CAAC,EAAE,cAAc;IAKzB;;;;;;OAMG;IACH,mBAAmB,GACjB,KAAK,KAAK,CAAC,eAAe,CAAC,EAC3B,OAAO,SAAS,KACf,OAAO,CAAC,OAAO,CAAC,CA8EjB;CACH"}
@@ -0,0 +1,81 @@
1
+ import { blake2b } from 'blakejs';
2
+ import { AbstractObservationExtractor, } from '@rosen-bridge/abstract-observation-extractor';
3
+ import { BITCOIN_RUNES_CHAIN } from './constants';
4
+ export class BitcoinRunesAbstractObservationExtractor extends AbstractObservationExtractor {
5
+ lockAddress;
6
+ runesProtocolNetwork;
7
+ FROM_CHAIN = BITCOIN_RUNES_CHAIN;
8
+ constructor(lockAddress, runesProtocolNetwork, dataSource, tokens, extractor, logger) {
9
+ super(dataSource, tokens, extractor, logger);
10
+ this.lockAddress = lockAddress;
11
+ this.runesProtocolNetwork = runesProtocolNetwork;
12
+ }
13
+ /**
14
+ * gets block id and transactions corresponding to the block and saves if they are valid rosen
15
+ * transactions and in case of success return true and in case of failure returns false
16
+ * additionally, if it fails due to unexpected reasons such as network issues, it re-throws the error
17
+ * @param txs
18
+ * @param block
19
+ */
20
+ processTransactions = async (txs, block) => {
21
+ const observations = [];
22
+ for (const transaction of txs) {
23
+ const data = this.extractor.get(transaction);
24
+ if (!data)
25
+ continue;
26
+ const txId = this.getTxId(transaction);
27
+ // validate rune conditions and fill token info in data
28
+ let runesTransformation;
29
+ try {
30
+ const runes = await this.runesProtocolNetwork.getTxOutputRunes(txId, block.height);
31
+ for (const outRune of runes) {
32
+ // check if rune is transferred to the lock address
33
+ if (outRune.address !== this.lockAddress)
34
+ continue;
35
+ // check if rune is supported by Rosen bridge
36
+ const wrappedRune = this.tokens.search(this.FROM_CHAIN, {
37
+ tokenId: outRune.runeId,
38
+ });
39
+ if (wrappedRune.length > 0 &&
40
+ Object.hasOwn(wrappedRune[0], data.toChain)) {
41
+ const wrappedAmount = this.tokens
42
+ .wrapAmount(outRune.runeId, BigInt(outRune.runeAmount), this.FROM_CHAIN)
43
+ .amount.toString();
44
+ runesTransformation = {
45
+ from: outRune.runeId,
46
+ to: this.tokens.getID(wrappedRune[0], data.toChain),
47
+ amount: wrappedAmount,
48
+ };
49
+ break;
50
+ }
51
+ }
52
+ }
53
+ catch (e) {
54
+ this.logger.debug(`Failed to get Runes data from tx [${txId}]: ${e}`);
55
+ throw e;
56
+ }
57
+ if (!runesTransformation) {
58
+ this.logger.debug(`No supported Runes is locked`);
59
+ continue;
60
+ }
61
+ const requestId = Buffer.from(blake2b(this.getTxId(transaction), undefined, 32)).toString('hex');
62
+ observations.push({
63
+ fromChain: this.FROM_CHAIN,
64
+ toChain: data.toChain,
65
+ amount: runesTransformation.amount,
66
+ sourceChainTokenId: runesTransformation.from,
67
+ targetChainTokenId: runesTransformation.to,
68
+ sourceTxId: data.sourceTxId,
69
+ bridgeFee: data.bridgeFee,
70
+ networkFee: data.networkFee,
71
+ sourceBlockId: block.hash,
72
+ requestId: requestId,
73
+ toAddress: data.toAddress,
74
+ fromAddress: data.fromAddress,
75
+ rawData: data.rawData,
76
+ });
77
+ }
78
+ return this.actions.storeObservations(observations, block, this.getId());
79
+ };
80
+ }
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0Y29pblJ1bmVzQWJzdHJhY3RPYnNlcnZhdGlvbkV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9iaXRjb2luUnVuZXNBYnN0cmFjdE9ic2VydmF0aW9uRXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHbEMsT0FBTyxFQUNMLDRCQUE0QixHQUU3QixNQUFNLDhDQUE4QyxDQUFDO0FBVXRELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsRCxNQUFNLE9BQWdCLHdDQUVwQixTQUFRLDRCQUE2QztJQUloQztJQUNBO0lBSlosVUFBVSxHQUFHLG1CQUFtQixDQUFDO0lBRTFDLFlBQ3FCLFdBQW1CLEVBQ25CLG9CQUFrRCxFQUNyRSxVQUFzQixFQUN0QixNQUFnQixFQUNoQixTQUFzRCxFQUN0RCxNQUF1QjtRQUV2QixLQUFLLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFQMUIsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFDbkIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUE4QjtJQU92RSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsbUJBQW1CLEdBQUcsS0FBSyxFQUN6QixHQUEyQixFQUMzQixLQUFnQixFQUNFLEVBQUU7UUFDcEIsTUFBTSxZQUFZLEdBQWdDLEVBQUUsQ0FBQztRQUNyRCxLQUFLLE1BQU0sV0FBVyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRTdDLElBQUksQ0FBQyxJQUFJO2dCQUFFLFNBQVM7WUFFcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUV2Qyx1REFBdUQ7WUFDdkQs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SyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJsYWtlMmIgfSBmcm9tICdibGFrZWpzJztcblxuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQge1xuICBBYnN0cmFjdE9ic2VydmF0aW9uRXh0cmFjdG9yLFxuICBFeHRyYWN0ZWRPYnNlcnZhdGlvbixcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1vYnNlcnZhdGlvbi1leHRyYWN0b3InO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvcixcbiAgVG9rZW5UcmFuc2Zvcm1hdGlvbixcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9yb3Nlbi1leHRyYWN0b3InO1xuaW1wb3J0IHsgQmxvY2tJbmZvIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyLWludGVyZmFjZXMnO1xuaW1wb3J0IHsgVG9rZW5NYXAgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Rva2Vucyc7XG5cbmltcG9ydCB7IEFic3RyYWN0UnVuZXNQcm90b2NvbE5ldHdvcmsgfSBmcm9tICcuL2Fic3RyYWN0UnVuZXNQcm90b2NvbE5ldHdvcmsnO1xuaW1wb3J0IHsgQklUQ09JTl9SVU5FU19DSEFJTiB9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJpdGNvaW5SdW5lc0Fic3RyYWN0T2JzZXJ2YXRpb25FeHRyYWN0b3I8XG4gIFRyYW5zYWN0aW9uVHlwZSxcbj4gZXh0ZW5kcyBBYnN0cmFjdE9ic2VydmF0aW9uRXh0cmFjdG9yPFRyYW5zYWN0aW9uVHlwZT4ge1xuICByZWFkb25seSBGUk9NX0NIQUlOID0gQklUQ09JTl9SVU5FU19DSEFJTjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9ja0FkZHJlc3M6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcnVuZXNQcm90b2NvbE5ldHdvcms6IEFic3RyYWN0UnVuZXNQcm90b2NvbE5ldHdvcmssXG4gICAgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICB0b2tlbnM6IFRva2VuTWFwLFxuICAgIGV4dHJhY3RvcjogQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3I8VHJhbnNhY3Rpb25UeXBlPixcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlcixcbiAgKSB7XG4gICAgc3VwZXIoZGF0YVNvdXJjZSwgdG9rZW5zLCBleHRyYWN0b3IsIGxvZ2dlcik7XG4gIH1cblxuICAvKipcbiAgICogZ2V0cyBibG9jayBpZCBhbmQgdHJhbnNhY3Rpb25zIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJsb2NrIGFuZCBzYXZlcyBpZiB0aGV5IGFyZSB2YWxpZCByb3NlblxuICAgKiB0cmFuc2FjdGlvbnMgYW5kIGluIGNhc2Ugb2Ygc3VjY2VzcyByZXR1cm4gdHJ1ZSBhbmQgaW4gY2FzZSBvZiBmYWlsdXJlIHJldHVybnMgZmFsc2VcbiAgICogYWRkaXRpb25hbGx5LCBpZiBpdCBmYWlscyBkdWUgdG8gdW5leHBlY3RlZCByZWFzb25zIHN1Y2ggYXMgbmV0d29yayBpc3N1ZXMsIGl0IHJlLXRocm93cyB0aGUgZXJyb3JcbiAgICogQHBhcmFtIHR4c1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICovXG4gIHByb2Nlc3NUcmFuc2FjdGlvbnMgPSBhc3luYyAoXG4gICAgdHhzOiBBcnJheTxUcmFuc2FjdGlvblR5cGU+LFxuICAgIGJsb2NrOiBCbG9ja0luZm8sXG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIGNvbnN0IG9ic2VydmF0aW9uczogQXJyYXk8RXh0cmFjdGVkT2JzZXJ2YXRpb24+ID0gW107XG4gICAgZm9yIChjb25zdCB0cmFuc2FjdGlvbiBvZiB0eHMpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmV4dHJhY3Rvci5nZXQodHJhbnNhY3Rpb24pO1xuXG4gICAgICBpZiAoIWRhdGEpIGNvbnRpbnVlO1xuXG4gICAgICBjb25zdCB0eElkID0gdGhpcy5nZXRUeElkKHRyYW5zYWN0aW9uKTtcblxuICAgICAgLy8gdmFsaWRhdGUgcnVuZSBjb25kaXRpb25zIGFuZCBmaWxsIHRva2VuIGluZm8gaW4gZGF0YVxuICAgICAgbGV0IHJ1bmVzVHJhbnNmb3JtYXRpb246IFRva2VuVHJhbnNmb3JtYXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJ1bmVzID0gYXdhaXQgdGhpcy5ydW5lc1Byb3RvY29sTmV0d29yay5nZXRUeE91dHB1dFJ1bmVzKFxuICAgICAgICAgIHR4SWQsXG4gICAgICAgICAgYmxvY2suaGVpZ2h0LFxuICAgICAgICApO1xuXG4gICAgICAgIGZvciAoY29uc3Qgb3V0UnVuZSBvZiBydW5lcykge1xuICAgICAgICAgIC8vIGNoZWNrIGlmIHJ1bmUgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGxvY2sgYWRkcmVzc1xuICAgICAgICAgIGlmIChvdXRSdW5lLmFkZHJlc3MgIT09IHRoaXMubG9ja0FkZHJlc3MpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgLy8gY2hlY2sgaWYgcnVuZSBpcyBzdXBwb3J0ZWQgYnkgUm9zZW4gYnJpZGdlXG4gICAgICAgICAgY29uc3Qgd3JhcHBlZFJ1bmUgPSB0aGlzLnRva2Vucy5zZWFyY2godGhpcy5GUk9NX0NIQUlOLCB7XG4gICAgICAgICAgICB0b2tlbklkOiBvdXRSdW5lLnJ1bmVJZCxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHdyYXBwZWRSdW5lLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5oYXNPd24od3JhcHBlZFJ1bmVbMF0sIGRhdGEudG9DaGFpbilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIGNvbnN0IHdyYXBwZWRBbW91bnQgPSB0aGlzLnRva2Vuc1xuICAgICAgICAgICAgICAud3JhcEFtb3VudChcbiAgICAgICAgICAgICAgICBvdXRSdW5lLnJ1bmVJZCxcbiAgICAgICAgICAgICAgICBCaWdJbnQob3V0UnVuZS5ydW5lQW1vdW50KSxcbiAgICAgICAgICAgICAgICB0aGlzLkZST01fQ0hBSU4sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLmFtb3VudC50b1N0cmluZygpO1xuICAgICAgICAgICAgcnVuZXNUcmFuc2Zvcm1hdGlvbiA9IHtcbiAgICAgICAgICAgICAgZnJvbTogb3V0UnVuZS5ydW5lSWQsXG4gICAgICAgICAgICAgIHRvOiB0aGlzLnRva2Vucy5nZXRJRCh3cmFwcGVkUnVuZVswXSwgZGF0YS50b0NoYWluKSxcbiAgICAgICAgICAgICAgYW1vdW50OiB3cmFwcGVkQW1vdW50LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBGYWlsZWQgdG8gZ2V0IFJ1bmVzIGRhdGEgZnJvbSB0eCBbJHt0eElkfV06ICR7ZX1gKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFydW5lc1RyYW5zZm9ybWF0aW9uKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBObyBzdXBwb3J0ZWQgUnVuZXMgaXMgbG9ja2VkYCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByZXF1ZXN0SWQgPSBCdWZmZXIuZnJvbShcbiAgICAgICAgYmxha2UyYih0aGlzLmdldFR4SWQodHJhbnNhY3Rpb24pLCB1bmRlZmluZWQsIDMyKSxcbiAgICAgICkudG9TdHJpbmcoJ2hleCcpO1xuXG4gICAgICBvYnNlcnZhdGlvbnMucHVzaCh7XG4gICAgICAgIGZyb21DaGFpbjogdGhpcy5GUk9NX0NIQUlOLFxuICAgICAgICB0b0NoYWluOiBkYXRhLnRvQ2hhaW4sXG4gICAgICAgIGFtb3VudDogcnVuZXNUcmFuc2Zvcm1hdGlvbi5hbW91bnQsXG4gICAgICAgIHNvdXJjZUNoYWluVG9rZW5JZDogcnVuZXNUcmFuc2Zvcm1hdGlvbi5mcm9tLFxuICAgICAgICB0YXJnZXRDaGFpblRva2VuSWQ6IHJ1bmVzVHJhbnNmb3JtYXRpb24udG8sXG4gICAgICAgIHNvdXJjZVR4SWQ6IGRhdGEuc291cmNlVHhJZCxcbiAgICAgICAgYnJpZGdlRmVlOiBkYXRhLmJyaWRnZUZlZSxcbiAgICAgICAgbmV0d29ya0ZlZTogZGF0YS5uZXR3b3JrRmVlLFxuICAgICAgICBzb3VyY2VCbG9ja0lkOiBibG9jay5oYXNoLFxuICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJZCxcbiAgICAgICAgdG9BZGRyZXNzOiBkYXRhLnRvQWRkcmVzcyxcbiAgICAgICAgZnJvbUFkZHJlc3M6IGRhdGEuZnJvbUFkZHJlc3MsXG4gICAgICAgIHJhd0RhdGE6IGRhdGEucmF3RGF0YSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hY3Rpb25zLnN0b3JlT2JzZXJ2YXRpb25zKG9ic2VydmF0aW9ucywgYmxvY2ssIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,18 @@
1
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
+ import { BitcoinEsploraTransaction } from '@rosen-bridge/bitcoin-scanner';
3
+ import { DataSource } from '@rosen-bridge/extended-typeorm';
4
+ import { TokenMap } from '@rosen-bridge/tokens';
5
+ import { AbstractRunesProtocolNetwork } from './abstractRunesProtocolNetwork';
6
+ import { BitcoinRunesAbstractObservationExtractor } from './bitcoinRunesAbstractObservationExtractor';
7
+ export declare class BitcoinRunesEsploraObservationExtractor extends BitcoinRunesAbstractObservationExtractor<BitcoinEsploraTransaction> {
8
+ constructor(lockAddress: string, runesProtocolNetwork: AbstractRunesProtocolNetwork, dataSource: DataSource, tokens: TokenMap, logger?: AbstractLogger, storeRawData?: boolean);
9
+ /**
10
+ * gets Id for current extractor
11
+ */
12
+ getId: () => string;
13
+ /**
14
+ * gets transaction id from TransactionType
15
+ */
16
+ getTxId: (tx: BitcoinEsploraTransaction) => string;
17
+ }
18
+ //# sourceMappingURL=bitcoinRunesEsploraObservationExtractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitcoinRunesEsploraObservationExtractor.d.ts","sourceRoot":"","sources":["../lib/bitcoinRunesEsploraObservationExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAC;AAEtG,qBAAa,uCAAwC,SAAQ,wCAAwC,CAAC,yBAAyB,CAAC;gBAE5H,WAAW,EAAE,MAAM,EACnB,oBAAoB,EAAE,4BAA4B,EAClD,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,QAAQ,EAChB,MAAM,CAAC,EAAE,cAAc,EACvB,YAAY,UAAO;IAiBrB;;OAEG;IACH,KAAK,eAA2C;IAEhD;;OAEG;IACH,OAAO,GAAI,IAAI,yBAAyB,YAAa;CACtD"}
@@ -0,0 +1,16 @@
1
+ import { BitcoinRunesEsploraRosenExtractor } from '@rosen-bridge/rosen-extractor';
2
+ import { BitcoinRunesAbstractObservationExtractor } from './bitcoinRunesAbstractObservationExtractor';
3
+ export class BitcoinRunesEsploraObservationExtractor extends BitcoinRunesAbstractObservationExtractor {
4
+ constructor(lockAddress, runesProtocolNetwork, dataSource, tokens, logger, storeRawData = true) {
5
+ super(lockAddress, runesProtocolNetwork, dataSource, tokens, new BitcoinRunesEsploraRosenExtractor(lockAddress, tokens, logger?.child('BitcoinRunesEsploraRosenExtractor'), storeRawData), logger);
6
+ }
7
+ /**
8
+ * gets Id for current extractor
9
+ */
10
+ getId = () => 'bitcoin-runes-esplora-extractor';
11
+ /**
12
+ * gets transaction id from TransactionType
13
+ */
14
+ getTxId = (tx) => tx.txid;
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0Y29pblJ1bmVzRXNwbG9yYU9ic2VydmF0aW9uRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2JpdGNvaW5SdW5lc0VzcGxvcmFPYnNlcnZhdGlvbkV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUlsRixPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUV0RyxNQUFNLE9BQU8sdUNBQXdDLFNBQVEsd0NBQW1FO0lBQzlILFlBQ0UsV0FBbUIsRUFDbkIsb0JBQWtELEVBQ2xELFVBQXNCLEVBQ3RCLE1BQWdCLEVBQ2hCLE1BQXVCLEVBQ3ZCLFlBQVksR0FBRyxJQUFJO1FBRW5CLEtBQUssQ0FDSCxXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLFVBQVUsRUFDVixNQUFNLEVBQ04sSUFBSSxpQ0FBaUMsQ0FDbkMsV0FBVyxFQUNYLE1BQU0sRUFDTixNQUFNLEVBQUUsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLEVBQ2xELFlBQVksQ0FDYixFQUNELE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLGlDQUFpQyxDQUFDO0lBRWhEOztPQUVHO0lBQ0gsT0FBTyxHQUFHLENBQUMsRUFBNkIsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztDQUN0RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgQml0Y29pbkVzcGxvcmFUcmFuc2FjdGlvbiB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYml0Y29pbi1zY2FubmVyJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuaW1wb3J0IHsgQml0Y29pblJ1bmVzRXNwbG9yYVJvc2VuRXh0cmFjdG9yIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9yb3Nlbi1leHRyYWN0b3InO1xuaW1wb3J0IHsgVG9rZW5NYXAgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Rva2Vucyc7XG5cbmltcG9ydCB7IEFic3RyYWN0UnVuZXNQcm90b2NvbE5ldHdvcmsgfSBmcm9tICcuL2Fic3RyYWN0UnVuZXNQcm90b2NvbE5ldHdvcmsnO1xuaW1wb3J0IHsgQml0Y29pblJ1bmVzQWJzdHJhY3RPYnNlcnZhdGlvbkV4dHJhY3RvciB9IGZyb20gJy4vYml0Y29pblJ1bmVzQWJzdHJhY3RPYnNlcnZhdGlvbkV4dHJhY3Rvcic7XG5cbmV4cG9ydCBjbGFzcyBCaXRjb2luUnVuZXNFc3Bsb3JhT2JzZXJ2YXRpb25FeHRyYWN0b3IgZXh0ZW5kcyBCaXRjb2luUnVuZXNBYnN0cmFjdE9ic2VydmF0aW9uRXh0cmFjdG9yPEJpdGNvaW5Fc3Bsb3JhVHJhbnNhY3Rpb24+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgbG9ja0FkZHJlc3M6IHN0cmluZyxcbiAgICBydW5lc1Byb3RvY29sTmV0d29yazogQWJzdHJhY3RSdW5lc1Byb3RvY29sTmV0d29yayxcbiAgICBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIHRva2VuczogVG9rZW5NYXAsXG4gICAgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXIsXG4gICAgc3RvcmVSYXdEYXRhID0gdHJ1ZSxcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBsb2NrQWRkcmVzcyxcbiAgICAgIHJ1bmVzUHJvdG9jb2xOZXR3b3JrLFxuICAgICAgZGF0YVNvdXJjZSxcbiAgICAgIHRva2VucyxcbiAgICAgIG5ldyBCaXRjb2luUnVuZXNFc3Bsb3JhUm9zZW5FeHRyYWN0b3IoXG4gICAgICAgIGxvY2tBZGRyZXNzLFxuICAgICAgICB0b2tlbnMsXG4gICAgICAgIGxvZ2dlcj8uY2hpbGQoJ0JpdGNvaW5SdW5lc0VzcGxvcmFSb3NlbkV4dHJhY3RvcicpLFxuICAgICAgICBzdG9yZVJhd0RhdGEsXG4gICAgICApLFxuICAgICAgbG9nZ2VyLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0cyBJZCBmb3IgY3VycmVudCBleHRyYWN0b3JcbiAgICovXG4gIGdldElkID0gKCkgPT4gJ2JpdGNvaW4tcnVuZXMtZXNwbG9yYS1leHRyYWN0b3InO1xuXG4gIC8qKlxuICAgKiBnZXRzIHRyYW5zYWN0aW9uIGlkIGZyb20gVHJhbnNhY3Rpb25UeXBlXG4gICAqL1xuICBnZXRUeElkID0gKHR4OiBCaXRjb2luRXNwbG9yYVRyYW5zYWN0aW9uKSA9PiB0eC50eGlkO1xufVxuIl19
@@ -0,0 +1,18 @@
1
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
+ import { BitcoinRpcTransaction } from '@rosen-bridge/bitcoin-scanner';
3
+ import { DataSource } from '@rosen-bridge/extended-typeorm';
4
+ import { TokenMap } from '@rosen-bridge/tokens';
5
+ import { AbstractRunesProtocolNetwork } from './abstractRunesProtocolNetwork';
6
+ import { BitcoinRunesAbstractObservationExtractor } from './bitcoinRunesAbstractObservationExtractor';
7
+ export declare class BitcoinRunesRpcObservationExtractor extends BitcoinRunesAbstractObservationExtractor<BitcoinRpcTransaction> {
8
+ constructor(lockAddress: string, runesProtocolNetwork: AbstractRunesProtocolNetwork, dataSource: DataSource, tokens: TokenMap, logger?: AbstractLogger, storeRawData?: boolean);
9
+ /**
10
+ * gets Id for current extractor
11
+ */
12
+ getId: () => string;
13
+ /**
14
+ * gets transaction id from TransactionType
15
+ */
16
+ getTxId: (tx: BitcoinRpcTransaction) => string;
17
+ }
18
+ //# sourceMappingURL=bitcoinRunesRpcObservationExtractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitcoinRunesRpcObservationExtractor.d.ts","sourceRoot":"","sources":["../lib/bitcoinRunesRpcObservationExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAC;AAEtG,qBAAa,mCAAoC,SAAQ,wCAAwC,CAAC,qBAAqB,CAAC;gBAEpH,WAAW,EAAE,MAAM,EACnB,oBAAoB,EAAE,4BAA4B,EAClD,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,QAAQ,EAChB,MAAM,CAAC,EAAE,cAAc,EACvB,YAAY,UAAO;IAiBrB;;OAEG;IACH,KAAK,eAAuC;IAE5C;;OAEG;IACH,OAAO,GAAI,IAAI,qBAAqB,YAAa;CAClD"}
@@ -0,0 +1,16 @@
1
+ import { BitcoinRunesRpcRosenExtractor } from '@rosen-bridge/rosen-extractor';
2
+ import { BitcoinRunesAbstractObservationExtractor } from './bitcoinRunesAbstractObservationExtractor';
3
+ export class BitcoinRunesRpcObservationExtractor extends BitcoinRunesAbstractObservationExtractor {
4
+ constructor(lockAddress, runesProtocolNetwork, dataSource, tokens, logger, storeRawData = true) {
5
+ super(lockAddress, runesProtocolNetwork, dataSource, tokens, new BitcoinRunesRpcRosenExtractor(lockAddress, tokens, logger?.child('BitcoinRunesRpcRosenExtractor'), storeRawData), logger);
6
+ }
7
+ /**
8
+ * gets Id for current extractor
9
+ */
10
+ getId = () => 'bitcoin-runes-rpc-extractor';
11
+ /**
12
+ * gets transaction id from TransactionType
13
+ */
14
+ getTxId = (tx) => tx.txid;
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0Y29pblJ1bmVzUnBjT2JzZXJ2YXRpb25FeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvYml0Y29pblJ1bmVzUnBjT2JzZXJ2YXRpb25FeHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFJOUUsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFdEcsTUFBTSxPQUFPLG1DQUFvQyxTQUFRLHdDQUErRDtJQUN0SCxZQUNFLFdBQW1CLEVBQ25CLG9CQUFrRCxFQUNsRCxVQUFzQixFQUN0QixNQUFnQixFQUNoQixNQUF1QixFQUN2QixZQUFZLEdBQUcsSUFBSTtRQUVuQixLQUFLLENBQ0gsV0FBVyxFQUNYLG9CQUFvQixFQUNwQixVQUFVLEVBQ1YsTUFBTSxFQUNOLElBQUksNkJBQTZCLENBQy9CLFdBQVcsRUFDWCxNQUFNLEVBQ04sTUFBTSxFQUFFLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxFQUM5QyxZQUFZLENBQ2IsRUFDRCxNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztJQUU1Qzs7T0FFRztJQUNILE9BQU8sR0FBRyxDQUFDLEVBQXlCLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7Q0FDbEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdExvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IEJpdGNvaW5ScGNUcmFuc2FjdGlvbiB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYml0Y29pbi1zY2FubmVyJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuaW1wb3J0IHsgQml0Y29pblJ1bmVzUnBjUm9zZW5FeHRyYWN0b3IgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Jvc2VuLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBUb2tlbk1hcCB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvdG9rZW5zJztcblxuaW1wb3J0IHsgQWJzdHJhY3RSdW5lc1Byb3RvY29sTmV0d29yayB9IGZyb20gJy4vYWJzdHJhY3RSdW5lc1Byb3RvY29sTmV0d29yayc7XG5pbXBvcnQgeyBCaXRjb2luUnVuZXNBYnN0cmFjdE9ic2VydmF0aW9uRXh0cmFjdG9yIH0gZnJvbSAnLi9iaXRjb2luUnVuZXNBYnN0cmFjdE9ic2VydmF0aW9uRXh0cmFjdG9yJztcblxuZXhwb3J0IGNsYXNzIEJpdGNvaW5SdW5lc1JwY09ic2VydmF0aW9uRXh0cmFjdG9yIGV4dGVuZHMgQml0Y29pblJ1bmVzQWJzdHJhY3RPYnNlcnZhdGlvbkV4dHJhY3RvcjxCaXRjb2luUnBjVHJhbnNhY3Rpb24+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgbG9ja0FkZHJlc3M6IHN0cmluZyxcbiAgICBydW5lc1Byb3RvY29sTmV0d29yazogQWJzdHJhY3RSdW5lc1Byb3RvY29sTmV0d29yayxcbiAgICBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIHRva2VuczogVG9rZW5NYXAsXG4gICAgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXIsXG4gICAgc3RvcmVSYXdEYXRhID0gdHJ1ZSxcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBsb2NrQWRkcmVzcyxcbiAgICAgIHJ1bmVzUHJvdG9jb2xOZXR3b3JrLFxuICAgICAgZGF0YVNvdXJjZSxcbiAgICAgIHRva2VucyxcbiAgICAgIG5ldyBCaXRjb2luUnVuZXNScGNSb3NlbkV4dHJhY3RvcihcbiAgICAgICAgbG9ja0FkZHJlc3MsXG4gICAgICAgIHRva2VucyxcbiAgICAgICAgbG9nZ2VyPy5jaGlsZCgnQml0Y29pblJ1bmVzUnBjUm9zZW5FeHRyYWN0b3InKSxcbiAgICAgICAgc3RvcmVSYXdEYXRhLFxuICAgICAgKSxcbiAgICAgIGxvZ2dlcixcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldHMgSWQgZm9yIGN1cnJlbnQgZXh0cmFjdG9yXG4gICAqL1xuICBnZXRJZCA9ICgpID0+ICdiaXRjb2luLXJ1bmVzLXJwYy1leHRyYWN0b3InO1xuXG4gIC8qKlxuICAgKiBnZXRzIHRyYW5zYWN0aW9uIGlkIGZyb20gVHJhbnNhY3Rpb25UeXBlXG4gICAqL1xuICBnZXRUeElkID0gKHR4OiBCaXRjb2luUnBjVHJhbnNhY3Rpb24pID0+IHR4LnR4aWQ7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export declare const BITCOIN_RUNES_CHAIN = "bitcoin-runes";
2
+ //# 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,mBAAmB,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const BITCOIN_RUNES_CHAIN = 'bitcoin-runes';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQklUQ09JTl9SVU5FU19DSEFJTiA9ICdiaXRjb2luLXJ1bmVzJztcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export * from './bitcoinRunesAbstractObservationExtractor';
2
+ export * from './bitcoinRunesEsploraObservationExtractor';
3
+ export * from './bitcoinRunesRpcObservationExtractor';
4
+ export * from './unisatRunesProtocolNetwork';
5
+ export * from './ordiscanRunesProtocolNetwork';
6
+ export * from './abstractRunesProtocolNetwork';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,4CAA4C,CAAC;AAC3D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,uCAAuC,CAAC;AACtD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export * from './bitcoinRunesAbstractObservationExtractor';
2
+ export * from './bitcoinRunesEsploraObservationExtractor';
3
+ export * from './bitcoinRunesRpcObservationExtractor';
4
+ export * from './unisatRunesProtocolNetwork';
5
+ export * from './ordiscanRunesProtocolNetwork';
6
+ export * from './abstractRunesProtocolNetwork';
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsZ0NBQWdDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JpdGNvaW5SdW5lc0Fic3RyYWN0T2JzZXJ2YXRpb25FeHRyYWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9iaXRjb2luUnVuZXNFc3Bsb3JhT2JzZXJ2YXRpb25FeHRyYWN0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9iaXRjb2luUnVuZXNScGNPYnNlcnZhdGlvbkV4dHJhY3Rvcic7XG5leHBvcnQgKiBmcm9tICcuL3VuaXNhdFJ1bmVzUHJvdG9jb2xOZXR3b3JrJztcbmV4cG9ydCAqIGZyb20gJy4vb3JkaXNjYW5SdW5lc1Byb3RvY29sTmV0d29yayc7XG5leHBvcnQgKiBmcm9tICcuL2Fic3RyYWN0UnVuZXNQcm90b2NvbE5ldHdvcmsnO1xuIl19
@@ -0,0 +1,17 @@
1
+ import { Ordiscan } from 'ordiscan';
2
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
3
+ import { TokenMap } from '@rosen-bridge/tokens';
4
+ import { AbstractRunesProtocolNetwork } from './abstractRunesProtocolNetwork';
5
+ import { TxOutputRune } from './types';
6
+ export declare class OrdiscanRunesProtocolNetwork extends AbstractRunesProtocolNetwork {
7
+ protected readonly ordiscanApiKey: string;
8
+ protected readonly tokenMap: TokenMap;
9
+ protected ordiscanClient: Ordiscan;
10
+ constructor(ordiscanApiKey: string, tokenMap: TokenMap, logger?: AbstractLogger);
11
+ /**
12
+ * returns the Runes transfer of a transaction
13
+ * @param txId
14
+ */
15
+ getTxOutputRunes: (txId: string) => Promise<TxOutputRune[]>;
16
+ }
17
+ //# sourceMappingURL=ordiscanRunesProtocolNetwork.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ordiscanRunesProtocolNetwork.d.ts","sourceRoot":"","sources":["../lib/ordiscanRunesProtocolNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,OAAO,EAAE,YAAY,EAA6B,MAAM,SAAS,CAAC;AAElE,qBAAa,4BAA6B,SAAQ,4BAA4B;IAI1E,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM;IACzC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAJvC,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC;gBAGd,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,QAAQ,EACrC,MAAM,CAAC,EAAE,cAAc;IAOzB;;;OAGG;IACH,gBAAgB,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAuC9D;CACH"}
@@ -0,0 +1,53 @@
1
+ import { Ordiscan } from 'ordiscan';
2
+ import JsonBigInt from '@rosen-bridge/json-bigint';
3
+ import { AbstractRunesProtocolNetwork } from './abstractRunesProtocolNetwork';
4
+ import { BITCOIN_RUNES_CHAIN } from './constants';
5
+ export class OrdiscanRunesProtocolNetwork extends AbstractRunesProtocolNetwork {
6
+ ordiscanApiKey;
7
+ tokenMap;
8
+ ordiscanClient;
9
+ constructor(ordiscanApiKey, tokenMap, logger) {
10
+ super(logger);
11
+ this.ordiscanApiKey = ordiscanApiKey;
12
+ this.tokenMap = tokenMap;
13
+ this.ordiscanClient = new Ordiscan(ordiscanApiKey);
14
+ }
15
+ /**
16
+ * returns the Runes transfer of a transaction
17
+ * @param txId
18
+ */
19
+ getTxOutputRunes = async (txId) => {
20
+ let txRunes;
21
+ try {
22
+ const response = await this.ordiscanClient.tx.getRunes({ txid: txId });
23
+ this.logger.debug(`requested getRunes with txId [${txId}]. Response: ${JsonBigInt.stringify(response)}`);
24
+ txRunes = response.outputs;
25
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
+ }
27
+ catch (e) {
28
+ const baseError = `Failed to get runes for tx [${txId}] from Ordiscan: `;
29
+ if (e.response) {
30
+ throw new Error(baseError + `${JsonBigInt.stringify(e.response.data)}`);
31
+ }
32
+ throw new Error(baseError + e.message);
33
+ }
34
+ return txRunes
35
+ .map((utxo) => {
36
+ const wrappedRune = this.tokenMap.search(BITCOIN_RUNES_CHAIN, {
37
+ extra: { uniqueName: utxo.rune },
38
+ });
39
+ if (wrappedRune.length === 0) {
40
+ this.logger.debug(`Failed to find runes with uniqueName [${utxo.rune}] in token-map`);
41
+ return;
42
+ }
43
+ return {
44
+ address: utxo.address,
45
+ runeId: wrappedRune[0][BITCOIN_RUNES_CHAIN].tokenId,
46
+ runeAmount: utxo.rune_amount,
47
+ vout: utxo.vout,
48
+ };
49
+ })
50
+ .filter((utxo) => !!utxo);
51
+ };
52
+ }
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkaXNjYW5SdW5lc1Byb3RvY29sTmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9vcmRpc2NhblJ1bmVzUHJvdG9jb2xOZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHcEMsT0FBTyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFHbkQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2xELE1BQU0sT0FBTyw0QkFBNkIsU0FBUSw0QkFBNEI7SUFJdkQ7SUFDQTtJQUpYLGNBQWMsQ0FBVztJQUVuQyxZQUNxQixjQUFzQixFQUN0QixRQUFrQixFQUNyQyxNQUF1QjtRQUV2QixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFKSyxtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBS3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7T0FHRztJQUNILGdCQUFnQixHQUFHLEtBQUssRUFBRSxJQUFZLEVBQTJCLEVBQUU7UUFDakUsSUFBSSxPQUFvQyxDQUFDO1FBQ3pDLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsaUNBQWlDLElBQUksZ0JBQWdCLFVBQVUsQ0FBQyxTQUFTLENBQ3ZFLFFBQVEsQ0FDVCxFQUFFLENBQ0osQ0FBQztZQUVGLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQzNCLDhEQUE4RDtRQUNoRSxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLFNBQVMsR0FBRywrQkFBK0IsSUFBSSxtQkFBbUIsQ0FBQztZQUN6RSxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDZixNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUUsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsT0FBTyxPQUFPO2FBQ1gsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDWixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRTtnQkFDNUQsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7YUFDakMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZix5Q0FBeUMsSUFBSSxDQUFDLElBQUksZ0JBQWdCLENBQ25FLENBQUM7Z0JBQ0YsT0FBTztZQUNULENBQUM7WUFDRCxPQUFPO2dCQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztnQkFDckIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU87Z0JBQ25ELFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2FBQ0EsQ0FBQztRQUNwQixDQUFDLENBQUM7YUFDRCxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9yZGlzY2FuIH0gZnJvbSAnb3JkaXNjYW4nO1xuXG5pbXBvcnQgeyBBYnN0cmFjdExvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCBKc29uQmlnSW50IGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuaW1wb3J0IHsgVG9rZW5NYXAgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Rva2Vucyc7XG5cbmltcG9ydCB7IEFic3RyYWN0UnVuZXNQcm90b2NvbE5ldHdvcmsgfSBmcm9tICcuL2Fic3RyYWN0UnVuZXNQcm90b2NvbE5ldHdvcmsnO1xuaW1wb3J0IHsgQklUQ09JTl9SVU5FU19DSEFJTiB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFR4T3V0cHV0UnVuZSwgT3JkaXNjYW5SdW5lc1R4T3V0cHV0VXR4byB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgT3JkaXNjYW5SdW5lc1Byb3RvY29sTmV0d29yayBleHRlbmRzIEFic3RyYWN0UnVuZXNQcm90b2NvbE5ldHdvcmsge1xuICBwcm90ZWN0ZWQgb3JkaXNjYW5DbGllbnQ6IE9yZGlzY2FuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFkb25seSBvcmRpc2NhbkFwaUtleTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCByZWFkb25seSB0b2tlbk1hcDogVG9rZW5NYXAsXG4gICAgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXIsXG4gICkge1xuICAgIHN1cGVyKGxvZ2dlcik7XG5cbiAgICB0aGlzLm9yZGlzY2FuQ2xpZW50ID0gbmV3IE9yZGlzY2FuKG9yZGlzY2FuQXBpS2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm5zIHRoZSBSdW5lcyB0cmFuc2ZlciBvZiBhIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB0eElkXG4gICAqL1xuICBnZXRUeE91dHB1dFJ1bmVzID0gYXN5bmMgKHR4SWQ6IHN0cmluZyk6IFByb21pc2U8VHhPdXRwdXRSdW5lW10+ID0+IHtcbiAgICBsZXQgdHhSdW5lczogT3JkaXNjYW5SdW5lc1R4T3V0cHV0VXR4b1tdO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMub3JkaXNjYW5DbGllbnQudHguZ2V0UnVuZXMoeyB0eGlkOiB0eElkIH0pO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGByZXF1ZXN0ZWQgZ2V0UnVuZXMgd2l0aCB0eElkIFske3R4SWR9XS4gUmVzcG9uc2U6ICR7SnNvbkJpZ0ludC5zdHJpbmdpZnkoXG4gICAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgICl9YCxcbiAgICAgICk7XG5cbiAgICAgIHR4UnVuZXMgPSByZXNwb25zZS5vdXRwdXRzO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGNvbnN0IGJhc2VFcnJvciA9IGBGYWlsZWQgdG8gZ2V0IHJ1bmVzIGZvciB0eCBbJHt0eElkfV0gZnJvbSBPcmRpc2NhbjogYDtcbiAgICAgIGlmIChlLnJlc3BvbnNlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihiYXNlRXJyb3IgKyBgJHtKc29uQmlnSW50LnN0cmluZ2lmeShlLnJlc3BvbnNlLmRhdGEpfWApO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGJhc2VFcnJvciArIGUubWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR4UnVuZXNcbiAgICAgIC5tYXAoKHV0eG8pID0+IHtcbiAgICAgICAgY29uc3Qgd3JhcHBlZFJ1bmUgPSB0aGlzLnRva2VuTWFwLnNlYXJjaChCSVRDT0lOX1JVTkVTX0NIQUlOLCB7XG4gICAgICAgICAgZXh0cmE6IHsgdW5pcXVlTmFtZTogdXR4by5ydW5lIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAod3JhcHBlZFJ1bmUubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBgRmFpbGVkIHRvIGZpbmQgcnVuZXMgd2l0aCB1bmlxdWVOYW1lIFske3V0eG8ucnVuZX1dIGluIHRva2VuLW1hcGAsXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBhZGRyZXNzOiB1dHhvLmFkZHJlc3MsXG4gICAgICAgICAgcnVuZUlkOiB3cmFwcGVkUnVuZVswXVtCSVRDT0lOX1JVTkVTX0NIQUlOXS50b2tlbklkLFxuICAgICAgICAgIHJ1bmVBbW91bnQ6IHV0eG8ucnVuZV9hbW91bnQsXG4gICAgICAgICAgdm91dDogdXR4by52b3V0LFxuICAgICAgICB9IGFzIFR4T3V0cHV0UnVuZTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKCh1dHhvKSA9PiAhIXV0eG8pO1xuICB9O1xufVxuIl19