@rosen-bridge/cardano-observation-extractor 0.1.0-52fc0239

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ # @rosen-bridge/cardano-observation-extractor
2
+
3
+ ---
4
+
5
+ ## 0.1.0
6
+
7
+ - This package was **extracted** from `@rosen-bridge/observation-extractor`.
8
+ You can follow the previous history in the old package’s changelog. The last changelog update is available [here](https://github.com/rosen-bridge/scanner/blob/d4a5539b01c523b101104470b03ff7023a10b70b/packages/observation-extractor/CHANGELOG.md).
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # @rosen-bridge/cardano-observation-extractor
2
+
3
+ ## Table of contents
4
+
5
+ - [Introduction](#introduction)
6
+ - [Installation](#installation)
7
+
8
+ ## Introduction
9
+
10
+ Event observation data extractor for Cardano chain.
11
+
12
+ ## Installation
13
+
14
+ npm:
15
+
16
+ ```sh
17
+ npm i @rosen-bridge/cardano-observation-extractor
18
+ ```
19
+
20
+ yarn:
21
+
22
+ ```sh
23
+ yarn add @rosen-bridge/cardano-observation-extractor
24
+ ```
@@ -0,0 +1,2 @@
1
+ export declare const CARDANO_NATIVE_TOKEN = "ada";
2
+ //# sourceMappingURL=const.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../lib/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,QAAQ,CAAC"}
package/dist/const.js ADDED
@@ -0,0 +1,2 @@
1
+ export const CARDANO_NATIVE_TOKEN = 'ada';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IENBUkRBTk9fTkFUSVZFX1RPS0VOID0gJ2FkYSc7XG4iXX0=
@@ -0,0 +1,40 @@
1
+ import { DataSource } from '@rosen-bridge/extended-typeorm';
2
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
3
+ import { TokenMap } from '@rosen-bridge/tokens';
4
+ import { components } from '@blockfrost/openapi';
5
+ import { Block } from '@rosen-bridge/scanner-interfaces';
6
+ import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
7
+ interface BlockFrostTransaction {
8
+ utxos: components['schemas']['tx_content_utxo'];
9
+ metadata: components['schemas']['tx_content_metadata'];
10
+ }
11
+ export declare class CardanoBlockFrostObservationExtractor extends AbstractExtractor<BlockFrostTransaction> {
12
+ readonly logger: AbstractLogger;
13
+ private readonly actions;
14
+ private readonly extractor;
15
+ static readonly FROM_CHAIN: string;
16
+ constructor(dataSource: DataSource, tokens: TokenMap, address: string, logger?: AbstractLogger);
17
+ /**
18
+ * get Id for current extractor
19
+ */
20
+ getId: () => string;
21
+ /**
22
+ * gets block id and transactions corresponding to the block and saves if they are valid rosen
23
+ * transactions and in case of success return true and in case of failure returns false
24
+ * @param block
25
+ * @param txs
26
+ */
27
+ processTransactions: (txs: Array<BlockFrostTransaction>, block: Block) => Promise<boolean>;
28
+ /**
29
+ * fork one block and remove all stored information for this block
30
+ * @param hash: block hash
31
+ */
32
+ forkBlock: (hash: string) => Promise<void>;
33
+ /**
34
+ * Extractor box initialization
35
+ * No action needed in cardano extractors
36
+ */
37
+ initializeBoxes: () => Promise<void>;
38
+ }
39
+ export {};
40
+ //# sourceMappingURL=blockfrost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockfrost.d.ts","sourceRoot":"","sources":["../../lib/extractor/blockfrost.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAMrE,UAAU,qBAAqB;IAC7B,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAChD,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC;CACxD;AAED,qBAAa,qCAAsC,SAAQ,iBAAiB,CAAC,qBAAqB,CAAC;IACjG,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAC5D,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAa;gBAG7C,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,cAAc;IAYzB;;OAEG;IACH,KAAK,eAAwC;IAE7C;;;;;OAKG;IACH,mBAAmB,GACjB,KAAK,KAAK,CAAC,qBAAqB,CAAC,EACjC,OAAO,KAAK,KACX,OAAO,CAAC,OAAO,CAAC,CAyCjB;IAEF;;;OAGG;IACH,SAAS,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAE7C;IAEF;;;OAGG;IACH,eAAe,sBAEb;CACH"}
@@ -0,0 +1,82 @@
1
+ import { Buffer } from 'buffer';
2
+ import { blake2b } from 'blakejs';
3
+ import { DummyLogger } from '@rosen-bridge/abstract-logger';
4
+ import { CardanoBlockFrostRosenExtractor } from '@rosen-bridge/rosen-extractor';
5
+ import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
6
+ import { ObservationEntityAction, } from '@rosen-bridge/abstract-observation-extractor';
7
+ export class CardanoBlockFrostObservationExtractor extends AbstractExtractor {
8
+ logger;
9
+ actions;
10
+ extractor;
11
+ static FROM_CHAIN = 'cardano';
12
+ constructor(dataSource, tokens, address, logger) {
13
+ super();
14
+ this.logger = logger ? logger : new DummyLogger();
15
+ this.actions = new ObservationEntityAction(dataSource, this.logger);
16
+ this.extractor = new CardanoBlockFrostRosenExtractor(address, tokens, this.logger);
17
+ }
18
+ /**
19
+ * get Id for current extractor
20
+ */
21
+ getId = () => 'cardano-blockfrost-extractor';
22
+ /**
23
+ * gets block id and transactions corresponding to the block and saves if they are valid rosen
24
+ * transactions and in case of success return true and in case of failure returns false
25
+ * @param block
26
+ * @param txs
27
+ */
28
+ processTransactions = (txs, block) => {
29
+ return new Promise((resolve, reject) => {
30
+ try {
31
+ const observations = [];
32
+ txs.forEach((transaction) => {
33
+ const data = this.extractor.get(transaction);
34
+ if (data) {
35
+ const requestId = Buffer.from(blake2b(transaction.utxos.hash, undefined, 32)).toString('hex');
36
+ observations.push({
37
+ fromChain: CardanoBlockFrostObservationExtractor.FROM_CHAIN,
38
+ toChain: data.toChain,
39
+ amount: data.amount,
40
+ sourceChainTokenId: data.sourceChainTokenId,
41
+ targetChainTokenId: data.targetChainTokenId,
42
+ sourceTxId: data.sourceTxId,
43
+ bridgeFee: data.bridgeFee,
44
+ networkFee: data.networkFee,
45
+ sourceBlockId: block.hash,
46
+ requestId: requestId,
47
+ toAddress: data.toAddress,
48
+ fromAddress: data.fromAddress,
49
+ });
50
+ }
51
+ });
52
+ this.actions
53
+ .storeObservations(observations, block, this.getId())
54
+ .then((status) => {
55
+ resolve(status);
56
+ })
57
+ .catch((e) => {
58
+ this.logger.error(`An error occurred during store observations: ${e}`);
59
+ reject(e);
60
+ });
61
+ }
62
+ catch (e) {
63
+ reject(e);
64
+ }
65
+ });
66
+ };
67
+ /**
68
+ * fork one block and remove all stored information for this block
69
+ * @param hash: block hash
70
+ */
71
+ forkBlock = async (hash) => {
72
+ await this.actions.deleteBlockObservation(hash, this.getId());
73
+ };
74
+ /**
75
+ * Extractor box initialization
76
+ * No action needed in cardano extractors
77
+ */
78
+ initializeBoxes = async () => {
79
+ return;
80
+ };
81
+ }
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tmcm9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvYmxvY2tmcm9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU1RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUdoRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQ0wsdUJBQXVCLEdBRXhCLE1BQU0sOENBQThDLENBQUM7QUFPdEQsTUFBTSxPQUFPLHFDQUFzQyxTQUFRLGlCQUF3QztJQUN4RixNQUFNLENBQWlCO0lBQ2YsT0FBTyxDQUEwQjtJQUNqQyxTQUFTLENBQWtDO0lBQzVELE1BQU0sQ0FBVSxVQUFVLEdBQVcsU0FBUyxDQUFDO0lBRS9DLFlBQ0UsVUFBc0IsRUFDdEIsTUFBZ0IsRUFDaEIsT0FBZSxFQUNmLE1BQXVCO1FBRXZCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksdUJBQXVCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksK0JBQStCLENBQ2xELE9BQU8sRUFDUCxNQUFNLEVBQ04sSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLDhCQUE4QixDQUFDO0lBRTdDOzs7OztPQUtHO0lBQ0gsbUJBQW1CLEdBQUcsQ0FDcEIsR0FBaUMsRUFDakMsS0FBWSxFQUNNLEVBQUU7UUFDcEIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxZQUFZLEdBQWdDLEVBQUUsQ0FBQztnQkFDckQsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO29CQUMxQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztvQkFDN0MsSUFBSSxJQUFJLEVBQUUsQ0FBQzt3QkFDVCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUMzQixPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUMvQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDbEIsWUFBWSxDQUFDLElBQUksQ0FBQzs0QkFDaEIsU0FBUyxFQUFFLHFDQUFxQyxDQUFDLFVBQVU7NEJBQzNELE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzs0QkFDckIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNOzRCQUNuQixrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCOzRCQUMzQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCOzRCQUMzQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7NEJBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzs0QkFDekIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVOzRCQUMzQixhQUFhLEVBQUUsS0FBSyxDQUFDLElBQUk7NEJBQ3pCLFNBQVMsRUFBRSxTQUFTOzRCQUNwQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7NEJBQ3pCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVzt5QkFDOUIsQ0FBQyxDQUFDO29CQUNMLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLE9BQU87cUJBQ1QsaUJBQWlCLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7cUJBQ3BELElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUNmLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEIsQ0FBQyxDQUFDO3FCQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLGdEQUFnRCxDQUFDLEVBQUUsQ0FDcEQsQ0FBQztvQkFDRixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1osQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDWixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSCxTQUFTLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBaUIsRUFBRTtRQUNoRCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILGVBQWUsR0FBRyxLQUFLLElBQUksRUFBRTtRQUMzQixPQUFPO0lBQ1QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHsgYmxha2UyYiB9IGZyb20gJ2JsYWtlanMnO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgVG9rZW5NYXAgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Rva2Vucyc7XG5pbXBvcnQgeyBDYXJkYW5vQmxvY2tGcm9zdFJvc2VuRXh0cmFjdG9yIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9yb3Nlbi1leHRyYWN0b3InO1xuaW1wb3J0IHsgY29tcG9uZW50cyB9IGZyb20gJ0BibG9ja2Zyb3N0L29wZW5hcGknO1xuaW1wb3J0IHsgQmxvY2sgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXItaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBYnN0cmFjdEV4dHJhY3RvciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtZXh0cmFjdG9yJztcbmltcG9ydCB7XG4gIE9ic2VydmF0aW9uRW50aXR5QWN0aW9uLFxuICBFeHRyYWN0ZWRPYnNlcnZhdGlvbixcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1vYnNlcnZhdGlvbi1leHRyYWN0b3InO1xuXG5pbnRlcmZhY2UgQmxvY2tGcm9zdFRyYW5zYWN0aW9uIHtcbiAgdXR4b3M6IGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsndHhfY29udGVudF91dHhvJ107XG4gIG1ldGFkYXRhOiBjb21wb25lbnRzWydzY2hlbWFzJ11bJ3R4X2NvbnRlbnRfbWV0YWRhdGEnXTtcbn1cblxuZXhwb3J0IGNsYXNzIENhcmRhbm9CbG9ja0Zyb3N0T2JzZXJ2YXRpb25FeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdEV4dHJhY3RvcjxCbG9ja0Zyb3N0VHJhbnNhY3Rpb24+IHtcbiAgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25zOiBPYnNlcnZhdGlvbkVudGl0eUFjdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBleHRyYWN0b3I6IENhcmRhbm9CbG9ja0Zyb3N0Um9zZW5FeHRyYWN0b3I7XG4gIHN0YXRpYyByZWFkb25seSBGUk9NX0NIQUlOOiBzdHJpbmcgPSAnY2FyZGFubyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICB0b2tlbnM6IFRva2VuTWFwLFxuICAgIGFkZHJlc3M6IHN0cmluZyxcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlclxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyID8gbG9nZ2VyIDogbmV3IER1bW15TG9nZ2VyKCk7XG4gICAgdGhpcy5hY3Rpb25zID0gbmV3IE9ic2VydmF0aW9uRW50aXR5QWN0aW9uKGRhdGFTb3VyY2UsIHRoaXMubG9nZ2VyKTtcbiAgICB0aGlzLmV4dHJhY3RvciA9IG5ldyBDYXJkYW5vQmxvY2tGcm9zdFJvc2VuRXh0cmFjdG9yKFxuICAgICAgYWRkcmVzcyxcbiAgICAgIHRva2VucyxcbiAgICAgIHRoaXMubG9nZ2VyXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgSWQgZm9yIGN1cnJlbnQgZXh0cmFjdG9yXG4gICAqL1xuICBnZXRJZCA9ICgpID0+ICdjYXJkYW5vLWJsb2NrZnJvc3QtZXh0cmFjdG9yJztcblxuICAvKipcbiAgICogZ2V0cyBibG9jayBpZCBhbmQgdHJhbnNhY3Rpb25zIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJsb2NrIGFuZCBzYXZlcyBpZiB0aGV5IGFyZSB2YWxpZCByb3NlblxuICAgKiAgdHJhbnNhY3Rpb25zIGFuZCBpbiBjYXNlIG9mIHN1Y2Nlc3MgcmV0dXJuIHRydWUgYW5kIGluIGNhc2Ugb2YgZmFpbHVyZSByZXR1cm5zIGZhbHNlXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gdHhzXG4gICAqL1xuICBwcm9jZXNzVHJhbnNhY3Rpb25zID0gKFxuICAgIHR4czogQXJyYXk8QmxvY2tGcm9zdFRyYW5zYWN0aW9uPixcbiAgICBibG9jazogQmxvY2tcbiAgKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG9ic2VydmF0aW9uczogQXJyYXk8RXh0cmFjdGVkT2JzZXJ2YXRpb24+ID0gW107XG4gICAgICAgIHR4cy5mb3JFYWNoKCh0cmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmV4dHJhY3Rvci5nZXQodHJhbnNhY3Rpb24pO1xuICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0SWQgPSBCdWZmZXIuZnJvbShcbiAgICAgICAgICAgICAgYmxha2UyYih0cmFuc2FjdGlvbi51dHhvcy5oYXNoLCB1bmRlZmluZWQsIDMyKVxuICAgICAgICAgICAgKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgICAgICBvYnNlcnZhdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIGZyb21DaGFpbjogQ2FyZGFub0Jsb2NrRnJvc3RPYnNlcnZhdGlvbkV4dHJhY3Rvci5GUk9NX0NIQUlOLFxuICAgICAgICAgICAgICB0b0NoYWluOiBkYXRhLnRvQ2hhaW4sXG4gICAgICAgICAgICAgIGFtb3VudDogZGF0YS5hbW91bnQsXG4gICAgICAgICAgICAgIHNvdXJjZUNoYWluVG9rZW5JZDogZGF0YS5zb3VyY2VDaGFpblRva2VuSWQsXG4gICAgICAgICAgICAgIHRhcmdldENoYWluVG9rZW5JZDogZGF0YS50YXJnZXRDaGFpblRva2VuSWQsXG4gICAgICAgICAgICAgIHNvdXJjZVR4SWQ6IGRhdGEuc291cmNlVHhJZCxcbiAgICAgICAgICAgICAgYnJpZGdlRmVlOiBkYXRhLmJyaWRnZUZlZSxcbiAgICAgICAgICAgICAgbmV0d29ya0ZlZTogZGF0YS5uZXR3b3JrRmVlLFxuICAgICAgICAgICAgICBzb3VyY2VCbG9ja0lkOiBibG9jay5oYXNoLFxuICAgICAgICAgICAgICByZXF1ZXN0SWQ6IHJlcXVlc3RJZCxcbiAgICAgICAgICAgICAgdG9BZGRyZXNzOiBkYXRhLnRvQWRkcmVzcyxcbiAgICAgICAgICAgICAgZnJvbUFkZHJlc3M6IGRhdGEuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFjdGlvbnNcbiAgICAgICAgICAuc3RvcmVPYnNlcnZhdGlvbnMob2JzZXJ2YXRpb25zLCBibG9jaywgdGhpcy5nZXRJZCgpKVxuICAgICAgICAgIC50aGVuKChzdGF0dXMpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoc3RhdHVzKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgIGBBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgc3RvcmUgb2JzZXJ2YXRpb25zOiAke2V9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBmb3JrIG9uZSBibG9jayBhbmQgcmVtb3ZlIGFsbCBzdG9yZWQgaW5mb3JtYXRpb24gZm9yIHRoaXMgYmxvY2tcbiAgICogQHBhcmFtIGhhc2g6IGJsb2NrIGhhc2hcbiAgICovXG4gIGZvcmtCbG9jayA9IGFzeW5jIChoYXNoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBhd2FpdCB0aGlzLmFjdGlvbnMuZGVsZXRlQmxvY2tPYnNlcnZhdGlvbihoYXNoLCB0aGlzLmdldElkKCkpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBFeHRyYWN0b3IgYm94IGluaXRpYWxpemF0aW9uXG4gICAqIE5vIGFjdGlvbiBuZWVkZWQgaW4gY2FyZGFubyBleHRyYWN0b3JzXG4gICAqL1xuICBpbml0aWFsaXplQm94ZXMgPSBhc3luYyAoKSA9PiB7XG4gICAgcmV0dXJuO1xuICB9O1xufVxuIl19
@@ -0,0 +1,35 @@
1
+ import { DataSource } from '@rosen-bridge/extended-typeorm';
2
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
3
+ import { TokenMap } from '@rosen-bridge/tokens';
4
+ import { Block } from '@rosen-bridge/scanner-interfaces';
5
+ import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
6
+ import { KoiosTransaction } from '../interfaces/koiosTransaction';
7
+ export declare class CardanoKoiosObservationExtractor extends AbstractExtractor<KoiosTransaction> {
8
+ readonly logger: AbstractLogger;
9
+ private readonly actions;
10
+ private readonly extractor;
11
+ static readonly FROM_CHAIN: string;
12
+ constructor(dataSource: DataSource, tokens: TokenMap, address: string, logger?: AbstractLogger);
13
+ /**
14
+ * get Id for current extractor
15
+ */
16
+ getId: () => string;
17
+ /**
18
+ * gets block id and transactions corresponding to the block and saves if they are valid rosen
19
+ * transactions and in case of success return true and in case of failure returns false
20
+ * @param block
21
+ * @param txs
22
+ */
23
+ processTransactions: (txs: Array<KoiosTransaction>, block: Block) => Promise<boolean>;
24
+ /**
25
+ * fork one block and remove all stored information for this block
26
+ * @param hash: block hash
27
+ */
28
+ forkBlock: (hash: string) => Promise<void>;
29
+ /**
30
+ * Extractor box initialization
31
+ * No action needed in cardano extractors
32
+ */
33
+ initializeBoxes: () => Promise<void>;
34
+ }
35
+ //# sourceMappingURL=koios.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"koios.d.ts","sourceRoot":"","sources":["../../lib/extractor/koios.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAKrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,qBAAa,gCAAiC,SAAQ,iBAAiB,CAAC,gBAAgB,CAAC;IACvF,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAa;gBAG7C,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,cAAc;IAYzB;;OAEG;IACH,KAAK,eAAmC;IAExC;;;;;OAKG;IACH,mBAAmB,GACjB,KAAK,KAAK,CAAC,gBAAgB,CAAC,EAC5B,OAAO,KAAK,KACX,OAAO,CAAC,OAAO,CAAC,CAyCjB;IAEF;;;OAGG;IACH,SAAS,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAE7C;IAEF;;;OAGG;IACH,eAAe,sBAEb;CACH"}
@@ -0,0 +1,82 @@
1
+ import { Buffer } from 'buffer';
2
+ import { blake2b } from 'blakejs';
3
+ import { DummyLogger } from '@rosen-bridge/abstract-logger';
4
+ import { CardanoKoiosRosenExtractor } from '@rosen-bridge/rosen-extractor';
5
+ import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
6
+ import { ObservationEntityAction, } from '@rosen-bridge/abstract-observation-extractor';
7
+ export class CardanoKoiosObservationExtractor extends AbstractExtractor {
8
+ logger;
9
+ actions;
10
+ extractor;
11
+ static FROM_CHAIN = 'cardano';
12
+ constructor(dataSource, tokens, address, logger) {
13
+ super();
14
+ this.logger = logger ? logger : new DummyLogger();
15
+ this.actions = new ObservationEntityAction(dataSource, this.logger);
16
+ this.extractor = new CardanoKoiosRosenExtractor(address, tokens, this.logger);
17
+ }
18
+ /**
19
+ * get Id for current extractor
20
+ */
21
+ getId = () => 'cardano-koios-extractor';
22
+ /**
23
+ * gets block id and transactions corresponding to the block and saves if they are valid rosen
24
+ * transactions and in case of success return true and in case of failure returns false
25
+ * @param block
26
+ * @param txs
27
+ */
28
+ processTransactions = (txs, block) => {
29
+ return new Promise((resolve, reject) => {
30
+ try {
31
+ const observations = [];
32
+ txs.forEach((transaction) => {
33
+ const data = this.extractor.get(transaction);
34
+ if (data) {
35
+ const requestId = Buffer.from(blake2b(transaction.tx_hash, undefined, 32)).toString('hex');
36
+ observations.push({
37
+ fromChain: CardanoKoiosObservationExtractor.FROM_CHAIN,
38
+ toChain: data.toChain,
39
+ amount: data.amount,
40
+ sourceChainTokenId: data.sourceChainTokenId,
41
+ targetChainTokenId: data.targetChainTokenId,
42
+ sourceTxId: data.sourceTxId,
43
+ bridgeFee: data.bridgeFee,
44
+ networkFee: data.networkFee,
45
+ sourceBlockId: block.hash,
46
+ requestId: requestId,
47
+ toAddress: data.toAddress,
48
+ fromAddress: data.fromAddress,
49
+ });
50
+ }
51
+ });
52
+ this.actions
53
+ .storeObservations(observations, block, this.getId())
54
+ .then((status) => {
55
+ resolve(status);
56
+ })
57
+ .catch((e) => {
58
+ this.logger.error(`An error occurred during store observations: ${e}`);
59
+ reject(e);
60
+ });
61
+ }
62
+ catch (e) {
63
+ reject(e);
64
+ }
65
+ });
66
+ };
67
+ /**
68
+ * fork one block and remove all stored information for this block
69
+ * @param hash: block hash
70
+ */
71
+ forkBlock = async (hash) => {
72
+ await this.actions.deleteBlockObservation(hash, this.getId());
73
+ };
74
+ /**
75
+ * Extractor box initialization
76
+ * No action needed in cardano extractors
77
+ */
78
+ initializeBoxes = async () => {
79
+ return;
80
+ };
81
+ }
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia29pb3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvZXh0cmFjdG9yL2tvaW9zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDaEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTVFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3JFLE9BQU8sRUFFTCx1QkFBdUIsR0FDeEIsTUFBTSw4Q0FBOEMsQ0FBQztBQUd0RCxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsaUJBQW1DO0lBQzlFLE1BQU0sQ0FBaUI7SUFDZixPQUFPLENBQTBCO0lBQ2pDLFNBQVMsQ0FBNkI7SUFDdkQsTUFBTSxDQUFVLFVBQVUsR0FBVyxTQUFTLENBQUM7SUFFL0MsWUFDRSxVQUFzQixFQUN0QixNQUFnQixFQUNoQixPQUFlLEVBQ2YsTUFBdUI7UUFFdkIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSwwQkFBMEIsQ0FDN0MsT0FBTyxFQUNQLE1BQU0sRUFDTixJQUFJLENBQUMsTUFBTSxDQUNaLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMseUJBQXlCLENBQUM7SUFFeEM7Ozs7O09BS0c7SUFDSCxtQkFBbUIsR0FBRyxDQUNwQixHQUE0QixFQUM1QixLQUFZLEVBQ00sRUFBRTtRQUNwQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQztnQkFDSCxNQUFNLFlBQVksR0FBZ0MsRUFBRSxDQUFDO2dCQUNyRCxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7b0JBQzFCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUM3QyxJQUFJLElBQUksRUFBRSxDQUFDO3dCQUNULE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQzNCLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FDNUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ2xCLFlBQVksQ0FBQyxJQUFJLENBQUM7NEJBQ2hCLFNBQVMsRUFBRSxnQ0FBZ0MsQ0FBQyxVQUFVOzRCQUN0RCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87NEJBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTs0QkFDbkIsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjs0QkFDM0Msa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjs0QkFDM0MsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVOzRCQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7NEJBQ3pCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTs0QkFDM0IsYUFBYSxFQUFFLEtBQUssQ0FBQyxJQUFJOzRCQUN6QixTQUFTLEVBQUUsU0FBUzs0QkFDcEIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTOzRCQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7eUJBQzlCLENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxPQUFPO3FCQUNULGlCQUFpQixDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO3FCQUNwRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtvQkFDZixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2xCLENBQUMsQ0FBQztxQkFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixnREFBZ0QsQ0FBQyxFQUFFLENBQ3BELENBQUM7b0JBQ0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNaLENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsU0FBUyxHQUFHLEtBQUssRUFBRSxJQUFZLEVBQWlCLEVBQUU7UUFDaEQsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSCxlQUFlLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDM0IsT0FBTztJQUNULENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuaW1wb3J0IHsgQnVmZmVyIH0gZnJvbSAnYnVmZmVyJztcbmltcG9ydCB7IGJsYWtlMmIgfSBmcm9tICdibGFrZWpzJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IFRva2VuTWFwIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS90b2tlbnMnO1xuaW1wb3J0IHsgQ2FyZGFub0tvaW9zUm9zZW5FeHRyYWN0b3IgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Jvc2VuLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBCbG9jayB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFic3RyYWN0RXh0cmFjdG9yIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1leHRyYWN0b3InO1xuaW1wb3J0IHtcbiAgRXh0cmFjdGVkT2JzZXJ2YXRpb24sXG4gIE9ic2VydmF0aW9uRW50aXR5QWN0aW9uLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LW9ic2VydmF0aW9uLWV4dHJhY3Rvcic7XG5pbXBvcnQgeyBLb2lvc1RyYW5zYWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9rb2lvc1RyYW5zYWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIENhcmRhbm9Lb2lvc09ic2VydmF0aW9uRXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RFeHRyYWN0b3I8S29pb3NUcmFuc2FjdGlvbj4ge1xuICByZWFkb25seSBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbnM6IE9ic2VydmF0aW9uRW50aXR5QWN0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IGV4dHJhY3RvcjogQ2FyZGFub0tvaW9zUm9zZW5FeHRyYWN0b3I7XG4gIHN0YXRpYyByZWFkb25seSBGUk9NX0NIQUlOOiBzdHJpbmcgPSAnY2FyZGFubyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICB0b2tlbnM6IFRva2VuTWFwLFxuICAgIGFkZHJlc3M6IHN0cmluZyxcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlclxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyID8gbG9nZ2VyIDogbmV3IER1bW15TG9nZ2VyKCk7XG4gICAgdGhpcy5hY3Rpb25zID0gbmV3IE9ic2VydmF0aW9uRW50aXR5QWN0aW9uKGRhdGFTb3VyY2UsIHRoaXMubG9nZ2VyKTtcbiAgICB0aGlzLmV4dHJhY3RvciA9IG5ldyBDYXJkYW5vS29pb3NSb3NlbkV4dHJhY3RvcihcbiAgICAgIGFkZHJlc3MsXG4gICAgICB0b2tlbnMsXG4gICAgICB0aGlzLmxvZ2dlclxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IElkIGZvciBjdXJyZW50IGV4dHJhY3RvclxuICAgKi9cbiAgZ2V0SWQgPSAoKSA9PiAnY2FyZGFuby1rb2lvcy1leHRyYWN0b3InO1xuXG4gIC8qKlxuICAgKiBnZXRzIGJsb2NrIGlkIGFuZCB0cmFuc2FjdGlvbnMgY29ycmVzcG9uZGluZyB0byB0aGUgYmxvY2sgYW5kIHNhdmVzIGlmIHRoZXkgYXJlIHZhbGlkIHJvc2VuXG4gICAqICB0cmFuc2FjdGlvbnMgYW5kIGluIGNhc2Ugb2Ygc3VjY2VzcyByZXR1cm4gdHJ1ZSBhbmQgaW4gY2FzZSBvZiBmYWlsdXJlIHJldHVybnMgZmFsc2VcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSB0eHNcbiAgICovXG4gIHByb2Nlc3NUcmFuc2FjdGlvbnMgPSAoXG4gICAgdHhzOiBBcnJheTxLb2lvc1RyYW5zYWN0aW9uPixcbiAgICBibG9jazogQmxvY2tcbiAgKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IG9ic2VydmF0aW9uczogQXJyYXk8RXh0cmFjdGVkT2JzZXJ2YXRpb24+ID0gW107XG4gICAgICAgIHR4cy5mb3JFYWNoKCh0cmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmV4dHJhY3Rvci5nZXQodHJhbnNhY3Rpb24pO1xuICAgICAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0SWQgPSBCdWZmZXIuZnJvbShcbiAgICAgICAgICAgICAgYmxha2UyYih0cmFuc2FjdGlvbi50eF9oYXNoLCB1bmRlZmluZWQsIDMyKVxuICAgICAgICAgICAgKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgICAgICBvYnNlcnZhdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIGZyb21DaGFpbjogQ2FyZGFub0tvaW9zT2JzZXJ2YXRpb25FeHRyYWN0b3IuRlJPTV9DSEFJTixcbiAgICAgICAgICAgICAgdG9DaGFpbjogZGF0YS50b0NoYWluLFxuICAgICAgICAgICAgICBhbW91bnQ6IGRhdGEuYW1vdW50LFxuICAgICAgICAgICAgICBzb3VyY2VDaGFpblRva2VuSWQ6IGRhdGEuc291cmNlQ2hhaW5Ub2tlbklkLFxuICAgICAgICAgICAgICB0YXJnZXRDaGFpblRva2VuSWQ6IGRhdGEudGFyZ2V0Q2hhaW5Ub2tlbklkLFxuICAgICAgICAgICAgICBzb3VyY2VUeElkOiBkYXRhLnNvdXJjZVR4SWQsXG4gICAgICAgICAgICAgIGJyaWRnZUZlZTogZGF0YS5icmlkZ2VGZWUsXG4gICAgICAgICAgICAgIG5ldHdvcmtGZWU6IGRhdGEubmV0d29ya0ZlZSxcbiAgICAgICAgICAgICAgc291cmNlQmxvY2tJZDogYmxvY2suaGFzaCxcbiAgICAgICAgICAgICAgcmVxdWVzdElkOiByZXF1ZXN0SWQsXG4gICAgICAgICAgICAgIHRvQWRkcmVzczogZGF0YS50b0FkZHJlc3MsXG4gICAgICAgICAgICAgIGZyb21BZGRyZXNzOiBkYXRhLmZyb21BZGRyZXNzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hY3Rpb25zXG4gICAgICAgICAgLnN0b3JlT2JzZXJ2YXRpb25zKG9ic2VydmF0aW9ucywgYmxvY2ssIHRoaXMuZ2V0SWQoKSlcbiAgICAgICAgICAudGhlbigoc3RhdHVzKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKHN0YXR1cyk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICBgQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHN0b3JlIG9ic2VydmF0aW9uczogJHtlfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogZm9yayBvbmUgYmxvY2sgYW5kIHJlbW92ZSBhbGwgc3RvcmVkIGluZm9ybWF0aW9uIGZvciB0aGlzIGJsb2NrXG4gICAqIEBwYXJhbSBoYXNoOiBibG9jayBoYXNoXG4gICAqL1xuICBmb3JrQmxvY2sgPSBhc3luYyAoaGFzaDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgYXdhaXQgdGhpcy5hY3Rpb25zLmRlbGV0ZUJsb2NrT2JzZXJ2YXRpb24oaGFzaCwgdGhpcy5nZXRJZCgpKTtcbiAgfTtcblxuICAvKipcbiAgICogRXh0cmFjdG9yIGJveCBpbml0aWFsaXphdGlvblxuICAgKiBObyBhY3Rpb24gbmVlZGVkIGluIGNhcmRhbm8gZXh0cmFjdG9yc1xuICAgKi9cbiAgaW5pdGlhbGl6ZUJveGVzID0gYXN5bmMgKCkgPT4ge1xuICAgIHJldHVybjtcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,35 @@
1
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
+ import { Transaction } from '@cardano-ogmios/schema';
3
+ import { DataSource } from '@rosen-bridge/extended-typeorm';
4
+ import { TokenMap } from '@rosen-bridge/tokens';
5
+ import { Block } from '@rosen-bridge/scanner-interfaces';
6
+ import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
7
+ export declare class CardanoOgmiosObservationExtractor extends AbstractExtractor<Transaction> {
8
+ readonly logger: AbstractLogger;
9
+ private readonly actions;
10
+ private readonly extractor;
11
+ static readonly FROM_CHAIN: string;
12
+ constructor(dataSource: DataSource, tokens: TokenMap, address: string, logger?: AbstractLogger);
13
+ /**
14
+ * get Id for current extractor
15
+ */
16
+ getId: () => string;
17
+ /**
18
+ * gets block id and transactions corresponding to the block and saves if they are valid rosen
19
+ * transactions and in case of success return true and in case of failure returns false
20
+ * @param block
21
+ * @param txs
22
+ */
23
+ processTransactions: (txs: Array<Transaction>, block: Block) => Promise<boolean>;
24
+ /**
25
+ * fork one block and remove all stored information for this block
26
+ * @param hash: block hash
27
+ */
28
+ forkBlock: (hash: string) => Promise<void>;
29
+ /**
30
+ * Extractor box initialization
31
+ * No action needed in cardano extractors
32
+ */
33
+ initializeBoxes: () => Promise<void>;
34
+ }
35
+ //# sourceMappingURL=ogmios.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ogmios.d.ts","sourceRoot":"","sources":["../../lib/extractor/ogmios.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIhD,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAMrE,qBAAa,iCAAkC,SAAQ,iBAAiB,CAAC,WAAW,CAAC;IACnF,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8B;IACxD,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAa;gBAG7C,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,cAAc;IAYzB;;OAEG;IACH,KAAK,eAAoC;IAEzC;;;;;OAKG;IACH,mBAAmB,GACjB,KAAK,KAAK,CAAC,WAAW,CAAC,EACvB,OAAO,KAAK,KACX,OAAO,CAAC,OAAO,CAAC,CAyCjB;IAEF;;;OAGG;IACH,SAAS,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAE7C;IAEF;;;OAGG;IACH,eAAe,sBAEb;CACH"}
@@ -0,0 +1,82 @@
1
+ import { DummyLogger } from '@rosen-bridge/abstract-logger';
2
+ import { Buffer } from 'buffer';
3
+ import { blake2b } from 'blakejs';
4
+ import { CardanoOgmiosRosenExtractor } from '@rosen-bridge/rosen-extractor';
5
+ import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
6
+ import { ObservationEntityAction, } from '@rosen-bridge/abstract-observation-extractor';
7
+ export class CardanoOgmiosObservationExtractor extends AbstractExtractor {
8
+ logger;
9
+ actions;
10
+ extractor;
11
+ static FROM_CHAIN = 'cardano';
12
+ constructor(dataSource, tokens, address, logger) {
13
+ super();
14
+ this.logger = logger ? logger : new DummyLogger();
15
+ this.actions = new ObservationEntityAction(dataSource, this.logger);
16
+ this.extractor = new CardanoOgmiosRosenExtractor(address, tokens, this.logger);
17
+ }
18
+ /**
19
+ * get Id for current extractor
20
+ */
21
+ getId = () => 'cardano-ogmios-extractor';
22
+ /**
23
+ * gets block id and transactions corresponding to the block and saves if they are valid rosen
24
+ * transactions and in case of success return true and in case of failure returns false
25
+ * @param block
26
+ * @param txs
27
+ */
28
+ processTransactions = (txs, block) => {
29
+ return new Promise((resolve, reject) => {
30
+ try {
31
+ const observations = [];
32
+ for (const transaction of txs) {
33
+ const data = this.extractor.get(transaction);
34
+ if (data) {
35
+ const requestId = Buffer.from(blake2b(transaction.id, undefined, 32)).toString('hex');
36
+ observations.push({
37
+ fromChain: CardanoOgmiosObservationExtractor.FROM_CHAIN,
38
+ toChain: data.toChain,
39
+ amount: data.amount,
40
+ sourceChainTokenId: data.sourceChainTokenId,
41
+ targetChainTokenId: data.targetChainTokenId,
42
+ sourceTxId: data.sourceTxId,
43
+ bridgeFee: data.bridgeFee,
44
+ networkFee: data.networkFee,
45
+ sourceBlockId: block.hash,
46
+ requestId: requestId,
47
+ toAddress: data.toAddress,
48
+ fromAddress: data.fromAddress,
49
+ });
50
+ }
51
+ }
52
+ this.actions
53
+ .storeObservations(observations, block, this.getId())
54
+ .then((status) => {
55
+ resolve(status);
56
+ })
57
+ .catch((e) => {
58
+ this.logger.error(`An error occurred during store observations: ${e}`);
59
+ reject(e);
60
+ });
61
+ }
62
+ catch (e) {
63
+ reject(e);
64
+ }
65
+ });
66
+ };
67
+ /**
68
+ * fork one block and remove all stored information for this block
69
+ * @param hash: block hash
70
+ */
71
+ forkBlock = async (hash) => {
72
+ await this.actions.deleteBlockObservation(hash, this.getId());
73
+ };
74
+ /**
75
+ * Extractor box initialization
76
+ * No action needed in cardano extractors
77
+ */
78
+ initializeBoxes = async () => {
79
+ return;
80
+ };
81
+ }
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2dtaW9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2V4dHJhY3Rvci9vZ21pb3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUk1RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUVMLHVCQUF1QixHQUN4QixNQUFNLDhDQUE4QyxDQUFDO0FBRXRELE1BQU0sT0FBTyxpQ0FBa0MsU0FBUSxpQkFBOEI7SUFDMUUsTUFBTSxDQUFpQjtJQUNmLE9BQU8sQ0FBMEI7SUFDakMsU0FBUyxDQUE4QjtJQUN4RCxNQUFNLENBQVUsVUFBVSxHQUFXLFNBQVMsQ0FBQztJQUUvQyxZQUNFLFVBQXNCLEVBQ3RCLE1BQWdCLEVBQ2hCLE9BQWUsRUFDZixNQUF1QjtRQUV2QixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLHVCQUF1QixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLDJCQUEyQixDQUM5QyxPQUFPLEVBQ1AsTUFBTSxFQUNOLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztJQUV6Qzs7Ozs7T0FLRztJQUNILG1CQUFtQixHQUFHLENBQ3BCLEdBQXVCLEVBQ3ZCLEtBQVksRUFDTSxFQUFFO1FBQ3BCLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDO2dCQUNILE1BQU0sWUFBWSxHQUFnQyxFQUFFLENBQUM7Z0JBQ3JELEtBQUssTUFBTSxXQUFXLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQzlCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUM3QyxJQUFJLElBQUksRUFBRSxDQUFDO3dCQUNULE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQzNCLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FDdkMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7d0JBQ2xCLFlBQVksQ0FBQyxJQUFJLENBQUM7NEJBQ2hCLFNBQVMsRUFBRSxpQ0FBaUMsQ0FBQyxVQUFVOzRCQUN2RCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87NEJBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTs0QkFDbkIsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjs0QkFDM0Msa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjs0QkFDM0MsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVOzRCQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7NEJBQ3pCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTs0QkFDM0IsYUFBYSxFQUFFLEtBQUssQ0FBQyxJQUFJOzRCQUN6QixTQUFTLEVBQUUsU0FBUzs0QkFDcEIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTOzRCQUN6QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7eUJBQzlCLENBQUMsQ0FBQztvQkFDTCxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsSUFBSSxDQUFDLE9BQU87cUJBQ1QsaUJBQWlCLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7cUJBQ3BELElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO29CQUNmLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEIsQ0FBQyxDQUFDO3FCQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLGdEQUFnRCxDQUFDLEVBQUUsQ0FDcEQsQ0FBQztvQkFDRixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ1osQ0FBQyxDQUFDLENBQUM7WUFDUCxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDWixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSCxTQUFTLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBaUIsRUFBRTtRQUNoRCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILGVBQWUsR0FBRyxLQUFLLElBQUksRUFBRTtRQUMzQixPQUFPO0lBQ1QsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICdAY2FyZGFuby1vZ21pb3Mvc2NoZW1hJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuaW1wb3J0IHsgVG9rZW5NYXAgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Rva2Vucyc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHsgYmxha2UyYiB9IGZyb20gJ2JsYWtlanMnO1xuaW1wb3J0IHsgQ2FyZGFub09nbWlvc1Jvc2VuRXh0cmFjdG9yIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9yb3Nlbi1leHRyYWN0b3InO1xuaW1wb3J0IHsgQmxvY2sgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXItaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBYnN0cmFjdEV4dHJhY3RvciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtZXh0cmFjdG9yJztcbmltcG9ydCB7XG4gIEV4dHJhY3RlZE9ic2VydmF0aW9uLFxuICBPYnNlcnZhdGlvbkVudGl0eUFjdGlvbixcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1vYnNlcnZhdGlvbi1leHRyYWN0b3InO1xuXG5leHBvcnQgY2xhc3MgQ2FyZGFub09nbWlvc09ic2VydmF0aW9uRXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RFeHRyYWN0b3I8VHJhbnNhY3Rpb24+IHtcbiAgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25zOiBPYnNlcnZhdGlvbkVudGl0eUFjdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBleHRyYWN0b3I6IENhcmRhbm9PZ21pb3NSb3NlbkV4dHJhY3RvcjtcbiAgc3RhdGljIHJlYWRvbmx5IEZST01fQ0hBSU46IHN0cmluZyA9ICdjYXJkYW5vJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIHRva2VuczogVG9rZW5NYXAsXG4gICAgYWRkcmVzczogc3RyaW5nLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXIgPyBsb2dnZXIgOiBuZXcgRHVtbXlMb2dnZXIoKTtcbiAgICB0aGlzLmFjdGlvbnMgPSBuZXcgT2JzZXJ2YXRpb25FbnRpdHlBY3Rpb24oZGF0YVNvdXJjZSwgdGhpcy5sb2dnZXIpO1xuICAgIHRoaXMuZXh0cmFjdG9yID0gbmV3IENhcmRhbm9PZ21pb3NSb3NlbkV4dHJhY3RvcihcbiAgICAgIGFkZHJlc3MsXG4gICAgICB0b2tlbnMsXG4gICAgICB0aGlzLmxvZ2dlclxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogZ2V0IElkIGZvciBjdXJyZW50IGV4dHJhY3RvclxuICAgKi9cbiAgZ2V0SWQgPSAoKSA9PiAnY2FyZGFuby1vZ21pb3MtZXh0cmFjdG9yJztcblxuICAvKipcbiAgICogZ2V0cyBibG9jayBpZCBhbmQgdHJhbnNhY3Rpb25zIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJsb2NrIGFuZCBzYXZlcyBpZiB0aGV5IGFyZSB2YWxpZCByb3NlblxuICAgKiAgdHJhbnNhY3Rpb25zIGFuZCBpbiBjYXNlIG9mIHN1Y2Nlc3MgcmV0dXJuIHRydWUgYW5kIGluIGNhc2Ugb2YgZmFpbHVyZSByZXR1cm5zIGZhbHNlXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gdHhzXG4gICAqL1xuICBwcm9jZXNzVHJhbnNhY3Rpb25zID0gKFxuICAgIHR4czogQXJyYXk8VHJhbnNhY3Rpb24+LFxuICAgIGJsb2NrOiBCbG9ja1xuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgb2JzZXJ2YXRpb25zOiBBcnJheTxFeHRyYWN0ZWRPYnNlcnZhdGlvbj4gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCB0cmFuc2FjdGlvbiBvZiB0eHMpIHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5leHRyYWN0b3IuZ2V0KHRyYW5zYWN0aW9uKTtcbiAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdElkID0gQnVmZmVyLmZyb20oXG4gICAgICAgICAgICAgIGJsYWtlMmIodHJhbnNhY3Rpb24uaWQsIHVuZGVmaW5lZCwgMzIpXG4gICAgICAgICAgICApLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgICAgIG9ic2VydmF0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgZnJvbUNoYWluOiBDYXJkYW5vT2dtaW9zT2JzZXJ2YXRpb25FeHRyYWN0b3IuRlJPTV9DSEFJTixcbiAgICAgICAgICAgICAgdG9DaGFpbjogZGF0YS50b0NoYWluLFxuICAgICAgICAgICAgICBhbW91bnQ6IGRhdGEuYW1vdW50LFxuICAgICAgICAgICAgICBzb3VyY2VDaGFpblRva2VuSWQ6IGRhdGEuc291cmNlQ2hhaW5Ub2tlbklkLFxuICAgICAgICAgICAgICB0YXJnZXRDaGFpblRva2VuSWQ6IGRhdGEudGFyZ2V0Q2hhaW5Ub2tlbklkLFxuICAgICAgICAgICAgICBzb3VyY2VUeElkOiBkYXRhLnNvdXJjZVR4SWQsXG4gICAgICAgICAgICAgIGJyaWRnZUZlZTogZGF0YS5icmlkZ2VGZWUsXG4gICAgICAgICAgICAgIG5ldHdvcmtGZWU6IGRhdGEubmV0d29ya0ZlZSxcbiAgICAgICAgICAgICAgc291cmNlQmxvY2tJZDogYmxvY2suaGFzaCxcbiAgICAgICAgICAgICAgcmVxdWVzdElkOiByZXF1ZXN0SWQsXG4gICAgICAgICAgICAgIHRvQWRkcmVzczogZGF0YS50b0FkZHJlc3MsXG4gICAgICAgICAgICAgIGZyb21BZGRyZXNzOiBkYXRhLmZyb21BZGRyZXNzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0aW9uc1xuICAgICAgICAgIC5zdG9yZU9ic2VydmF0aW9ucyhvYnNlcnZhdGlvbnMsIGJsb2NrLCB0aGlzLmdldElkKCkpXG4gICAgICAgICAgLnRoZW4oKHN0YXR1cykgPT4ge1xuICAgICAgICAgICAgcmVzb2x2ZShzdGF0dXMpO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgYEFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBzdG9yZSBvYnNlcnZhdGlvbnM6ICR7ZX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIGZvcmsgb25lIGJsb2NrIGFuZCByZW1vdmUgYWxsIHN0b3JlZCBpbmZvcm1hdGlvbiBmb3IgdGhpcyBibG9ja1xuICAgKiBAcGFyYW0gaGFzaDogYmxvY2sgaGFzaFxuICAgKi9cbiAgZm9ya0Jsb2NrID0gYXN5bmMgKGhhc2g6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5kZWxldGVCbG9ja09ic2VydmF0aW9uKGhhc2gsIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RvciBib3ggaW5pdGlhbGl6YXRpb25cbiAgICogTm8gYWN0aW9uIG5lZWRlZCBpbiBjYXJkYW5vIGV4dHJhY3RvcnNcbiAgICovXG4gIGluaXRpYWxpemVCb3hlcyA9IGFzeW5jICgpID0+IHtcbiAgICByZXR1cm47XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export * from './extractor/blockfrost';
2
+ export * from './extractor/koios';
3
+ export * from './extractor/ogmios';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from './extractor/blockfrost';
2
+ export * from './extractor/koios';
3
+ export * from './extractor/ogmios';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2V4dHJhY3Rvci9ibG9ja2Zyb3N0JztcbmV4cG9ydCAqIGZyb20gJy4vZXh0cmFjdG9yL2tvaW9zJztcbmV4cG9ydCAqIGZyb20gJy4vZXh0cmFjdG9yL29nbWlvcyc7XG4iXX0=
@@ -0,0 +1,13 @@
1
+ import { TransactionJSON } from '@emurgo/cardano-serialization-lib-nodejs';
2
+ interface KoiosCborTx {
3
+ tx_hash: string;
4
+ block_hash: string;
5
+ block_height: number;
6
+ epoch_no: number;
7
+ absolute_slot: number;
8
+ tx_timestamp: number;
9
+ cbor: string;
10
+ }
11
+ type KoiosTransaction = KoiosCborTx & TransactionJSON;
12
+ export { KoiosTransaction };
13
+ //# sourceMappingURL=koiosTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"koiosTransaction.d.ts","sourceRoot":"","sources":["../../lib/interfaces/koiosTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,UAAU,WAAW;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,KAAK,gBAAgB,GAAG,WAAW,GAAG,eAAe,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia29pb3NUcmFuc2FjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9pbnRlcmZhY2VzL2tvaW9zVHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uSlNPTiB9IGZyb20gJ0BlbXVyZ28vY2FyZGFuby1zZXJpYWxpemF0aW9uLWxpYi1ub2RlanMnO1xuXG5pbnRlcmZhY2UgS29pb3NDYm9yVHgge1xuICB0eF9oYXNoOiBzdHJpbmc7XG4gIGJsb2NrX2hhc2g6IHN0cmluZztcbiAgYmxvY2tfaGVpZ2h0OiBudW1iZXI7XG4gIGVwb2NoX25vOiBudW1iZXI7XG4gIGFic29sdXRlX3Nsb3Q6IG51bWJlcjtcbiAgdHhfdGltZXN0YW1wOiBudW1iZXI7XG4gIGNib3I6IHN0cmluZztcbn1cblxudHlwZSBLb2lvc1RyYW5zYWN0aW9uID0gS29pb3NDYm9yVHggJiBUcmFuc2FjdGlvbkpTT047XG5cbmV4cG9ydCB7IEtvaW9zVHJhbnNhY3Rpb24gfTtcbiJdfQ==
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@rosen-bridge/cardano-observation-extractor",
3
+ "version": "0.1.0-52fc0239",
4
+ "description": "Event observation data extractor for Cardano chain",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/rosen-bridge/scanner.git"
8
+ },
9
+ "license": "MIT",
10
+ "author": "Rosen Team",
11
+ "type": "module",
12
+ "main": "dist/index.js",
13
+ "types": "dist/index.d.ts",
14
+ "files": [
15
+ "dist",
16
+ "CHANGELOG.md"
17
+ ],
18
+ "scripts": {
19
+ "build": "tsc --build tsconfig.build.json",
20
+ "coverage": "npm run test -- --coverage",
21
+ "lint": "eslint --fix . && npm run prettify",
22
+ "prettify": "prettier --write . --ignore-path ./.gitignore",
23
+ "release": "npm run test -- --run && npm run build && npm publish --access public",
24
+ "test": "NODE_OPTIONS='--import tsx' vitest",
25
+ "type-check": "tsc --noEmit"
26
+ },
27
+ "devDependencies": {
28
+ "@types/node": "^22.18.0",
29
+ "@vitest/coverage-istanbul": "^3.1.4",
30
+ "@rosen-bridge/abstract-scanner": "^0.1.0-52fc0239",
31
+ "tsx": "^4.19.4",
32
+ "typescript": "^5.3.3",
33
+ "vitest": "^3.1.4"
34
+ },
35
+ "dependencies": {
36
+ "@blockfrost/openapi": "0.1.78",
37
+ "@cardano-ogmios/schema": "^6.6.1",
38
+ "@emurgo/cardano-serialization-lib-nodejs": "^13.2.1",
39
+ "@rosen-bridge/abstract-observation-extractor": "^0.1.0-52fc0239",
40
+ "@rosen-bridge/abstract-extractor": "^2.0.3-52fc0239",
41
+ "@rosen-bridge/abstract-logger": "^2.0.1",
42
+ "@rosen-bridge/rosen-extractor": "^8.0.1",
43
+ "@rosen-bridge/scanner-interfaces": "^0.1.1-52fc0239",
44
+ "@rosen-bridge/tokens": "^3.1.1",
45
+ "blakejs": "^1.2.1",
46
+ "@rosen-bridge/extended-typeorm": "^0.2.1"
47
+ },
48
+ "engines": {
49
+ "node": ">=22.18.0"
50
+ }
51
+ }