@rosen-bridge/abstract-extractor 0.2.0 → 0.3.0

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 (39) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/ergo/AbstractErgoExtractor.d.ts +2 -2
  3. package/dist/ergo/AbstractErgoExtractor.d.ts.map +1 -1
  4. package/dist/ergo/AbstractErgoExtractor.js +1 -1
  5. package/dist/ergo/AbstractErgoExtractorAction.d.ts +2 -2
  6. package/dist/ergo/AbstractErgoExtractorAction.d.ts.map +1 -1
  7. package/dist/ergo/AbstractErgoExtractorAction.js +1 -1
  8. package/dist/ergo/initializable/AbstractInitializable.d.ts +25 -20
  9. package/dist/ergo/initializable/AbstractInitializable.d.ts.map +1 -1
  10. package/dist/ergo/initializable/AbstractInitializable.js +126 -47
  11. package/dist/ergo/initializable/index.d.ts +0 -2
  12. package/dist/ergo/initializable/index.d.ts.map +1 -1
  13. package/dist/ergo/initializable/index.js +1 -3
  14. package/dist/ergo/interfaces.d.ts +4 -0
  15. package/dist/ergo/interfaces.d.ts.map +1 -1
  16. package/dist/ergo/interfaces.js +1 -1
  17. package/dist/ergo/network/ExplorerNetwork.d.ts +33 -4
  18. package/dist/ergo/network/ExplorerNetwork.d.ts.map +1 -1
  19. package/dist/ergo/network/ExplorerNetwork.js +88 -1
  20. package/dist/ergo/network/NodeNetwork.d.ts +18 -3
  21. package/dist/ergo/network/NodeNetwork.d.ts.map +1 -1
  22. package/dist/ergo/network/NodeNetwork.js +43 -1
  23. package/dist/tsconfig.tsbuildinfo +1 -1
  24. package/lib/ergo/AbstractErgoExtractor.ts +2 -2
  25. package/lib/ergo/AbstractErgoExtractorAction.ts +2 -2
  26. package/lib/ergo/initializable/AbstractInitializable.ts +163 -82
  27. package/lib/ergo/initializable/index.ts +0 -2
  28. package/lib/ergo/interfaces.ts +5 -0
  29. package/lib/ergo/network/ExplorerNetwork.ts +119 -4
  30. package/lib/ergo/network/NodeNetwork.ts +55 -2
  31. package/package.json +2 -1
  32. package/tests/initializable/AbstractInitializable.spec.ts +282 -174
  33. package/tests/initializable/testData.ts +219 -0
  34. package/tests/network/ExplorerNetwork.spec.ts +46 -2
  35. package/tests/network/NodeNetwork.spec.ts +21 -1
  36. package/tests/network/testData.ts +483 -0
  37. package/tsconfig.build.tsbuildinfo +1 -1
  38. package/lib/ergo/initializable/InitializableByAddress.ts +0 -43
  39. package/lib/ergo/initializable/InitializableByToken.ts +0 -43
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @rosen-bridge/abstract-extractor
2
2
 
3
+ ## 0.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Add abstract extractor class that can be initialized using address transactions.
8
+
9
+ ### Patch Changes
10
+
11
+ - Change processTransaction Block interface to use minimal information
12
+
3
13
  ## 0.2.0
4
14
 
5
15
  ### Minor Changes
@@ -2,7 +2,7 @@ import { DataSource } from 'typeorm';
2
2
  import { AbstractLogger, DummyLogger } from '@rosen-bridge/abstract-logger';
3
3
  import { AbstractExtractor } from '../AbstractExtractor';
4
4
  import { AbstractErgoExtractorAction } from './AbstractErgoExtractorAction';
5
- import { Block } from '../interfaces';
5
+ import { BlockInfo } from '../interfaces';
6
6
  import { Transaction, OutputBox, ErgoExtractedData } from './interfaces';
7
7
  export declare abstract class AbstractErgoExtractor<ExtractedData extends ErgoExtractedData> extends AbstractExtractor<Transaction> {
8
8
  protected readonly dataSource: DataSource;
@@ -29,7 +29,7 @@ export declare abstract class AbstractErgoExtractor<ExtractedData extends ErgoEx
29
29
  * @param block
30
30
  * @return true if the process is completed successfully and false otherwise
31
31
  */
32
- processTransactions: (txs: Transaction[], block: Block) => Promise<boolean>;
32
+ processTransactions: (txs: Transaction[], block: BlockInfo) => Promise<boolean>;
33
33
  /**
34
34
  * fork one block and remove all stored information for this block
35
35
  * @param hash block hash
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractErgoExtractor.d.ts","sourceRoot":"","sources":["../../lib/ergo/AbstractErgoExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EACL,WAAW,EACX,SAAS,EACT,iBAAiB,EAElB,MAAM,cAAc,CAAC;AAEtB,8BAAsB,qBAAqB,CACzC,aAAa,SAAS,iBAAiB,CACvC,SAAQ,iBAAiB,CAAC,WAAW,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,2BAA2B,CAAC,aAAa,CAAC,CAAC;IACvE,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;gBAErB,MAAM,cAAoB;IAKtC;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,EAAE,CACvB,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,KACX,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,aAAa,CAAC,GAAG,SAAS,CAAC;IAEnE;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC;IAE9C;;;;;OAKG;IACH,mBAAmB,QACZ,WAAW,EAAE,SACX,KAAK,KACX,QAAQ,OAAO,CAAC,CAyCjB;IAEF;;;OAGG;IACH,SAAS,SAAgB,MAAM,KAAG,QAAQ,IAAI,CAAC,CAE7C;CACH"}
1
+ {"version":3,"file":"AbstractErgoExtractor.d.ts","sourceRoot":"","sources":["../../lib/ergo/AbstractErgoExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EACL,WAAW,EACX,SAAS,EACT,iBAAiB,EAElB,MAAM,cAAc,CAAC;AAEtB,8BAAsB,qBAAqB,CACzC,aAAa,SAAS,iBAAiB,CACvC,SAAQ,iBAAiB,CAAC,WAAW,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,2BAA2B,CAAC,aAAa,CAAC,CAAC;IACvE,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;gBAErB,MAAM,cAAoB;IAKtC;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,EAAE,CACvB,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,KACX,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,aAAa,CAAC,GAAG,SAAS,CAAC;IAEnE;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,CAAC;IAE9C;;;;;OAKG;IACH,mBAAmB,QACZ,WAAW,EAAE,SACX,SAAS,KACf,QAAQ,OAAO,CAAC,CAyCjB;IAEF;;;OAGG;IACH,SAAS,SAAgB,MAAM,KAAG,QAAQ,IAAI,CAAC,CAE7C;CACH"}
@@ -54,4 +54,4 @@ export class AbstractErgoExtractor extends AbstractExtractor {
54
54
  await this.actions.deleteBlockBoxes(hash, this.getId());
55
55
  };
56
56
  }
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RFcmdvRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2VyZ28vQWJzdHJhY3RFcmdvRXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFVekQsTUFBTSxPQUFnQixxQkFFcEIsU0FBUSxpQkFBOEI7SUFDbkIsVUFBVSxDQUFhO0lBRWhDLE1BQU0sQ0FBaUI7SUFFakMsWUFBWSxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUU7UUFDcEMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBc0JEOzs7OztPQUtHO0lBQ0gsbUJBQW1CLEdBQUcsS0FBSyxFQUN6QixHQUFrQixFQUNsQixLQUFZLEVBQ00sRUFBRTtRQUNwQixJQUFJLENBQUM7WUFDSCxNQUFNLEtBQUssR0FBeUIsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sVUFBVSxHQUFxQixFQUFFLENBQUM7WUFDeEMsS0FBSyxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDckIsS0FBSyxNQUFNLE1BQU0sSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7d0JBQzFCLFNBQVM7b0JBQ1gsQ0FBQztvQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7b0JBQ3JFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQ3ZDLE1BQU0sRUFDTixLQUFLLENBQUMsSUFBSSxFQUNWLEtBQUssQ0FBQyxNQUFNLENBQ2IsQ0FBQztvQkFDRixJQUFJLGFBQWEsRUFBRSxDQUFDO3dCQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixrQkFBa0IsVUFBVSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsYUFDbkQsTUFBTSxDQUFDLEtBQ1QsRUFBRSxDQUNILENBQUM7d0JBQ0YsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUE4QixDQUFDLENBQUM7b0JBQzdDLENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7Z0JBQ2pCLEtBQUssTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUM5QixVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7b0JBQ3RFLFFBQVEsSUFBSSxDQUFDLENBQUM7Z0JBQ2hCLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQUUsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDMUUsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsNEJBQTRCLElBQUksQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FDdkUsQ0FBQztZQUNGLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0lBRUY7OztPQUdHO0lBQ0gsU0FBUyxHQUFHLEtBQUssRUFBRSxJQUFZLEVBQWlCLEVBQUU7UUFDaEQsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICd0eXBlb3JtJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCBKc29uQmlnSW50IGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdEV4dHJhY3RvciB9IGZyb20gJy4uL0Fic3RyYWN0RXh0cmFjdG9yJztcbmltcG9ydCB7IEFic3RyYWN0RXJnb0V4dHJhY3RvckFjdGlvbiB9IGZyb20gJy4vQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uJztcbmltcG9ydCB7IEJsb2NrIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbixcbiAgT3V0cHV0Qm94LFxuICBFcmdvRXh0cmFjdGVkRGF0YSxcbiAgU3BlbmRJbmZvLFxufSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RFcmdvRXh0cmFjdG9yPFxuICBFeHRyYWN0ZWREYXRhIGV4dGVuZHMgRXJnb0V4dHJhY3RlZERhdGFcbj4gZXh0ZW5kcyBBYnN0cmFjdEV4dHJhY3RvcjxUcmFuc2FjdGlvbj4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YVNvdXJjZTogRGF0YVNvdXJjZTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGFjdGlvbnM6IEFic3RyYWN0RXJnb0V4dHJhY3RvckFjdGlvbjxFeHRyYWN0ZWREYXRhPjtcbiAgcHJvdGVjdGVkIGxvZ2dlcjogQWJzdHJhY3RMb2dnZXI7XG5cbiAgY29uc3RydWN0b3IobG9nZ2VyID0gbmV3IER1bW15TG9nZ2VyKCkpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIGV4dHJhY3QgYm94IGRhdGEgdG8gcHJvcGVyIGZvcm1hdCAobm90IGluY2x1ZGluZyBzcGVuZGluZyBpbmZvcm1hdGlvbilcbiAgICogQHBhcmFtIGJveFxuICAgKiBAcGFyYW0gYmxvY2tJZCBib3ggaW5jbHVzaW9uIGJsb2NrIGhhc2hcbiAgICogQHBhcmFtIGhlaWdodCBib3ggaW5jbHVzaW9uIGJsb2NrIGhlaWdodFxuICAgKiBAcmV0dXJuIGV4dHJhY3RlZCBkYXRhIGluIHByb3BlciBmb3JtYXRcbiAgICovXG4gIGFic3RyYWN0IGV4dHJhY3RCb3hEYXRhOiAoXG4gICAgYm94OiBPdXRwdXRCb3gsXG4gICAgYmxvY2tJZDogc3RyaW5nLFxuICAgIGhlaWdodDogbnVtYmVyXG4gICkgPT4gT21pdDxFeHRyYWN0ZWREYXRhLCAnc3BlbmRCbG9jaycgfCAnc3BlbmRIZWlnaHQnPiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogY2hlY2sgcHJvcGVyIGRhdGEgZm9ybWF0IGluIHRoZSBib3hcbiAgICogQHBhcmFtIGJveFxuICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGJveCBoYXMgdGhlIHJlcXVpcmVkIGRhdGEgYW5kIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgYWJzdHJhY3QgaGFzRGF0YTogKGJveDogT3V0cHV0Qm94KSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBwcm9jZXNzIGEgbGlzdCBvZiB0cmFuc2FjdGlvbnMgaW4gYSBibG9jayBhbmQgc3RvcmUgcmVxdWlyZWQgaW5mb3JtYXRpb25cbiAgICogQHBhcmFtIHR4cyBsaXN0IG9mIHRyYW5zYWN0aW9ucyBpbiB0aGUgYmxvY2tcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgcHJvY2VzcyBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGFuZCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHByb2Nlc3NUcmFuc2FjdGlvbnMgPSBhc3luYyAoXG4gICAgdHhzOiBUcmFuc2FjdGlvbltdLFxuICAgIGJsb2NrOiBCbG9ja1xuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYm94ZXM6IEFycmF5PEV4dHJhY3RlZERhdGE+ID0gW107XG4gICAgICBjb25zdCBzcGVudEluZm9zOiBBcnJheTxTcGVuZEluZm8+ID0gW107XG4gICAgICBmb3IgKGNvbnN0IHR4IG9mIHR4cykge1xuICAgICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiB0eC5vdXRwdXRzKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmhhc0RhdGEob3V0cHV0KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBUcnlpbmcgdG8gZXh0cmFjdCBkYXRhIGZyb20gYm94ICR7b3V0cHV0LmJveElkfWApO1xuICAgICAgICAgIGNvbnN0IGV4dHJhY3RlZERhdGEgPSB0aGlzLmV4dHJhY3RCb3hEYXRhKFxuICAgICAgICAgICAgb3V0cHV0LFxuICAgICAgICAgICAgYmxvY2suaGFzaCxcbiAgICAgICAgICAgIGJsb2NrLmhlaWdodFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGV4dHJhY3RlZERhdGEpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgICBgRXh0cmFjdGVkIGRhdGEgJHtKc29uQmlnSW50LnN0cmluZ2lmeShleHRyYWN0ZWREYXRhKX0gZnJvbSBib3ggJHtcbiAgICAgICAgICAgICAgICBvdXRwdXQuYm94SWRcbiAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBib3hlcy5wdXNoKGV4dHJhY3RlZERhdGEgYXMgRXh0cmFjdGVkRGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBib3hJbmRleCA9IDE7XG4gICAgICAgIGZvciAoY29uc3QgaW5wdXQgb2YgdHguaW5wdXRzKSB7XG4gICAgICAgICAgc3BlbnRJbmZvcy5wdXNoKHsgdHhJZDogdHguaWQsIGJveElkOiBpbnB1dC5ib3hJZCwgaW5kZXg6IGJveEluZGV4IH0pO1xuICAgICAgICAgIGJveEluZGV4ICs9IDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGJveGVzLmxlbmd0aCA+IDApIGF3YWl0IHRoaXMuYWN0aW9ucy5pbnNlcnRCb3hlcyhib3hlcywgdGhpcy5nZXRJZCgpKTtcbiAgICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5zcGVuZEJveGVzKHNwZW50SW5mb3MsIGJsb2NrLCB0aGlzLmdldElkKCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICBgRXJyb3IgaW4gc3RvcmluZyBkYXRhIGluICR7dGhpcy5nZXRJZCgpfSBvZiB0aGUgYmxvY2sgJHtibG9ja306ICR7ZX1gXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBmb3JrIG9uZSBibG9jayBhbmQgcmVtb3ZlIGFsbCBzdG9yZWQgaW5mb3JtYXRpb24gZm9yIHRoaXMgYmxvY2tcbiAgICogQHBhcmFtIGhhc2ggYmxvY2sgaGFzaFxuICAgKi9cbiAgZm9ya0Jsb2NrID0gYXN5bmMgKGhhc2g6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5kZWxldGVCbG9ja0JveGVzKGhhc2gsIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG59XG4iXX0=
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RFcmdvRXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2VyZ28vQWJzdHJhY3RFcmdvRXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDNUUsT0FBTyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFFbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFVekQsTUFBTSxPQUFnQixxQkFFcEIsU0FBUSxpQkFBOEI7SUFDbkIsVUFBVSxDQUFhO0lBRWhDLE1BQU0sQ0FBaUI7SUFFakMsWUFBWSxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUU7UUFDcEMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBc0JEOzs7OztPQUtHO0lBQ0gsbUJBQW1CLEdBQUcsS0FBSyxFQUN6QixHQUFrQixFQUNsQixLQUFnQixFQUNFLEVBQUU7UUFDcEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxLQUFLLEdBQXlCLEVBQUUsQ0FBQztZQUN2QyxNQUFNLFVBQVUsR0FBcUIsRUFBRSxDQUFDO1lBQ3hDLEtBQUssTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ3JCLEtBQUssTUFBTSxNQUFNLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO29CQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO3dCQUMxQixTQUFTO29CQUNYLENBQUM7b0JBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUNyRSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUN2QyxNQUFNLEVBQ04sS0FBSyxDQUFDLElBQUksRUFDVixLQUFLLENBQUMsTUFBTSxDQUNiLENBQUM7b0JBQ0YsSUFBSSxhQUFhLEVBQUUsQ0FBQzt3QkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2Ysa0JBQWtCLFVBQVUsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLGFBQ25ELE1BQU0sQ0FBQyxLQUNULEVBQUUsQ0FDSCxDQUFDO3dCQUNGLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBOEIsQ0FBQyxDQUFDO29CQUM3QyxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixLQUFLLE1BQU0sS0FBSyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDOUIsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO29CQUN0RSxRQUFRLElBQUksQ0FBQyxDQUFDO2dCQUNoQixDQUFDO1lBQ0gsQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUFFLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzFFLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLDRCQUE0QixJQUFJLENBQUMsS0FBSyxFQUFFLGlCQUFpQixLQUFLLEtBQUssQ0FBQyxFQUFFLENBQ3ZFLENBQUM7WUFDRixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILFNBQVMsR0FBRyxLQUFLLEVBQUUsSUFBWSxFQUFpQixFQUFFO1FBQ2hELE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAndHlwZW9ybSc7XG5pbXBvcnQgeyBBYnN0cmFjdExvZ2dlciwgRHVtbXlMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgSnNvbkJpZ0ludCBmcm9tICdAcm9zZW4tYnJpZGdlL2pzb24tYmlnaW50JztcblxuaW1wb3J0IHsgQWJzdHJhY3RFeHRyYWN0b3IgfSBmcm9tICcuLi9BYnN0cmFjdEV4dHJhY3Rvcic7XG5pbXBvcnQgeyBBYnN0cmFjdEVyZ29FeHRyYWN0b3JBY3Rpb24gfSBmcm9tICcuL0Fic3RyYWN0RXJnb0V4dHJhY3RvckFjdGlvbic7XG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uLFxuICBPdXRwdXRCb3gsXG4gIEVyZ29FeHRyYWN0ZWREYXRhLFxuICBTcGVuZEluZm8sXG59IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEVyZ29FeHRyYWN0b3I8XG4gIEV4dHJhY3RlZERhdGEgZXh0ZW5kcyBFcmdvRXh0cmFjdGVkRGF0YVxuPiBleHRlbmRzIEFic3RyYWN0RXh0cmFjdG9yPFRyYW5zYWN0aW9uPiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBkYXRhU291cmNlOiBEYXRhU291cmNlO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYWN0aW9uczogQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uPEV4dHJhY3RlZERhdGE+O1xuICBwcm90ZWN0ZWQgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcjtcblxuICBjb25zdHJ1Y3Rvcihsb2dnZXIgPSBuZXcgRHVtbXlMb2dnZXIoKSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gIH1cblxuICAvKipcbiAgICogZXh0cmFjdCBib3ggZGF0YSB0byBwcm9wZXIgZm9ybWF0IChub3QgaW5jbHVkaW5nIHNwZW5kaW5nIGluZm9ybWF0aW9uKVxuICAgKiBAcGFyYW0gYm94XG4gICAqIEBwYXJhbSBibG9ja0lkIGJveCBpbmNsdXNpb24gYmxvY2sgaGFzaFxuICAgKiBAcGFyYW0gaGVpZ2h0IGJveCBpbmNsdXNpb24gYmxvY2sgaGVpZ2h0XG4gICAqIEByZXR1cm4gZXh0cmFjdGVkIGRhdGEgaW4gcHJvcGVyIGZvcm1hdFxuICAgKi9cbiAgYWJzdHJhY3QgZXh0cmFjdEJveERhdGE6IChcbiAgICBib3g6IE91dHB1dEJveCxcbiAgICBibG9ja0lkOiBzdHJpbmcsXG4gICAgaGVpZ2h0OiBudW1iZXJcbiAgKSA9PiBPbWl0PEV4dHJhY3RlZERhdGEsICdzcGVuZEJsb2NrJyB8ICdzcGVuZEhlaWdodCc+IHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBjaGVjayBwcm9wZXIgZGF0YSBmb3JtYXQgaW4gdGhlIGJveFxuICAgKiBAcGFyYW0gYm94XG4gICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgYm94IGhhcyB0aGUgcmVxdWlyZWQgZGF0YSBhbmQgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBhYnN0cmFjdCBoYXNEYXRhOiAoYm94OiBPdXRwdXRCb3gpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHByb2Nlc3MgYSBsaXN0IG9mIHRyYW5zYWN0aW9ucyBpbiBhIGJsb2NrIGFuZCBzdG9yZSByZXF1aXJlZCBpbmZvcm1hdGlvblxuICAgKiBAcGFyYW0gdHhzIGxpc3Qgb2YgdHJhbnNhY3Rpb25zIGluIHRoZSBibG9ja1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHJldHVybiB0cnVlIGlmIHRoZSBwcm9jZXNzIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgYW5kIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgcHJvY2Vzc1RyYW5zYWN0aW9ucyA9IGFzeW5jIChcbiAgICB0eHM6IFRyYW5zYWN0aW9uW10sXG4gICAgYmxvY2s6IEJsb2NrSW5mb1xuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYm94ZXM6IEFycmF5PEV4dHJhY3RlZERhdGE+ID0gW107XG4gICAgICBjb25zdCBzcGVudEluZm9zOiBBcnJheTxTcGVuZEluZm8+ID0gW107XG4gICAgICBmb3IgKGNvbnN0IHR4IG9mIHR4cykge1xuICAgICAgICBmb3IgKGNvbnN0IG91dHB1dCBvZiB0eC5vdXRwdXRzKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmhhc0RhdGEob3V0cHV0KSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBUcnlpbmcgdG8gZXh0cmFjdCBkYXRhIGZyb20gYm94ICR7b3V0cHV0LmJveElkfWApO1xuICAgICAgICAgIGNvbnN0IGV4dHJhY3RlZERhdGEgPSB0aGlzLmV4dHJhY3RCb3hEYXRhKFxuICAgICAgICAgICAgb3V0cHV0LFxuICAgICAgICAgICAgYmxvY2suaGFzaCxcbiAgICAgICAgICAgIGJsb2NrLmhlaWdodFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGV4dHJhY3RlZERhdGEpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgICBgRXh0cmFjdGVkIGRhdGEgJHtKc29uQmlnSW50LnN0cmluZ2lmeShleHRyYWN0ZWREYXRhKX0gZnJvbSBib3ggJHtcbiAgICAgICAgICAgICAgICBvdXRwdXQuYm94SWRcbiAgICAgICAgICAgICAgfWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBib3hlcy5wdXNoKGV4dHJhY3RlZERhdGEgYXMgRXh0cmFjdGVkRGF0YSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBib3hJbmRleCA9IDE7XG4gICAgICAgIGZvciAoY29uc3QgaW5wdXQgb2YgdHguaW5wdXRzKSB7XG4gICAgICAgICAgc3BlbnRJbmZvcy5wdXNoKHsgdHhJZDogdHguaWQsIGJveElkOiBpbnB1dC5ib3hJZCwgaW5kZXg6IGJveEluZGV4IH0pO1xuICAgICAgICAgIGJveEluZGV4ICs9IDE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGJveGVzLmxlbmd0aCA+IDApIGF3YWl0IHRoaXMuYWN0aW9ucy5pbnNlcnRCb3hlcyhib3hlcywgdGhpcy5nZXRJZCgpKTtcbiAgICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5zcGVuZEJveGVzKHNwZW50SW5mb3MsIGJsb2NrLCB0aGlzLmdldElkKCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICBgRXJyb3IgaW4gc3RvcmluZyBkYXRhIGluICR7dGhpcy5nZXRJZCgpfSBvZiB0aGUgYmxvY2sgJHtibG9ja306ICR7ZX1gXG4gICAgICApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBmb3JrIG9uZSBibG9jayBhbmQgcmVtb3ZlIGFsbCBzdG9yZWQgaW5mb3JtYXRpb24gZm9yIHRoaXMgYmxvY2tcbiAgICogQHBhcmFtIGhhc2ggYmxvY2sgaGFzaFxuICAgKi9cbiAgZm9ya0Jsb2NrID0gYXN5bmMgKGhhc2g6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5kZWxldGVCbG9ja0JveGVzKGhhc2gsIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { Block } from '../interfaces';
1
+ import { BlockInfo } from '../interfaces';
2
2
  import { SpendInfo } from './interfaces';
3
3
  export declare abstract class AbstractErgoExtractorAction<ExtractedData> {
4
4
  /**
@@ -14,7 +14,7 @@ export declare abstract class AbstractErgoExtractorAction<ExtractedData> {
14
14
  * @param block
15
15
  * @param extractorId
16
16
  */
17
- abstract spendBoxes: (spendInfos: SpendInfo[], block: Block, extractorId: string) => Promise<void>;
17
+ abstract spendBoxes: (spendInfos: SpendInfo[], block: BlockInfo, extractorId: string) => Promise<void>;
18
18
  /**
19
19
  * delete extracted data from a specific block
20
20
  * if a box is spend in this block mark it as unspent
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractErgoExtractorAction.d.ts","sourceRoot":"","sources":["../../lib/ergo/AbstractErgoExtractorAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,8BAAsB,2BAA2B,CAAC,aAAa;IAC7D;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,CACpB,IAAI,EAAE,aAAa,EAAE,EACrB,WAAW,EAAE,MAAM,KAChB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtB;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,CACnB,UAAU,EAAE,SAAS,EAAE,EACvB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,KAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,EAAE,CACzB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,KAChB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB"}
1
+ {"version":3,"file":"AbstractErgoExtractorAction.d.ts","sourceRoot":"","sources":["../../lib/ergo/AbstractErgoExtractorAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,8BAAsB,2BAA2B,CAAC,aAAa;IAC7D;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,CACpB,IAAI,EAAE,aAAa,EAAE,EACrB,WAAW,EAAE,MAAM,KAChB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtB;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,CACnB,UAAU,EAAE,SAAS,EAAE,EACvB,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,KAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,EAAE,CACzB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,KAChB,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB"}
@@ -1,3 +1,3 @@
1
1
  export class AbstractErgoExtractorAction {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2VyZ28vQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBZ0IsMkJBQTJCO0NBbUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsb2NrIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTcGVuZEluZm8gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uPEV4dHJhY3RlZERhdGE+IHtcbiAgLyoqXG4gICAqIGluc2VydCBhbGwgZXh0cmFjdGVkIGJveCBkYXRhIGluIGFuIGF0b21pYyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gZGF0YVxuICAgKiBAcGFyYW0gZXh0cmFjdG9ySWRcbiAgICogQHJldHVybiBwcm9jZXNzIHN1Y2Nlc3NcbiAgICovXG4gIGFic3RyYWN0IGluc2VydEJveGVzOiAoXG4gICAgZGF0YTogRXh0cmFjdGVkRGF0YVtdLFxuICAgIGV4dHJhY3RvcklkOiBzdHJpbmdcbiAgKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiB1cGRhdGUgc3BlbmRpbmcgaW5mb3JtYXRpb24gb2Ygc3RvcmVkIGJveGVzXG4gICAqIEBwYXJhbSBzcGVuZEluZm9zXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gZXh0cmFjdG9ySWRcbiAgICovXG4gIGFic3RyYWN0IHNwZW5kQm94ZXM6IChcbiAgICBzcGVuZEluZm9zOiBTcGVuZEluZm9bXSxcbiAgICBibG9jazogQmxvY2ssXG4gICAgZXh0cmFjdG9ySWQ6IHN0cmluZ1xuICApID0+IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIGRlbGV0ZSBleHRyYWN0ZWQgZGF0YSBmcm9tIGEgc3BlY2lmaWMgYmxvY2tcbiAgICogaWYgYSBib3ggaXMgc3BlbmQgaW4gdGhpcyBibG9jayBtYXJrIGl0IGFzIHVuc3BlbnRcbiAgICogaWYgYSBib3ggaXMgY3JlYXRlZCBpbiB0aGlzIGJsb2NrIHJlbW92ZSBpdCBmcm9tIGRhdGFiYXNlXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKiBAcGFyYW0gZXh0cmFjdG9ySWRcbiAgICovXG4gIGFic3RyYWN0IGRlbGV0ZUJsb2NrQm94ZXM6IChcbiAgICBibG9jazogc3RyaW5nLFxuICAgIGV4dHJhY3RvcklkOiBzdHJpbmdcbiAgKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2VyZ28vQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBZ0IsMkJBQTJCO0NBbUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJsb2NrSW5mbyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU3BlbmRJbmZvIH0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RXJnb0V4dHJhY3RvckFjdGlvbjxFeHRyYWN0ZWREYXRhPiB7XG4gIC8qKlxuICAgKiBpbnNlcnQgYWxsIGV4dHJhY3RlZCBib3ggZGF0YSBpbiBhbiBhdG9taWMgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIGRhdGFcbiAgICogQHBhcmFtIGV4dHJhY3RvcklkXG4gICAqIEByZXR1cm4gcHJvY2VzcyBzdWNjZXNzXG4gICAqL1xuICBhYnN0cmFjdCBpbnNlcnRCb3hlczogKFxuICAgIGRhdGE6IEV4dHJhY3RlZERhdGFbXSxcbiAgICBleHRyYWN0b3JJZDogc3RyaW5nXG4gICkgPT4gUHJvbWlzZTxib29sZWFuPjtcblxuICAvKipcbiAgICogdXBkYXRlIHNwZW5kaW5nIGluZm9ybWF0aW9uIG9mIHN0b3JlZCBib3hlc1xuICAgKiBAcGFyYW0gc3BlbmRJbmZvc1xuICAgKiBAcGFyYW0gYmxvY2tcbiAgICogQHBhcmFtIGV4dHJhY3RvcklkXG4gICAqL1xuICBhYnN0cmFjdCBzcGVuZEJveGVzOiAoXG4gICAgc3BlbmRJbmZvczogU3BlbmRJbmZvW10sXG4gICAgYmxvY2s6IEJsb2NrSW5mbyxcbiAgICBleHRyYWN0b3JJZDogc3RyaW5nXG4gICkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogZGVsZXRlIGV4dHJhY3RlZCBkYXRhIGZyb20gYSBzcGVjaWZpYyBibG9ja1xuICAgKiBpZiBhIGJveCBpcyBzcGVuZCBpbiB0aGlzIGJsb2NrIG1hcmsgaXQgYXMgdW5zcGVudFxuICAgKiBpZiBhIGJveCBpcyBjcmVhdGVkIGluIHRoaXMgYmxvY2sgcmVtb3ZlIGl0IGZyb20gZGF0YWJhc2VcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSBleHRyYWN0b3JJZFxuICAgKi9cbiAgYWJzdHJhY3QgZGVsZXRlQmxvY2tCb3hlczogKFxuICAgIGJsb2NrOiBzdHJpbmcsXG4gICAgZXh0cmFjdG9ySWQ6IHN0cmluZ1xuICApID0+IFByb21pc2U8dm9pZD47XG59XG4iXX0=
@@ -1,36 +1,41 @@
1
1
  import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
- import { ErgoBox, ErgoExtractedData } from '../interfaces';
2
+ import { ErgoExtractedData, ErgoNetworkType } from '../interfaces';
3
3
  import { AbstractErgoExtractor } from '../AbstractErgoExtractor';
4
4
  import { AbstractInitializableErgoExtractorAction } from './AbstractInitializableAction';
5
5
  import { BlockInfo } from '../../interfaces';
6
6
  export declare abstract class AbstractInitializableErgoExtractor<ExtractedData extends ErgoExtractedData> extends AbstractErgoExtractor<ExtractedData> {
7
7
  protected initialize: boolean;
8
+ private address;
8
9
  protected abstract actions: AbstractInitializableErgoExtractorAction<ExtractedData>;
10
+ private network;
11
+ constructor(type: ErgoNetworkType, url: string, address: string, logger?: AbstractLogger, initialize?: boolean);
9
12
  /**
10
- * create an initializable ergo extractor
11
- * @param initialize ignore the initialization step if its false
12
- * @param logger
13
+ * Initialize extractor using Explorer network
14
+ * @param initialBlock
15
+ */
16
+ private initializeWithExplorer;
17
+ /**
18
+ * Get the total tx count from Node network
19
+ * @returns total tx count of the address
20
+ */
21
+ private getTotalTxCount;
22
+ /**
23
+ * Initialize extractor using Node network
24
+ * @param initialBlock
13
25
  */
14
- constructor(initialize?: boolean, logger?: AbstractLogger);
26
+ private initializeWithNode;
15
27
  /**
16
- * return init required boxes with offset limit
17
- * @param offset
18
- * @param limit
19
- * @return boxes in batch
28
+ * Process a batch of transactions
29
+ * group txs into blocks and process them using `processTransactions`
30
+ * @param txs
20
31
  */
21
- abstract getBoxesWithOffsetLimit: (offset: number, limit: number) => Promise<{
22
- boxes: ErgoBox[];
23
- hasNextBatch: boolean;
24
- }>;
32
+ private processTransactionBatch;
25
33
  /**
26
- * return all related data below the initial height (including the init height)
27
- * @param initialHeight
28
- * @return extracted data in batch
34
+ * Initialize the extractor with retrial on any unexpected problem
35
+ * its the common part of initialize with Node and Explorer network
36
+ * @param job
29
37
  */
30
- fetchDataWithOffsetLimit: (initialHeight: number, offset: number, limit: number) => Promise<{
31
- extractedBoxes: Array<ExtractedData>;
32
- hasNextBatch: boolean;
33
- }>;
38
+ private initWithRetrial;
34
39
  /**
35
40
  * initialize extractor database with data created below the initial height
36
41
  * ignore initialization if this feature is off
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractInitializable.d.ts","sourceRoot":"","sources":["../../../lib/ergo/initializable/AbstractInitializable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wCAAwC,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,8BAAsB,kCAAkC,CACtD,aAAa,SAAS,iBAAiB,CACvC,SAAQ,qBAAqB,CAAC,aAAa,CAAC;IAC5C,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,wCAAwC,CAAC,aAAa,CAAC,CAAC;IAEpF;;;;OAIG;gBACS,UAAU,UAAO,EAAE,MAAM,CAAC,EAAE,cAAc;IAKtD;;;;;OAKG;IACH,QAAQ,CAAC,uBAAuB,EAAE,CAChC,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;;;;OAIG;IACH,wBAAwB,kBACP,MAAM,UACb,MAAM,SACP,MAAM,KACZ,QAAQ;QACT,cAAc,EAAE,MAAM,aAAa,CAAC,CAAC;QACrC,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC,CAiCA;IAEF;;;;;OAKG;IACH,eAAe,iBAAwB,SAAS,mBA+C9C;CACH"}
1
+ {"version":3,"file":"AbstractInitializable.d.ts","sourceRoot":"","sources":["../../../lib/ergo/initializable/AbstractInitializable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EACL,iBAAiB,EACjB,eAAe,EAEhB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,wCAAwC,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAK7C,8BAAsB,kCAAkC,CACtD,aAAa,SAAS,iBAAiB,CACvC,SAAQ,qBAAqB,CAAC,aAAa,CAAC;IAC5C,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,wCAAwC,CAAC,aAAa,CAAC,CAAC;IAEpF,OAAO,CAAC,OAAO,CAAgC;gBAG7C,IAAI,EAAE,eAAe,EACrB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,cAAc,EACvB,UAAU,UAAO;IAkBnB;;;OAGG;IACH,OAAO,CAAC,sBAAsB,CA6C5B;IAEF;;;OAGG;IACH,OAAO,CAAC,eAAe,CAKrB;IAEF;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAoCxB;IAEF;;;;OAIG;IACH,OAAO,CAAC,uBAAuB,CAgB7B;IAEF;;;;OAIG;IACH,OAAO,CAAC,eAAe,CA+BrB;IAEF;;;;;OAKG;IACH,eAAe,EAAE,CAAC,YAAY,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D"}
@@ -1,67 +1,138 @@
1
- import JsonBigInt from '@rosen-bridge/json-bigint';
1
+ import { ErgoNetworkType, } from '../interfaces';
2
2
  import { API_LIMIT, RETRIAL_COUNT } from '../../constants';
3
3
  import { AbstractErgoExtractor } from '../AbstractErgoExtractor';
4
+ import { ExplorerNetwork } from '../network/ExplorerNetwork';
5
+ import { NodeNetwork } from '../network/NodeNetwork';
6
+ import { groupBy, sortBy } from 'lodash-es';
4
7
  export class AbstractInitializableErgoExtractor extends AbstractErgoExtractor {
5
8
  initialize;
6
- /**
7
- * create an initializable ergo extractor
8
- * @param initialize ignore the initialization step if its false
9
- * @param logger
10
- */
11
- constructor(initialize = true, logger) {
9
+ address;
10
+ network;
11
+ constructor(type, url, address, logger, initialize = true) {
12
12
  super(logger);
13
+ this.address = address;
13
14
  this.initialize = initialize;
15
+ if (type == ErgoNetworkType.Explorer) {
16
+ this.network = new ExplorerNetwork(url);
17
+ this.initializeBoxes = (initialBlock) => {
18
+ return this.initializeWithExplorer(initialBlock);
19
+ };
20
+ }
21
+ else if (type == ErgoNetworkType.Node) {
22
+ this.network = new NodeNetwork(url);
23
+ this.initializeBoxes = (initialBlock) => {
24
+ return this.initializeWithNode(initialBlock);
25
+ };
26
+ }
27
+ else
28
+ throw new Error(`Network type ${type} is not supported`);
14
29
  }
15
30
  /**
16
- * return all related data below the initial height (including the init height)
17
- * @param initialHeight
18
- * @return extracted data in batch
31
+ * Initialize extractor using Explorer network
32
+ * @param initialBlock
19
33
  */
20
- fetchDataWithOffsetLimit = async (initialHeight, offset, limit) => {
21
- const extractedBoxes = [];
22
- const apiOutput = await this.getBoxesWithOffsetLimit(offset, limit);
23
- const filteredBoxes = apiOutput.boxes.filter((box) => box.inclusionHeight <= initialHeight && this.hasData(box));
24
- for (const box of filteredBoxes) {
25
- const data = this.extractBoxData(box, box.blockId, box.inclusionHeight);
26
- if (!data)
27
- continue;
28
- const spent = box.spentHeight && box.spentHeight <= initialHeight;
29
- if (spent)
30
- this.logger.debug(`Box with id ${box.boxId} spent at block ${JsonBigInt.stringify(box.blockId)} bellow the initial height`);
31
- const extractedData = {
32
- ...data,
33
- spendBlock: spent ? box.spentBlockId : undefined,
34
- spendHeight: spent ? box.spentHeight : undefined,
35
- spendTxId: spent ? box.spentTransactionId : undefined,
36
- spendIndex: spent ? box.spentIndex : undefined,
37
- };
38
- this.logger.debug(`Extracted data ${JsonBigInt.stringify(extractedData)} from box ${box.boxId} in initialization phase`);
39
- extractedBoxes.push(extractedData);
40
- }
41
- return { extractedBoxes, hasNextBatch: apiOutput.hasNextBatch };
34
+ initializeWithExplorer = async (initialBlock) => {
35
+ const explorerNetwork = this.network;
36
+ let fromHeight = 0, toHeight = initialBlock.height;
37
+ await this.initWithRetrial(async () => {
38
+ while (fromHeight < toHeight) {
39
+ let txs;
40
+ // eslint-disable-next-line no-constant-condition
41
+ while (true) {
42
+ txs = await explorerNetwork.getAddressTransactionsWithHeight(this.address, fromHeight, toHeight);
43
+ this.logger.debug(`Found ${txs.length} transactions for the address from height ${fromHeight} to height ${toHeight}`);
44
+ if (txs.length < API_LIMIT || fromHeight === toHeight) {
45
+ break; // Exit loop if we have fewer transactions than the limit or if the range is reduced to a single height
46
+ }
47
+ toHeight = Math.floor((toHeight - fromHeight) / 2) + fromHeight;
48
+ this.logger.debug(`Limiting the query height range to [${fromHeight}, ${toHeight}]`);
49
+ }
50
+ if (txs.length < API_LIMIT) {
51
+ if (txs.length > 0)
52
+ await this.processTransactionBatch(txs);
53
+ }
54
+ else {
55
+ this.logger.debug(`Block at height ${fromHeight} has more than (or equal) ${API_LIMIT} relevant txs, processing all txs in the block`);
56
+ const blockId = await explorerNetwork.getBlockIdAtHeight(fromHeight);
57
+ const blockTxs = await explorerNetwork.getBlockTxs(blockId);
58
+ this.logger.debug(`Found ${blockTxs.length} transactions at height ${fromHeight}`);
59
+ await this.processTransactions(blockTxs, {
60
+ hash: blockId,
61
+ height: fromHeight,
62
+ });
63
+ }
64
+ fromHeight = toHeight + 1;
65
+ toHeight = initialBlock.height;
66
+ }
67
+ });
42
68
  };
43
69
  /**
44
- * initialize extractor database with data created below the initial height
45
- * ignore initialization if this feature is off
46
- * try to get data multiple times to pass accidental network problems
70
+ * Get the total tx count from Node network
71
+ * @returns total tx count of the address
72
+ */
73
+ getTotalTxCount = async () => {
74
+ const response = await this.network.getAddressTransactionsWithOffsetLimit(this.address, 0, 0);
75
+ return response.total;
76
+ };
77
+ /**
78
+ * Initialize extractor using Node network
47
79
  * @param initialBlock
48
80
  */
49
- initializeBoxes = async (initialBlock) => {
81
+ initializeWithNode = async (initialBlock) => {
82
+ const txCountBeforeInit = await this.getTotalTxCount();
83
+ await this.initWithRetrial(async () => {
84
+ // Repeat the whole process twice to cover all spent boxes
85
+ // After round 1 all boxes have been saved and processed once
86
+ // After round 2 spending information of all stored boxes are updated successfully
87
+ for (let round = 0; round <= 1; round++) {
88
+ this.logger.debug(`Starting round ${round} of initialization`);
89
+ let offset = 0, total = 1;
90
+ while (offset < total) {
91
+ const response = await this.network.getAddressTransactionsWithOffsetLimit(this.address, offset, API_LIMIT);
92
+ total = response.total;
93
+ const txs = response.items.filter((tx) => tx.inclusionHeight <= initialBlock.height);
94
+ this.logger.debug(`Found ${txs.length} transactions below the initial height with offset ${offset} and total number of transactions ${total}`);
95
+ if (txs.length > 0)
96
+ await this.processTransactionBatch(txs);
97
+ offset += API_LIMIT;
98
+ }
99
+ }
100
+ });
101
+ const txCountAfterInit = await this.getTotalTxCount();
102
+ if (txCountAfterInit != txCountBeforeInit) {
103
+ throw Error('Total transaction count changed during initialization phase, the stored data is not valid');
104
+ }
105
+ };
106
+ /**
107
+ * Process a batch of transactions
108
+ * group txs into blocks and process them using `processTransactions`
109
+ * @param txs
110
+ */
111
+ processTransactionBatch = async (txs) => {
112
+ txs = sortBy(txs, (tx) => tx.inclusionHeight);
113
+ const groupedTxs = groupBy(txs, (tx) => tx.blockId);
114
+ this.logger.debug(`The transaction batch grouped to ${Object.keys(groupedTxs).length} blocks`);
115
+ for (const blockId in groupedTxs) {
116
+ const blockTxs = groupedTxs[blockId];
117
+ const block = { hash: blockId, height: blockTxs[0].inclusionHeight };
118
+ this.logger.debug(`Processing transactions at height ${blockTxs[0].inclusionHeight}`);
119
+ await this.processTransactions(blockTxs, block);
120
+ }
121
+ };
122
+ /**
123
+ * Initialize the extractor with retrial on any unexpected problem
124
+ * its the common part of initialize with Node and Explorer network
125
+ * @param job
126
+ */
127
+ initWithRetrial = async (job) => {
50
128
  let trial = 1;
51
129
  if (this.initialize) {
52
130
  this.logger.debug(`Initializing ${this.getId()} started, removing all existing data`);
53
131
  await this.actions.removeAllData(this.getId());
54
- let hasNextBatch = true;
55
- let offset = 0;
56
- while (hasNextBatch) {
132
+ while (trial <= RETRIAL_COUNT) {
57
133
  try {
58
- const data = await this.fetchDataWithOffsetLimit(initialBlock.height, offset, API_LIMIT);
59
- this.logger.info(`Inserting ${data.extractedBoxes.length} new extracted data in ${this.getId()} initialization`);
60
- const insertSuccess = await this.actions.insertBoxes(data.extractedBoxes, this.getId());
61
- if (!insertSuccess)
62
- throw new Error('Could not store extracted data');
63
- hasNextBatch = data.hasNextBatch;
64
- offset += API_LIMIT;
134
+ await job();
135
+ break;
65
136
  }
66
137
  catch (e) {
67
138
  this.logger.warn(`Initialization for ${this.getId()} failed with error :${e}`);
@@ -71,10 +142,18 @@ export class AbstractInitializableErgoExtractor extends AbstractErgoExtractor {
71
142
  this.logger.info(`Trying again to initialize ${this.getId()} with trial step ${trial}`);
72
143
  }
73
144
  }
145
+ this.logger.info(`Initialization completed successfully for ${this.getId()}`);
74
146
  }
75
147
  else {
76
148
  this.logger.info(`Initialization for ${this.getId()} is turned off`);
77
149
  }
78
150
  };
151
+ /**
152
+ * initialize extractor database with data created below the initial height
153
+ * ignore initialization if this feature is off
154
+ * try to get data multiple times to pass accidental network problems
155
+ * @param initialBlock
156
+ */
157
+ initializeBoxes;
79
158
  }
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RJbml0aWFsaXphYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2VyZ28vaW5pdGlhbGl6YWJsZS9BYnN0cmFjdEluaXRpYWxpemFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFHbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlqRSxNQUFNLE9BQWdCLGtDQUVwQixTQUFRLHFCQUFvQztJQUNsQyxVQUFVLENBQVU7SUFHOUI7Ozs7T0FJRztJQUNILFlBQVksVUFBVSxHQUFHLElBQUksRUFBRSxNQUF1QjtRQUNwRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBYUQ7Ozs7T0FJRztJQUNILHdCQUF3QixHQUFHLEtBQUssRUFDOUIsYUFBcUIsRUFDckIsTUFBYyxFQUNkLEtBQWEsRUFJWixFQUFFO1FBQ0gsTUFBTSxjQUFjLEdBQXlCLEVBQUUsQ0FBQztRQUNoRCxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFcEUsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQzFDLENBQUMsR0FBWSxFQUFFLEVBQUUsQ0FDZixHQUFHLENBQUMsZUFBZSxJQUFJLGFBQWEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUM1RCxDQUFDO1FBQ0YsS0FBSyxNQUFNLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsT0FB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Q0YsSUFBSSxLQUFLLElBQUksYUFBYTt3QkFDeEIsTUFBTSxLQUFLLENBQ1Qsc0JBQXNCLElBQUksQ0FBQyxLQUFLLEVBQUUsaUJBQWlCLGFBQWEsVUFBVSxDQUMzRSxDQUFDO29CQUNKLEtBQUssSUFBSSxDQUFDLENBQUM7b0JBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2QsOEJBQThCLElBQUksQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLEtBQUssRUFBRSxDQUN0RSxDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDSCxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IEpzb25CaWdJbnQgZnJvbSAnQHJvc2VuLWJyaWRnZS9qc29uLWJpZ2ludCc7XG5cbmltcG9ydCB7IEVyZ29Cb3gsIEVyZ29FeHRyYWN0ZWREYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBUElfTElNSVQsIFJFVFJJQUxfQ09VTlQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQWJzdHJhY3RFcmdvRXh0cmFjdG9yIH0gZnJvbSAnLi4vQWJzdHJhY3RFcmdvRXh0cmFjdG9yJztcbmltcG9ydCB7IEFic3RyYWN0SW5pdGlhbGl6YWJsZUVyZ29FeHRyYWN0b3JBY3Rpb24gfSBmcm9tICcuL0Fic3RyYWN0SW5pdGlhbGl6YWJsZUFjdGlvbic7XG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0SW5pdGlhbGl6YWJsZUVyZ29FeHRyYWN0b3I8XG4gIEV4dHJhY3RlZERhdGEgZXh0ZW5kcyBFcmdvRXh0cmFjdGVkRGF0YVxuPiBleHRlbmRzIEFic3RyYWN0RXJnb0V4dHJhY3RvcjxFeHRyYWN0ZWREYXRhPiB7XG4gIHByb3RlY3RlZCBpbml0aWFsaXplOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYWN0aW9uczogQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvckFjdGlvbjxFeHRyYWN0ZWREYXRhPjtcblxuICAvKipcbiAgICogY3JlYXRlIGFuIGluaXRpYWxpemFibGUgZXJnbyBleHRyYWN0b3JcbiAgICogQHBhcmFtIGluaXRpYWxpemUgaWdub3JlIHRoZSBpbml0aWFsaXphdGlvbiBzdGVwIGlmIGl0cyBmYWxzZVxuICAgKiBAcGFyYW0gbG9nZ2VyXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihpbml0aWFsaXplID0gdHJ1ZSwgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXIpIHtcbiAgICBzdXBlcihsb2dnZXIpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSA9IGluaXRpYWxpemU7XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJuIGluaXQgcmVxdWlyZWQgYm94ZXMgd2l0aCBvZmZzZXQgbGltaXRcbiAgICogQHBhcmFtIG9mZnNldFxuICAgKiBAcGFyYW0gbGltaXRcbiAgICogQHJldHVybiBib3hlcyBpbiBiYXRjaFxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0Qm94ZXNXaXRoT2Zmc2V0TGltaXQ6IChcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyXG4gICkgPT4gUHJvbWlzZTx7IGJveGVzOiBFcmdvQm94W107IGhhc05leHRCYXRjaDogYm9vbGVhbiB9PjtcblxuICAvKipcbiAgICogcmV0dXJuIGFsbCByZWxhdGVkIGRhdGEgYmVsb3cgdGhlIGluaXRpYWwgaGVpZ2h0IChpbmNsdWRpbmcgdGhlIGluaXQgaGVpZ2h0KVxuICAgKiBAcGFyYW0gaW5pdGlhbEhlaWdodFxuICAgKiBAcmV0dXJuIGV4dHJhY3RlZCBkYXRhIGluIGJhdGNoXG4gICAqL1xuICBmZXRjaERhdGFXaXRoT2Zmc2V0TGltaXQgPSBhc3luYyAoXG4gICAgaW5pdGlhbEhlaWdodDogbnVtYmVyLFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIGxpbWl0OiBudW1iZXJcbiAgKTogUHJvbWlzZTx7XG4gICAgZXh0cmFjdGVkQm94ZXM6IEFycmF5PEV4dHJhY3RlZERhdGE+O1xuICAgIGhhc05leHRCYXRjaDogYm9vbGVhbjtcbiAgfT4gPT4ge1xuICAgIGNvbnN0IGV4dHJhY3RlZEJveGVzOiBBcnJheTxFeHRyYWN0ZWREYXRhPiA9IFtdO1xuICAgIGNvbnN0IGFwaU91dHB1dCA9IGF3YWl0IHRoaXMuZ2V0Qm94ZXNXaXRoT2Zmc2V0TGltaXQob2Zmc2V0LCBsaW1pdCk7XG5cbiAgICBjb25zdCBmaWx0ZXJlZEJveGVzID0gYXBpT3V0cHV0LmJveGVzLmZpbHRlcihcbiAgICAgIChib3g6IEVyZ29Cb3gpID0+XG4gICAgICAgIGJveC5pbmNsdXNpb25IZWlnaHQgPD0gaW5pdGlhbEhlaWdodCAmJiB0aGlzLmhhc0RhdGEoYm94KVxuICAgICk7XG4gICAgZm9yIChjb25zdCBib3ggb2YgZmlsdGVyZWRCb3hlcykge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuZXh0cmFjdEJveERhdGEoYm94LCBib3guYmxvY2tJZCwgYm94LmluY2x1c2lvbkhlaWdodCk7XG4gICAgICBpZiAoIWRhdGEpIGNvbnRpbnVlO1xuICAgICAgY29uc3Qgc3BlbnQgPSBib3guc3BlbnRIZWlnaHQgJiYgYm94LnNwZW50SGVpZ2h0IDw9IGluaXRpYWxIZWlnaHQ7XG4gICAgICBpZiAoc3BlbnQpXG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBCb3ggd2l0aCBpZCAke2JveC5ib3hJZH0gc3BlbnQgYXQgYmxvY2sgJHtKc29uQmlnSW50LnN0cmluZ2lmeShcbiAgICAgICAgICAgIGJveC5ibG9ja0lkXG4gICAgICAgICAgKX0gYmVsbG93IHRoZSBpbml0aWFsIGhlaWdodGBcbiAgICAgICAgKTtcbiAgICAgIGNvbnN0IGV4dHJhY3RlZERhdGEgPSB7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIHNwZW5kQmxvY2s6IHNwZW50ID8gYm94LnNwZW50QmxvY2tJZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3BlbmRIZWlnaHQ6IHNwZW50ID8gYm94LnNwZW50SGVpZ2h0IDogdW5kZWZpbmVkLFxuICAgICAgICBzcGVuZFR4SWQ6IHNwZW50ID8gYm94LnNwZW50VHJhbnNhY3Rpb25JZCA6IHVuZGVmaW5lZCxcbiAgICAgICAgc3BlbmRJbmRleDogc3BlbnQgPyBib3guc3BlbnRJbmRleCA6IHVuZGVmaW5lZCxcbiAgICAgIH0gYXMgRXh0cmFjdGVkRGF0YTtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgRXh0cmFjdGVkIGRhdGEgJHtKc29uQmlnSW50LnN0cmluZ2lmeShleHRyYWN0ZWREYXRhKX0gZnJvbSBib3ggJHtcbiAgICAgICAgICBib3guYm94SWRcbiAgICAgICAgfSBpbiBpbml0aWFsaXphdGlvbiBwaGFzZWBcbiAgICAgICk7XG4gICAgICBleHRyYWN0ZWRCb3hlcy5wdXNoKGV4dHJhY3RlZERhdGEpO1xuICAgIH1cbiAgICByZXR1cm4geyBleHRyYWN0ZWRCb3hlcywgaGFzTmV4dEJhdGNoOiBhcGlPdXRwdXQuaGFzTmV4dEJhdGNoIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIGluaXRpYWxpemUgZXh0cmFjdG9yIGRhdGFiYXNlIHdpdGggZGF0YSBjcmVhdGVkIGJlbG93IHRoZSBpbml0aWFsIGhlaWdodFxuICAgKiBpZ25vcmUgaW5pdGlhbGl6YXRpb24gaWYgdGhpcyBmZWF0dXJlIGlzIG9mZlxuICAgKiB0cnkgdG8gZ2V0IGRhdGEgbXVsdGlwbGUgdGltZXMgdG8gcGFzcyBhY2NpZGVudGFsIG5ldHdvcmsgcHJvYmxlbXNcbiAgICogQHBhcmFtIGluaXRpYWxCbG9ja1xuICAgKi9cbiAgaW5pdGlhbGl6ZUJveGVzID0gYXN5bmMgKGluaXRpYWxCbG9jazogQmxvY2tJbmZvKSA9PiB7XG4gICAgbGV0IHRyaWFsID0gMTtcbiAgICBpZiAodGhpcy5pbml0aWFsaXplKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYEluaXRpYWxpemluZyAke3RoaXMuZ2V0SWQoKX0gc3RhcnRlZCwgcmVtb3ZpbmcgYWxsIGV4aXN0aW5nIGRhdGFgXG4gICAgICApO1xuICAgICAgYXdhaXQgdGhpcy5hY3Rpb25zLnJlbW92ZUFsbERhdGEodGhpcy5nZXRJZCgpKTtcblxuICAgICAgbGV0IGhhc05leHRCYXRjaCA9IHRydWU7XG4gICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgIHdoaWxlIChoYXNOZXh0QmF0Y2gpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5mZXRjaERhdGFXaXRoT2Zmc2V0TGltaXQoXG4gICAgICAgICAgICBpbml0aWFsQmxvY2suaGVpZ2h0LFxuICAgICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgICAgQVBJX0xJTUlUXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYEluc2VydGluZyAke1xuICAgICAgICAgICAgICBkYXRhLmV4dHJhY3RlZEJveGVzLmxlbmd0aFxuICAgICAgICAgICAgfSBuZXcgZXh0cmFjdGVkIGRhdGEgaW4gJHt0aGlzLmdldElkKCl9IGluaXRpYWxpemF0aW9uYFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3QgaW5zZXJ0U3VjY2VzcyA9IGF3YWl0IHRoaXMuYWN0aW9ucy5pbnNlcnRCb3hlcyhcbiAgICAgICAgICAgIGRhdGEuZXh0cmFjdGVkQm94ZXMsXG4gICAgICAgICAgICB0aGlzLmdldElkKClcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghaW5zZXJ0U3VjY2VzcykgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3Qgc3RvcmUgZXh0cmFjdGVkIGRhdGEnKTtcblxuICAgICAgICAgIGhhc05leHRCYXRjaCA9IGRhdGEuaGFzTmV4dEJhdGNoO1xuICAgICAgICAgIG9mZnNldCArPSBBUElfTElNSVQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKFxuICAgICAgICAgICAgYEluaXRpYWxpemF0aW9uIGZvciAke3RoaXMuZ2V0SWQoKX0gZmFpbGVkIHdpdGggZXJyb3IgOiR7ZX1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAodHJpYWwgPT0gUkVUUklBTF9DT1VOVClcbiAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICBgSW5pdGlhbGl6YXRpb24gZm9yICR7dGhpcy5nZXRJZCgpfSBmYWlsZWQgYWZ0ZXIgJHtSRVRSSUFMX0NPVU5UfSByZXRyaWFsYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB0cmlhbCArPSAxO1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgICBgVHJ5aW5nIGFnYWluIHRvIGluaXRpYWxpemUgJHt0aGlzLmdldElkKCl9IHdpdGggdHJpYWwgc3RlcCAke3RyaWFsfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyLmluZm8oYEluaXRpYWxpemF0aW9uIGZvciAke3RoaXMuZ2V0SWQoKX0gaXMgdHVybmVkIG9mZmApO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RJbml0aWFsaXphYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2VyZ28vaW5pdGlhbGl6YWJsZS9BYnN0cmFjdEluaXRpYWxpemFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUVMLGVBQWUsR0FFaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdqRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTVDLE1BQU0sT0FBZ0Isa0NBRXBCLFNBQVEscUJBQW9DO0lBQ2xDLFVBQVUsQ0FBVTtJQUN0QixPQUFPLENBQVM7SUFHaEIsT0FBTyxDQUFnQztJQUUvQyxZQUNFLElBQXFCLEVBQ3JCLEdBQVcsRUFDWCxPQUFlLEVBQ2YsTUFBdUIsRUFDdkIsVUFBVSxHQUFHLElBQUk7UUFFakIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxJQUFJLElBQUksZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLFlBQXVCLEVBQUUsRUFBRTtnQkFDakQsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbkQsQ0FBQyxD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SyxFQUFFLEVBQUUsQ0FDNUQsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLElBQUksQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBRUY7Ozs7O09BS0c7SUFDSCxlQUFlLENBQTZDO0NBQzdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQge1xuICBFcmdvRXh0cmFjdGVkRGF0YSxcbiAgRXJnb05ldHdvcmtUeXBlLFxuICBFeHRlbmRlZFRyYW5zYWN0aW9uLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFQSV9MSU1JVCwgUkVUUklBTF9DT1VOVCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBYnN0cmFjdEVyZ29FeHRyYWN0b3IgfSBmcm9tICcuLi9BYnN0cmFjdEVyZ29FeHRyYWN0b3InO1xuaW1wb3J0IHsgQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvckFjdGlvbiB9IGZyb20gJy4vQWJzdHJhY3RJbml0aWFsaXphYmxlQWN0aW9uJztcbmltcG9ydCB7IEJsb2NrSW5mbyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgRXhwbG9yZXJOZXR3b3JrIH0gZnJvbSAnLi4vbmV0d29yay9FeHBsb3Jlck5ldHdvcmsnO1xuaW1wb3J0IHsgTm9kZU5ldHdvcmsgfSBmcm9tICcuLi9uZXR3b3JrL05vZGVOZXR3b3JrJztcbmltcG9ydCB7IGdyb3VwQnksIHNvcnRCeSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEluaXRpYWxpemFibGVFcmdvRXh0cmFjdG9yPFxuICBFeHRyYWN0ZWREYXRhIGV4dGVuZHMgRXJnb0V4dHJhY3RlZERhdGFcbj4gZXh0ZW5kcyBBYnN0cmFjdEVyZ29FeHRyYWN0b3I8RXh0cmFjdGVkRGF0YT4ge1xuICBwcm90ZWN0ZWQgaW5pdGlhbGl6ZTogYm9vbGVhbjtcbiAgcHJpdmF0ZSBhZGRyZXNzOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBhY3Rpb25zOiBBYnN0cmFjdEluaXRpYWxpemFibGVFcmdvRXh0cmFjdG9yQWN0aW9uPEV4dHJhY3RlZERhdGE+O1xuXG4gIHByaXZhdGUgbmV0d29yazogRXhwbG9yZXJOZXR3b3JrIHwgTm9kZU5ldHdvcms7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdHlwZTogRXJnb05ldHdvcmtUeXBlLFxuICAgIHVybDogc3RyaW5nLFxuICAgIGFkZHJlc3M6IHN0cmluZyxcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlcixcbiAgICBpbml0aWFsaXplID0gdHJ1ZVxuICApIHtcbiAgICBzdXBlcihsb2dnZXIpO1xuICAgIHRoaXMuYWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgdGhpcy5pbml0aWFsaXplID0gaW5pdGlhbGl6ZTtcbiAgICBpZiAodHlwZSA9PSBFcmdvTmV0d29ya1R5cGUuRXhwbG9yZXIpIHtcbiAgICAgIHRoaXMubmV0d29yayA9IG5ldyBFeHBsb3Jlck5ldHdvcmsodXJsKTtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUJveGVzID0gKGluaXRpYWxCbG9jazogQmxvY2tJbmZvKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVXaXRoRXhwbG9yZXIoaW5pdGlhbEJsb2NrKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0eXBlID09IEVyZ29OZXR3b3JrVHlwZS5Ob2RlKSB7XG4gICAgICB0aGlzLm5ldHdvcmsgPSBuZXcgTm9kZU5ldHdvcmsodXJsKTtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUJveGVzID0gKGluaXRpYWxCbG9jazogQmxvY2tJbmZvKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVXaXRoTm9kZShpbml0aWFsQmxvY2spO1xuICAgICAgfTtcbiAgICB9IGVsc2UgdGhyb3cgbmV3IEVycm9yKGBOZXR3b3JrIHR5cGUgJHt0eXBlfSBpcyBub3Qgc3VwcG9ydGVkYCk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBleHRyYWN0b3IgdXNpbmcgRXhwbG9yZXIgbmV0d29ya1xuICAgKiBAcGFyYW0gaW5pdGlhbEJsb2NrXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVXaXRoRXhwbG9yZXIgPSBhc3luYyAoaW5pdGlhbEJsb2NrOiBCbG9ja0luZm8pID0+IHtcbiAgICBjb25zdCBleHBsb3Jlck5ldHdvcmsgPSB0aGlzLm5ldHdvcmsgYXMgRXhwbG9yZXJOZXR3b3JrO1xuICAgIGxldCBmcm9tSGVpZ2h0ID0gMCxcbiAgICAgIHRvSGVpZ2h0ID0gaW5pdGlhbEJsb2NrLmhlaWdodDtcbiAgICBhd2FpdCB0aGlzLmluaXRXaXRoUmV0cmlhbChhc3luYyAoKSA9PiB7XG4gICAgICB3aGlsZSAoZnJvbUhlaWdodCA8IHRvSGVpZ2h0KSB7XG4gICAgICAgIGxldCB0eHM6IEFycmF5PEV4dGVuZGVkVHJhbnNhY3Rpb24+O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgdHhzID0gYXdhaXQgZXhwbG9yZXJOZXR3b3JrLmdldEFkZHJlc3NUcmFuc2FjdGlvbnNXaXRoSGVpZ2h0KFxuICAgICAgICAgICAgdGhpcy5hZGRyZXNzLFxuICAgICAgICAgICAgZnJvbUhlaWdodCxcbiAgICAgICAgICAgIHRvSGVpZ2h0XG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGBGb3VuZCAke3R4cy5sZW5ndGh9IHRyYW5zYWN0aW9ucyBmb3IgdGhlIGFkZHJlc3MgZnJvbSBoZWlnaHQgJHtmcm9tSGVpZ2h0fSB0byBoZWlnaHQgJHt0b0hlaWdodH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAodHhzLmxlbmd0aCA8IEFQSV9MSU1JVCB8fCBmcm9tSGVpZ2h0ID09PSB0b0hlaWdodCkge1xuICAgICAgICAgICAgYnJlYWs7IC8vIEV4aXQgbG9vcCBpZiB3ZSBoYXZlIGZld2VyIHRyYW5zYWN0aW9ucyB0aGFuIHRoZSBsaW1pdCBvciBpZiB0aGUgcmFuZ2UgaXMgcmVkdWNlZCB0byBhIHNpbmdsZSBoZWlnaHRcbiAgICAgICAgICB9XG4gICAgICAgICAgdG9IZWlnaHQgPSBNYXRoLmZsb29yKCh0b0hlaWdodCAtIGZyb21IZWlnaHQpIC8gMikgKyBmcm9tSGVpZ2h0O1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICAgYExpbWl0aW5nIHRoZSBxdWVyeSBoZWlnaHQgcmFuZ2UgdG8gWyR7ZnJvbUhlaWdodH0sICR7dG9IZWlnaHR9XWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eHMubGVuZ3RoIDwgQVBJX0xJTUlUKSB7XG4gICAgICAgICAgaWYgKHR4cy5sZW5ndGggPiAwKSBhd2FpdCB0aGlzLnByb2Nlc3NUcmFuc2FjdGlvbkJhdGNoKHR4cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBgQmxvY2sgYXQgaGVpZ2h0ICR7ZnJvbUhlaWdodH0gaGFzIG1vcmUgdGhhbiAob3IgZXF1YWwpICR7QVBJX0xJTUlUfSByZWxldmFudCB0eHMsIHByb2Nlc3NpbmcgYWxsIHR4cyBpbiB0aGUgYmxvY2tgXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBibG9ja0lkID0gYXdhaXQgZXhwbG9yZXJOZXR3b3JrLmdldEJsb2NrSWRBdEhlaWdodChmcm9tSGVpZ2h0KTtcbiAgICAgICAgICBjb25zdCBibG9ja1R4cyA9IGF3YWl0IGV4cGxvcmVyTmV0d29yay5nZXRCbG9ja1R4cyhibG9ja0lkKTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGBGb3VuZCAke2Jsb2NrVHhzLmxlbmd0aH0gdHJhbnNhY3Rpb25zIGF0IGhlaWdodCAke2Zyb21IZWlnaHR9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wcm9jZXNzVHJhbnNhY3Rpb25zKGJsb2NrVHhzLCB7XG4gICAgICAgICAgICBoYXNoOiBibG9ja0lkLFxuICAgICAgICAgICAgaGVpZ2h0OiBmcm9tSGVpZ2h0LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZyb21IZWlnaHQgPSB0b0hlaWdodCArIDE7XG4gICAgICAgIHRvSGVpZ2h0ID0gaW5pdGlhbEJsb2NrLmhlaWdodDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogR2V0IHRoZSB0b3RhbCB0eCBjb3VudCBmcm9tIE5vZGUgbmV0d29ya1xuICAgKiBAcmV0dXJucyB0b3RhbCB0eCBjb3VudCBvZiB0aGUgYWRkcmVzc1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRUb3RhbFR4Q291bnQgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCAoXG4gICAgICB0aGlzLm5ldHdvcmsgYXMgTm9kZU5ldHdvcmtcbiAgICApLmdldEFkZHJlc3NUcmFuc2FjdGlvbnNXaXRoT2Zmc2V0TGltaXQodGhpcy5hZGRyZXNzLCAwLCAwKTtcbiAgICByZXR1cm4gcmVzcG9uc2UudG90YWw7XG4gIH07XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgZXh0cmFjdG9yIHVzaW5nIE5vZGUgbmV0d29ya1xuICAgKiBAcGFyYW0gaW5pdGlhbEJsb2NrXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVXaXRoTm9kZSA9IGFzeW5jIChpbml0aWFsQmxvY2s6IEJsb2NrSW5mbykgPT4ge1xuICAgIGNvbnN0IHR4Q291bnRCZWZvcmVJbml0ID0gYXdhaXQgdGhpcy5nZXRUb3RhbFR4Q291bnQoKTtcbiAgICBhd2FpdCB0aGlzLmluaXRXaXRoUmV0cmlhbChhc3luYyAoKSA9PiB7XG4gICAgICAvLyBSZXBlYXQgdGhlIHdob2xlIHByb2Nlc3MgdHdpY2UgdG8gY292ZXIgYWxsIHNwZW50IGJveGVzXG4gICAgICAvLyBBZnRlciByb3VuZCAxIGFsbCBib3hlcyBoYXZlIGJlZW4gc2F2ZWQgYW5kIHByb2Nlc3NlZCBvbmNlXG4gICAgICAvLyBBZnRlciByb3VuZCAyIHNwZW5kaW5nIGluZm9ybWF0aW9uIG9mIGFsbCBzdG9yZWQgYm94ZXMgYXJlIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5XG4gICAgICBmb3IgKGxldCByb3VuZCA9IDA7IHJvdW5kIDw9IDE7IHJvdW5kKyspIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoYFN0YXJ0aW5nIHJvdW5kICR7cm91bmR9IG9mIGluaXRpYWxpemF0aW9uYCk7XG4gICAgICAgIGxldCBvZmZzZXQgPSAwLFxuICAgICAgICAgIHRvdGFsID0gMTtcbiAgICAgICAgd2hpbGUgKG9mZnNldCA8IHRvdGFsKSB7XG4gICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCAoXG4gICAgICAgICAgICB0aGlzLm5ldHdvcmsgYXMgTm9kZU5ldHdvcmtcbiAgICAgICAgICApLmdldEFkZHJlc3NUcmFuc2FjdGlvbnNXaXRoT2Zmc2V0TGltaXQoXG4gICAgICAgICAgICB0aGlzLmFkZHJlc3MsXG4gICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICBBUElfTElNSVRcbiAgICAgICAgICApO1xuICAgICAgICAgIHRvdGFsID0gcmVzcG9uc2UudG90YWw7XG4gICAgICAgICAgY29uc3QgdHhzID0gcmVzcG9uc2UuaXRlbXMuZmlsdGVyKFxuICAgICAgICAgICAgKHR4KSA9PiB0eC5pbmNsdXNpb25IZWlnaHQgPD0gaW5pdGlhbEJsb2NrLmhlaWdodFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgICBgRm91bmQgJHt0eHMubGVuZ3RofSB0cmFuc2FjdGlvbnMgYmVsb3cgdGhlIGluaXRpYWwgaGVpZ2h0IHdpdGggb2Zmc2V0ICR7b2Zmc2V0fSBhbmQgdG90YWwgbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyAke3RvdGFsfWBcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICh0eHMubGVuZ3RoID4gMCkgYXdhaXQgdGhpcy5wcm9jZXNzVHJhbnNhY3Rpb25CYXRjaCh0eHMpO1xuICAgICAgICAgIG9mZnNldCArPSBBUElfTElNSVQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCB0eENvdW50QWZ0ZXJJbml0ID0gYXdhaXQgdGhpcy5nZXRUb3RhbFR4Q291bnQoKTtcbiAgICBpZiAodHhDb3VudEFmdGVySW5pdCAhPSB0eENvdW50QmVmb3JlSW5pdCkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICdUb3RhbCB0cmFuc2FjdGlvbiBjb3VudCBjaGFuZ2VkIGR1cmluZyBpbml0aWFsaXphdGlvbiBwaGFzZSwgdGhlIHN0b3JlZCBkYXRhIGlzIG5vdCB2YWxpZCdcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBQcm9jZXNzIGEgYmF0Y2ggb2YgdHJhbnNhY3Rpb25zXG4gICAqIGdyb3VwIHR4cyBpbnRvIGJsb2NrcyBhbmQgcHJvY2VzcyB0aGVtIHVzaW5nIGBwcm9jZXNzVHJhbnNhY3Rpb25zYFxuICAgKiBAcGFyYW0gdHhzXG4gICAqL1xuICBwcml2YXRlIHByb2Nlc3NUcmFuc2FjdGlvbkJhdGNoID0gYXN5bmMgKHR4czogQXJyYXk8RXh0ZW5kZWRUcmFuc2FjdGlvbj4pID0+IHtcbiAgICB0eHMgPSBzb3J0QnkodHhzLCAodHgpID0+IHR4LmluY2x1c2lvbkhlaWdodCk7XG4gICAgY29uc3QgZ3JvdXBlZFR4cyA9IGdyb3VwQnkodHhzLCAodHgpID0+IHR4LmJsb2NrSWQpO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgYFRoZSB0cmFuc2FjdGlvbiBiYXRjaCBncm91cGVkIHRvICR7XG4gICAgICAgIE9iamVjdC5rZXlzKGdyb3VwZWRUeHMpLmxlbmd0aFxuICAgICAgfSBibG9ja3NgXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IGJsb2NrSWQgaW4gZ3JvdXBlZFR4cykge1xuICAgICAgY29uc3QgYmxvY2tUeHMgPSBncm91cGVkVHhzW2Jsb2NrSWRdO1xuICAgICAgY29uc3QgYmxvY2sgPSB7IGhhc2g6IGJsb2NrSWQsIGhlaWdodDogYmxvY2tUeHNbMF0uaW5jbHVzaW9uSGVpZ2h0IH07XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYFByb2Nlc3NpbmcgdHJhbnNhY3Rpb25zIGF0IGhlaWdodCAke2Jsb2NrVHhzWzBdLmluY2x1c2lvbkhlaWdodH1gXG4gICAgICApO1xuICAgICAgYXdhaXQgdGhpcy5wcm9jZXNzVHJhbnNhY3Rpb25zKGJsb2NrVHhzLCBibG9jayk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBleHRyYWN0b3Igd2l0aCByZXRyaWFsIG9uIGFueSB1bmV4cGVjdGVkIHByb2JsZW1cbiAgICogaXRzIHRoZSBjb21tb24gcGFydCBvZiBpbml0aWFsaXplIHdpdGggTm9kZSBhbmQgRXhwbG9yZXIgbmV0d29ya1xuICAgKiBAcGFyYW0gam9iXG4gICAqL1xuICBwcml2YXRlIGluaXRXaXRoUmV0cmlhbCA9IGFzeW5jIChqb2I6ICgpID0+IFByb21pc2U8dm9pZD4pID0+IHtcbiAgICBsZXQgdHJpYWwgPSAxO1xuICAgIGlmICh0aGlzLmluaXRpYWxpemUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgSW5pdGlhbGl6aW5nICR7dGhpcy5nZXRJZCgpfSBzdGFydGVkLCByZW1vdmluZyBhbGwgZXhpc3RpbmcgZGF0YWBcbiAgICAgICk7XG4gICAgICBhd2FpdCB0aGlzLmFjdGlvbnMucmVtb3ZlQWxsRGF0YSh0aGlzLmdldElkKCkpO1xuICAgICAgd2hpbGUgKHRyaWFsIDw9IFJFVFJJQUxfQ09VTlQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBqb2IoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oXG4gICAgICAgICAgICBgSW5pdGlhbGl6YXRpb24gZm9yICR7dGhpcy5nZXRJZCgpfSBmYWlsZWQgd2l0aCBlcnJvciA6JHtlfWBcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICh0cmlhbCA9PSBSRVRSSUFMX0NPVU5UKVxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgIGBJbml0aWFsaXphdGlvbiBmb3IgJHt0aGlzLmdldElkKCl9IGZhaWxlZCBhZnRlciAke1JFVFJJQUxfQ09VTlR9IHJldHJpYWxgXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHRyaWFsICs9IDE7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgIGBUcnlpbmcgYWdhaW4gdG8gaW5pdGlhbGl6ZSAke3RoaXMuZ2V0SWQoKX0gd2l0aCB0cmlhbCBzdGVwICR7dHJpYWx9YFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgIGBJbml0aWFsaXphdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGZvciAke3RoaXMuZ2V0SWQoKX1gXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci5pbmZvKGBJbml0aWFsaXphdGlvbiBmb3IgJHt0aGlzLmdldElkKCl9IGlzIHR1cm5lZCBvZmZgKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIGluaXRpYWxpemUgZXh0cmFjdG9yIGRhdGFiYXNlIHdpdGggZGF0YSBjcmVhdGVkIGJlbG93IHRoZSBpbml0aWFsIGhlaWdodFxuICAgKiBpZ25vcmUgaW5pdGlhbGl6YXRpb24gaWYgdGhpcyBmZWF0dXJlIGlzIG9mZlxuICAgKiB0cnkgdG8gZ2V0IGRhdGEgbXVsdGlwbGUgdGltZXMgdG8gcGFzcyBhY2NpZGVudGFsIG5ldHdvcmsgcHJvYmxlbXNcbiAgICogQHBhcmFtIGluaXRpYWxCbG9ja1xuICAgKi9cbiAgaW5pdGlhbGl6ZUJveGVzOiAoaW5pdGlhbEJsb2NrOiBCbG9ja0luZm8pID0+IFByb21pc2U8dm9pZD47XG59XG4iXX0=
@@ -1,5 +1,3 @@
1
1
  export * from './AbstractInitializable';
2
2
  export * from './AbstractInitializableAction';
3
- export * from './InitializableByAddress';
4
- export * from './InitializableByToken';
5
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
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;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC"}
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,5 +1,3 @@
1
1
  export * from './AbstractInitializable';
2
2
  export * from './AbstractInitializableAction';
3
- export * from './InitializableByAddress';
4
- export * from './InitializableByToken';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXJnby9pbml0aWFsaXphYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL0Fic3RyYWN0SW5pdGlhbGl6YWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL0Fic3RyYWN0SW5pdGlhbGl6YWJsZUFjdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL0luaXRpYWxpemFibGVCeUFkZHJlc3MnO1xuZXhwb3J0ICogZnJvbSAnLi9Jbml0aWFsaXphYmxlQnlUb2tlbic7XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXJnby9pbml0aWFsaXphYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywrQkFBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vQWJzdHJhY3RJbml0aWFsaXphYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vQWJzdHJhY3RJbml0aWFsaXphYmxlQWN0aW9uJztcbiJdfQ==
@@ -45,6 +45,10 @@ export type Transaction = {
45
45
  outputs: Array<OutputBox>;
46
46
  size?: bigint;
47
47
  };
48
+ export interface ExtendedTransaction extends Transaction {
49
+ inclusionHeight: number;
50
+ blockId: string;
51
+ }
48
52
  export interface SpendInfo {
49
53
  boxId: string;
50
54
  txId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../lib/ergo/interfaces.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB,CAAC;AAEF,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,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../lib/ergo/interfaces.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,QAAQ,aAAa;IACrB,IAAI,SAAS;CACd;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB,CAAC;AAEF,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,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,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;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -3,4 +3,4 @@ export var ErgoNetworkType;
3
3
  ErgoNetworkType["Explorer"] = "explorer";
4
4
  ErgoNetworkType["Node"] = "node";
5
5
  })(ErgoNetworkType || (ErgoNetworkType = {}));
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9lcmdvL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6Qix3Q0FBcUIsQ0FBQTtJQUNyQixnQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLGVBQWUsS0FBZixlQUFlLFFBRzFCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRXJnb05ldHdvcmtUeXBlIHtcbiAgRXhwbG9yZXIgPSAnZXhwbG9yZXInLFxuICBOb2RlID0gJ25vZGUnLFxufVxuXG5leHBvcnQgdHlwZSBJbnB1dEJveCA9IHtcbiAgYm94SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFJbnB1dCA9IHtcbiAgYm94SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFzc2V0ID0ge1xuICB0b2tlbklkOiBzdHJpbmc7XG4gIGFtb3VudDogYmlnaW50O1xufTtcblxuZXhwb3J0IHR5cGUgQWRkaXRpb25hbFJlZ2lzdGVycyA9IHtcbiAgUjQ/OiBzdHJpbmc7XG4gIFI1Pzogc3RyaW5nO1xuICBSNj86IHN0cmluZztcbiAgUjc/OiBzdHJpbmc7XG4gIFI4Pzogc3RyaW5nO1xuICBSOT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE91dHB1dEJveCA9IHtcbiAgYm94SWQ6IHN0cmluZztcbiAgdmFsdWU6IGJpZ2ludDtcbiAgZXJnb1RyZWU6IHN0cmluZztcbiAgY3JlYXRpb25IZWlnaHQ6IG51bWJlcjtcbiAgYXNzZXRzPzogQXJyYXk8QXNzZXQ+O1xuICBhZGRpdGlvbmFsUmVnaXN0ZXJzPzogQWRkaXRpb25hbFJlZ2lzdGVycztcbiAgdHJhbnNhY3Rpb25JZDogc3RyaW5nO1xuICBpbmRleDogYmlnaW50IHwgbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBFcmdvQm94IGV4dGVuZHMgT3V0cHV0Qm94IHtcbiAgYmxvY2tJZDogc3RyaW5nO1xuICBpbmNsdXNpb25IZWlnaHQ6IG51bWJlcjtcbiAgc3BlbnRCbG9ja0lkPzogc3RyaW5nO1xuICBzcGVudEhlaWdodD86IG51bWJlcjtcbiAgc3BlbnRUcmFuc2FjdGlvbklkPzogc3RyaW5nO1xuICBzcGVudEluZGV4PzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgaW5wdXRzOiBBcnJheTxJbnB1dEJveD47XG4gIGRhdGFJbnB1dHM6IEFycmF5PERhdGFJbnB1dD47XG4gIG91dHB1dHM6IEFycmF5PE91dHB1dEJveD47XG4gIHNpemU/OiBiaWdpbnQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNwZW5kSW5mbyB7XG4gIGJveElkOiBzdHJpbmc7XG4gIHR4SWQ6IHN0cmluZztcbiAgaW5kZXg6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFcmdvRXh0cmFjdGVkRGF0YSB7XG4gIGJveElkOiBzdHJpbmc7XG4gIGhlaWdodDogbnVtYmVyO1xuICBibG9ja0lkOiBzdHJpbmc7XG4gIHNwZW5kQmxvY2s/OiBzdHJpbmc7XG4gIHNwZW5kSGVpZ2h0PzogbnVtYmVyO1xuICBzcGVuZFR4SWQ/OiBzdHJpbmc7XG4gIHNwZW5kSW5kZXg/OiBudW1iZXI7XG59XG4iXX0=
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9lcmdvL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6Qix3Q0FBcUIsQ0FBQTtJQUNyQixnQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLGVBQWUsS0FBZixlQUFlLFFBRzFCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRXJnb05ldHdvcmtUeXBlIHtcbiAgRXhwbG9yZXIgPSAnZXhwbG9yZXInLFxuICBOb2RlID0gJ25vZGUnLFxufVxuXG5leHBvcnQgdHlwZSBJbnB1dEJveCA9IHtcbiAgYm94SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFJbnB1dCA9IHtcbiAgYm94SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFzc2V0ID0ge1xuICB0b2tlbklkOiBzdHJpbmc7XG4gIGFtb3VudDogYmlnaW50O1xufTtcblxuZXhwb3J0IHR5cGUgQWRkaXRpb25hbFJlZ2lzdGVycyA9IHtcbiAgUjQ/OiBzdHJpbmc7XG4gIFI1Pzogc3RyaW5nO1xuICBSNj86IHN0cmluZztcbiAgUjc/OiBzdHJpbmc7XG4gIFI4Pzogc3RyaW5nO1xuICBSOT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE91dHB1dEJveCA9IHtcbiAgYm94SWQ6IHN0cmluZztcbiAgdmFsdWU6IGJpZ2ludDtcbiAgZXJnb1RyZWU6IHN0cmluZztcbiAgY3JlYXRpb25IZWlnaHQ6IG51bWJlcjtcbiAgYXNzZXRzPzogQXJyYXk8QXNzZXQ+O1xuICBhZGRpdGlvbmFsUmVnaXN0ZXJzPzogQWRkaXRpb25hbFJlZ2lzdGVycztcbiAgdHJhbnNhY3Rpb25JZDogc3RyaW5nO1xuICBpbmRleDogYmlnaW50IHwgbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBFcmdvQm94IGV4dGVuZHMgT3V0cHV0Qm94IHtcbiAgYmxvY2tJZDogc3RyaW5nO1xuICBpbmNsdXNpb25IZWlnaHQ6IG51bWJlcjtcbiAgc3BlbnRCbG9ja0lkPzogc3RyaW5nO1xuICBzcGVudEhlaWdodD86IG51bWJlcjtcbiAgc3BlbnRUcmFuc2FjdGlvbklkPzogc3RyaW5nO1xuICBzcGVudEluZGV4PzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgaW5wdXRzOiBBcnJheTxJbnB1dEJveD47XG4gIGRhdGFJbnB1dHM6IEFycmF5PERhdGFJbnB1dD47XG4gIG91dHB1dHM6IEFycmF5PE91dHB1dEJveD47XG4gIHNpemU/OiBiaWdpbnQ7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuZGVkVHJhbnNhY3Rpb24gZXh0ZW5kcyBUcmFuc2FjdGlvbiB7XG4gIGluY2x1c2lvbkhlaWdodDogbnVtYmVyO1xuICBibG9ja0lkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BlbmRJbmZvIHtcbiAgYm94SWQ6IHN0cmluZztcbiAgdHhJZDogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVyZ29FeHRyYWN0ZWREYXRhIHtcbiAgYm94SWQ6IHN0cmluZztcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIGJsb2NrSWQ6IHN0cmluZztcbiAgc3BlbmRCbG9jaz86IHN0cmluZztcbiAgc3BlbmRIZWlnaHQ/OiBudW1iZXI7XG4gIHNwZW5kVHhJZD86IHN0cmluZztcbiAgc3BlbmRJbmRleD86IG51bWJlcjtcbn1cbiJdfQ==
@@ -1,7 +1,6 @@
1
- import { BlockInfo } from '../../interfaces';
2
- import { ErgoBox } from '../interfaces';
3
1
  import { AbstractNetwork } from './AbstractNetwork';
4
- import { V1 } from '@rosen-clients/ergo-explorer';
2
+ import { BlockInfo } from '../../interfaces';
3
+ import { ErgoBox, ExtendedTransaction, Transaction } from '../interfaces';
5
4
  export declare class ExplorerNetwork extends AbstractNetwork {
6
5
  private api;
7
6
  constructor(url: string);
@@ -18,7 +17,37 @@ export declare class ExplorerNetwork extends AbstractNetwork {
18
17
  * @param box
19
18
  * @returns ErgoBox
20
19
  */
21
- convertBox: (box: V1.OutputInfo) => Promise<ErgoBox>;
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>>;
22
51
  /**
23
52
  * use explorer api to return related boxes by specified address
24
53
  * @param address
@@ -1 +1 @@
1
- {"version":3,"file":"ExplorerNetwork.d.ts","sourceRoot":"","sources":["../../../lib/ergo/network/ExplorerNetwork.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,EAAE,EAAE,MAAM,8BAA8B,CAAC;AAGlD,qBAAa,eAAgB,SAAQ,eAAe;IAClD,OAAO,CAAC,GAAG,CAAC;gBAEA,GAAG,EAAE,MAAM;IAKvB;;;;OAIG;IACH,eAAe,UACN,MAAM,aACF,MAAM,KAChB,QAAQ,SAAS,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAY5C;IAEF;;;;OAIG;IACH,UAAU,QAAe,GAAG,UAAU,KAAG,QAAQ,OAAO,CAAC,CAuBvD;IAEF;;;;;;OAMG;IACH,iBAAiB,YACN,MAAM,UACP,MAAM,SACP,MAAM,KACZ,QAAQ;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAarD;IAEF;;;;;;OAMG;IACH,iBAAiB,YACN,MAAM,UACP,MAAM,SACP,MAAM,KACZ,QAAQ;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAYrD;CACH"}
1
+ {"version":3,"file":"ExplorerNetwork.d.ts","sourceRoot":"","sources":["../../../lib/ergo/network/ExplorerNetwork.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI1E,qBAAa,eAAgB,SAAQ,eAAe;IAClD,OAAO,CAAC,GAAG,CAAC;gBAEA,GAAG,EAAE,MAAM;IAKvB;;;;OAIG;IACH,eAAe,UACN,MAAM,aACF,MAAM,KAChB,QAAQ,SAAS,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAY5C;IAEF;;;;OAIG;IACH,OAAO,CAAC,UAAU,CAuBhB;IAEF;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CA6BxB;IAEF;;;OAGG;IACH,OAAO,CAAC,uBAAuB,CAsB7B;IAEF;;;;;;OAMG;IACH,gCAAgC,YACrB,MAAM,cACH,MAAM,YACR,MAAM,KACf,QAAQ,MAAM,mBAAmB,CAAC,CAAC,CAWpC;IAEF;;;;OAIG;IACH,kBAAkB,WAAkB,MAAM,KAAG,QAAQ,MAAM,CAAC,CAG1D;IAEF;;;;OAIG;IACH,WAAW,YAAmB,MAAM,KAAG,QAAQ,MAAM,WAAW,CAAC,CAAC,CAUhE;IAEF;;;;;;OAMG;IACH,iBAAiB,YACN,MAAM,UACP,MAAM,SACP,MAAM,KACZ,QAAQ;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAarD;IAEF;;;;;;OAMG;IACH,iBAAiB,YACN,MAAM,UACP,MAAM,SACP,MAAM,KACZ,QAAQ;QAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,CAAC,CAYrD;CACH"}