@rosen-bridge/abstract-extractor 2.1.0 → 2.1.1

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 (127) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/package.json +14 -7
  3. package/.eslintignore +0 -1
  4. package/dist/lib/abstractExtractor.d.ts +0 -25
  5. package/dist/lib/abstractExtractor.d.ts.map +0 -1
  6. package/dist/lib/abstractExtractor.js +0 -3
  7. package/dist/lib/constants.d.ts +0 -4
  8. package/dist/lib/constants.d.ts.map +0 -1
  9. package/dist/lib/constants.js +0 -4
  10. package/dist/lib/ergo/AbstractErgoExtractor.d.ts +0 -80
  11. package/dist/lib/ergo/AbstractErgoExtractor.d.ts.map +0 -1
  12. package/dist/lib/ergo/AbstractErgoExtractor.js +0 -142
  13. package/dist/lib/ergo/AbstractErgoExtractorAction.d.ts +0 -92
  14. package/dist/lib/ergo/AbstractErgoExtractorAction.d.ts.map +0 -1
  15. package/dist/lib/ergo/AbstractErgoExtractorAction.js +0 -222
  16. package/dist/lib/ergo/AbstractErgoExtractorEntity.d.ts +0 -11
  17. package/dist/lib/ergo/AbstractErgoExtractorEntity.d.ts.map +0 -1
  18. package/dist/lib/ergo/AbstractErgoExtractorEntity.js +0 -57
  19. package/dist/lib/ergo/index.d.ts +0 -10
  20. package/dist/lib/ergo/index.d.ts.map +0 -1
  21. package/dist/lib/ergo/index.js +0 -10
  22. package/dist/lib/ergo/initializable/AbstractInitializable.d.ts +0 -48
  23. package/dist/lib/ergo/initializable/AbstractInitializable.d.ts.map +0 -1
  24. package/dist/lib/ergo/initializable/AbstractInitializable.js +0 -163
  25. package/dist/lib/ergo/initializable/AbstractInitializableAction.d.ts +0 -14
  26. package/dist/lib/ergo/initializable/AbstractInitializableAction.d.ts.map +0 -1
  27. package/dist/lib/ergo/initializable/AbstractInitializableAction.js +0 -16
  28. package/dist/lib/ergo/initializable/index.d.ts +0 -3
  29. package/dist/lib/ergo/initializable/index.d.ts.map +0 -1
  30. package/dist/lib/ergo/initializable/index.js +0 -3
  31. package/dist/lib/ergo/interfaces.d.ts +0 -47
  32. package/dist/lib/ergo/interfaces.d.ts.map +0 -1
  33. package/dist/lib/ergo/interfaces.js +0 -8
  34. package/dist/lib/ergo/network/AbstractNetwork.d.ts +0 -26
  35. package/dist/lib/ergo/network/AbstractNetwork.d.ts.map +0 -1
  36. package/dist/lib/ergo/network/AbstractNetwork.js +0 -3
  37. package/dist/lib/ergo/network/ExplorerNetwork.d.ts +0 -74
  38. package/dist/lib/ergo/network/ExplorerNetwork.d.ts.map +0 -1
  39. package/dist/lib/ergo/network/ExplorerNetwork.js +0 -185
  40. package/dist/lib/ergo/network/NodeNetwork.d.ts +0 -60
  41. package/dist/lib/ergo/network/NodeNetwork.d.ts.map +0 -1
  42. package/dist/lib/ergo/network/NodeNetwork.js +0 -131
  43. package/dist/lib/ergo/utils.d.ts +0 -8
  44. package/dist/lib/ergo/utils.d.ts.map +0 -1
  45. package/dist/lib/ergo/utils.js +0 -16
  46. package/dist/lib/index.d.ts +0 -4
  47. package/dist/lib/index.d.ts.map +0 -1
  48. package/dist/lib/index.js +0 -4
  49. package/dist/tests/AbstractErgoExtractor.mock.d.ts +0 -11
  50. package/dist/tests/AbstractErgoExtractor.mock.d.ts.map +0 -1
  51. package/dist/tests/AbstractErgoExtractor.mock.js +0 -11
  52. package/dist/tests/AbstractErgoExtractor.spec.d.ts +0 -2
  53. package/dist/tests/AbstractErgoExtractor.spec.d.ts.map +0 -1
  54. package/dist/tests/AbstractErgoExtractor.spec.js +0 -240
  55. package/dist/tests/AbstractErgoExtractorAction.mock.d.ts +0 -15
  56. package/dist/tests/AbstractErgoExtractorAction.mock.d.ts.map +0 -1
  57. package/dist/tests/AbstractErgoExtractorAction.mock.js +0 -27
  58. package/dist/tests/AbstractErgoExtractorAction.spec.d.ts +0 -2
  59. package/dist/tests/AbstractErgoExtractorAction.spec.d.ts.map +0 -1
  60. package/dist/tests/AbstractErgoExtractorAction.spec.js +0 -221
  61. package/dist/tests/initializable/AbstractInitializable.mock.d.ts +0 -61
  62. package/dist/tests/initializable/AbstractInitializable.mock.d.ts.map +0 -1
  63. package/dist/tests/initializable/AbstractInitializable.mock.js +0 -18
  64. package/dist/tests/initializable/AbstractInitializable.spec.d.ts +0 -2
  65. package/dist/tests/initializable/AbstractInitializable.spec.d.ts.map +0 -1
  66. package/dist/tests/initializable/AbstractInitializable.spec.js +0 -299
  67. package/dist/tests/initializable/AbstractInitializableAction.mock.d.ts +0 -15
  68. package/dist/tests/initializable/AbstractInitializableAction.mock.d.ts.map +0 -1
  69. package/dist/tests/initializable/AbstractInitializableAction.mock.js +0 -27
  70. package/dist/tests/initializable/AbstractInitializableAction.spec.d.ts +0 -2
  71. package/dist/tests/initializable/AbstractInitializableAction.spec.d.ts.map +0 -1
  72. package/dist/tests/initializable/AbstractInitializableAction.spec.js +0 -54
  73. package/dist/tests/initializable/testData.d.ts +0 -94
  74. package/dist/tests/initializable/testData.d.ts.map +0 -1
  75. package/dist/tests/initializable/testData.js +0 -235
  76. package/dist/tests/network/ExplorerNetwork.spec.d.ts +0 -2
  77. package/dist/tests/network/ExplorerNetwork.spec.d.ts.map +0 -1
  78. package/dist/tests/network/ExplorerNetwork.spec.js +0 -61
  79. package/dist/tests/network/NodeNetwork.spec.d.ts +0 -2
  80. package/dist/tests/network/NodeNetwork.spec.d.ts.map +0 -1
  81. package/dist/tests/network/NodeNetwork.spec.js +0 -48
  82. package/dist/tests/network/testData.d.ts +0 -752
  83. package/dist/tests/network/testData.d.ts.map +0 -1
  84. package/dist/tests/network/testData.js +0 -1401
  85. package/dist/tests/testData.d.ts +0 -32
  86. package/dist/tests/testData.d.ts.map +0 -1
  87. package/dist/tests/testData.js +0 -121
  88. package/dist/tests/testUtils.d.ts +0 -9
  89. package/dist/tests/testUtils.d.ts.map +0 -1
  90. package/dist/tests/testUtils.js +0 -31
  91. package/dist/tsconfig.tsbuildinfo +0 -1
  92. package/dist/vitest.config.d.ts +0 -3
  93. package/dist/vitest.config.d.ts.map +0 -1
  94. package/dist/vitest.config.js +0 -18
  95. package/lib/abstractExtractor.ts +0 -31
  96. package/lib/constants.ts +0 -3
  97. package/lib/ergo/AbstractErgoExtractor.ts +0 -227
  98. package/lib/ergo/AbstractErgoExtractorAction.ts +0 -319
  99. package/lib/ergo/AbstractErgoExtractorEntity.ts +0 -32
  100. package/lib/ergo/index.ts +0 -9
  101. package/lib/ergo/initializable/AbstractInitializable.ts +0 -228
  102. package/lib/ergo/initializable/AbstractInitializableAction.ts +0 -33
  103. package/lib/ergo/initializable/index.ts +0 -2
  104. package/lib/ergo/interfaces.ts +0 -51
  105. package/lib/ergo/network/AbstractNetwork.ts +0 -29
  106. package/lib/ergo/network/ExplorerNetwork.ts +0 -237
  107. package/lib/ergo/network/NodeNetwork.ts +0 -169
  108. package/lib/ergo/utils.ts +0 -15
  109. package/lib/index.ts +0 -3
  110. package/tests/AbstractErgoExtractor.mock.ts +0 -33
  111. package/tests/AbstractErgoExtractor.spec.ts +0 -284
  112. package/tests/AbstractErgoExtractorAction.mock.ts +0 -45
  113. package/tests/AbstractErgoExtractorAction.spec.ts +0 -268
  114. package/tests/initializable/AbstractInitializable.mock.ts +0 -44
  115. package/tests/initializable/AbstractInitializable.spec.ts +0 -386
  116. package/tests/initializable/AbstractInitializableAction.mock.ts +0 -45
  117. package/tests/initializable/AbstractInitializableAction.spec.ts +0 -64
  118. package/tests/initializable/testData.ts +0 -283
  119. package/tests/network/ExplorerNetwork.spec.ts +0 -73
  120. package/tests/network/NodeNetwork.spec.ts +0 -56
  121. package/tests/network/testData.ts +0 -1708
  122. package/tests/testData.ts +0 -140
  123. package/tests/testUtils.ts +0 -22
  124. package/tsconfig.build.json +0 -9
  125. package/tsconfig.build.tsbuildinfo +0 -1
  126. package/tsconfig.json +0 -9
  127. package/vitest.config.ts +0 -18
@@ -1,16 +0,0 @@
1
- import { AbstractErgoExtractorAction } from '../AbstractErgoExtractorAction';
2
- export class AbstractInitializableErgoExtractorAction extends AbstractErgoExtractorAction {
3
- constructor(dataSource, repo, logger) {
4
- super(dataSource, repo, logger);
5
- }
6
- /**
7
- * remove all existing data for the extractor
8
- * @param extractorId
9
- */
10
- removeAllData = async (extractorId) => {
11
- await this.repository.delete({
12
- extractor: extractorId,
13
- });
14
- };
15
- }
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RJbml0aWFsaXphYmxlQWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2VyZ28vaW5pdGlhbGl6YWJsZS9BYnN0cmFjdEluaXRpYWxpemFibGVBY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJN0UsTUFBTSxPQUFnQix3Q0FHcEIsU0FBUSwyQkFBMkQ7SUFDbkUsWUFDRSxVQUFzQixFQUN0QixJQUFtQyxFQUNuQyxNQUF1QjtRQUV2QixLQUFLLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYSxHQUFHLEtBQUssRUFBRSxXQUFtQixFQUFFLEVBQUU7UUFDNUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUMzQixTQUFTLEVBQUUsV0FBVztTQUNjLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERhdGFTb3VyY2UsXG4gIEVudGl0eVRhcmdldCxcbiAgRmluZE9wdGlvbnNXaGVyZSxcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuXG5pbXBvcnQgeyBBYnN0cmFjdEVyZ29FeHRyYWN0b3JBY3Rpb24gfSBmcm9tICcuLi9BYnN0cmFjdEVyZ29FeHRyYWN0b3JBY3Rpb24nO1xuaW1wb3J0IHsgQWJzdHJhY3RCb3hEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHkgfSBmcm9tICcuLi9BYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHknO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvckFjdGlvbjxcbiAgRXh0cmFjdGVkRGF0YSBleHRlbmRzIEFic3RyYWN0Qm94RGF0YSxcbiAgRXh0cmFjdG9yRW50aXR5IGV4dGVuZHMgQWJzdHJhY3RFcmdvRXh0cmFjdG9yRW50aXR5LFxuPiBleHRlbmRzIEFic3RyYWN0RXJnb0V4dHJhY3RvckFjdGlvbjxFeHRyYWN0ZWREYXRhLCBFeHRyYWN0b3JFbnRpdHk+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICByZXBvOiBFbnRpdHlUYXJnZXQ8RXh0cmFjdG9yRW50aXR5PixcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlcixcbiAgKSB7XG4gICAgc3VwZXIoZGF0YVNvdXJjZSwgcmVwbywgbG9nZ2VyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZW1vdmUgYWxsIGV4aXN0aW5nIGRhdGEgZm9yIHRoZSBleHRyYWN0b3JcbiAgICogQHBhcmFtIGV4dHJhY3RvcklkXG4gICAqL1xuICByZW1vdmVBbGxEYXRhID0gYXN5bmMgKGV4dHJhY3RvcklkOiBzdHJpbmcpID0+IHtcbiAgICBhd2FpdCB0aGlzLnJlcG9zaXRvcnkuZGVsZXRlKHtcbiAgICAgIGV4dHJhY3RvcjogZXh0cmFjdG9ySWQsXG4gICAgfSBhcyBGaW5kT3B0aW9uc1doZXJlPEV4dHJhY3RvckVudGl0eT4pO1xuICB9O1xufVxuIl19
@@ -1,3 +0,0 @@
1
- export * from './AbstractInitializable';
2
- export * from './AbstractInitializableAction';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../lib/ergo/initializable/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC"}
@@ -1,3 +0,0 @@
1
- export * from './AbstractInitializable';
2
- export * from './AbstractInitializableAction';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZXJnby9pbml0aWFsaXphYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vQWJzdHJhY3RJbml0aWFsaXphYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vQWJzdHJhY3RJbml0aWFsaXphYmxlQWN0aW9uJztcbiJdfQ==
@@ -1,47 +0,0 @@
1
- import { OutputBox, Transaction } from '@rosen-bridge/scanner-interfaces';
2
- export interface ErgoBox extends OutputBox {
3
- blockId: string;
4
- inclusionHeight: number;
5
- spentBlockId?: string;
6
- spentHeight?: number;
7
- spentTransactionId?: string;
8
- spentIndex?: number;
9
- }
10
- export interface ExtendedTransaction extends Transaction {
11
- inclusionHeight: number;
12
- blockId: string;
13
- }
14
- export interface SpendInfo {
15
- boxId: string;
16
- txId: string;
17
- index: number;
18
- extras?: {
19
- [key: string]: string;
20
- };
21
- }
22
- export interface AbstractBoxData {
23
- boxId: string;
24
- serialized: string;
25
- }
26
- export declare enum CallbackType {
27
- Insert = "insert",
28
- Update = "update",
29
- Spend = "spend",
30
- Delete = "delete"
31
- }
32
- export interface BoxInfo {
33
- boxId: string;
34
- }
35
- export type CallbackDataMap<ExtractedData extends AbstractBoxData> = {
36
- [CallbackType.Update]: BoxInfo[];
37
- [CallbackType.Insert]: ExtractedData[];
38
- [CallbackType.Delete]: ExtractedData[];
39
- [CallbackType.Spend]: BoxInfo[];
40
- };
41
- export type CallbackMap<ExtractedData extends AbstractBoxData> = {
42
- [K in CallbackType]: (data: CallbackDataMap<ExtractedData>[K]) => void;
43
- };
44
- export type TxExtra = {
45
- [key: string]: string;
46
- };
47
- //# sourceMappingURL=interfaces.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../lib/ergo/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE1E,MAAM,WAAW,OAAQ,SAAQ,SAAS;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,oBAAY,YAAY;IACtB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,eAAe,CAAC,aAAa,SAAS,eAAe,IAAI;IACnE,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACjC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACvC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACvC,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,aAAa,SAAS,eAAe,IAAI;KAC9D,CAAC,IAAI,YAAY,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;CACvE,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC"}
@@ -1,8 +0,0 @@
1
- export var CallbackType;
2
- (function (CallbackType) {
3
- CallbackType["Insert"] = "insert";
4
- CallbackType["Update"] = "update";
5
- CallbackType["Spend"] = "spend";
6
- CallbackType["Delete"] = "delete";
7
- })(CallbackType || (CallbackType = {}));
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9lcmdvL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNEJBLE1BQU0sQ0FBTixJQUFZLFlBS1g7QUFMRCxXQUFZLFlBQVk7SUFDdEIsaUNBQWlCLENBQUE7SUFDakIsaUNBQWlCLENBQUE7SUFDakIsK0JBQWUsQ0FBQTtJQUNmLGlDQUFpQixDQUFBO0FBQ25CLENBQUMsRUFMVyxZQUFZLEtBQVosWUFBWSxRQUt2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE91dHB1dEJveCwgVHJhbnNhY3Rpb24gfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXItaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJnb0JveCBleHRlbmRzIE91dHB1dEJveCB7XG4gIGJsb2NrSWQ6IHN0cmluZztcbiAgaW5jbHVzaW9uSGVpZ2h0OiBudW1iZXI7XG4gIHNwZW50QmxvY2tJZD86IHN0cmluZztcbiAgc3BlbnRIZWlnaHQ/OiBudW1iZXI7XG4gIHNwZW50VHJhbnNhY3Rpb25JZD86IHN0cmluZztcbiAgc3BlbnRJbmRleD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbmRlZFRyYW5zYWN0aW9uIGV4dGVuZHMgVHJhbnNhY3Rpb24ge1xuICBpbmNsdXNpb25IZWlnaHQ6IG51bWJlcjtcbiAgYmxvY2tJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNwZW5kSW5mbyB7XG4gIGJveElkOiBzdHJpbmc7XG4gIHR4SWQ6IHN0cmluZztcbiAgaW5kZXg6IG51bWJlcjtcbiAgZXh0cmFzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBYnN0cmFjdEJveERhdGEge1xuICBib3hJZDogc3RyaW5nO1xuICBzZXJpYWxpemVkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIENhbGxiYWNrVHlwZSB7XG4gIEluc2VydCA9ICdpbnNlcnQnLFxuICBVcGRhdGUgPSAndXBkYXRlJyxcbiAgU3BlbmQgPSAnc3BlbmQnLFxuICBEZWxldGUgPSAnZGVsZXRlJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCb3hJbmZvIHtcbiAgYm94SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQ2FsbGJhY2tEYXRhTWFwPEV4dHJhY3RlZERhdGEgZXh0ZW5kcyBBYnN0cmFjdEJveERhdGE+ID0ge1xuICBbQ2FsbGJhY2tUeXBlLlVwZGF0ZV06IEJveEluZm9bXTtcbiAgW0NhbGxiYWNrVHlwZS5JbnNlcnRdOiBFeHRyYWN0ZWREYXRhW107XG4gIFtDYWxsYmFja1R5cGUuRGVsZXRlXTogRXh0cmFjdGVkRGF0YVtdO1xuICBbQ2FsbGJhY2tUeXBlLlNwZW5kXTogQm94SW5mb1tdO1xufTtcblxuZXhwb3J0IHR5cGUgQ2FsbGJhY2tNYXA8RXh0cmFjdGVkRGF0YSBleHRlbmRzIEFic3RyYWN0Qm94RGF0YT4gPSB7XG4gIFtLIGluIENhbGxiYWNrVHlwZV06IChkYXRhOiBDYWxsYmFja0RhdGFNYXA8RXh0cmFjdGVkRGF0YT5bS10pID0+IHZvaWQ7XG59O1xuXG5leHBvcnQgdHlwZSBUeEV4dHJhID0geyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiJdfQ==
@@ -1,26 +0,0 @@
1
- import { ErgoBox } from '../interfaces';
2
- export declare abstract class AbstractNetwork {
3
- /**
4
- * return related boxes by specified address with limit offset
5
- * @param address
6
- * @param offset
7
- * @param limit
8
- * @returns related boxes
9
- */
10
- abstract getBoxesByAddress: (address: string, offset: number, limit: number) => Promise<{
11
- boxes: ErgoBox[];
12
- hasNextBatch: boolean;
13
- }>;
14
- /**
15
- * return related boxes by specified token with limit offset
16
- * @param tokenId
17
- * @param offset
18
- * @param limit
19
- * @returns related boxes
20
- */
21
- abstract getBoxesByTokenId: (tokenId: string, offset: number, limit: number) => Promise<{
22
- boxes: ErgoBox[];
23
- hasNextBatch: boolean;
24
- }>;
25
- }
26
- //# sourceMappingURL=AbstractNetwork.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbstractNetwork.d.ts","sourceRoot":"","sources":["../../../../lib/ergo/network/AbstractNetwork.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,8BAAsB,eAAe;IACnC;;;;;;OAMG;IACH,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,KACV,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAE1D;;;;;;OAMG;IACH,QAAQ,CAAC,iBAAiB,EAAE,CAC1B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,KACV,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC3D"}
@@ -1,3 +0,0 @@
1
- export class AbstractNetwork {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3ROZXR3b3JrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2VyZ28vbmV0d29yay9BYnN0cmFjdE5ldHdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFnQixlQUFlO0NBMEJwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVyZ29Cb3ggfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TmV0d29yayB7XG4gIC8qKlxuICAgKiByZXR1cm4gcmVsYXRlZCBib3hlcyBieSBzcGVjaWZpZWQgYWRkcmVzcyB3aXRoIGxpbWl0IG9mZnNldFxuICAgKiBAcGFyYW0gYWRkcmVzc1xuICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAqIEBwYXJhbSBsaW1pdFxuICAgKiBAcmV0dXJucyByZWxhdGVkIGJveGVzXG4gICAqL1xuICBhYnN0cmFjdCBnZXRCb3hlc0J5QWRkcmVzczogKFxuICAgIGFkZHJlc3M6IHN0cmluZyxcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyLFxuICApID0+IFByb21pc2U8eyBib3hlczogRXJnb0JveFtdOyBoYXNOZXh0QmF0Y2g6IGJvb2xlYW4gfT47XG5cbiAgLyoqXG4gICAqIHJldHVybiByZWxhdGVkIGJveGVzIGJ5IHNwZWNpZmllZCB0b2tlbiB3aXRoIGxpbWl0IG9mZnNldFxuICAgKiBAcGFyYW0gdG9rZW5JZFxuICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAqIEBwYXJhbSBsaW1pdFxuICAgKiBAcmV0dXJucyByZWxhdGVkIGJveGVzXG4gICAqL1xuICBhYnN0cmFjdCBnZXRCb3hlc0J5VG9rZW5JZDogKFxuICAgIHRva2VuSWQ6IHN0cmluZyxcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyLFxuICApID0+IFByb21pc2U8eyBib3hlczogRXJnb0JveFtdOyBoYXNOZXh0QmF0Y2g6IGJvb2xlYW4gfT47XG59XG4iXX0=
@@ -1,74 +0,0 @@
1
- import { AbstractNetwork } from './AbstractNetwork';
2
- import { BlockInfo, Transaction } from '@rosen-bridge/scanner-interfaces';
3
- import { ErgoBox, ExtendedTransaction } from '../interfaces';
4
- export declare class ExplorerNetwork extends AbstractNetwork {
5
- private api;
6
- constructor(url: string);
7
- /**
8
- * return spending information of a specified box by having spendTxId
9
- * @param boxId
10
- * @param spendTxId
11
- */
12
- getSpendingInfo: (boxId: string, spendTxId: string) => Promise<BlockInfo & {
13
- spendIndex: number;
14
- }>;
15
- /**
16
- * convert explorer api boxes to ErgoBox interface
17
- * @param box
18
- * @returns ErgoBox
19
- */
20
- private convertBox;
21
- /**
22
- * convert explorer transaction to extractor transaction type
23
- * @param tx
24
- */
25
- private convertTransaction;
26
- /**
27
- * convert explorer block transaction to transaction type
28
- * @param tx
29
- */
30
- private convertBlockTransaction;
31
- /**
32
- * use explorer api to return related transactions of the specified address in the height range
33
- * @param tokenId
34
- * @param offset
35
- * @param limit
36
- * @returns related transactions
37
- */
38
- getAddressTransactionsWithHeight: (address: string, fromHeight: number, toHeight: number) => Promise<Array<ExtendedTransaction>>;
39
- /**
40
- * use explorer api to get the block id at the specified height
41
- * @param height
42
- * @returns block id
43
- */
44
- getBlockIdAtHeight: (height: number) => Promise<string>;
45
- /**
46
- * use explorer api to return all transactions in a block
47
- * @param blockId
48
- * @returns converted transactions
49
- */
50
- getBlockTxs: (blockId: string) => Promise<Array<Transaction>>;
51
- /**
52
- * use explorer api to return related boxes by specified address
53
- * @param address
54
- * @param offset
55
- * @param limit
56
- * @returns related boxes
57
- */
58
- getBoxesByAddress: (address: string, offset: number, limit: number) => Promise<{
59
- boxes: ErgoBox[];
60
- hasNextBatch: boolean;
61
- }>;
62
- /**
63
- * use explorer api to return related boxes by specified token id
64
- * @param tokenId
65
- * @param offset
66
- * @param limit
67
- * @returns related boxes
68
- */
69
- getBoxesByTokenId: (tokenId: string, offset: number, limit: number) => Promise<{
70
- boxes: ErgoBox[];
71
- hasNextBatch: boolean;
72
- }>;
73
- }
74
- //# sourceMappingURL=ExplorerNetwork.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExplorerNetwork.d.ts","sourceRoot":"","sources":["../../../../lib/ergo/network/ExplorerNetwork.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAI7D,qBAAa,eAAgB,SAAQ,eAAe;IAClD,OAAO,CAAC,GAAG,CAAC;gBAEA,GAAG,EAAE,MAAM;IAKvB;;;;OAIG;IACH,eAAe,GACb,OAAO,MAAM,EACb,WAAW,MAAM,KAChB,OAAO,CAAC,SAAS,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAY5C;IAEF;;;;OAIG;IACH,OAAO,CAAC,UAAU,CAwBhB;IAEF;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CA8BxB;IAEF;;;OAGG;IACH,OAAO,CAAC,uBAAuB,CAuB7B;IAEF;;;;;;OAMG;IACH,gCAAgC,GAC9B,SAAS,MAAM,EACf,YAAY,MAAM,EAClB,UAAU,MAAM,KACf,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAWpC;IAEF;;;;OAIG;IACH,kBAAkB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,CAG1D;IAEF;;;;OAIG;IACH,WAAW,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAUhE;IAEF;;;;;;OAMG;IACH,iBAAiB,GACf,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,OAAO,MAAM,KACZ,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAarD;IAEF;;;;;;OAMG;IACH,iBAAiB,GACf,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,OAAO,MAAM,KACZ,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAYrD;CACH"}
@@ -1,185 +0,0 @@
1
- import ergoExplorerClientFactory from '@rosen-clients/ergo-explorer';
2
- import { AbstractNetwork } from './AbstractNetwork';
3
- import { mapValues, pick } from 'lodash-es';
4
- import { API_LIMIT } from '../../constants';
5
- export class ExplorerNetwork extends AbstractNetwork {
6
- api;
7
- constructor(url) {
8
- super();
9
- this.api = ergoExplorerClientFactory(url);
10
- }
11
- /**
12
- * return spending information of a specified box by having spendTxId
13
- * @param boxId
14
- * @param spendTxId
15
- */
16
- getSpendingInfo = async (boxId, spendTxId) => {
17
- const tx = await this.api.v1.getApiV1TransactionsP1(spendTxId);
18
- const spendIndex = tx.inputs?.findIndex((box) => box.boxId === boxId);
19
- if (spendIndex == undefined)
20
- throw Error(`Impossible behavior, the box [${boxId}] should have been spent in tx [${spendTxId}]`);
21
- return {
22
- hash: tx.blockId,
23
- height: tx.inclusionHeight,
24
- spendIndex,
25
- };
26
- };
27
- /**
28
- * convert explorer api boxes to ErgoBox interface
29
- * @param box
30
- * @returns ErgoBox
31
- */
32
- convertBox = async (box) => {
33
- const spendInfo = box.spentTransactionId
34
- ? await this.getSpendingInfo(box.boxId, box.spentTransactionId)
35
- : undefined;
36
- return {
37
- blockId: box.blockId,
38
- boxId: box.boxId,
39
- creationHeight: box.creationHeight,
40
- inclusionHeight: box.settlementHeight,
41
- ergoTree: box.ergoTree,
42
- index: box.index,
43
- transactionId: box.transactionId,
44
- value: box.value,
45
- additionalRegisters: mapValues(box.additionalRegisters, 'serializedValue'),
46
- assets: box.assets?.map((asset) => pick(asset, ['tokenId', 'amount'])) ?? [],
47
- spentHeight: spendInfo?.height,
48
- spentBlockId: spendInfo?.hash,
49
- spentTransactionId: box.spentTransactionId,
50
- spentIndex: spendInfo?.spendIndex,
51
- };
52
- };
53
- /**
54
- * convert explorer transaction to extractor transaction type
55
- * @param tx
56
- */
57
- convertTransaction = (tx) => {
58
- return {
59
- id: tx.id,
60
- inclusionHeight: tx.inclusionHeight,
61
- blockId: tx.blockId,
62
- dataInputs: tx.dataInputs?.map((dataInput) => ({
63
- boxId: dataInput.boxId,
64
- })) ?? [],
65
- // TODO: Add input extension to explorer local/ergo/rosen-bridge/scanner/-/issues/156
66
- inputs: tx.inputs?.map((input) => ({ boxId: input.boxId })) ?? [],
67
- outputs: tx.outputs?.map((output) => ({
68
- boxId: output.boxId,
69
- transactionId: output.transactionId,
70
- additionalRegisters: mapValues(output.additionalRegisters, 'serializedValue'),
71
- assets: output.assets?.map((asset) => pick(asset, ['tokenId', 'amount'])) ??
72
- [],
73
- ergoTree: output.ergoTree,
74
- creationHeight: output.creationHeight,
75
- index: output.index,
76
- value: output.value,
77
- })) ?? [],
78
- };
79
- };
80
- /**
81
- * convert explorer block transaction to transaction type
82
- * @param tx
83
- */
84
- convertBlockTransaction = (tx) => {
85
- return {
86
- id: tx.id,
87
- dataInputs: tx.dataInputs?.map((dataInput) => ({
88
- boxId: dataInput.id,
89
- })) ?? [],
90
- // TODO: Add input extension local/ergo/rosen-bridge/scanner/-/issues/156
91
- inputs: tx.inputs?.map((input) => ({ boxId: input.id })) ?? [],
92
- outputs: tx.outputs?.map((output) => ({
93
- boxId: output.id,
94
- transactionId: output.txId,
95
- additionalRegisters: output.additionalRegisters,
96
- assets: output.assets?.map((asset) => pick(asset, ['tokenId', 'amount'])) ??
97
- [],
98
- ergoTree: output.ergoTree,
99
- creationHeight: output.creationHeight,
100
- index: output.index,
101
- value: output.value,
102
- })) ?? [],
103
- };
104
- };
105
- /**
106
- * use explorer api to return related transactions of the specified address in the height range
107
- * @param tokenId
108
- * @param offset
109
- * @param limit
110
- * @returns related transactions
111
- */
112
- getAddressTransactionsWithHeight = async (address, fromHeight, toHeight) => {
113
- const txs = await this.api.v1.getApiV1AddressesP1Transactions(address, {
114
- fromHeight,
115
- toHeight,
116
- limit: API_LIMIT,
117
- });
118
- if (!txs.items)
119
- throw new Error('Explorer AddressTransactions api expected to have items');
120
- return txs.items.map((tx) => this.convertTransaction(tx));
121
- };
122
- /**
123
- * use explorer api to get the block id at the specified height
124
- * @param height
125
- * @returns block id
126
- */
127
- getBlockIdAtHeight = async (height) => {
128
- const id = await this.api.v0.getApiV0BlocksAtP1(height);
129
- return id[0];
130
- };
131
- /**
132
- * use explorer api to return all transactions in a block
133
- * @param blockId
134
- * @returns converted transactions
135
- */
136
- getBlockTxs = async (blockId) => {
137
- const block = await this.api.v1.getApiV1BlocksP1(blockId);
138
- if (!block.block.blockTransactions) {
139
- throw new Error(`Expected explorer block api to include block transactions for block ${blockId}`);
140
- }
141
- return block.block.blockTransactions.map((tx) => this.convertBlockTransaction(tx));
142
- };
143
- /**
144
- * use explorer api to return related boxes by specified address
145
- * @param address
146
- * @param offset
147
- * @param limit
148
- * @returns related boxes
149
- */
150
- getBoxesByAddress = async (address, offset, limit) => {
151
- const boxes = await this.api.v1.getApiV1BoxesUnspentByaddressP1(address, {
152
- offset: offset,
153
- limit: limit,
154
- sortDirection: 'desc',
155
- });
156
- if (!boxes.items)
157
- throw new Error('Explorer BoxesByAddress api expected to have items');
158
- const resultBoxes = [];
159
- for (const box of boxes.items) {
160
- resultBoxes.push(await this.convertBox(box));
161
- }
162
- return { boxes: resultBoxes, hasNextBatch: boxes.total > offset + limit };
163
- };
164
- /**
165
- * use explorer api to return related boxes by specified token id
166
- * @param tokenId
167
- * @param offset
168
- * @param limit
169
- * @returns related boxes
170
- */
171
- getBoxesByTokenId = async (tokenId, offset, limit) => {
172
- const boxes = await this.api.v1.getApiV1BoxesBytokenidP1(tokenId, {
173
- offset: offset,
174
- limit: limit,
175
- });
176
- if (!boxes.items)
177
- throw new Error('Explorer BoxesByTokeId api expected to have items');
178
- const resultBoxes = [];
179
- for (const box of boxes.items) {
180
- resultBoxes.push(await this.convertBox(box));
181
- }
182
- return { boxes: resultBoxes, hasNextBatch: boxes.total > offset + limit };
183
- };
184
- }
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwbG9yZXJOZXR3b3JrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2VyZ28vbmV0d29yay9FeHBsb3Jlck5ldHdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyx5QkFBeUIsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFLcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTVDLE1BQU0sT0FBTyxlQUFnQixTQUFRLGVBQWU7SUFDMUMsR0FBRyxDQUFDO0lBRVosWUFBWSxHQUFXO1FBQ3JCLEtBQUssRUFBRSxDQUFDO1FBQ1IsSUFBSSxDQUFDLEdBQUcsR0FBRyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGVBQWUsR0FBRyxLQUFLLEVBQ3JCLEtBQWEsRUFDYixTQUFpQixFQUM0QixFQUFFO1FBQy9DLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0QsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLENBQUM7UUFDdEUsSUFBSSxVQUFVLElBQUksU0FBUztZQUN6QixNQUFNLEtBQUssQ0FDVCxpQ0FBaUMsS0FBSyxtQ0FBbUMsU0FBUyxHQUFHLENBQ3RGLENBQUM7UUFDSixPQUFPO1lBQ0wsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPO1lBQ2hCLE1BQU0sRUFBRSxFQUFFLENBQUMsZUFBZTtZQUMxQixVQUFVO1NBQ1gsQ0FBQztJ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RSxNQUFNLFdBQVcsR0FBbUIsRUFBRSxDQUFDO1FBQ3ZDLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlCLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUM1RSxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5IGZyb20gJ0Byb3Nlbi1jbGllbnRzL2VyZ28tZXhwbG9yZXInO1xuaW1wb3J0IHsgQWJzdHJhY3ROZXR3b3JrIH0gZnJvbSAnLi9BYnN0cmFjdE5ldHdvcmsnO1xuaW1wb3J0IHsgVjEgfSBmcm9tICdAcm9zZW4tY2xpZW50cy9lcmdvLWV4cGxvcmVyJztcbmltcG9ydCB7IEJsb2NrSW5mbywgVHJhbnNhY3Rpb24gfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXItaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7IEVyZ29Cb3gsIEV4dGVuZGVkVHJhbnNhY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IG1hcFZhbHVlcywgcGljayB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBUElfTElNSVQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgRXhwbG9yZXJOZXR3b3JrIGV4dGVuZHMgQWJzdHJhY3ROZXR3b3JrIHtcbiAgcHJpdmF0ZSBhcGk7XG5cbiAgY29uc3RydWN0b3IodXJsOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBpID0gZXJnb0V4cGxvcmVyQ2xpZW50RmFjdG9yeSh1cmwpO1xuICB9XG5cbiAgLyoqXG4gICAqIHJldHVybiBzcGVuZGluZyBpbmZvcm1hdGlvbiBvZiBhIHNwZWNpZmllZCBib3ggYnkgaGF2aW5nIHNwZW5kVHhJZFxuICAgKiBAcGFyYW0gYm94SWRcbiAgICogQHBhcmFtIHNwZW5kVHhJZFxuICAgKi9cbiAgZ2V0U3BlbmRpbmdJbmZvID0gYXN5bmMgKFxuICAgIGJveElkOiBzdHJpbmcsXG4gICAgc3BlbmRUeElkOiBzdHJpbmcsXG4gICk6IFByb21pc2U8QmxvY2tJbmZvICYgeyBzcGVuZEluZGV4OiBudW1iZXIgfT4gPT4ge1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdGhpcy5hcGkudjEuZ2V0QXBpVjFUcmFuc2FjdGlvbnNQMShzcGVuZFR4SWQpO1xuICAgIGNvbnN0IHNwZW5kSW5kZXggPSB0eC5pbnB1dHM/LmZpbmRJbmRleCgoYm94KSA9PiBib3guYm94SWQgPT09IGJveElkKTtcbiAgICBpZiAoc3BlbmRJbmRleCA9PSB1bmRlZmluZWQpXG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYEltcG9zc2libGUgYmVoYXZpb3IsIHRoZSBib3ggWyR7Ym94SWR9XSBzaG91bGQgaGF2ZSBiZWVuIHNwZW50IGluIHR4IFske3NwZW5kVHhJZH1dYCxcbiAgICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhhc2g6IHR4LmJsb2NrSWQsXG4gICAgICBoZWlnaHQ6IHR4LmluY2x1c2lvbkhlaWdodCxcbiAgICAgIHNwZW5kSW5kZXgsXG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogY29udmVydCBleHBsb3JlciBhcGkgYm94ZXMgdG8gRXJnb0JveCBpbnRlcmZhY2VcbiAgICogQHBhcmFtIGJveFxuICAgKiBAcmV0dXJucyBFcmdvQm94XG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRCb3ggPSBhc3luYyAoYm94OiBWMS5PdXRwdXRJbmZvKTogUHJvbWlzZTxFcmdvQm94PiA9PiB7XG4gICAgY29uc3Qgc3BlbmRJbmZvID0gYm94LnNwZW50VHJhbnNhY3Rpb25JZFxuICAgICAgPyBhd2FpdCB0aGlzLmdldFNwZW5kaW5nSW5mbyhib3guYm94SWQsIGJveC5zcGVudFRyYW5zYWN0aW9uSWQpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgYmxvY2tJZDogYm94LmJsb2NrSWQsXG4gICAgICBib3hJZDogYm94LmJveElkLFxuICAgICAgY3JlYXRpb25IZWlnaHQ6IGJveC5jcmVhdGlvbkhlaWdodCxcbiAgICAgIGluY2x1c2lvbkhlaWdodDogYm94LnNldHRsZW1lbnRIZWlnaHQsXG4gICAgICBlcmdvVHJlZTogYm94LmVyZ29UcmVlLFxuICAgICAgaW5kZXg6IGJveC5pbmRleCxcbiAgICAgIHRyYW5zYWN0aW9uSWQ6IGJveC50cmFuc2FjdGlvbklkLFxuICAgICAgdmFsdWU6IGJveC52YWx1ZSxcbiAgICAgIGFkZGl0aW9uYWxSZWdpc3RlcnM6IG1hcFZhbHVlcyhcbiAgICAgICAgYm94LmFkZGl0aW9uYWxSZWdpc3RlcnMsXG4gICAgICAgICdzZXJpYWxpemVkVmFsdWUnLFxuICAgICAgKSxcbiAgICAgIGFzc2V0czpcbiAgICAgICAgYm94LmFzc2V0cz8ubWFwKChhc3NldCkgPT4gcGljayhhc3NldCwgWyd0b2tlbklkJywgJ2Ftb3VudCddKSkgPz8gW10sXG4gICAgICBzcGVudEhlaWdodDogc3BlbmRJbmZvPy5oZWlnaHQsXG4gICAgICBzcGVudEJsb2NrSWQ6IHNwZW5kSW5mbz8uaGFzaCxcbiAgICAgIHNwZW50VHJhbnNhY3Rpb25JZDogYm94LnNwZW50VHJhbnNhY3Rpb25JZCxcbiAgICAgIHNwZW50SW5kZXg6IHNwZW5kSW5mbz8uc3BlbmRJbmRleCxcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBjb252ZXJ0IGV4cGxvcmVyIHRyYW5zYWN0aW9uIHRvIGV4dHJhY3RvciB0cmFuc2FjdGlvbiB0eXBlXG4gICAqIEBwYXJhbSB0eFxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0VHJhbnNhY3Rpb24gPSAoXG4gICAgdHg6IFYxLlRyYW5zYWN0aW9uSW5mbyxcbiAgKTogRXh0ZW5kZWRUcmFuc2FjdGlvbiA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiB0eC5pZCxcbiAgICAgIGluY2x1c2lvbkhlaWdodDogdHguaW5jbHVzaW9uSGVpZ2h0LFxuICAgICAgYmxvY2tJZDogdHguYmxvY2tJZCxcbiAgICAgIGRhdGFJbnB1dHM6XG4gICAgICAgIHR4LmRhdGFJbnB1dHM/Lm1hcCgoZGF0YUlucHV0KSA9PiAoe1xuICAgICAgICAgIGJveElkOiBkYXRhSW5wdXQuYm94SWQsXG4gICAgICAgIH0pKSA/PyBbXSxcbiAgICAgIC8vIFRPRE86IEFkZCBpbnB1dCBleHRlbnNpb24gdG8gZXhwbG9yZXIgbG9jYWwvZXJnby9yb3Nlbi1icmlkZ2Uvc2Nhbm5lci8tL2lzc3Vlcy8xNTZcbiAgICAgIGlucHV0czogdHguaW5wdXRzPy5tYXAoKGlucHV0KSA9PiAoeyBib3hJZDogaW5wdXQuYm94SWQgfSkpID8/IFtdLFxuICAgICAgb3V0cHV0czpcbiAgICAgICAgdHgub3V0cHV0cz8ubWFwKChvdXRwdXQpID0+ICh7XG4gICAgICAgICAgYm94SWQ6IG91dHB1dC5ib3hJZCxcbiAgICAgICAgICB0cmFuc2FjdGlvbklkOiBvdXRwdXQudHJhbnNhY3Rpb25JZCxcbiAgICAgICAgICBhZGRpdGlvbmFsUmVnaXN0ZXJzOiBtYXBWYWx1ZXMoXG4gICAgICAgICAgICBvdXRwdXQuYWRkaXRpb25hbFJlZ2lzdGVycyxcbiAgICAgICAgICAgICdzZXJpYWxpemVkVmFsdWUnLFxuICAgICAgICAgICksXG4gICAgICAgICAgYXNzZXRzOlxuICAgICAgICAgICAgb3V0cHV0LmFzc2V0cz8ubWFwKChhc3NldCkgPT4gcGljayhhc3NldCwgWyd0b2tlbklkJywgJ2Ftb3VudCddKSkgPz9cbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgIGVyZ29UcmVlOiBvdXRwdXQuZXJnb1RyZWUsXG4gICAgICAgICAgY3JlYXRpb25IZWlnaHQ6IG91dHB1dC5jcmVhdGlvbkhlaWdodCxcbiAgICAgICAgICBpbmRleDogb3V0cHV0LmluZGV4LFxuICAgICAgICAgIHZhbHVlOiBvdXRwdXQudmFsdWUsXG4gICAgICAgIH0pKSA/PyBbXSxcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBjb252ZXJ0IGV4cGxvcmVyIGJsb2NrIHRyYW5zYWN0aW9uIHRvIHRyYW5zYWN0aW9uIHR5cGVcbiAgICogQHBhcmFtIHR4XG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRCbG9ja1RyYW5zYWN0aW9uID0gKHR4OiBWMS5UcmFuc2FjdGlvbkluZm8xKTogVHJhbnNhY3Rpb24gPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdHguaWQsXG4gICAgICBkYXRhSW5wdXRzOlxuICAgICAgICB0eC5kYXRhSW5wdXRzPy5tYXAoKGRhdGFJbnB1dCkgPT4gKHtcbiAgICAgICAgICBib3hJZDogZGF0YUlucHV0LmlkLFxuICAgICAgICB9KSkgPz8gW10sXG4gICAgICAvLyBUT0RPOiBBZGQgaW5wdXQgZXh0ZW5zaW9uIGxvY2FsL2VyZ28vcm9zZW4tYnJpZGdlL3NjYW5uZXIvLS9pc3N1ZXMvMTU2XG4gICAgICBpbnB1dHM6IHR4LmlucHV0cz8ubWFwKChpbnB1dCkgPT4gKHsgYm94SWQ6IGlucHV0LmlkIH0pKSA/PyBbXSxcbiAgICAgIG91dHB1dHM6XG4gICAgICAgIHR4Lm91dHB1dHM/Lm1hcCgob3V0cHV0KSA9PiAoe1xuICAgICAgICAgIGJveElkOiBvdXRwdXQuaWQsXG4gICAgICAgICAgdHJhbnNhY3Rpb25JZDogb3V0cHV0LnR4SWQsXG4gICAgICAgICAgYWRkaXRpb25hbFJlZ2lzdGVyczogb3V0cHV0LmFkZGl0aW9uYWxSZWdpc3RlcnMsXG4gICAgICAgICAgYXNzZXRzOlxuICAgICAgICAgICAgb3V0cHV0LmFzc2V0cz8ubWFwKChhc3NldCkgPT4gcGljayhhc3NldCwgWyd0b2tlbklkJywgJ2Ftb3VudCddKSkgPz9cbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgIGVyZ29UcmVlOiBvdXRwdXQuZXJnb1RyZWUsXG4gICAgICAgICAgY3JlYXRpb25IZWlnaHQ6IG91dHB1dC5jcmVhdGlvbkhlaWdodCxcbiAgICAgICAgICBpbmRleDogb3V0cHV0LmluZGV4LFxuICAgICAgICAgIHZhbHVlOiBvdXRwdXQudmFsdWUsXG4gICAgICAgIH0pKSA/PyBbXSxcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiB1c2UgZXhwbG9yZXIgYXBpIHRvIHJldHVybiByZWxhdGVkIHRyYW5zYWN0aW9ucyBvZiB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgaW4gdGhlIGhlaWdodCByYW5nZVxuICAgKiBAcGFyYW0gdG9rZW5JZFxuICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAqIEBwYXJhbSBsaW1pdFxuICAgKiBAcmV0dXJucyByZWxhdGVkIHRyYW5zYWN0aW9uc1xuICAgKi9cbiAgZ2V0QWRkcmVzc1RyYW5zYWN0aW9uc1dpdGhIZWlnaHQgPSBhc3luYyAoXG4gICAgYWRkcmVzczogc3RyaW5nLFxuICAgIGZyb21IZWlnaHQ6IG51bWJlcixcbiAgICB0b0hlaWdodDogbnVtYmVyLFxuICApOiBQcm9taXNlPEFycmF5PEV4dGVuZGVkVHJhbnNhY3Rpb24+PiA9PiB7XG4gICAgY29uc3QgdHhzID0gYXdhaXQgdGhpcy5hcGkudjEuZ2V0QXBpVjFBZGRyZXNzZXNQMVRyYW5zYWN0aW9ucyhhZGRyZXNzLCB7XG4gICAgICBmcm9tSGVpZ2h0LFxuICAgICAgdG9IZWlnaHQsXG4gICAgICBsaW1pdDogQVBJX0xJTUlULFxuICAgIH0pO1xuICAgIGlmICghdHhzLml0ZW1zKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnRXhwbG9yZXIgQWRkcmVzc1RyYW5zYWN0aW9ucyBhcGkgZXhwZWN0ZWQgdG8gaGF2ZSBpdGVtcycsXG4gICAgICApO1xuICAgIHJldHVybiB0eHMuaXRlbXMubWFwKCh0eCkgPT4gdGhpcy5jb252ZXJ0VHJhbnNhY3Rpb24odHgpKTtcbiAgfTtcblxuICAvKipcbiAgICogdXNlIGV4cGxvcmVyIGFwaSB0byBnZXQgdGhlIGJsb2NrIGlkIGF0IHRoZSBzcGVjaWZpZWQgaGVpZ2h0XG4gICAqIEBwYXJhbSBoZWlnaHRcbiAgICogQHJldHVybnMgYmxvY2sgaWRcbiAgICovXG4gIGdldEJsb2NrSWRBdEhlaWdodCA9IGFzeW5jIChoZWlnaHQ6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gICAgY29uc3QgaWQgPSBhd2FpdCB0aGlzLmFwaS52MC5nZXRBcGlWMEJsb2Nrc0F0UDEoaGVpZ2h0KTtcbiAgICByZXR1cm4gaWRbMF07XG4gIH07XG5cbiAgLyoqXG4gICAqIHVzZSBleHBsb3JlciBhcGkgdG8gcmV0dXJuIGFsbCB0cmFuc2FjdGlvbnMgaW4gYSBibG9ja1xuICAgKiBAcGFyYW0gYmxvY2tJZFxuICAgKiBAcmV0dXJucyBjb252ZXJ0ZWQgdHJhbnNhY3Rpb25zXG4gICAqL1xuICBnZXRCbG9ja1R4cyA9IGFzeW5jIChibG9ja0lkOiBzdHJpbmcpOiBQcm9taXNlPEFycmF5PFRyYW5zYWN0aW9uPj4gPT4ge1xuICAgIGNvbnN0IGJsb2NrID0gYXdhaXQgdGhpcy5hcGkudjEuZ2V0QXBpVjFCbG9ja3NQMShibG9ja0lkKTtcbiAgICBpZiAoIWJsb2NrLmJsb2NrLmJsb2NrVHJhbnNhY3Rpb25zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBFeHBlY3RlZCBleHBsb3JlciBibG9jayBhcGkgdG8gaW5jbHVkZSBibG9jayB0cmFuc2FjdGlvbnMgZm9yIGJsb2NrICR7YmxvY2tJZH1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGJsb2NrLmJsb2NrLmJsb2NrVHJhbnNhY3Rpb25zLm1hcCgodHgpID0+XG4gICAgICB0aGlzLmNvbnZlcnRCbG9ja1RyYW5zYWN0aW9uKHR4KSxcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiB1c2UgZXhwbG9yZXIgYXBpIHRvIHJldHVybiByZWxhdGVkIGJveGVzIGJ5IHNwZWNpZmllZCBhZGRyZXNzXG4gICAqIEBwYXJhbSBhZGRyZXNzXG4gICAqIEBwYXJhbSBvZmZzZXRcbiAgICogQHBhcmFtIGxpbWl0XG4gICAqIEByZXR1cm5zIHJlbGF0ZWQgYm94ZXNcbiAgICovXG4gIGdldEJveGVzQnlBZGRyZXNzID0gYXN5bmMgKFxuICAgIGFkZHJlc3M6IHN0cmluZyxcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyLFxuICApOiBQcm9taXNlPHsgYm94ZXM6IEVyZ29Cb3hbXTsgaGFzTmV4dEJhdGNoOiBib29sZWFuIH0+ID0+IHtcbiAgICBjb25zdCBib3hlcyA9IGF3YWl0IHRoaXMuYXBpLnYxLmdldEFwaVYxQm94ZXNVbnNwZW50QnlhZGRyZXNzUDEoYWRkcmVzcywge1xuICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICBsaW1pdDogbGltaXQsXG4gICAgICBzb3J0RGlyZWN0aW9uOiAnZGVzYycsXG4gICAgfSk7XG4gICAgaWYgKCFib3hlcy5pdGVtcylcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwbG9yZXIgQm94ZXNCeUFkZHJlc3MgYXBpIGV4cGVjdGVkIHRvIGhhdmUgaXRlbXMnKTtcbiAgICBjb25zdCByZXN1bHRCb3hlczogQXJyYXk8RXJnb0JveD4gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGJveCBvZiBib3hlcy5pdGVtcykge1xuICAgICAgcmVzdWx0Qm94ZXMucHVzaChhd2FpdCB0aGlzLmNvbnZlcnRCb3goYm94KSk7XG4gICAgfVxuICAgIHJldHVybiB7IGJveGVzOiByZXN1bHRCb3hlcywgaGFzTmV4dEJhdGNoOiBib3hlcy50b3RhbCA+IG9mZnNldCArIGxpbWl0IH07XG4gIH07XG5cbiAgLyoqXG4gICAqIHVzZSBleHBsb3JlciBhcGkgdG8gcmV0dXJuIHJlbGF0ZWQgYm94ZXMgYnkgc3BlY2lmaWVkIHRva2VuIGlkXG4gICAqIEBwYXJhbSB0b2tlbklkXG4gICAqIEBwYXJhbSBvZmZzZXRcbiAgICogQHBhcmFtIGxpbWl0XG4gICAqIEByZXR1cm5zIHJlbGF0ZWQgYm94ZXNcbiAgICovXG4gIGdldEJveGVzQnlUb2tlbklkID0gYXN5bmMgKFxuICAgIHRva2VuSWQ6IHN0cmluZyxcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyLFxuICApOiBQcm9taXNlPHsgYm94ZXM6IEVyZ29Cb3hbXTsgaGFzTmV4dEJhdGNoOiBib29sZWFuIH0+ID0+IHtcbiAgICBjb25zdCBib3hlcyA9IGF3YWl0IHRoaXMuYXBpLnYxLmdldEFwaVYxQm94ZXNCeXRva2VuaWRQMSh0b2tlbklkLCB7XG4gICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgIGxpbWl0OiBsaW1pdCxcbiAgICB9KTtcbiAgICBpZiAoIWJveGVzLml0ZW1zKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBsb3JlciBCb3hlc0J5VG9rZUlkIGFwaSBleHBlY3RlZCB0byBoYXZlIGl0ZW1zJyk7XG4gICAgY29uc3QgcmVzdWx0Qm94ZXM6IEFycmF5PEVyZ29Cb3g+ID0gW107XG4gICAgZm9yIChjb25zdCBib3ggb2YgYm94ZXMuaXRlbXMpIHtcbiAgICAgIHJlc3VsdEJveGVzLnB1c2goYXdhaXQgdGhpcy5jb252ZXJ0Qm94KGJveCkpO1xuICAgIH1cbiAgICByZXR1cm4geyBib3hlczogcmVzdWx0Qm94ZXMsIGhhc05leHRCYXRjaDogYm94ZXMudG90YWwgPiBvZmZzZXQgKyBsaW1pdCB9O1xuICB9O1xufVxuIl19
@@ -1,60 +0,0 @@
1
- import { BlockInfo } from '@rosen-bridge/scanner-interfaces';
2
- import { ErgoBox, ExtendedTransaction } from '../interfaces';
3
- import { AbstractNetwork } from './AbstractNetwork';
4
- export declare class NodeNetwork extends AbstractNetwork {
5
- private api;
6
- constructor(url: string);
7
- /**
8
- * convert node api boxes to ErgoBox interface
9
- * @param box
10
- * @returns ErgoBox
11
- */
12
- private convertBox;
13
- /**
14
- * convert Node transaction to extractor transaction type
15
- * @param tx
16
- */
17
- private convertTransaction;
18
- /**
19
- * return spending information of a specified box by having spendTxId
20
- * @param boxId
21
- * @param spendTxId
22
- */
23
- getSpendingInfo: (boxId: string, spendTxId: string) => Promise<BlockInfo & {
24
- spendIndex: number;
25
- }>;
26
- /**
27
- * use node api to return related boxes by specified address
28
- * @param address
29
- * @param offset
30
- * @param limit
31
- * @returns related boxes
32
- */
33
- getBoxesByAddress: (address: string, offset: number, limit: number) => Promise<{
34
- boxes: ErgoBox[];
35
- hasNextBatch: boolean;
36
- }>;
37
- /**
38
- * use node api to return related boxes by specified token id
39
- * @param tokenId
40
- * @param offset
41
- * @param limit
42
- * @returns related boxes
43
- */
44
- getBoxesByTokenId: (tokenId: string, offset: number, limit: number) => Promise<{
45
- boxes: ErgoBox[];
46
- hasNextBatch: boolean;
47
- }>;
48
- /**
49
- * use node api to return related transactions of the specified address with limit offset
50
- * @param tokenId
51
- * @param offset
52
- * @param limit
53
- * @returns related transactions
54
- */
55
- getAddressTransactionsWithOffsetLimit: (address: string, offset: number, limit: number) => Promise<{
56
- items: Array<ExtendedTransaction>;
57
- total: number;
58
- }>;
59
- }
60
- //# sourceMappingURL=NodeNetwork.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"NodeNetwork.d.ts","sourceRoot":"","sources":["../../../../lib/ergo/network/NodeNetwork.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,GAAG,CAAC;gBAEA,GAAG,EAAE,MAAM;IAKvB;;;;OAIG;IACH,OAAO,CAAC,UAAU,CAqBhB;IAEF;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAqBxB;IAEF;;;;OAIG;IACH,eAAe,GACb,OAAO,MAAM,EACb,WAAW,MAAM,KAChB,OAAO,CAAC,SAAS,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAY5C;IAEF;;;;;;OAMG;IACH,iBAAiB,GACf,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,OAAO,MAAM,KACZ,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAYrD;IAEF;;;;;;OAMG;IACH,iBAAiB,GACf,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,OAAO,MAAM,KACZ,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAWrD;IAEF;;;;;;OAMG;IACH,qCAAqC,GACnC,SAAS,MAAM,EACf,QAAQ,MAAM,EACd,OAAO,MAAM,KACZ,OAAO,CAAC;QAAE,KAAK,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAa9D;CACH"}