@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.
- package/CHANGELOG.md +232 -0
- package/README.md +24 -0
- package/dist/abstractRunesProtocolNetwork.d.ts +13 -0
- package/dist/abstractRunesProtocolNetwork.d.ts.map +1 -0
- package/dist/abstractRunesProtocolNetwork.js +8 -0
- package/dist/bitcoinRunesAbstractObservationExtractor.d.ts +22 -0
- package/dist/bitcoinRunesAbstractObservationExtractor.d.ts.map +1 -0
- package/dist/bitcoinRunesAbstractObservationExtractor.js +81 -0
- package/dist/bitcoinRunesEsploraObservationExtractor.d.ts +18 -0
- package/dist/bitcoinRunesEsploraObservationExtractor.d.ts.map +1 -0
- package/dist/bitcoinRunesEsploraObservationExtractor.js +16 -0
- package/dist/bitcoinRunesRpcObservationExtractor.d.ts +18 -0
- package/dist/bitcoinRunesRpcObservationExtractor.d.ts.map +1 -0
- package/dist/bitcoinRunesRpcObservationExtractor.js +16 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +2 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/ordiscanRunesProtocolNetwork.d.ts +17 -0
- package/dist/ordiscanRunesProtocolNetwork.d.ts.map +1 -0
- package/dist/ordiscanRunesProtocolNetwork.js +53 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types.d.ts +57 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/unisatRunesProtocolNetwork.d.ts +18 -0
- package/dist/unisatRunesProtocolNetwork.d.ts.map +1 -0
- package/dist/unisatRunesProtocolNetwork.js +78 -0
- 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 @@
|
|
|
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==
|
package/dist/index.d.ts
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=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
|