@rosen-bridge/watcher-data-extractor 2.1.4 → 2.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/package.json +3 -3
  2. package/dist/actions/EventTriggerAction.d.ts +0 -35
  3. package/dist/actions/EventTriggerAction.d.ts.map +0 -1
  4. package/dist/actions/EventTriggerAction.js +0 -122
  5. package/dist/actions/EventTriggerDB.d.ts +0 -33
  6. package/dist/actions/EventTriggerDB.d.ts.map +0 -1
  7. package/dist/actions/EventTriggerDB.js +0 -145
  8. package/dist/actions/commitmentAction.d.ts +0 -33
  9. package/dist/actions/commitmentAction.d.ts.map +0 -1
  10. package/dist/actions/commitmentAction.js +0 -110
  11. package/dist/actions/commitmentDB.d.ts +0 -32
  12. package/dist/actions/commitmentDB.d.ts.map +0 -1
  13. package/dist/actions/commitmentDB.js +0 -129
  14. package/dist/actions/permitAction.d.ts +0 -64
  15. package/dist/actions/permitAction.d.ts.map +0 -1
  16. package/dist/actions/permitAction.js +0 -173
  17. package/dist/actions/permitDB.d.ts +0 -39
  18. package/dist/actions/permitDB.d.ts.map +0 -1
  19. package/dist/actions/permitDB.js +0 -164
  20. package/dist/constants.d.ts +0 -4
  21. package/dist/constants.d.ts.map +0 -1
  22. package/dist/constants.js +0 -4
  23. package/dist/entities/CommitmentEntity.d.ts +0 -17
  24. package/dist/entities/CommitmentEntity.d.ts.map +0 -1
  25. package/dist/entities/CommitmentEntity.js +0 -83
  26. package/dist/entities/EventTriggerEntity.d.ts +0 -28
  27. package/dist/entities/EventTriggerEntity.d.ts.map +0 -1
  28. package/dist/entities/EventTriggerEntity.js +0 -138
  29. package/dist/entities/PermitEntity.d.ts +0 -14
  30. package/dist/entities/PermitEntity.d.ts.map +0 -1
  31. package/dist/entities/PermitEntity.js +0 -68
  32. package/dist/extractor/EventTriggerExtractor.d.ts +0 -28
  33. package/dist/extractor/EventTriggerExtractor.d.ts.map +0 -1
  34. package/dist/extractor/EventTriggerExtractor.js +0 -126
  35. package/dist/extractor/commitmentExtractor.d.ts +0 -35
  36. package/dist/extractor/commitmentExtractor.d.ts.map +0 -1
  37. package/dist/extractor/commitmentExtractor.js +0 -110
  38. package/dist/extractor/permitExtractor.d.ts +0 -139
  39. package/dist/extractor/permitExtractor.d.ts.map +0 -1
  40. package/dist/extractor/permitExtractor.js +0 -227
  41. package/dist/index.d.ts +0 -10
  42. package/dist/index.d.ts.map +0 -1
  43. package/dist/index.js +0 -10
  44. package/dist/interfaces/extractedCommitment.d.ts +0 -11
  45. package/dist/interfaces/extractedCommitment.d.ts.map +0 -1
  46. package/dist/interfaces/extractedCommitment.js +0 -2
  47. package/dist/interfaces/extractedEventTrigger.d.ts +0 -21
  48. package/dist/interfaces/extractedEventTrigger.d.ts.map +0 -1
  49. package/dist/interfaces/extractedEventTrigger.js +0 -2
  50. package/dist/interfaces/extractedPermit.d.ts +0 -12
  51. package/dist/interfaces/extractedPermit.d.ts.map +0 -1
  52. package/dist/interfaces/extractedPermit.js +0 -2
  53. package/dist/interfaces/types.d.ts +0 -20
  54. package/dist/interfaces/types.d.ts.map +0 -1
  55. package/dist/interfaces/types.js +0 -2
  56. package/dist/migrations/index.d.ts +0 -7
  57. package/dist/migrations/index.d.ts.map +0 -1
  58. package/dist/migrations/index.js +0 -9
  59. package/dist/migrations/postgres/1683776413304-migration.d.ts +0 -7
  60. package/dist/migrations/postgres/1683776413304-migration.d.ts.map +0 -1
  61. package/dist/migrations/postgres/1683776413304-migration.js +0 -81
  62. package/dist/migrations/postgres/1688554842087-migration.d.ts +0 -7
  63. package/dist/migrations/postgres/1688554842087-migration.d.ts.map +0 -1
  64. package/dist/migrations/postgres/1688554842087-migration.js +0 -82
  65. package/dist/migrations/postgres/1689175974257-migration.d.ts +0 -7
  66. package/dist/migrations/postgres/1689175974257-migration.d.ts.map +0 -1
  67. package/dist/migrations/postgres/1689175974257-migration.js +0 -50
  68. package/dist/migrations/postgres/initMigration1671716035915.d.ts +0 -7
  69. package/dist/migrations/postgres/initMigration1671716035915.d.ts.map +0 -1
  70. package/dist/migrations/postgres/initMigration1671716035915.js +0 -61
  71. package/dist/migrations/postgres/migration1673422203223.d.ts +0 -7
  72. package/dist/migrations/postgres/migration1673422203223.d.ts.map +0 -1
  73. package/dist/migrations/postgres/migration1673422203223.js +0 -10
  74. package/dist/migrations/postgres/migration1676360759874.d.ts +0 -7
  75. package/dist/migrations/postgres/migration1676360759874.d.ts.map +0 -1
  76. package/dist/migrations/postgres/migration1676360759874.js +0 -14
  77. package/dist/migrations/postgres/migration1680777406000.d.ts +0 -7
  78. package/dist/migrations/postgres/migration1680777406000.d.ts.map +0 -1
  79. package/dist/migrations/postgres/migration1680777406000.js +0 -10
  80. package/dist/migrations/sqlite/1683776215472-migration.d.ts +0 -7
  81. package/dist/migrations/sqlite/1683776215472-migration.d.ts.map +0 -1
  82. package/dist/migrations/sqlite/1683776215472-migration.js +0 -78
  83. package/dist/migrations/sqlite/1688555766601-migration.d.ts +0 -7
  84. package/dist/migrations/sqlite/1688555766601-migration.d.ts.map +0 -1
  85. package/dist/migrations/sqlite/1688555766601-migration.js +0 -79
  86. package/dist/migrations/sqlite/1689175103163-migration.d.ts +0 -7
  87. package/dist/migrations/sqlite/1689175103163-migration.d.ts.map +0 -1
  88. package/dist/migrations/sqlite/1689175103163-migration.js +0 -392
  89. package/dist/migrations/sqlite/initMigration1659787165000.d.ts +0 -7
  90. package/dist/migrations/sqlite/initMigration1659787165000.d.ts.map +0 -1
  91. package/dist/migrations/sqlite/initMigration1659787165000.js +0 -61
  92. package/dist/migrations/sqlite/migration1673422203210.d.ts +0 -7
  93. package/dist/migrations/sqlite/migration1673422203210.d.ts.map +0 -1
  94. package/dist/migrations/sqlite/migration1673422203210.js +0 -10
  95. package/dist/migrations/sqlite/migration1676360753347.d.ts +0 -7
  96. package/dist/migrations/sqlite/migration1676360753347.d.ts.map +0 -1
  97. package/dist/migrations/sqlite/migration1676360753347.js +0 -14
  98. package/dist/migrations/sqlite/migration1680777424623.d.ts +0 -7
  99. package/dist/migrations/sqlite/migration1680777424623.d.ts.map +0 -1
  100. package/dist/migrations/sqlite/migration1680777424623.js +0 -10
  101. package/dist/network/ergoNetworkApi.d.ts +0 -15
  102. package/dist/network/ergoNetworkApi.d.ts.map +0 -1
  103. package/dist/network/ergoNetworkApi.js +0 -27
  104. package/dist/network/parser.d.ts +0 -8
  105. package/dist/network/parser.d.ts.map +0 -1
  106. package/dist/network/parser.js +0 -5
  107. package/dist/utils.d.ts +0 -9
  108. package/dist/utils.d.ts.map +0 -1
  109. package/dist/utils.js +0 -6
@@ -1,126 +0,0 @@
1
- import * as wasm from 'ergo-lib-wasm-nodejs';
2
- import { blake2b } from 'blakejs';
3
- import { AbstractExtractor, } from '@rosen-bridge/scanner';
4
- import { DummyLogger } from '@rosen-bridge/logger-interface';
5
- import EventTriggerAction from '../actions/EventTriggerAction';
6
- import { JsonBI } from '../utils';
7
- class EventTriggerExtractor extends AbstractExtractor {
8
- logger;
9
- id;
10
- dataSource;
11
- actions;
12
- eventTriggerErgoTree;
13
- RWT;
14
- constructor(id, dataSource, address, RWT, logger) {
15
- super();
16
- this.id = id;
17
- this.dataSource = dataSource;
18
- this.eventTriggerErgoTree = wasm.Address.from_base58(address)
19
- .to_ergo_tree()
20
- .to_base16_bytes();
21
- this.RWT = RWT;
22
- this.logger = logger ? logger : new DummyLogger();
23
- this.actions = new EventTriggerAction(dataSource, this.logger);
24
- }
25
- getId = () => this.id;
26
- /**
27
- * gets block id and transactions corresponding to the block and saves if they are valid rosen
28
- * transactions and in case of success return true and in case of failure returns false
29
- * @param block
30
- * @param txs
31
- */
32
- processTransactions = (txs, block) => {
33
- return new Promise((resolve, reject) => {
34
- try {
35
- const boxes = [];
36
- const txSpendIds = [];
37
- txs.forEach((transaction) => {
38
- for (const output of transaction.outputs) {
39
- try {
40
- if (output.additionalRegisters &&
41
- output.assets &&
42
- output.assets.length > 0 &&
43
- output.assets[0].tokenId === this.RWT &&
44
- output.ergoTree === this.eventTriggerErgoTree) {
45
- const R4 = output.additionalRegisters.R4;
46
- const R5 = output.additionalRegisters.R5;
47
- if (R4 && R5) {
48
- const outputParsed = wasm.ErgoBox.from_json(JsonBI.stringify(output));
49
- const R4Const = outputParsed.register_value(wasm.NonMandatoryRegisterId.R4);
50
- const R5Const = outputParsed.register_value(wasm.NonMandatoryRegisterId.R5);
51
- if (R4Const && R5Const) {
52
- const R4Serialized = R4Const.to_coll_coll_byte();
53
- const R5Serialized = R5Const.to_coll_coll_byte();
54
- if (R4Serialized.length >= 1 && R5Serialized.length >= 12) {
55
- const WIDs = R4Serialized.map((byteArray) => Buffer.from(byteArray).toString('hex')).join(',');
56
- const sourceTxId = Buffer.from(R5Serialized[0]).toString();
57
- const eventId = Buffer.from(blake2b(sourceTxId, undefined, 32)).toString('hex');
58
- boxes.push({
59
- eventId: eventId,
60
- txId: transaction.id,
61
- boxId: output.boxId,
62
- boxSerialized: Buffer.from(outputParsed.sigma_serialize_bytes()).toString('base64'),
63
- toChain: Buffer.from(R5Serialized[2]).toString(),
64
- toAddress: Buffer.from(R5Serialized[4]).toString(),
65
- networkFee: BigInt('0x' + Buffer.from(R5Serialized[7]).toString('hex')).toString(10),
66
- bridgeFee: BigInt('0x' + Buffer.from(R5Serialized[6]).toString('hex')).toString(10),
67
- amount: BigInt('0x' + Buffer.from(R5Serialized[5]).toString('hex')).toString(10),
68
- sourceChainTokenId: Buffer.from(R5Serialized[8]).toString(),
69
- targetChainTokenId: Buffer.from(R5Serialized[9]).toString(),
70
- sourceTxId: sourceTxId,
71
- fromChain: Buffer.from(R5Serialized[1]).toString(),
72
- fromAddress: Buffer.from(R5Serialized[3]).toString(),
73
- sourceBlockId: Buffer.from(R5Serialized[10]).toString(),
74
- WIDs: WIDs,
75
- sourceChainHeight: Number(BigInt('0x' + Buffer.from(R5Serialized[11]).toString('hex')).toString(10)),
76
- });
77
- }
78
- }
79
- }
80
- }
81
- }
82
- catch {
83
- continue;
84
- }
85
- // process inputs
86
- txSpendIds.push({
87
- txId: transaction.id,
88
- spendBoxes: transaction.inputs.map((box) => box.boxId),
89
- });
90
- }
91
- });
92
- this.actions
93
- .storeEventTriggers(boxes, block, this.getId())
94
- .then(() => {
95
- txSpendIds.forEach((txSpends) => {
96
- this.actions
97
- .spendEventTriggers(txSpends.spendBoxes, block, this.id, txSpends.txId)
98
- .then(() => {
99
- resolve(true);
100
- });
101
- });
102
- })
103
- .catch((e) => {
104
- this.logger.error(`Error in storing permits of the block ${block}: ${e}`);
105
- reject(e);
106
- });
107
- }
108
- catch (e) {
109
- this.logger.error(`block ${block} doesn't save in the database with error: ${e}`);
110
- reject(e);
111
- }
112
- });
113
- };
114
- forkBlock = async (hash) => {
115
- await this.actions.deleteBlock(hash, this.getId());
116
- };
117
- /**
118
- * Extractor box initialization
119
- * No action needed in event trigger extractors
120
- */
121
- initializeBoxes = async () => {
122
- return;
123
- };
124
- }
125
- export default EventTriggerExtractor;
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRUcmlnZ2VyRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2V4dHJhY3Rvci9FdmVudFRyaWdnZXJFeHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLElBQUksTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFDTCxpQkFBaUIsR0FHbEIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTdFLE9BQU8sa0JBQWtCLE1BQU0sK0JBQStCLENBQUM7QUFFL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxNQUFNLHFCQUFzQixTQUFRLGlCQUE4QjtJQUN2RCxNQUFNLENBQWlCO0lBQ2hDLEVBQUUsQ0FBUztJQUNNLFVBQVUsQ0FBYTtJQUN2QixPQUFPLENBQXFCO0lBQzVCLG9CQUFvQixDQUFTO0lBQzdCLEdBQUcsQ0FBUztJQUU3QixZQUNFLEVBQVUsRUFDVixVQUFzQixFQUN0QixPQUFlLEVBQ2YsR0FBVyxFQUNYLE1BQXVCO1FBRXZCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO2FBQzFELFlBQVksRUFBRTthQUNkLGVBQWUsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNsRCxJ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QUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDO3FCQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLHlDQUF5QyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQ3ZELENBQUM7b0JBQ0YsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNaLENBQUMsQ0FBQyxDQUFDO2FBQ047WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixTQUFTLEtBQUssNkNBQTZDLENBQUMsRUFBRSxDQUMvRCxDQUFDO2dCQUNGLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNYO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRixTQUFTLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBRSxFQUFFO1FBQ2pDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILGVBQWUsR0FBRyxLQUFLLElBQUksRUFBRTtRQUMzQixPQUFPO0lBQ1QsQ0FBQyxDQUFDO0NBQ0g7QUFFRCxlQUFlLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ3R5cGVvcm0nO1xuaW1wb3J0ICogYXMgd2FzbSBmcm9tICdlcmdvLWxpYi13YXNtLW5vZGVqcyc7XG5pbXBvcnQgeyBibGFrZTJiIH0gZnJvbSAnYmxha2Vqcyc7XG5pbXBvcnQge1xuICBBYnN0cmFjdEV4dHJhY3RvcixcbiAgQmxvY2tFbnRpdHksXG4gIFRyYW5zYWN0aW9uLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXInO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9sb2dnZXItaW50ZXJmYWNlJztcblxuaW1wb3J0IEV2ZW50VHJpZ2dlckFjdGlvbiBmcm9tICcuLi9hY3Rpb25zL0V2ZW50VHJpZ2dlckFjdGlvbic7XG5pbXBvcnQgeyBFeHRyYWN0ZWRFdmVudFRyaWdnZXIgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4dHJhY3RlZEV2ZW50VHJpZ2dlcic7XG5pbXBvcnQgeyBKc29uQkkgfSBmcm9tICcuLi91dGlscyc7XG5cbmNsYXNzIEV2ZW50VHJpZ2dlckV4dHJhY3RvciBleHRlbmRzIEFic3RyYWN0RXh0cmFjdG9yPFRyYW5zYWN0aW9uPiB7XG4gIHJlYWRvbmx5IGxvZ2dlcjogQWJzdHJhY3RMb2dnZXI7XG4gIGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YVNvdXJjZTogRGF0YVNvdXJjZTtcbiAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25zOiBFdmVudFRyaWdnZXJBY3Rpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRUcmlnZ2VyRXJnb1RyZWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBSV1Q6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpZDogc3RyaW5nLFxuICAgIGRhdGFTb3VyY2U6IERhdGFTb3VyY2UsXG4gICAgYWRkcmVzczogc3RyaW5nLFxuICAgIFJXVDogc3RyaW5nLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyXG4gICkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMuZGF0YVNvdXJjZSA9IGRhdGFTb3VyY2U7XG4gICAgdGhpcy5ldmVudFRyaWdnZXJFcmdvVHJlZSA9IHdhc20uQWRkcmVzcy5mcm9tX2Jhc2U1OChhZGRyZXNzKVxuICAgICAgLnRvX2VyZ29fdHJlZSgpXG4gICAgICAudG9fYmFzZTE2X2J5dGVzKCk7XG4gICAgdGhpcy5SV1QgPSBSV1Q7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXIgPyBsb2dnZXIgOiBuZXcgRHVtbXlMb2dnZXIoKTtcbiAgICB0aGlzLmFjdGlvbnMgPSBuZXcgRXZlbnRUcmlnZ2VyQWN0aW9uKGRhdGFTb3VyY2UsIHRoaXMubG9nZ2VyKTtcbiAgfVxuXG4gIGdldElkID0gKCkgPT4gdGhpcy5pZDtcblxuICAvKipcbiAgICogZ2V0cyBibG9jayBpZCBhbmQgdHJhbnNhY3Rpb25zIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJsb2NrIGFuZCBzYXZlcyBpZiB0aGV5IGFyZSB2YWxpZCByb3NlblxuICAgKiAgdHJhbnNhY3Rpb25zIGFuZCBpbiBjYXNlIG9mIHN1Y2Nlc3MgcmV0dXJuIHRydWUgYW5kIGluIGNhc2Ugb2YgZmFpbHVyZSByZXR1cm5zIGZhbHNlXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gdHhzXG4gICAqL1xuICBwcm9jZXNzVHJhbnNhY3Rpb25zID0gKFxuICAgIHR4czogQXJyYXk8VHJhbnNhY3Rpb24+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eVxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgYm94ZXM6IEFycmF5PEV4dHJhY3RlZEV2ZW50VHJpZ2dlcj4gPSBbXTtcbiAgICAgICAgY29uc3QgdHhTcGVuZElkczogQXJyYXk8eyB0eElkOiBzdHJpbmc7IHNwZW5kQm94ZXM6IEFycmF5PHN0cmluZz4gfT4gPVxuICAgICAgICAgIFtdO1xuICAgICAgICB0eHMuZm9yRWFjaCgodHJhbnNhY3Rpb24pID0+IHtcbiAgICAgICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiB0cmFuc2FjdGlvbi5vdXRwdXRzKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgb3V0cHV0LmFkZGl0aW9uYWxSZWdpc3RlcnMgJiZcbiAgICAgICAgICAgICAgICBvdXRwdXQuYXNzZXRzICYmXG4gICAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0cy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0c1swXS50b2tlbklkID09PSB0aGlzLlJXVCAmJlxuICAgICAgICAgICAgICAgIG91dHB1dC5lcmdvVHJlZSA9PT0gdGhpcy5ldmVudFRyaWdnZXJFcmdvVHJlZVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBSNCA9IG91dHB1dC5hZGRpdGlvbmFsUmVnaXN0ZXJzLlI0O1xuICAgICAgICAgICAgICAgIGNvbnN0IFI1ID0gb3V0cHV0LmFkZGl0aW9uYWxSZWdpc3RlcnMuUjU7XG4gICAgICAgICAgICAgICAgaWYgKFI0ICYmIFI1KSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBvdXRwdXRQYXJzZWQgPSB3YXNtLkVyZ29Cb3guZnJvbV9qc29uKFxuICAgICAgICAgICAgICAgICAgICBKc29uQkkuc3RyaW5naWZ5KG91dHB1dClcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBSNENvbnN0ID0gb3V0cHV0UGFyc2VkLnJlZ2lzdGVyX3ZhbHVlKFxuICAgICAgICAgICAgICAgICAgICB3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjRcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBSNUNvbnN0ID0gb3V0cHV0UGFyc2VkLnJlZ2lzdGVyX3ZhbHVlKFxuICAgICAgICAgICAgICAgICAgICB3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjVcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBpZiAoUjRDb25zdCAmJiBSNUNvbnN0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFI0U2VyaWFsaXplZCA9IFI0Q29uc3QudG9fY29sbF9jb2xsX2J5dGUoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgUjVTZXJpYWxpemVkID0gUjVDb25zdC50b19jb2xsX2NvbGxfYnl0ZSgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoUjRTZXJpYWxpemVkLmxlbmd0aCA+PSAxICYmIFI1U2VyaWFsaXplZC5sZW5ndGggPj0gMTIpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXSURzID0gUjRTZXJpYWxpemVkLm1hcCgoYnl0ZUFycmF5KSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmZyb20oYnl0ZUFycmF5KS50b1N0cmluZygnaGV4JylcbiAgICAgICAgICAgICAgICAgICAgICApLmpvaW4oJywnKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3VyY2VUeElkID0gQnVmZmVyLmZyb20oXG4gICAgICAgICAgICAgICAgICAgICAgICBSNVNlcmlhbGl6ZWRbMF1cbiAgICAgICAgICAgICAgICAgICAgICApLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXZlbnRJZCA9IEJ1ZmZlci5mcm9tKFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxha2UyYihzb3VyY2VUeElkLCB1bmRlZmluZWQsIDMyKVxuICAgICAgICAgICAgICAgICAgICAgICkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICAgICAgICAgICAgICAgIGJveGVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRJZDogZXZlbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR4SWQ6IHRyYW5zYWN0aW9uLmlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm94SWQ6IG91dHB1dC5ib3hJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJveFNlcmlhbGl6ZWQ6IEJ1ZmZlci5mcm9tKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRQYXJzZWQuc2lnbWFfc2VyaWFsaXplX2J5dGVzKClcbiAgICAgICAgICAgICAgICAgICAgICAgICkudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9DaGFpbjogQnVmZmVyLmZyb20oUjVTZXJpYWxpemVkWzJdKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9BZGRyZXNzOiBCdWZmZXIuZnJvbShSNVNlcmlhbGl6ZWRbNF0pLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXR3b3JrRmVlOiBCaWdJbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICcweCcgKyBCdWZmZXIuZnJvbShSNVNlcmlhbGl6ZWRbN10pLnRvU3RyaW5nKCdoZXgnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKS50b1N0cmluZygxMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBicmlkZ2VGZWU6IEJpZ0ludChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJzB4JyArIEJ1ZmZlci5mcm9tKFI1U2VyaWFsaXplZFs2XSkudG9TdHJpbmcoJ2hleCcpXG4gICAgICAgICAgICAgICAgICAgICAgICApLnRvU3RyaW5nKDEwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudDogQmlnSW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnMHgnICsgQnVmZmVyLmZyb20oUjVTZXJpYWxpemVkWzVdKS50b1N0cmluZygnaGV4JylcbiAgICAgICAgICAgICAgICAgICAgICAgICkudG9TdHJpbmcoMTApLFxuICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlQ2hhaW5Ub2tlbklkOiBCdWZmZXIuZnJvbShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUjVTZXJpYWxpemVkWzhdXG4gICAgICAgICAgICAgICAgICAgICAgICApLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRDaGFpblRva2VuSWQ6IEJ1ZmZlci5mcm9tKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBSNVNlcmlhbGl6ZWRbOV1cbiAgICAgICAgICAgICAgICAgICAgICAgICkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVR4SWQ6IHNvdXJjZVR4SWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmcm9tQ2hhaW46IEJ1ZmZlci5mcm9tKFI1U2VyaWFsaXplZFsxXSkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZyb21BZGRyZXNzOiBCdWZmZXIuZnJvbShSNVNlcmlhbGl6ZWRbM10pLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VCbG9ja0lkOiBCdWZmZXIuZnJvbShSNVNlcmlhbGl6ZWRbMTBdKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgV0lEczogV0lEcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUNoYWluSGVpZ2h0OiBOdW1iZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEJpZ0ludChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMHgnICsgQnVmZmVyLmZyb20oUjVTZXJpYWxpemVkWzExXSkudG9TdHJpbmcoJ2hleCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkudG9TdHJpbmcoMTApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBwcm9jZXNzIGlucHV0c1xuICAgICAgICAgICAgdHhTcGVuZElkcy5wdXNoKHtcbiAgICAgICAgICAgICAgdHhJZDogdHJhbnNhY3Rpb24uaWQsXG4gICAgICAgICAgICAgIHNwZW5kQm94ZXM6IHRyYW5zYWN0aW9uLmlucHV0cy5tYXAoKGJveCkgPT4gYm94LmJveElkKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWN0aW9uc1xuICAgICAgICAgIC5zdG9yZUV2ZW50VHJpZ2dlcnMoYm94ZXMsIGJsb2NrLCB0aGlzLmdldElkKCkpXG4gICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdHhTcGVuZElkcy5mb3JFYWNoKCh0eFNwZW5kcykgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmFjdGlvbnNcbiAgICAgICAgICAgICAgICAuc3BlbmRFdmVudFRyaWdnZXJzKFxuICAgICAgICAgICAgICAgICAgdHhTcGVuZHMuc3BlbmRCb3hlcyxcbiAgICAgICAgICAgICAgICAgIGJsb2NrLFxuICAgICAgICAgICAgICAgICAgdGhpcy5pZCxcbiAgICAgICAgICAgICAgICAgIHR4U3BlbmRzLnR4SWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgYEVycm9yIGluIHN0b3JpbmcgcGVybWl0cyBvZiB0aGUgYmxvY2sgJHtibG9ja306ICR7ZX1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICBgYmxvY2sgJHtibG9ja30gZG9lc24ndCBzYXZlIGluIHRoZSBkYXRhYmFzZSB3aXRoIGVycm9yOiAke2V9YFxuICAgICAgICApO1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgZm9ya0Jsb2NrID0gYXN5bmMgKGhhc2g6IHN0cmluZykgPT4ge1xuICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5kZWxldGVCbG9jayhoYXNoLCB0aGlzLmdldElkKCkpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBFeHRyYWN0b3IgYm94IGluaXRpYWxpemF0aW9uXG4gICAqIE5vIGFjdGlvbiBuZWVkZWQgaW4gZXZlbnQgdHJpZ2dlciBleHRyYWN0b3JzXG4gICAqL1xuICBpbml0aWFsaXplQm94ZXMgPSBhc3luYyAoKSA9PiB7XG4gICAgcmV0dXJuO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBFdmVudFRyaWdnZXJFeHRyYWN0b3I7XG4iXX0=
@@ -1,35 +0,0 @@
1
- import { DataSource } from 'typeorm';
2
- import { AbstractExtractor, BlockEntity, Transaction } from '@rosen-bridge/scanner';
3
- import { AbstractLogger } from '@rosen-bridge/logger-interface';
4
- declare class CommitmentExtractor extends AbstractExtractor<Transaction> {
5
- readonly logger: AbstractLogger;
6
- id: string;
7
- private readonly dataSource;
8
- private readonly commitmentsErgoTrees;
9
- private readonly RWTId;
10
- private readonly actions;
11
- constructor(id: string, addresses: Array<string>, RWTId: string, dataSource: DataSource, logger?: AbstractLogger);
12
- /**
13
- * get Id for current extractor
14
- */
15
- getId: () => string;
16
- /**
17
- * gets block id and transactions corresponding to the block and saves if they are valid rosen
18
- * transactions and in case of success return true and in case of failure returns false
19
- * @param txs
20
- * @param block
21
- */
22
- processTransactions: (txs: Array<Transaction>, block: BlockEntity) => Promise<boolean>;
23
- /**
24
- * fork one block and remove all stored information for this block
25
- * @param hash: block hash
26
- */
27
- forkBlock: (hash: string) => Promise<void>;
28
- /**
29
- * Extractor box initialization
30
- * No action needed for commitment extractor
31
- */
32
- initializeBoxes: () => Promise<void>;
33
- }
34
- export default CommitmentExtractor;
35
- //# sourceMappingURL=commitmentExtractor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commitmentExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/commitmentExtractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAe,MAAM,gCAAgC,CAAC;AAM7E,cAAM,mBAAoB,SAAQ,iBAAiB,CAAC,WAAW,CAAC;IAC9D,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;gBAGzC,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EACxB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,cAAc;IAazB;;OAEG;IACH,KAAK,eAAiB;IAEtB;;;;;OAKG;IACH,mBAAmB,QACZ,MAAM,WAAW,CAAC,SAChB,WAAW,KACjB,QAAQ,OAAO,CAAC,CAyEjB;IAEF;;;OAGG;IACH,SAAS,SAAgB,MAAM,KAAG,QAAQ,IAAI,CAAC,CAE7C;IAEF;;;OAGG;IACH,eAAe,sBAEb;CACH;AAED,eAAe,mBAAmB,CAAC"}
@@ -1,110 +0,0 @@
1
- import * as wasm from 'ergo-lib-wasm-nodejs';
2
- import { AbstractExtractor, } from '@rosen-bridge/scanner';
3
- import { DummyLogger } from '@rosen-bridge/logger-interface';
4
- import CommitmentAction from '../actions/commitmentAction';
5
- import { JsonBI } from '../utils';
6
- class CommitmentExtractor extends AbstractExtractor {
7
- logger;
8
- id;
9
- dataSource;
10
- commitmentsErgoTrees;
11
- RWTId;
12
- actions;
13
- constructor(id, addresses, RWTId, dataSource, logger) {
14
- super();
15
- this.id = id;
16
- this.dataSource = dataSource;
17
- this.commitmentsErgoTrees = addresses.map((address) => wasm.Address.from_base58(address).to_ergo_tree().to_base16_bytes());
18
- this.RWTId = RWTId;
19
- this.logger = logger ? logger : new DummyLogger();
20
- this.actions = new CommitmentAction(dataSource, this.logger);
21
- }
22
- /**
23
- * get Id for current extractor
24
- */
25
- getId = () => this.id;
26
- /**
27
- * gets block id and transactions corresponding to the block and saves if they are valid rosen
28
- * transactions and in case of success return true and in case of failure returns false
29
- * @param txs
30
- * @param block
31
- */
32
- processTransactions = (txs, block) => {
33
- return new Promise((resolve, reject) => {
34
- try {
35
- const commitments = [];
36
- const spendIds = [];
37
- txs.forEach((transaction) => {
38
- // process outputs
39
- for (const output of transaction.outputs) {
40
- if (output.assets &&
41
- output.additionalRegisters &&
42
- output.assets.length > 0 &&
43
- output.assets[0].tokenId === this.RWTId &&
44
- this.commitmentsErgoTrees.indexOf(output.ergoTree) !== -1) {
45
- try {
46
- const decodedBox = wasm.ErgoBox.from_json(JsonBI.stringify(output));
47
- const R4 = decodedBox.register_value(wasm.NonMandatoryRegisterId.R4);
48
- const R5 = decodedBox.register_value(wasm.NonMandatoryRegisterId.R5);
49
- const R6 = decodedBox.register_value(wasm.NonMandatoryRegisterId.R6);
50
- if (R4 && R5 && R6) {
51
- const R4Value = R4.to_coll_coll_byte();
52
- const R5Value = R5.to_coll_coll_byte();
53
- const R6Value = R6.to_byte_array();
54
- const WID = Buffer.from(R4Value[0]).toString('hex');
55
- const requestId = Buffer.from(R5Value[0]).toString('hex');
56
- const eventDigest = Buffer.from(R6Value).toString('hex');
57
- commitments.push({
58
- txId: transaction.id,
59
- WID: WID,
60
- commitment: eventDigest,
61
- eventId: requestId,
62
- boxId: output.boxId,
63
- boxSerialized: Buffer.from(decodedBox.sigma_serialize_bytes()).toString('base64'),
64
- rwtCount: BigInt(output.assets[0].amount).toString(),
65
- });
66
- }
67
- }
68
- catch {
69
- // empty
70
- }
71
- }
72
- }
73
- // process inputs
74
- for (const input of transaction.inputs) {
75
- spendIds.push(input.boxId);
76
- }
77
- });
78
- // process save commitments
79
- this.actions
80
- .storeCommitments(commitments, block, this.id)
81
- .then(() => {
82
- this.actions.spendCommitments(spendIds, block, this.id).then(() => {
83
- resolve(true);
84
- });
85
- })
86
- .catch((e) => reject(e));
87
- }
88
- catch (e) {
89
- this.logger.error(`Error in soring permits of the block ${block}: ${e}`);
90
- reject(e);
91
- }
92
- });
93
- };
94
- /**
95
- * fork one block and remove all stored information for this block
96
- * @param hash: block hash
97
- */
98
- forkBlock = async (hash) => {
99
- await this.actions.deleteBlock(hash, this.getId());
100
- };
101
- /**
102
- * Extractor box initialization
103
- * No action needed for commitment extractor
104
- */
105
- initializeBoxes = async () => {
106
- return;
107
- };
108
- }
109
- export default CommitmentExtractor;
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWl0bWVudEV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9leHRyYWN0b3IvY29tbWl0bWVudEV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLHNCQUFzQixDQUFDO0FBRTdDLE9BQU8sRUFDTCxpQkFBaUIsR0FHbEIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTdFLE9BQU8sZ0JBQWdCLE1BQU0sNkJBQTZCLENBQUM7QUFFM0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVsQyxNQUFNLG1CQUFvQixTQUFRLGlCQUE4QjtJQUNyRCxNQUFNLENBQWlCO0lBQ2hDLEVBQUUsQ0FBUztJQUNNLFVBQVUsQ0FBYTtJQUN2QixvQkFBb0IsQ0FBZ0I7SUFDcEMsS0FBSyxDQUFTO0lBQ2QsT0FBTyxDQUFtQjtJQUUzQyxZQUNFLEVBQVUsRUFDVixTQUF3QixFQUN4QixLQUFhLEVBQ2IsVUFBc0IsRUFDdEIsTUFBdUI7UUFFdkIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDcEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUMsZUFBZSxFQUFFLENBQ25FLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsRUFBRSxDQUFD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QUUsQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILGVBQWUsR0FBRyxLQUFLLElBQUksRUFBRTtRQUMzQixPQUFPO0lBQ1QsQ0FBQyxDQUFDO0NBQ0g7QUFFRCxlQUFlLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgd2FzbSBmcm9tICdlcmdvLWxpYi13YXNtLW5vZGVqcyc7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAndHlwZW9ybSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdEV4dHJhY3RvcixcbiAgQmxvY2tFbnRpdHksXG4gIFRyYW5zYWN0aW9uLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXInO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9sb2dnZXItaW50ZXJmYWNlJztcblxuaW1wb3J0IENvbW1pdG1lbnRBY3Rpb24gZnJvbSAnLi4vYWN0aW9ucy9jb21taXRtZW50QWN0aW9uJztcbmltcG9ydCB7IGV4dHJhY3RlZENvbW1pdG1lbnQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2V4dHJhY3RlZENvbW1pdG1lbnQnO1xuaW1wb3J0IHsgSnNvbkJJIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jbGFzcyBDb21taXRtZW50RXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RFeHRyYWN0b3I8VHJhbnNhY3Rpb24+IHtcbiAgcmVhZG9ubHkgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcjtcbiAgaWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhU291cmNlOiBEYXRhU291cmNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbW1pdG1lbnRzRXJnb1RyZWVzOiBBcnJheTxzdHJpbmc+O1xuICBwcml2YXRlIHJlYWRvbmx5IFJXVElkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uczogQ29tbWl0bWVudEFjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpZDogc3RyaW5nLFxuICAgIGFkZHJlc3NlczogQXJyYXk8c3RyaW5nPixcbiAgICBSV1RJZDogc3RyaW5nLFxuICAgIGRhdGFTb3VyY2U6IERhdGFTb3VyY2UsXG4gICAgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXJcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5kYXRhU291cmNlID0gZGF0YVNvdXJjZTtcbiAgICB0aGlzLmNvbW1pdG1lbnRzRXJnb1RyZWVzID0gYWRkcmVzc2VzLm1hcCgoYWRkcmVzcykgPT5cbiAgICAgIHdhc20uQWRkcmVzcy5mcm9tX2Jhc2U1OChhZGRyZXNzKS50b19lcmdvX3RyZWUoKS50b19iYXNlMTZfYnl0ZXMoKVxuICAgICk7XG4gICAgdGhpcy5SV1RJZCA9IFJXVElkO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyID8gbG9nZ2VyIDogbmV3IER1bW15TG9nZ2VyKCk7XG4gICAgdGhpcy5hY3Rpb25zID0gbmV3IENvbW1pdG1lbnRBY3Rpb24oZGF0YVNvdXJjZSwgdGhpcy5sb2dnZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdldCBJZCBmb3IgY3VycmVudCBleHRyYWN0b3JcbiAgICovXG4gIGdldElkID0gKCkgPT4gdGhpcy5pZDtcblxuICAvKipcbiAgICogZ2V0cyBibG9jayBpZCBhbmQgdHJhbnNhY3Rpb25zIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJsb2NrIGFuZCBzYXZlcyBpZiB0aGV5IGFyZSB2YWxpZCByb3NlblxuICAgKiAgdHJhbnNhY3Rpb25zIGFuZCBpbiBjYXNlIG9mIHN1Y2Nlc3MgcmV0dXJuIHRydWUgYW5kIGluIGNhc2Ugb2YgZmFpbHVyZSByZXR1cm5zIGZhbHNlXG4gICAqIEBwYXJhbSB0eHNcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqL1xuICBwcm9jZXNzVHJhbnNhY3Rpb25zID0gKFxuICAgIHR4czogQXJyYXk8VHJhbnNhY3Rpb24+LFxuICAgIGJsb2NrOiBCbG9ja0VudGl0eVxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29tbWl0bWVudHM6IEFycmF5PGV4dHJhY3RlZENvbW1pdG1lbnQ+ID0gW107XG4gICAgICAgIGNvbnN0IHNwZW5kSWRzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgICAgIHR4cy5mb3JFYWNoKCh0cmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgIC8vIHByb2Nlc3Mgb3V0cHV0c1xuICAgICAgICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIHRyYW5zYWN0aW9uLm91dHB1dHMpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0cyAmJlxuICAgICAgICAgICAgICBvdXRwdXQuYWRkaXRpb25hbFJlZ2lzdGVycyAmJlxuICAgICAgICAgICAgICBvdXRwdXQuYXNzZXRzLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0c1swXS50b2tlbklkID09PSB0aGlzLlJXVElkICYmXG4gICAgICAgICAgICAgIHRoaXMuY29tbWl0bWVudHNFcmdvVHJlZXMuaW5kZXhPZihvdXRwdXQuZXJnb1RyZWUpICE9PSAtMVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjb2RlZEJveCA9IHdhc20uRXJnb0JveC5mcm9tX2pzb24oXG4gICAgICAgICAgICAgICAgICBKc29uQkkuc3RyaW5naWZ5KG91dHB1dClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IFI0ID0gZGVjb2RlZEJveC5yZWdpc3Rlcl92YWx1ZShcbiAgICAgICAgICAgICAgICAgIHdhc20uTm9uTWFuZGF0b3J5UmVnaXN0ZXJJZC5SNFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgUjUgPSBkZWNvZGVkQm94LnJlZ2lzdGVyX3ZhbHVlKFxuICAgICAgICAgICAgICAgICAgd2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI1XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb25zdCBSNiA9IGRlY29kZWRCb3gucmVnaXN0ZXJfdmFsdWUoXG4gICAgICAgICAgICAgICAgICB3YXNtLk5vbk1hbmRhdG9yeVJlZ2lzdGVySWQuUjZcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChSNCAmJiBSNSAmJiBSNikge1xuICAgICAgICAgICAgICAgICAgY29uc3QgUjRWYWx1ZSA9IFI0LnRvX2NvbGxfY29sbF9ieXRlKCk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBSNVZhbHVlID0gUjUudG9fY29sbF9jb2xsX2J5dGUoKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IFI2VmFsdWUgPSBSNi50b19ieXRlX2FycmF5KCk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBXSUQgPSBCdWZmZXIuZnJvbShSNFZhbHVlWzBdKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0SWQgPSBCdWZmZXIuZnJvbShSNVZhbHVlWzBdKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBldmVudERpZ2VzdCA9IEJ1ZmZlci5mcm9tKFI2VmFsdWUpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgICAgICAgICAgIGNvbW1pdG1lbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICB0eElkOiB0cmFuc2FjdGlvbi5pZCxcbiAgICAgICAgICAgICAgICAgICAgV0lEOiBXSUQsXG4gICAgICAgICAgICAgICAgICAgIGNvbW1pdG1lbnQ6IGV2ZW50RGlnZXN0LFxuICAgICAgICAgICAgICAgICAgICBldmVudElkOiByZXF1ZXN0SWQsXG4gICAgICAgICAgICAgICAgICAgIGJveElkOiBvdXRwdXQuYm94SWQsXG4gICAgICAgICAgICAgICAgICAgIGJveFNlcmlhbGl6ZWQ6IEJ1ZmZlci5mcm9tKFxuICAgICAgICAgICAgICAgICAgICAgIGRlY29kZWRCb3guc2lnbWFfc2VyaWFsaXplX2J5dGVzKClcbiAgICAgICAgICAgICAgICAgICAgKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgICAgICAgICAgICAgIHJ3dENvdW50OiBCaWdJbnQob3V0cHV0LmFzc2V0c1swXS5hbW91bnQpLnRvU3RyaW5nKCksXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIC8vIGVtcHR5XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gcHJvY2VzcyBpbnB1dHNcbiAgICAgICAgICBmb3IgKGNvbnN0IGlucHV0IG9mIHRyYW5zYWN0aW9uLmlucHV0cykge1xuICAgICAgICAgICAgc3BlbmRJZHMucHVzaChpbnB1dC5ib3hJZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgLy8gcHJvY2VzcyBzYXZlIGNvbW1pdG1lbnRzXG4gICAgICAgIHRoaXMuYWN0aW9uc1xuICAgICAgICAgIC5zdG9yZUNvbW1pdG1lbnRzKGNvbW1pdG1lbnRzLCBibG9jaywgdGhpcy5pZClcbiAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjdGlvbnMuc3BlbmRDb21taXRtZW50cyhzcGVuZElkcywgYmxvY2ssIHRoaXMuaWQpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IHJlamVjdChlKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgIGBFcnJvciBpbiBzb3JpbmcgcGVybWl0cyBvZiB0aGUgYmxvY2sgJHtibG9ja306ICR7ZX1gXG4gICAgICAgICk7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogZm9yayBvbmUgYmxvY2sgYW5kIHJlbW92ZSBhbGwgc3RvcmVkIGluZm9ybWF0aW9uIGZvciB0aGlzIGJsb2NrXG4gICAqIEBwYXJhbSBoYXNoOiBibG9jayBoYXNoXG4gICAqL1xuICBmb3JrQmxvY2sgPSBhc3luYyAoaGFzaDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgYXdhaXQgdGhpcy5hY3Rpb25zLmRlbGV0ZUJsb2NrKGhhc2gsIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEV4dHJhY3RvciBib3ggaW5pdGlhbGl6YXRpb25cbiAgICogTm8gYWN0aW9uIG5lZWRlZCBmb3IgY29tbWl0bWVudCBleHRyYWN0b3JcbiAgICovXG4gIGluaXRpYWxpemVCb3hlcyA9IGFzeW5jICgpID0+IHtcbiAgICByZXR1cm47XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbW1pdG1lbnRFeHRyYWN0b3I7XG4iXX0=
@@ -1,139 +0,0 @@
1
- import { DataSource } from 'typeorm';
2
- import { AbstractExtractor, BlockEntity, Transaction } from '@rosen-bridge/scanner';
3
- import { AbstractLogger } from '@rosen-bridge/logger-interface';
4
- import { OutputInfo } from '@rosen-clients/ergo-explorer/dist/src/v1/types/outputInfo';
5
- import PermitAction from '../actions/permitAction';
6
- import { ExtractedPermit } from '../interfaces/extractedPermit';
7
- declare class PermitExtractor extends AbstractExtractor<Transaction> {
8
- readonly logger: AbstractLogger;
9
- id: string;
10
- private readonly dataSource;
11
- readonly actions: PermitAction;
12
- private readonly permitErgoTree;
13
- private readonly RWT;
14
- readonly explorerApi: {
15
- v0: {
16
- getApiV0AddressesP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0AddressesP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").AddressInfo>;
17
- getApiV0AddressesP1Transactions: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0AddressesP1TransactionsParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").ItemsTransactionInfo>;
18
- getApiV0AddressesAssetholdersP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0AddressesAssetholdersP1Params | undefined) => Promise<string[]>;
19
- getApiV0AddressesBalances: (params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0AddressesBalancesParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").ItemsBalanceInfo>;
20
- getApiV0AssetsIssuingboxes: (params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0AssetsIssuingboxesParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").ItemsOutputInfo>;
21
- getApiV0AssetsP1Issuingbox: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").OutputInfo[]>;
22
- getApiV0Blocks: (params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0BlocksParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").ItemsBlockInfo>;
23
- getApiV0BlocksP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").BlockSummary>;
24
- getApiV0BlocksAtP1: (p1: number) => Promise<string[]>;
25
- getApiV0DexTokensP1Unspentsellorders: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0DexTokensP1UnspentsellordersParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").DexSellOrderInfo[]>;
26
- getApiV0DexTokensP1Unspentbuyorders: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0DexTokensP1UnspentbuyordersParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").DexBuyOrderInfo[]>;
27
- getApiV0TransactionsP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").TransactionSummary>;
28
- getApiV0TransactionsUnconfirmedP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").UTransactionSummary>;
29
- getApiV0TransactionsUnconfirmedByaddressP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0TransactionsUnconfirmedByaddressP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").ItemsUTransactionInfo>;
30
- getApiV0TransactionsUnconfirmed: (params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0TransactionsUnconfirmedParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").ItemsUTransactionInfo>;
31
- getApiV0TransactionsSinceP1: (p1: number, params?: import("@rosen-clients/ergo-explorer/dist/src/v0/types").GetApiV0TransactionsSinceP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").TransactionInfo[]>;
32
- postApiV0TransactionsSend: (postApiV0TransactionsSendBody: import("@rosen-clients/ergo-explorer/dist/src/v0/types").PostApiV0TransactionsSendBody) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").TxIdResponse>;
33
- getApiV0TransactionsBoxesP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").OutputInfo>;
34
- getApiV0TransactionsBoxesByergotreeP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").OutputInfo[]>;
35
- getApiV0TransactionsBoxesByergotreeUnspentP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").OutputInfo[]>;
36
- getApiV0TransactionsBoxesByaddressP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").OutputInfo[]>;
37
- getApiV0TransactionsBoxesByaddressUnspentP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").OutputInfo[]>;
38
- getApiV0Info: () => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").BlockChainInfo>;
39
- getApiV0InfoSupply: () => Promise<string>;
40
- getApiV0Stats: () => Promise<import("@rosen-clients/ergo-explorer/dist/src/v0/types").StatsSummary>;
41
- getApiV0DocsOpenapi: () => Promise<string>;
42
- };
43
- v1: {
44
- getApiV1TransactionsP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").TransactionInfo>;
45
- getApiV1TransactionsByinputsscripttemplatehashP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1TransactionsByinputsscripttemplatehashP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsTransactionInfo>;
46
- getApiV1TransactionsByglobalindexStream: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1TransactionsByglobalindexStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListTransactionInfo>;
47
- getApiV1BoxesUnspentBylastepochsStream: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentBylastepochsStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListOutputInfo>;
48
- getApiV1BoxesUnspentByglobalindexStream: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentByglobalindexStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListOutputInfo>;
49
- getApiV1BoxesUnspentStream: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListOutputInfo>;
50
- getApiV1BoxesByergotreetemplatehashP1Stream: (p1: string, params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesByergotreetemplatehashP1StreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListOutputInfo>;
51
- getApiV1BoxesUnspentByergotreetemplatehashP1Stream: (p1: string, params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentByergotreetemplatehashP1StreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListOutputInfo>;
52
- getApiV1BoxesUnspentBytokenidP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentBytokenidP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
53
- getApiV1BoxesBytokenidP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesBytokenidP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
54
- getApiV1BoxesP1: (p1: string) => Promise<OutputInfo>;
55
- getApiV1BoxesByergotreeP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesByergotreeP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
56
- getApiV1BoxesByergotreetemplatehashP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesByergotreetemplatehashP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
57
- getApiV1BoxesUnspentByergotreeP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentByergotreeP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
58
- getApiV1BoxesUnspentByergotreetemplatehashP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentByergotreetemplatehashP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
59
- getApiV1BoxesByaddressP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesByaddressP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
60
- getApiV1BoxesUnspentByaddressP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesUnspentByaddressP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
61
- getApiV1BoxesByglobalindexStream: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BoxesByglobalindexStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListOutputInfo>;
62
- postApiV1BoxesUnspentSearchUnion: (boxAssetsQuery: import("@rosen-clients/ergo-explorer/dist/src/v1/types").BoxAssetsQuery, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").PostApiV1BoxesUnspentSearchUnionParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
63
- postApiV1BoxesUnspentSearch: (boxQuery: import("@rosen-clients/ergo-explorer/dist/src/v1/types").BoxQuery, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").PostApiV1BoxesUnspentSearchParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
64
- postApiV1BoxesSearch: (boxQuery: import("@rosen-clients/ergo-explorer/dist/src/v1/types").BoxQuery, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").PostApiV1BoxesSearchParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsOutputInfo>;
65
- getApiV1Tokens: (params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1TokensParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsTokenInfo>;
66
- getApiV1TokensSearch: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1TokensSearchParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsTokenInfo>;
67
- getApiV1TokensBysymbolP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").TokenInfo[]>;
68
- getApiV1TokensP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").TokenInfo>;
69
- getApiV1Assets: (params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1AssetsParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsTokenInfo>;
70
- getApiV1AssetsSearchBytokenid: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1AssetsSearchBytokenidParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsAssetInfo>;
71
- getApiV1EpochsParams: () => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").EpochInfo>;
72
- getApiV1AddressesP1Transactions: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1AddressesP1TransactionsParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsTransactionInfo>;
73
- getApiV1AddressesP1BalanceConfirmed: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1AddressesP1BalanceConfirmedParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").Balance>;
74
- getApiV1AddressesP1BalanceTotal: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").TotalBalance>;
75
- getApiV1Blocks: (params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BlocksParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsBlockInfo>;
76
- getApiV1BlocksP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").BlockSummary>;
77
- getApiV1BlocksHeaders: (params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BlocksHeadersParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsBlockHeader>;
78
- getApiV1BlocksByglobalindexStream: (params: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BlocksByglobalindexStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListBlockInfo>;
79
- getApiV1BlocksStreamSummary: (params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1BlocksStreamSummaryParams | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListBlockSummaryV1>;
80
- postApiV1MempoolTransactionsSubmit: (postApiV1MempoolTransactionsSubmitBody: import("@rosen-clients/ergo-explorer/dist/src/v1/types").PostApiV1MempoolTransactionsSubmitBody) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").TxIdResponse>;
81
- getApiV1MempoolTransactionsByaddressP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/src/v1/types").GetApiV1MempoolTransactionsByaddressP1Params | undefined) => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ItemsUTransactionInfo>;
82
- getApiV1MempoolBoxesUnspent: () => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").ListOutputInfo>;
83
- getApiV1Info: () => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").NetworkState>;
84
- getApiV1Networkstate: () => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").NetworkState>;
85
- getApiV1Networkstats: () => Promise<import("@rosen-clients/ergo-explorer/dist/src/v1/types").NetworkStats>;
86
- };
87
- };
88
- constructor(id: string, dataSource: DataSource, address: string, RWT: string, explorerUrl: string, logger?: AbstractLogger);
89
- getId: () => string;
90
- /**
91
- * gets block id and transactions corresponding to the block and saves if they are valid rosen
92
- * transactions and in case of success return true and in case of failure returns false
93
- * @param block
94
- * @param txs
95
- */
96
- processTransactions: (txs: Array<Transaction>, block: BlockEntity) => Promise<boolean>;
97
- forkBlock: (hash: string) => Promise<void>;
98
- /**
99
- * Initializes the database with older permits related to the address
100
- */
101
- initializeBoxes: (initialHeight: number) => Promise<void>;
102
- /**
103
- * Validate all remaining permits in the database
104
- * update the correct ones and remove the invalid ones
105
- * @param unchangedStoredBoxIds
106
- * @param initialHeight
107
- */
108
- validateOldStoredPermits: (unchangedStoredBoxIds: Array<string>, initialHeight: number) => Promise<void>;
109
- /**
110
- * Return extracted permit from a box
111
- * @param boxId
112
- */
113
- getPermitWithBoxId: (boxId: string) => Promise<ExtractedPermit | undefined>;
114
- /**
115
- * Return all unspent permits
116
- * @param initialHeight
117
- * @returns
118
- */
119
- getAllUnspentPermits: (initialHeight: number) => Promise<Array<ExtractedPermit>>;
120
- /**
121
- * Returns block information of tx
122
- * @param txId
123
- */
124
- getTxBlock: (txId: string) => Promise<{
125
- id: string;
126
- height: number;
127
- }>;
128
- /**
129
- * Extract permit data from json boxes
130
- * and filter to fit in a specified height range
131
- * @param boxes
132
- * @param toHeight
133
- * @param heightDifference
134
- * @returns extracted permit
135
- */
136
- extractPermitData: (boxes: Array<OutputInfo>) => Promise<ExtractedPermit[]>;
137
- }
138
- export default PermitExtractor;
139
- //# sourceMappingURL=permitExtractor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"permitExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/permitExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKrC,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAe,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,MAAM,2DAA2D,CAAC;AAKvF,OAAO,YAAY,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,cAAM,eAAgB,SAAQ,iBAAiB,CAAC,WAAW,CAAC;IAC1D,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAC;gBAGnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,cAAc;IAczB,KAAK,eAAiB;IAEtB;;;;;OAKG;IACH,mBAAmB,QACZ,MAAM,WAAW,CAAC,SAChB,WAAW,KACjB,QAAQ,OAAO,CAAC,CAoEjB;IAEF,SAAS,SAAgB,MAAM,mBAE7B;IAEF;;OAEG;IACH,eAAe,kBAAyB,MAAM,mBAyB5C;IAEF;;;;;OAKG;IACH,wBAAwB,0BACC,MAAM,MAAM,CAAC,iBACrB,MAAM,mBAmBrB;IAEF;;;OAGG;IACH,kBAAkB,UACT,MAAM,KACZ,QAAQ,eAAe,GAAG,SAAS,CAAC,CAQrC;IAEF;;;;OAIG;IACH,oBAAoB,kBACH,MAAM,KACpB,QAAQ,MAAM,eAAe,CAAC,CAAC,CAuBhC;IAEF;;;OAGG;IACH,UAAU,SAAgB,MAAM;;;OAM9B;IAEF;;;;;;;OAOG;IACH,iBAAiB,UAAiB,MAAM,UAAU,CAAC,gCA4BjD;CACH;AAED,eAAe,eAAe,CAAC"}