@rosen-bridge/abstract-extractor 0.1.2-7aba94c9 → 0.1.2

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.
@@ -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,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,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,CAoCA;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;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,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,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,CA+BA;IAEF;;;;;OAKG;IACH,eAAe,iBAAwB,SAAS,mBA+C9C;CACH"}
@@ -20,24 +20,18 @@ export class AbstractInitializableErgoExtractor extends AbstractErgoExtractor {
20
20
  fetchDataWithOffsetLimit = async (initialHeight, offset, limit) => {
21
21
  const extractedBoxes = [];
22
22
  const apiOutput = await this.getBoxesWithOffsetLimit(offset, limit);
23
- const filteredBoxes = apiOutput.boxes.filter((box) => box.creationHeight <= initialHeight && this.hasData(box));
23
+ const filteredBoxes = apiOutput.boxes.filter((box) => box.inclusionHeight <= initialHeight && this.hasData(box));
24
24
  for (const box of filteredBoxes) {
25
- const data = this.extractBoxData(box, box.blockId, box.creationHeight);
25
+ const data = this.extractBoxData(box, box.blockId, box.inclusionHeight);
26
26
  if (!data)
27
27
  continue;
28
- let spendBlock, spendHeight;
29
- if (box.spentTransactionId) {
30
- const block = await this.getTxBlock(box.spentTransactionId);
31
- if (block.height <= initialHeight) {
32
- this.logger.debug(`Box with id ${box.boxId} spent at block ${JsonBigInt.stringify(block)} bellow the initial height`);
33
- spendBlock = block.hash;
34
- spendHeight = block.height;
35
- }
36
- }
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`);
37
31
  const extractedData = {
38
32
  ...data,
39
- spendBlock,
40
- spendHeight,
33
+ spendBlock: spent ? box.spentBlockId : undefined,
34
+ spendHeight: spent ? box.spentHeight : undefined,
41
35
  };
42
36
  this.logger.debug(`Extracted data ${JsonBigInt.stringify(extractedData)} from box ${box.boxId} in initialization phase`);
43
37
  extractedBoxes.push(extractedData);
@@ -81,4 +75,4 @@ export class AbstractInitializableErgoExtractor extends AbstractErgoExtractor {
81
75
  }
82
76
  };
83
77
  }
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RJbml0aWFsaXphYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2VyZ28vaW5pdGlhbGl6YWJsZS9BYnN0cmFjdEluaXRpYWxpemFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFHbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlqRSxNQUFNLE9BQWdCLGtDQUVwQixTQUFRLHFCQUFvQztJQUNsQyxVQUFVLENBQVU7SUFHOUI7Ozs7T0FJRztJQUNILFlBQVksVUFBVSxHQUFHLElBQUksRUFBRSxNQUF1QjtRQUNwRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBb0JEOzs7O09BSUc7SUFDSCx3QkFBd0IsR0FBRyxLQUFLLEVBQzlCLGFBQXFCLEVBQ3JCLE1BQWMsRUFDZCxLQUFhLEVBSVosRUFBRTtRQUNILE1BQU0sY0FBYyxHQUF5QixFQUFFLENBQUM7UUFDaEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXBFLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUMxQyxDQUFDLEdBQVksRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLGNBQWMsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FDM0UsQ0FBQztRQUNGLEtBQUssTUFBTSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE9B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LGFBQWEsVUFBVSxDQUMzRSxDQUFDO29CQUNKLEtBQUssSUFBSSxDQUFDLENBQUM7b0JBQ1gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ2QsOEJBQThCLElBQUksQ0FBQyxLQUFLLEVBQUUsb0JBQW9CLEtBQUssRUFBRSxDQUN0RSxDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7SUFDSCxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IEpzb25CaWdJbnQgZnJvbSAnQHJvc2VuLWJyaWRnZS9qc29uLWJpZ2ludCc7XG5cbmltcG9ydCB7IEVyZ29Cb3gsIEVyZ29FeHRyYWN0ZWREYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBBUElfTElNSVQsIFJFVFJJQUxfQ09VTlQgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQWJzdHJhY3RFcmdvRXh0cmFjdG9yIH0gZnJvbSAnLi4vQWJzdHJhY3RFcmdvRXh0cmFjdG9yJztcbmltcG9ydCB7IEFic3RyYWN0SW5pdGlhbGl6YWJsZUVyZ29FeHRyYWN0b3JBY3Rpb24gfSBmcm9tICcuL0Fic3RyYWN0SW5pdGlhbGl6YWJsZUFjdGlvbic7XG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0SW5pdGlhbGl6YWJsZUVyZ29FeHRyYWN0b3I8XG4gIEV4dHJhY3RlZERhdGEgZXh0ZW5kcyBFcmdvRXh0cmFjdGVkRGF0YVxuPiBleHRlbmRzIEFic3RyYWN0RXJnb0V4dHJhY3RvcjxFeHRyYWN0ZWREYXRhPiB7XG4gIHByb3RlY3RlZCBpbml0aWFsaXplOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgYWN0aW9uczogQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvckFjdGlvbjxFeHRyYWN0ZWREYXRhPjtcblxuICAvKipcbiAgICogY3JlYXRlIGFuIGluaXRpYWxpemFibGUgZXJnbyBleHRyYWN0b3JcbiAgICogQHBhcmFtIGluaXRpYWxpemUgaWdub3JlIHRoZSBpbml0aWFsaXphdGlvbiBzdGVwIGlmIGl0cyBmYWxzZVxuICAgKiBAcGFyYW0gbG9nZ2VyXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihpbml0aWFsaXplID0gdHJ1ZSwgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXIpIHtcbiAgICBzdXBlcihsb2dnZXIpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSA9IGluaXRpYWxpemU7XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJuIGluaXQgcmVxdWlyZWQgYm94ZXMgd2l0aCBvZmZzZXQgbGltaXRcbiAgICogQHBhcmFtIG9mZnNldFxuICAgKiBAcGFyYW0gbGltaXRcbiAgICogQHJldHVybiBib3hlcyBpbiBiYXRjaFxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0Qm94ZXNXaXRoT2Zmc2V0TGltaXQ6IChcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyXG4gICkgPT4gUHJvbWlzZTx7IGJveGVzOiBFcmdvQm94W107IGhhc05leHRCYXRjaDogYm9vbGVhbiB9PjtcblxuICAvKipcbiAgICogcmV0dXJuIGJsb2NrIGluZm9ybWF0aW9uIG9mIHNwZWNpZmllZCB0eFxuICAgKiBAcGFyYW0gdHhJZFxuICAgKiBAcmV0dXJuIGJsb2NrIGluZm9cbiAgICovXG4gIGFic3RyYWN0IGdldFR4QmxvY2s6ICh0eElkOiBzdHJpbmcpID0+IFByb21pc2U8QmxvY2tJbmZvPjtcblxuICAvKipcbiAgICogcmV0dXJuIGFsbCByZWxhdGVkIGRhdGEgYmVsb3cgdGhlIGluaXRpYWwgaGVpZ2h0IChpbmNsdWRpbmcgdGhlIGluaXQgaGVpZ2h0KVxuICAgKiBAcGFyYW0gaW5pdGlhbEhlaWdodFxuICAgKiBAcmV0dXJuIGV4dHJhY3RlZCBkYXRhIGluIGJhdGNoXG4gICAqL1xuICBmZXRjaERhdGFXaXRoT2Zmc2V0TGltaXQgPSBhc3luYyAoXG4gICAgaW5pdGlhbEhlaWdodDogbnVtYmVyLFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIGxpbWl0OiBudW1iZXJcbiAgKTogUHJvbWlzZTx7XG4gICAgZXh0cmFjdGVkQm94ZXM6IEFycmF5PEV4dHJhY3RlZERhdGE+O1xuICAgIGhhc05leHRCYXRjaDogYm9vbGVhbjtcbiAgfT4gPT4ge1xuICAgIGNvbnN0IGV4dHJhY3RlZEJveGVzOiBBcnJheTxFeHRyYWN0ZWREYXRhPiA9IFtdO1xuICAgIGNvbnN0IGFwaU91dHB1dCA9IGF3YWl0IHRoaXMuZ2V0Qm94ZXNXaXRoT2Zmc2V0TGltaXQob2Zmc2V0LCBsaW1pdCk7XG5cbiAgICBjb25zdCBmaWx0ZXJlZEJveGVzID0gYXBpT3V0cHV0LmJveGVzLmZpbHRlcihcbiAgICAgIChib3g6IEVyZ29Cb3gpID0+IGJveC5jcmVhdGlvbkhlaWdodCA8PSBpbml0aWFsSGVpZ2h0ICYmIHRoaXMuaGFzRGF0YShib3gpXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IGJveCBvZiBmaWx0ZXJlZEJveGVzKSB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5leHRyYWN0Qm94RGF0YShib3gsIGJveC5ibG9ja0lkLCBib3guY3JlYXRpb25IZWlnaHQpO1xuICAgICAgaWYgKCFkYXRhKSBjb250aW51ZTtcbiAgICAgIGxldCBzcGVuZEJsb2NrLCBzcGVuZEhlaWdodDtcbiAgICAgIGlmIChib3guc3BlbnRUcmFuc2FjdGlvbklkKSB7XG4gICAgICAgIGNvbnN0IGJsb2NrID0gYXdhaXQgdGhpcy5nZXRUeEJsb2NrKGJveC5zcGVudFRyYW5zYWN0aW9uSWQpO1xuICAgICAgICBpZiAoYmxvY2suaGVpZ2h0IDw9IGluaXRpYWxIZWlnaHQpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGBCb3ggd2l0aCBpZCAke2JveC5ib3hJZH0gc3BlbnQgYXQgYmxvY2sgJHtKc29uQmlnSW50LnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgYmxvY2tcbiAgICAgICAgICAgICl9IGJlbGxvdyB0aGUgaW5pdGlhbCBoZWlnaHRgXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzcGVuZEJsb2NrID0gYmxvY2suaGFzaDtcbiAgICAgICAgICBzcGVuZEhlaWdodCA9IGJsb2NrLmhlaWdodDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29uc3QgZXh0cmFjdGVkRGF0YSA9IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgc3BlbmRCbG9jayxcbiAgICAgICAgc3BlbmRIZWlnaHQsXG4gICAgICB9IGFzIEV4dHJhY3RlZERhdGE7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYEV4dHJhY3RlZCBkYXRhICR7SnNvbkJpZ0ludC5zdHJpbmdpZnkoZXh0cmFjdGVkRGF0YSl9IGZyb20gYm94ICR7XG4gICAgICAgICAgYm94LmJveElkXG4gICAgICAgIH0gaW4gaW5pdGlhbGl6YXRpb24gcGhhc2VgXG4gICAgICApO1xuICAgICAgZXh0cmFjdGVkQm94ZXMucHVzaChleHRyYWN0ZWREYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZXh0cmFjdGVkQm94ZXMsIGhhc05leHRCYXRjaDogYXBpT3V0cHV0Lmhhc05leHRCYXRjaCB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBpbml0aWFsaXplIGV4dHJhY3RvciBkYXRhYmFzZSB3aXRoIGRhdGEgY3JlYXRlZCBiZWxvdyB0aGUgaW5pdGlhbCBoZWlnaHRcbiAgICogaWdub3JlIGluaXRpYWxpemF0aW9uIGlmIHRoaXMgZmVhdHVyZSBpcyBvZmZcbiAgICogdHJ5IHRvIGdldCBkYXRhIG11bHRpcGxlIHRpbWVzIHRvIHBhc3MgYWNjaWRlbnRhbCBuZXR3b3JrIHByb2JsZW1zXG4gICAqIEBwYXJhbSBpbml0aWFsQmxvY2tcbiAgICovXG4gIGluaXRpYWxpemVCb3hlcyA9IGFzeW5jIChpbml0aWFsQmxvY2s6IEJsb2NrSW5mbykgPT4ge1xuICAgIGxldCB0cmlhbCA9IDE7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBJbml0aWFsaXppbmcgJHt0aGlzLmdldElkKCl9IHN0YXJ0ZWQsIHJlbW92aW5nIGFsbCBleGlzdGluZyBkYXRhYFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5yZW1vdmVBbGxEYXRhKHRoaXMuZ2V0SWQoKSk7XG5cbiAgICAgIGxldCBoYXNOZXh0QmF0Y2ggPSB0cnVlO1xuICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICB3aGlsZSAoaGFzTmV4dEJhdGNoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2hEYXRhV2l0aE9mZnNldExpbWl0KFxuICAgICAgICAgICAgaW5pdGlhbEJsb2NrLmhlaWdodCxcbiAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgIEFQSV9MSU1JVFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgIGBJbnNlcnRpbmcgJHtcbiAgICAgICAgICAgICAgZGF0YS5leHRyYWN0ZWRCb3hlcy5sZW5ndGhcbiAgICAgICAgICAgIH0gbmV3IGV4dHJhY3RlZCBkYXRhIGluICR7dGhpcy5nZXRJZCgpfSBpbml0aWFsaXphdGlvbmBcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGluc2VydFN1Y2Nlc3MgPSBhd2FpdCB0aGlzLmFjdGlvbnMuaW5zZXJ0Qm94ZXMoXG4gICAgICAgICAgICBkYXRhLmV4dHJhY3RlZEJveGVzLFxuICAgICAgICAgICAgdGhpcy5nZXRJZCgpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoIWluc2VydFN1Y2Nlc3MpIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHN0b3JlIGV4dHJhY3RlZCBkYXRhJyk7XG5cbiAgICAgICAgICBoYXNOZXh0QmF0Y2ggPSBkYXRhLmhhc05leHRCYXRjaDtcbiAgICAgICAgICBvZmZzZXQgKz0gQVBJX0xJTUlUO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgICAgIGBJbml0aWFsaXphdGlvbiBmb3IgJHt0aGlzLmdldElkKCl9IGZhaWxlZCB3aXRoIGVycm9yIDoke2V9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHRyaWFsID09IFJFVFJJQUxfQ09VTlQpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgYEluaXRpYWxpemF0aW9uIGZvciAke3RoaXMuZ2V0SWQoKX0gZmFpbGVkIGFmdGVyICR7UkVUUklBTF9DT1VOVH0gcmV0cmlhbGBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgdHJpYWwgKz0gMTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFRyeWluZyBhZ2FpbiB0byBpbml0aWFsaXplICR7dGhpcy5nZXRJZCgpfSB3aXRoIHRyaWFsIHN0ZXAgJHt0cmlhbH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci5pbmZvKGBJbml0aWFsaXphdGlvbiBmb3IgJHt0aGlzLmdldElkKCl9IGlzIHR1cm5lZCBvZmZgKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RJbml0aWFsaXphYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2VyZ28vaW5pdGlhbGl6YWJsZS9BYnN0cmFjdEluaXRpYWxpemFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxVQUFVLE1BQU0sMkJBQTJCLENBQUM7QUFHbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUlqRSxNQUFNLE9BQWdCLGtDQUVwQixTQUFRLHFCQUFvQztJQUNsQyxVQUFVLENBQVU7SUFHOUI7Ozs7T0FJRztJQUNILFlBQVksVUFBVSxHQUFHLElBQUksRUFBRSxNQUF1QjtRQUNwRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBb0JEOzs7O09BSUc7SUFDSCx3QkFBd0IsR0FBRyxLQUFLLEVBQzlCLGFBQXFCLEVBQ3JCLE1BQWMsRUFDZCxLQUFhLEVBSVosRUFBRTtRQUNILE1BQU0sY0FBYyxHQUF5QixFQUFFLENBQUM7UUFDaEQsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXBFLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUMxQyxDQUFDLEdBQVksRUFBRSxFQUFFLENBQ2YsR0FBRyxDQUFDLGVBQWUsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FDNUQsQ0FBQztRQUNGLEtBQUssTUFBTSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE9B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TSxDQUFDLElBQUksQ0FDZCw4QkFBOEIsSUFBSSxDQUFDLEtBQUssRUFBRSxvQkFBb0IsS0FBSyxFQUFFLENBQ3RFLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixJQUFJLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgSnNvbkJpZ0ludCBmcm9tICdAcm9zZW4tYnJpZGdlL2pzb24tYmlnaW50JztcblxuaW1wb3J0IHsgRXJnb0JveCwgRXJnb0V4dHJhY3RlZERhdGEgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFQSV9MSU1JVCwgUkVUUklBTF9DT1VOVCB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBBYnN0cmFjdEVyZ29FeHRyYWN0b3IgfSBmcm9tICcuLi9BYnN0cmFjdEVyZ29FeHRyYWN0b3InO1xuaW1wb3J0IHsgQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvckFjdGlvbiB9IGZyb20gJy4vQWJzdHJhY3RJbml0aWFsaXphYmxlQWN0aW9uJztcbmltcG9ydCB7IEJsb2NrSW5mbyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RJbml0aWFsaXphYmxlRXJnb0V4dHJhY3RvcjxcbiAgRXh0cmFjdGVkRGF0YSBleHRlbmRzIEVyZ29FeHRyYWN0ZWREYXRhXG4+IGV4dGVuZHMgQWJzdHJhY3RFcmdvRXh0cmFjdG9yPEV4dHJhY3RlZERhdGE+IHtcbiAgcHJvdGVjdGVkIGluaXRpYWxpemU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBhYnN0cmFjdCBhY3Rpb25zOiBBYnN0cmFjdEluaXRpYWxpemFibGVFcmdvRXh0cmFjdG9yQWN0aW9uPEV4dHJhY3RlZERhdGE+O1xuXG4gIC8qKlxuICAgKiBjcmVhdGUgYW4gaW5pdGlhbGl6YWJsZSBlcmdvIGV4dHJhY3RvclxuICAgKiBAcGFyYW0gaW5pdGlhbGl6ZSBpZ25vcmUgdGhlIGluaXRpYWxpemF0aW9uIHN0ZXAgaWYgaXRzIGZhbHNlXG4gICAqIEBwYXJhbSBsb2dnZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKGluaXRpYWxpemUgPSB0cnVlLCBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlcikge1xuICAgIHN1cGVyKGxvZ2dlcik7XG4gICAgdGhpcy5pbml0aWFsaXplID0gaW5pdGlhbGl6ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm4gaW5pdCByZXF1aXJlZCBib3hlcyB3aXRoIG9mZnNldCBsaW1pdFxuICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAqIEBwYXJhbSBsaW1pdFxuICAgKiBAcmV0dXJuIGJveGVzIGluIGJhdGNoXG4gICAqL1xuICBhYnN0cmFjdCBnZXRCb3hlc1dpdGhPZmZzZXRMaW1pdDogKFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIGxpbWl0OiBudW1iZXJcbiAgKSA9PiBQcm9taXNlPHsgYm94ZXM6IEVyZ29Cb3hbXTsgaGFzTmV4dEJhdGNoOiBib29sZWFuIH0+O1xuXG4gIC8qKlxuICAgKiByZXR1cm4gYmxvY2sgaW5mb3JtYXRpb24gb2Ygc3BlY2lmaWVkIHR4XG4gICAqIEBwYXJhbSB0eElkXG4gICAqIEByZXR1cm4gYmxvY2sgaW5mb1xuICAgKi9cbiAgYWJzdHJhY3QgZ2V0VHhCbG9jazogKHR4SWQ6IHN0cmluZykgPT4gUHJvbWlzZTxCbG9ja0luZm8+O1xuXG4gIC8qKlxuICAgKiByZXR1cm4gYWxsIHJlbGF0ZWQgZGF0YSBiZWxvdyB0aGUgaW5pdGlhbCBoZWlnaHQgKGluY2x1ZGluZyB0aGUgaW5pdCBoZWlnaHQpXG4gICAqIEBwYXJhbSBpbml0aWFsSGVpZ2h0XG4gICAqIEByZXR1cm4gZXh0cmFjdGVkIGRhdGEgaW4gYmF0Y2hcbiAgICovXG4gIGZldGNoRGF0YVdpdGhPZmZzZXRMaW1pdCA9IGFzeW5jIChcbiAgICBpbml0aWFsSGVpZ2h0OiBudW1iZXIsXG4gICAgb2Zmc2V0OiBudW1iZXIsXG4gICAgbGltaXQ6IG51bWJlclxuICApOiBQcm9taXNlPHtcbiAgICBleHRyYWN0ZWRCb3hlczogQXJyYXk8RXh0cmFjdGVkRGF0YT47XG4gICAgaGFzTmV4dEJhdGNoOiBib29sZWFuO1xuICB9PiA9PiB7XG4gICAgY29uc3QgZXh0cmFjdGVkQm94ZXM6IEFycmF5PEV4dHJhY3RlZERhdGE+ID0gW107XG4gICAgY29uc3QgYXBpT3V0cHV0ID0gYXdhaXQgdGhpcy5nZXRCb3hlc1dpdGhPZmZzZXRMaW1pdChvZmZzZXQsIGxpbWl0KTtcblxuICAgIGNvbnN0IGZpbHRlcmVkQm94ZXMgPSBhcGlPdXRwdXQuYm94ZXMuZmlsdGVyKFxuICAgICAgKGJveDogRXJnb0JveCkgPT5cbiAgICAgICAgYm94LmluY2x1c2lvbkhlaWdodCA8PSBpbml0aWFsSGVpZ2h0ICYmIHRoaXMuaGFzRGF0YShib3gpXG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IGJveCBvZiBmaWx0ZXJlZEJveGVzKSB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5leHRyYWN0Qm94RGF0YShib3gsIGJveC5ibG9ja0lkLCBib3guaW5jbHVzaW9uSGVpZ2h0KTtcbiAgICAgIGlmICghZGF0YSkgY29udGludWU7XG4gICAgICBjb25zdCBzcGVudCA9IGJveC5zcGVudEhlaWdodCAmJiBib3guc3BlbnRIZWlnaHQgPD0gaW5pdGlhbEhlaWdodDtcbiAgICAgIGlmIChzcGVudClcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYEJveCB3aXRoIGlkICR7Ym94LmJveElkfSBzcGVudCBhdCBibG9jayAke0pzb25CaWdJbnQuc3RyaW5naWZ5KFxuICAgICAgICAgICAgYm94LmJsb2NrSWRcbiAgICAgICAgICApfSBiZWxsb3cgdGhlIGluaXRpYWwgaGVpZ2h0YFxuICAgICAgICApO1xuICAgICAgY29uc3QgZXh0cmFjdGVkRGF0YSA9IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgc3BlbmRCbG9jazogc3BlbnQgPyBib3guc3BlbnRCbG9ja0lkIDogdW5kZWZpbmVkLFxuICAgICAgICBzcGVuZEhlaWdodDogc3BlbnQgPyBib3guc3BlbnRIZWlnaHQgOiB1bmRlZmluZWQsXG4gICAgICB9IGFzIEV4dHJhY3RlZERhdGE7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYEV4dHJhY3RlZCBkYXRhICR7SnNvbkJpZ0ludC5zdHJpbmdpZnkoZXh0cmFjdGVkRGF0YSl9IGZyb20gYm94ICR7XG4gICAgICAgICAgYm94LmJveElkXG4gICAgICAgIH0gaW4gaW5pdGlhbGl6YXRpb24gcGhhc2VgXG4gICAgICApO1xuICAgICAgZXh0cmFjdGVkQm94ZXMucHVzaChleHRyYWN0ZWREYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgZXh0cmFjdGVkQm94ZXMsIGhhc05leHRCYXRjaDogYXBpT3V0cHV0Lmhhc05leHRCYXRjaCB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBpbml0aWFsaXplIGV4dHJhY3RvciBkYXRhYmFzZSB3aXRoIGRhdGEgY3JlYXRlZCBiZWxvdyB0aGUgaW5pdGlhbCBoZWlnaHRcbiAgICogaWdub3JlIGluaXRpYWxpemF0aW9uIGlmIHRoaXMgZmVhdHVyZSBpcyBvZmZcbiAgICogdHJ5IHRvIGdldCBkYXRhIG11bHRpcGxlIHRpbWVzIHRvIHBhc3MgYWNjaWRlbnRhbCBuZXR3b3JrIHByb2JsZW1zXG4gICAqIEBwYXJhbSBpbml0aWFsQmxvY2tcbiAgICovXG4gIGluaXRpYWxpemVCb3hlcyA9IGFzeW5jIChpbml0aWFsQmxvY2s6IEJsb2NrSW5mbykgPT4ge1xuICAgIGxldCB0cmlhbCA9IDE7XG4gICAgaWYgKHRoaXMuaW5pdGlhbGl6ZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBJbml0aWFsaXppbmcgJHt0aGlzLmdldElkKCl9IHN0YXJ0ZWQsIHJlbW92aW5nIGFsbCBleGlzdGluZyBkYXRhYFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5yZW1vdmVBbGxEYXRhKHRoaXMuZ2V0SWQoKSk7XG5cbiAgICAgIGxldCBoYXNOZXh0QmF0Y2ggPSB0cnVlO1xuICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICB3aGlsZSAoaGFzTmV4dEJhdGNoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuZmV0Y2hEYXRhV2l0aE9mZnNldExpbWl0KFxuICAgICAgICAgICAgaW5pdGlhbEJsb2NrLmhlaWdodCxcbiAgICAgICAgICAgIG9mZnNldCxcbiAgICAgICAgICAgIEFQSV9MSU1JVFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgIGBJbnNlcnRpbmcgJHtcbiAgICAgICAgICAgICAgZGF0YS5leHRyYWN0ZWRCb3hlcy5sZW5ndGhcbiAgICAgICAgICAgIH0gbmV3IGV4dHJhY3RlZCBkYXRhIGluICR7dGhpcy5nZXRJZCgpfSBpbml0aWFsaXphdGlvbmBcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGluc2VydFN1Y2Nlc3MgPSBhd2FpdCB0aGlzLmFjdGlvbnMuaW5zZXJ0Qm94ZXMoXG4gICAgICAgICAgICBkYXRhLmV4dHJhY3RlZEJveGVzLFxuICAgICAgICAgICAgdGhpcy5nZXRJZCgpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoIWluc2VydFN1Y2Nlc3MpIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IHN0b3JlIGV4dHJhY3RlZCBkYXRhJyk7XG5cbiAgICAgICAgICBoYXNOZXh0QmF0Y2ggPSBkYXRhLmhhc05leHRCYXRjaDtcbiAgICAgICAgICBvZmZzZXQgKz0gQVBJX0xJTUlUO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgICAgIGBJbml0aWFsaXphdGlvbiBmb3IgJHt0aGlzLmdldElkKCl9IGZhaWxlZCB3aXRoIGVycm9yIDoke2V9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHRyaWFsID09IFJFVFJJQUxfQ09VTlQpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgYEluaXRpYWxpemF0aW9uIGZvciAke3RoaXMuZ2V0SWQoKX0gZmFpbGVkIGFmdGVyICR7UkVUUklBTF9DT1VOVH0gcmV0cmlhbGBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgdHJpYWwgKz0gMTtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgICAgYFRyeWluZyBhZ2FpbiB0byBpbml0aWFsaXplICR7dGhpcy5nZXRJZCgpfSB3aXRoIHRyaWFsIHN0ZXAgJHt0cmlhbH1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci5pbmZvKGBJbml0aWFsaXphdGlvbiBmb3IgJHt0aGlzLmdldElkKCl9IGlzIHR1cm5lZCBvZmZgKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
@@ -32,7 +32,9 @@ export type OutputBox = {
32
32
  };
33
33
  export interface ErgoBox extends OutputBox {
34
34
  blockId: string;
35
- spentTransactionId?: string;
35
+ inclusionHeight: number;
36
+ spentBlockId?: string;
37
+ spentHeight?: number;
36
38
  }
37
39
  export type Transaction = {
38
40
  id: 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,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;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;CACtB"}
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;CACtB;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;CACtB"}
@@ -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+O1xuICBhZGRpdGlvbmFsUmVnaXN0ZXJzPzogQWRkaXRpb25hbFJlZ2lzdGVycztcbiAgdHJhbnNhY3Rpb25JZDogc3RyaW5nO1xuICBpbmRleDogYmlnaW50IHwgbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBFcmdvQm94IGV4dGVuZHMgT3V0cHV0Qm94IHtcbiAgYmxvY2tJZDogc3RyaW5nO1xuICBzcGVudFRyYW5zYWN0aW9uSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uID0ge1xuICBpZDogc3RyaW5nO1xuICBpbnB1dHM6IEFycmF5PElucHV0Qm94PjtcbiAgZGF0YUlucHV0czogQXJyYXk8RGF0YUlucHV0PjtcbiAgb3V0cHV0czogQXJyYXk8T3V0cHV0Qm94PjtcbiAgc2l6ZT86IGJpZ2ludDtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3BlbmRJbmZvIHtcbiAgYm94SWQ6IHN0cmluZztcbiAgdHhJZDogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVyZ29FeHRyYWN0ZWREYXRhIHtcbiAgYm94SWQ6IHN0cmluZztcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIGJsb2NrSWQ6IHN0cmluZztcbiAgc3BlbmRCbG9jaz86IHN0cmluZztcbiAgc3BlbmRIZWlnaHQ/OiBudW1iZXI7XG59XG4iXX0=
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9lcmdvL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksZUFHWDtBQUhELFdBQVksZUFBZTtJQUN6Qix3Q0FBcUIsQ0FBQTtJQUNyQixnQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLGVBQWUsS0FBZixlQUFlLFFBRzFCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gRXJnb05ldHdvcmtUeXBlIHtcbiAgRXhwbG9yZXIgPSAnZXhwbG9yZXInLFxuICBOb2RlID0gJ25vZGUnLFxufVxuXG5leHBvcnQgdHlwZSBJbnB1dEJveCA9IHtcbiAgYm94SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFJbnB1dCA9IHtcbiAgYm94SWQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIEFzc2V0ID0ge1xuICB0b2tlbklkOiBzdHJpbmc7XG4gIGFtb3VudDogYmlnaW50O1xufTtcblxuZXhwb3J0IHR5cGUgQWRkaXRpb25hbFJlZ2lzdGVycyA9IHtcbiAgUjQ/OiBzdHJpbmc7XG4gIFI1Pzogc3RyaW5nO1xuICBSNj86IHN0cmluZztcbiAgUjc/OiBzdHJpbmc7XG4gIFI4Pzogc3RyaW5nO1xuICBSOT86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIE91dHB1dEJveCA9IHtcbiAgYm94SWQ6IHN0cmluZztcbiAgdmFsdWU6IGJpZ2ludDtcbiAgZXJnb1RyZWU6IHN0cmluZztcbiAgY3JlYXRpb25IZWlnaHQ6IG51bWJlcjtcbiAgYXNzZXRzPzogQXJyYXk8QXNzZXQ+O1xuICBhZGRpdGlvbmFsUmVnaXN0ZXJzPzogQWRkaXRpb25hbFJlZ2lzdGVycztcbiAgdHJhbnNhY3Rpb25JZDogc3RyaW5nO1xuICBpbmRleDogYmlnaW50IHwgbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBFcmdvQm94IGV4dGVuZHMgT3V0cHV0Qm94IHtcbiAgYmxvY2tJZDogc3RyaW5nO1xuICBpbmNsdXNpb25IZWlnaHQ6IG51bWJlcjtcbiAgc3BlbnRCbG9ja0lkPzogc3RyaW5nO1xuICBzcGVudEhlaWdodD86IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb24gPSB7XG4gIGlkOiBzdHJpbmc7XG4gIGlucHV0czogQXJyYXk8SW5wdXRCb3g+O1xuICBkYXRhSW5wdXRzOiBBcnJheTxEYXRhSW5wdXQ+O1xuICBvdXRwdXRzOiBBcnJheTxPdXRwdXRCb3g+O1xuICBzaXplPzogYmlnaW50O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTcGVuZEluZm8ge1xuICBib3hJZDogc3RyaW5nO1xuICB0eElkOiBzdHJpbmc7XG4gIGluZGV4OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJnb0V4dHJhY3RlZERhdGEge1xuICBib3hJZDogc3RyaW5nO1xuICBoZWlnaHQ6IG51bWJlcjtcbiAgYmxvY2tJZDogc3RyaW5nO1xuICBzcGVuZEJsb2NrPzogc3RyaW5nO1xuICBzcGVuZEhlaWdodD86IG51bWJlcjtcbn1cbiJdfQ==
@@ -1,6 +1,7 @@
1
1
  import { BlockInfo } from '../../interfaces';
2
2
  import { ErgoBox } from '../interfaces';
3
3
  import { AbstractNetwork } from './AbstractNetwork';
4
+ import { V1 } from '@rosen-clients/ergo-explorer';
4
5
  export declare class ExplorerNetwork extends AbstractNetwork {
5
6
  private api;
6
7
  constructor(url: string);
@@ -9,6 +10,12 @@ export declare class ExplorerNetwork extends AbstractNetwork {
9
10
  * @param txId
10
11
  */
11
12
  getTxBlock: (txId: string) => Promise<BlockInfo>;
13
+ /**
14
+ * convert explorer api boxes to ErgoBox interface
15
+ * @param box
16
+ * @returns ErgoBox
17
+ */
18
+ convertBox: (box: V1.OutputInfo) => Promise<ErgoBox>;
12
19
  /**
13
20
  * use explorer api to return related boxes by specified address
14
21
  * @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;AAEpD,qBAAa,eAAgB,SAAQ,eAAe;IAClD,OAAO,CAAC,GAAG,CAAC;gBAEA,GAAG,EAAE,MAAM;IAKvB;;;OAGG;IACH,UAAU,SAAgB,MAAM,KAAG,QAAQ,SAAS,CAAC,CAMnD;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,CAQrD;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,CAQrD;CACH"}
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;AAElD,qBAAa,eAAgB,SAAQ,eAAe;IAClD,OAAO,CAAC,GAAG,CAAC;gBAEA,GAAG,EAAE,MAAM;IAKvB;;;OAGG;IACH,UAAU,SAAgB,MAAM,KAAG,QAAQ,SAAS,CAAC,CAMnD;IAEF;;;;OAIG;IACH,UAAU,QAAe,GAAG,UAAU,KAAG,QAAQ,OAAO,CAAC,CAkBvD;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;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"}
@@ -17,6 +17,30 @@ export class ExplorerNetwork extends AbstractNetwork {
17
17
  height: tx.inclusionHeight,
18
18
  };
19
19
  };
20
+ /**
21
+ * convert explorer api boxes to ErgoBox interface
22
+ * @param box
23
+ * @returns ErgoBox
24
+ */
25
+ convertBox = async (box) => {
26
+ const spendInfo = box.spentTransactionId
27
+ ? await this.getTxBlock(box.spentTransactionId)
28
+ : undefined;
29
+ return {
30
+ blockId: box.blockId,
31
+ boxId: box.boxId,
32
+ creationHeight: box.creationHeight,
33
+ inclusionHeight: box.settlementHeight,
34
+ ergoTree: box.ergoTree,
35
+ index: box.index,
36
+ transactionId: box.transactionId,
37
+ value: box.value,
38
+ additionalRegisters: box.additionalRegisters,
39
+ assets: box.assets,
40
+ spentHeight: spendInfo?.height,
41
+ spentBlockId: spendInfo?.hash,
42
+ };
43
+ };
20
44
  /**
21
45
  * use explorer api to return related boxes by specified address
22
46
  * @param address
@@ -31,7 +55,11 @@ export class ExplorerNetwork extends AbstractNetwork {
31
55
  });
32
56
  if (!boxes.items)
33
57
  throw new Error('Explorer BoxesByAddress api expected to have items');
34
- return { boxes: boxes.items, hasNextBatch: boxes.total > offset + limit };
58
+ const resultBoxes = [];
59
+ for (const box of boxes.items) {
60
+ resultBoxes.push(await this.convertBox(box));
61
+ }
62
+ return { boxes: resultBoxes, hasNextBatch: boxes.total > offset + limit };
35
63
  };
36
64
  /**
37
65
  * use explorer api to return related boxes by specified token id
@@ -47,7 +75,11 @@ export class ExplorerNetwork extends AbstractNetwork {
47
75
  });
48
76
  if (!boxes.items)
49
77
  throw new Error('Explorer BoxesByTokeId api expected to have items');
50
- return { boxes: boxes.items, hasNextBatch: boxes.total > offset + limit };
78
+ const resultBoxes = [];
79
+ for (const box of boxes.items) {
80
+ resultBoxes.push(await this.convertBox(box));
81
+ }
82
+ return { boxes: resultBoxes, hasNextBatch: boxes.total > offset + limit };
51
83
  };
52
84
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwbG9yZXJOZXR3b3JrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2VyZ28vbmV0d29yay9FeHBsb3Jlck5ldHdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyx5QkFBeUIsTUFBTSw4QkFBOEIsQ0FBQztBQUlyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZUFBZTtJQUMxQyxHQUFHLENBQUM7SUFFWixZQUFZLEdBQVc7UUFDckIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsR0FBRyxHQUFHLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBc0IsRUFBRTtRQUN0RCxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELE9BQU87WUFDTCxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU87WUFDaEIsTUFBTSxFQUFFLEVBQUUsQ0FBQyxlQUFlO1NBQzNCLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRjs7Ozs7O09BTUc7SUFDSCxpQkFBaUIsR0FBRyxLQUFLLEVBQ3ZCLE9BQWUsRUFDZixNQUFjLEVBQ2QsS0FBYSxFQUN5QyxFQUFFO1FBQ3hELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFO1lBQ2hFLE1BQU0sRUFBRSxNQUFNO1lBQ2QsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUs7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDeEUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUM1RSxDQUFDLENBQUM7SUFFRjs7Ozs7O09BTUc7SUFDSCxpQkFBaUIsR0FBRyxLQUFLLEVBQ3ZCLE9BQWUsRUFDZixNQUFjLEVBQ2QsS0FBYSxFQUN5QyxFQUFFO1FBQ3hELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQUMsT0FBTyxFQUFFO1lBQ2hFLE1BQU0sRUFBRSxNQUFNO1lBQ2QsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUs7WUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7UUFDdkUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUM1RSxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5IGZyb20gJ0Byb3Nlbi1jbGllbnRzL2VyZ28tZXhwbG9yZXInO1xuXG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVyZ29Cb3ggfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFic3RyYWN0TmV0d29yayB9IGZyb20gJy4vQWJzdHJhY3ROZXR3b3JrJztcblxuZXhwb3J0IGNsYXNzIEV4cGxvcmVyTmV0d29yayBleHRlbmRzIEFic3RyYWN0TmV0d29yayB7XG4gIHByaXZhdGUgYXBpO1xuXG4gIGNvbnN0cnVjdG9yKHVybDogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFwaSA9IGVyZ29FeHBsb3JlckNsaWVudEZhY3RvcnkodXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiByZXR1cm4gYmxvY2sgaW5mb3JtYXRpb24gb2Ygc3BlY2lmaWVkIHR4XG4gICAqIEBwYXJhbSB0eElkXG4gICAqL1xuICBnZXRUeEJsb2NrID0gYXN5bmMgKHR4SWQ6IHN0cmluZyk6IFByb21pc2U8QmxvY2tJbmZvPiA9PiB7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0aGlzLmFwaS52MS5nZXRBcGlWMVRyYW5zYWN0aW9uc1AxKHR4SWQpO1xuICAgIHJldHVybiB7XG4gICAgICBoYXNoOiB0eC5ibG9ja0lkLFxuICAgICAgaGVpZ2h0OiB0eC5pbmNsdXNpb25IZWlnaHQsXG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogdXNlIGV4cGxvcmVyIGFwaSB0byByZXR1cm4gcmVsYXRlZCBib3hlcyBieSBzcGVjaWZpZWQgYWRkcmVzc1xuICAgKiBAcGFyYW0gYWRkcmVzc1xuICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAqIEBwYXJhbSBsaW1pdFxuICAgKiBAcmV0dXJucyByZWxhdGVkIGJveGVzXG4gICAqL1xuICBnZXRCb3hlc0J5QWRkcmVzcyA9IGFzeW5jIChcbiAgICBhZGRyZXNzOiBzdHJpbmcsXG4gICAgb2Zmc2V0OiBudW1iZXIsXG4gICAgbGltaXQ6IG51bWJlclxuICApOiBQcm9taXNlPHsgYm94ZXM6IEVyZ29Cb3hbXTsgaGFzTmV4dEJhdGNoOiBib29sZWFuIH0+ID0+IHtcbiAgICBjb25zdCBib3hlcyA9IGF3YWl0IHRoaXMuYXBpLnYxLmdldEFwaVYxQm94ZXNCeWFkZHJlc3NQMShhZGRyZXNzLCB7XG4gICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgIGxpbWl0OiBsaW1pdCxcbiAgICB9KTtcbiAgICBpZiAoIWJveGVzLml0ZW1zKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBsb3JlciBCb3hlc0J5QWRkcmVzcyBhcGkgZXhwZWN0ZWQgdG8gaGF2ZSBpdGVtcycpO1xuICAgIHJldHVybiB7IGJveGVzOiBib3hlcy5pdGVtcywgaGFzTmV4dEJhdGNoOiBib3hlcy50b3RhbCA+IG9mZnNldCArIGxpbWl0IH07XG4gIH07XG5cbiAgLyoqXG4gICAqIHVzZSBleHBsb3JlciBhcGkgdG8gcmV0dXJuIHJlbGF0ZWQgYm94ZXMgYnkgc3BlY2lmaWVkIHRva2VuIGlkXG4gICAqIEBwYXJhbSB0b2tlbklkXG4gICAqIEBwYXJhbSBvZmZzZXRcbiAgICogQHBhcmFtIGxpbWl0XG4gICAqIEByZXR1cm5zIHJlbGF0ZWQgYm94ZXNcbiAgICovXG4gIGdldEJveGVzQnlUb2tlbklkID0gYXN5bmMgKFxuICAgIHRva2VuSWQ6IHN0cmluZyxcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyXG4gICk6IFByb21pc2U8eyBib3hlczogRXJnb0JveFtdOyBoYXNOZXh0QmF0Y2g6IGJvb2xlYW4gfT4gPT4ge1xuICAgIGNvbnN0IGJveGVzID0gYXdhaXQgdGhpcy5hcGkudjEuZ2V0QXBpVjFCb3hlc0J5dG9rZW5pZFAxKHRva2VuSWQsIHtcbiAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgbGltaXQ6IGxpbWl0LFxuICAgIH0pO1xuICAgIGlmICghYm94ZXMuaXRlbXMpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGxvcmVyIEJveGVzQnlUb2tlSWQgYXBpIGV4cGVjdGVkIHRvIGhhdmUgaXRlbXMnKTtcbiAgICByZXR1cm4geyBib3hlczogYm94ZXMuaXRlbXMsIGhhc05leHRCYXRjaDogYm94ZXMudG90YWwgPiBvZmZzZXQgKyBsaW1pdCB9O1xuICB9O1xufVxuIl19
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwbG9yZXJOZXR3b3JrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2VyZ28vbmV0d29yay9FeHBsb3Jlck5ldHdvcmsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyx5QkFBeUIsTUFBTSw4QkFBOEIsQ0FBQztBQUlyRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFHcEQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZUFBZTtJQUMxQyxHQUFHLENBQUM7SUFFWixZQUFZLEdBQVc7UUFDckIsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsR0FBRyxHQUFHLHlCQUF5QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLEdBQUcsS0FBSyxFQUFFLElBQVksRUFBc0IsRUFBRTtRQUN0RCxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELE9BQU87WUFDTCxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU87WUFDaEIsTUFBTSxFQUFFLEVBQUUsQ0FBQyxlQUFlO1NBQzNCLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRjs7OztPQUlHO0lBQ0gsVUFBVSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFvQixFQUFFO1FBQzFELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxrQkFBa0I7WUFDdEMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUM7WUFDL0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLE9BQU87WUFDTCxPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87WUFDcEIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1lBQ2hCLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYztZQUNsQyxlQUFlLEVBQUUsR0FBRyxDQUFDLGdCQUFnQjtZQUNyQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVE7WUFDdEIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1lBQ2hCLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYTtZQUNoQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7WUFDaEIsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLG1CQUFtQjtZQUM1QyxNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07WUFDbEIsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNO1lBQzlCLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSTtTQUM5QixDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUY7Ozs7OztPQU1HO0lBQ0gsaUJBQWlCLEdBQUcsS0FBSyxFQUN2QixPQUFlLEVBQ2YsTUFBYyxFQUNkLEtBQWEsRUFDeUMsRUFBRTtRQUN4RCxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sRUFBRTtZQUNoRSxNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sV0FBVyxHQUFtQixFQUFFLENBQUM7UUFDdkMsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDOUIsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLEtBQUssRUFBRSxDQUFDO0lBQzVFLENBQUMsQ0FBQztJQUVGOzs7Ozs7T0FNRztJQUNILGlCQUFpQixHQUFHLEtBQUssRUFDdkIsT0FBZSxFQUNmLE1BQWMsRUFDZCxLQUFhLEVBQ3lDLEVBQUU7UUFDeEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUU7WUFDaEUsTUFBTSxFQUFFLE1BQU07WUFDZCxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztRQUN2RSxNQUFNLFdBQVcsR0FBbUIsRUFBRSxDQUFDO1FBQ3ZDLEtBQUssTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlCLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUM1RSxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5IGZyb20gJ0Byb3Nlbi1jbGllbnRzL2VyZ28tZXhwbG9yZXInO1xuXG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVyZ29Cb3ggfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFic3RyYWN0TmV0d29yayB9IGZyb20gJy4vQWJzdHJhY3ROZXR3b3JrJztcbmltcG9ydCB7IFYxIH0gZnJvbSAnQHJvc2VuLWNsaWVudHMvZXJnby1leHBsb3Jlcic7XG5cbmV4cG9ydCBjbGFzcyBFeHBsb3Jlck5ldHdvcmsgZXh0ZW5kcyBBYnN0cmFjdE5ldHdvcmsge1xuICBwcml2YXRlIGFwaTtcblxuICBjb25zdHJ1Y3Rvcih1cmw6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hcGkgPSBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5KHVybCk7XG4gIH1cblxuICAvKipcbiAgICogcmV0dXJuIGJsb2NrIGluZm9ybWF0aW9uIG9mIHNwZWNpZmllZCB0eFxuICAgKiBAcGFyYW0gdHhJZFxuICAgKi9cbiAgZ2V0VHhCbG9jayA9IGFzeW5jICh0eElkOiBzdHJpbmcpOiBQcm9taXNlPEJsb2NrSW5mbz4gPT4ge1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdGhpcy5hcGkudjEuZ2V0QXBpVjFUcmFuc2FjdGlvbnNQMSh0eElkKTtcbiAgICByZXR1cm4ge1xuICAgICAgaGFzaDogdHguYmxvY2tJZCxcbiAgICAgIGhlaWdodDogdHguaW5jbHVzaW9uSGVpZ2h0LFxuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgZXhwbG9yZXIgYXBpIGJveGVzIHRvIEVyZ29Cb3ggaW50ZXJmYWNlXG4gICAqIEBwYXJhbSBib3hcbiAgICogQHJldHVybnMgRXJnb0JveFxuICAgKi9cbiAgY29udmVydEJveCA9IGFzeW5jIChib3g6IFYxLk91dHB1dEluZm8pOiBQcm9taXNlPEVyZ29Cb3g+ID0+IHtcbiAgICBjb25zdCBzcGVuZEluZm8gPSBib3guc3BlbnRUcmFuc2FjdGlvbklkXG4gICAgICA/IGF3YWl0IHRoaXMuZ2V0VHhCbG9jayhib3guc3BlbnRUcmFuc2FjdGlvbklkKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJsb2NrSWQ6IGJveC5ibG9ja0lkLFxuICAgICAgYm94SWQ6IGJveC5ib3hJZCxcbiAgICAgIGNyZWF0aW9uSGVpZ2h0OiBib3guY3JlYXRpb25IZWlnaHQsXG4gICAgICBpbmNsdXNpb25IZWlnaHQ6IGJveC5zZXR0bGVtZW50SGVpZ2h0LFxuICAgICAgZXJnb1RyZWU6IGJveC5lcmdvVHJlZSxcbiAgICAgIGluZGV4OiBib3guaW5kZXgsXG4gICAgICB0cmFuc2FjdGlvbklkOiBib3gudHJhbnNhY3Rpb25JZCxcbiAgICAgIHZhbHVlOiBib3gudmFsdWUsXG4gICAgICBhZGRpdGlvbmFsUmVnaXN0ZXJzOiBib3guYWRkaXRpb25hbFJlZ2lzdGVycyxcbiAgICAgIGFzc2V0czogYm94LmFzc2V0cyxcbiAgICAgIHNwZW50SGVpZ2h0OiBzcGVuZEluZm8/LmhlaWdodCxcbiAgICAgIHNwZW50QmxvY2tJZDogc3BlbmRJbmZvPy5oYXNoLFxuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIHVzZSBleHBsb3JlciBhcGkgdG8gcmV0dXJuIHJlbGF0ZWQgYm94ZXMgYnkgc3BlY2lmaWVkIGFkZHJlc3NcbiAgICogQHBhcmFtIGFkZHJlc3NcbiAgICogQHBhcmFtIG9mZnNldFxuICAgKiBAcGFyYW0gbGltaXRcbiAgICogQHJldHVybnMgcmVsYXRlZCBib3hlc1xuICAgKi9cbiAgZ2V0Qm94ZXNCeUFkZHJlc3MgPSBhc3luYyAoXG4gICAgYWRkcmVzczogc3RyaW5nLFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIGxpbWl0OiBudW1iZXJcbiAgKTogUHJvbWlzZTx7IGJveGVzOiBFcmdvQm94W107IGhhc05leHRCYXRjaDogYm9vbGVhbiB9PiA9PiB7XG4gICAgY29uc3QgYm94ZXMgPSBhd2FpdCB0aGlzLmFwaS52MS5nZXRBcGlWMUJveGVzQnlhZGRyZXNzUDEoYWRkcmVzcywge1xuICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICBsaW1pdDogbGltaXQsXG4gICAgfSk7XG4gICAgaWYgKCFib3hlcy5pdGVtcylcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwbG9yZXIgQm94ZXNCeUFkZHJlc3MgYXBpIGV4cGVjdGVkIHRvIGhhdmUgaXRlbXMnKTtcbiAgICBjb25zdCByZXN1bHRCb3hlczogQXJyYXk8RXJnb0JveD4gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGJveCBvZiBib3hlcy5pdGVtcykge1xuICAgICAgcmVzdWx0Qm94ZXMucHVzaChhd2FpdCB0aGlzLmNvbnZlcnRCb3goYm94KSk7XG4gICAgfVxuICAgIHJldHVybiB7IGJveGVzOiByZXN1bHRCb3hlcywgaGFzTmV4dEJhdGNoOiBib3hlcy50b3RhbCA+IG9mZnNldCArIGxpbWl0IH07XG4gIH07XG5cbiAgLyoqXG4gICAqIHVzZSBleHBsb3JlciBhcGkgdG8gcmV0dXJuIHJlbGF0ZWQgYm94ZXMgYnkgc3BlY2lmaWVkIHRva2VuIGlkXG4gICAqIEBwYXJhbSB0b2tlbklkXG4gICAqIEBwYXJhbSBvZmZzZXRcbiAgICogQHBhcmFtIGxpbWl0XG4gICAqIEByZXR1cm5zIHJlbGF0ZWQgYm94ZXNcbiAgICovXG4gIGdldEJveGVzQnlUb2tlbklkID0gYXN5bmMgKFxuICAgIHRva2VuSWQ6IHN0cmluZyxcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyXG4gICk6IFByb21pc2U8eyBib3hlczogRXJnb0JveFtdOyBoYXNOZXh0QmF0Y2g6IGJvb2xlYW4gfT4gPT4ge1xuICAgIGNvbnN0IGJveGVzID0gYXdhaXQgdGhpcy5hcGkudjEuZ2V0QXBpVjFCb3hlc0J5dG9rZW5pZFAxKHRva2VuSWQsIHtcbiAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgbGltaXQ6IGxpbWl0LFxuICAgIH0pO1xuICAgIGlmICghYm94ZXMuaXRlbXMpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGxvcmVyIEJveGVzQnlUb2tlSWQgYXBpIGV4cGVjdGVkIHRvIGhhdmUgaXRlbXMnKTtcbiAgICBjb25zdCByZXN1bHRCb3hlczogQXJyYXk8RXJnb0JveD4gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGJveCBvZiBib3hlcy5pdGVtcykge1xuICAgICAgcmVzdWx0Qm94ZXMucHVzaChhd2FpdCB0aGlzLmNvbnZlcnRCb3goYm94KSk7XG4gICAgfVxuICAgIHJldHVybiB7IGJveGVzOiByZXN1bHRCb3hlcywgaGFzTmV4dEJhdGNoOiBib3hlcy50b3RhbCA+IG9mZnNldCArIGxpbWl0IH07XG4gIH07XG59XG4iXX0=
@@ -6,7 +6,7 @@ export declare class NodeNetwork extends AbstractNetwork {
6
6
  private api;
7
7
  constructor(url: string);
8
8
  /**
9
- * covert node api boxes to ErgoBox interface
9
+ * convert node api boxes to ErgoBox interface
10
10
  * @param box
11
11
  * @returns ErgoBox
12
12
  */
@@ -1 +1 @@
1
- {"version":3,"file":"NodeNetwork.d.ts","sourceRoot":"","sources":["../../../lib/ergo/network/NodeNetwork.ts"],"names":[],"mappings":"AAAA,OAA8B,EAC5B,cAAc,EACf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,GAAG,CAAC;gBAEA,GAAG,EAAE,MAAM;IAKvB;;;;OAIG;IACH,gBAAgB,QAAe,cAAc,KAAG,QAAQ,OAAO,CAAC,CAc9D;IAEF;;;OAGG;IACH,UAAU,SAAgB,MAAM,KAAG,QAAQ,SAAS,CAAC,CAMnD;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,CAWrD;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,CAWrD;CACH"}
1
+ {"version":3,"file":"NodeNetwork.d.ts","sourceRoot":"","sources":["../../../lib/ergo/network/NodeNetwork.ts"],"names":[],"mappings":"AAAA,OAA8B,EAC5B,cAAc,EACf,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,GAAG,CAAC;gBAEA,GAAG,EAAE,MAAM;IAKvB;;;;OAIG;IACH,gBAAgB,QAAe,cAAc,KAAG,QAAQ,OAAO,CAAC,CAmB9D;IAEF;;;OAGG;IACH,UAAU,SAAgB,MAAM,KAAG,QAAQ,SAAS,CAAC,CAMnD;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,CAWrD;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,CAWrD;CACH"}
@@ -7,23 +7,28 @@ export class NodeNetwork extends AbstractNetwork {
7
7
  this.api = ergoNodeClientFactory(url);
8
8
  }
9
9
  /**
10
- * covert node api boxes to ErgoBox interface
10
+ * convert node api boxes to ErgoBox interface
11
11
  * @param box
12
12
  * @returns ErgoBox
13
13
  */
14
14
  convertToErgoBox = async (box) => {
15
15
  const tx = await this.getTxBlock(box.transactionId);
16
+ const spendInfo = box.spentTransactionId
17
+ ? await this.getTxBlock(box.spentTransactionId)
18
+ : undefined;
16
19
  return {
17
20
  transactionId: box.transactionId || '',
18
21
  index: box.index || 0,
19
22
  value: box.value || 0n,
20
23
  ergoTree: box.ergoTree || '',
21
24
  creationHeight: box.creationHeight || 0,
25
+ inclusionHeight: tx.height,
22
26
  assets: box.assets || [],
23
27
  additionalRegisters: box.additionalRegisters,
24
28
  boxId: box.boxId || '',
25
29
  blockId: tx.hash,
26
- spentTransactionId: box.spentTransactionId,
30
+ spentBlockId: spendInfo?.hash ?? undefined,
31
+ spentHeight: spendInfo?.height ?? undefined,
27
32
  };
28
33
  };
29
34
  /**
@@ -72,4 +77,4 @@ export class NodeNetwork extends AbstractNetwork {
72
77
  return { boxes: ergoBoxes, hasNextBatch: boxes.items.length > 0 };
73
78
  };
74
79
  }
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9kZU5ldHdvcmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXJnby9uZXR3b3JrL05vZGVOZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8scUJBRU4sTUFBTSwwQkFBMEIsQ0FBQztBQUlsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUFlO0lBQ3RDLEdBQUcsQ0FBQztJQUVaLFlBQVksR0FBVztRQUNyQixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxHQUFHLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsR0FBbUIsRUFBb0IsRUFBRTtRQUNqRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWMsQ0FBQyxDQUFDO1FBQ3JELE9BQU87WUFDTCxhQUFhLEVBQUUsR0FBRyxDQUFDLGFBQWEsSUFBSSxFQUFFO1lBQ3RDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUM7WUFDckIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUN0QixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFO1lBQzVCLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYyxJQUFJLENBQUM7WUFDdkMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRTtZQUN4QixtQkFBbUIsRUFBRSxHQUFHLENBQUMsbUJBQW1CO1lBQzVDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDdEIsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJO1lBQ2hCLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7U0FDM0MsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILFVBQVUsR0FBRyxLQUFLLEVBQUUsSUFBWSxFQUFzQixFQUFFO1FBQ3RELE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsT0FBTztZQUNMLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTztZQUNoQixNQUFNLEVBQUUsRUFBRSxDQUFDLGVBQWU7U0FDM0IsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGOzs7Ozs7T0FNRztJQUNILGlCQUFpQixHQUFHLEtBQUssRUFDdkIsT0FBZSxFQUNmLE1BQWMsRUFDZCxLQUFhLEVBQ3lDLEVBQUU7UUFDeEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRTtZQUN0RCxNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDakMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDakUsQ0FBQztRQUNGLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNwRSxDQUFDLENBQUM7SUFFRjs7Ozs7O09BTUc7SUFDSCxpQkFBaUIsR0FBRyxLQUFLLEVBQ3ZCLE9BQWUsRUFDZixNQUFjLEVBQ2QsS0FBYSxFQUN5QyxFQUFFO1FBQ3hELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUU7WUFDdEQsTUFBTSxFQUFFLE1BQU07WUFDZCxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztRQUN6RSxNQUFNLFNBQVMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2pDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ2pFLENBQUM7UUFDRixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDcEUsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXJnb05vZGVDbGllbnRGYWN0b3J5LCB7XG4gIEluZGV4ZWRFcmdvQm94LFxufSBmcm9tICdAcm9zZW4tY2xpZW50cy9lcmdvLW5vZGUnO1xuXG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVyZ29Cb3ggfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFic3RyYWN0TmV0d29yayB9IGZyb20gJy4vQWJzdHJhY3ROZXR3b3JrJztcblxuZXhwb3J0IGNsYXNzIE5vZGVOZXR3b3JrIGV4dGVuZHMgQWJzdHJhY3ROZXR3b3JrIHtcbiAgcHJpdmF0ZSBhcGk7XG5cbiAgY29uc3RydWN0b3IodXJsOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBpID0gZXJnb05vZGVDbGllbnRGYWN0b3J5KHVybCk7XG4gIH1cblxuICAvKipcbiAgICogY292ZXJ0IG5vZGUgYXBpIGJveGVzIHRvIEVyZ29Cb3ggaW50ZXJmYWNlXG4gICAqIEBwYXJhbSBib3hcbiAgICogQHJldHVybnMgRXJnb0JveFxuICAgKi9cbiAgY29udmVydFRvRXJnb0JveCA9IGFzeW5jIChib3g6IEluZGV4ZWRFcmdvQm94KTogUHJvbWlzZTxFcmdvQm94PiA9PiB7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0aGlzLmdldFR4QmxvY2soYm94LnRyYW5zYWN0aW9uSWQhKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHJhbnNhY3Rpb25JZDogYm94LnRyYW5zYWN0aW9uSWQgfHwgJycsXG4gICAgICBpbmRleDogYm94LmluZGV4IHx8IDAsXG4gICAgICB2YWx1ZTogYm94LnZhbHVlIHx8IDBuLFxuICAgICAgZXJnb1RyZWU6IGJveC5lcmdvVHJlZSB8fCAnJyxcbiAgICAgIGNyZWF0aW9uSGVpZ2h0OiBib3guY3JlYXRpb25IZWlnaHQgfHwgMCxcbiAgICAgIGFzc2V0czogYm94LmFzc2V0cyB8fCBbXSxcbiAgICAgIGFkZGl0aW9uYWxSZWdpc3RlcnM6IGJveC5hZGRpdGlvbmFsUmVnaXN0ZXJzLFxuICAgICAgYm94SWQ6IGJveC5ib3hJZCB8fCAnJyxcbiAgICAgIGJsb2NrSWQ6IHR4Lmhhc2gsXG4gICAgICBzcGVudFRyYW5zYWN0aW9uSWQ6IGJveC5zcGVudFRyYW5zYWN0aW9uSWQsXG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogcmV0dXJuIGJsb2NrIGluZm9ybWF0aW9uIG9mIHNwZWNpZmllZCB0eFxuICAgKiBAcGFyYW0gdHhJZFxuICAgKi9cbiAgZ2V0VHhCbG9jayA9IGFzeW5jICh0eElkOiBzdHJpbmcpOiBQcm9taXNlPEJsb2NrSW5mbz4gPT4ge1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdGhpcy5hcGkuZ2V0VHhCeUlkKHR4SWQpO1xuICAgIHJldHVybiB7XG4gICAgICBoYXNoOiB0eC5ibG9ja0lkLFxuICAgICAgaGVpZ2h0OiB0eC5pbmNsdXNpb25IZWlnaHQsXG4gICAgfTtcbiAgfTtcblxuICAvKipcbiAgICogdXNlIG5vZGUgYXBpIHRvIHJldHVybiByZWxhdGVkIGJveGVzIGJ5IHNwZWNpZmllZCBhZGRyZXNzXG4gICAqIEBwYXJhbSBhZGRyZXNzXG4gICAqIEBwYXJhbSBvZmZzZXRcbiAgICogQHBhcmFtIGxpbWl0XG4gICAqIEByZXR1cm5zIHJlbGF0ZWQgYm94ZXNcbiAgICovXG4gIGdldEJveGVzQnlBZGRyZXNzID0gYXN5bmMgKFxuICAgIGFkZHJlc3M6IHN0cmluZyxcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyXG4gICk6IFByb21pc2U8eyBib3hlczogRXJnb0JveFtdOyBoYXNOZXh0QmF0Y2g6IGJvb2xlYW4gfT4gPT4ge1xuICAgIGNvbnN0IGJveGVzID0gYXdhaXQgdGhpcy5hcGkuZ2V0Qm94ZXNCeUFkZHJlc3MoYWRkcmVzcywge1xuICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICBsaW1pdDogbGltaXQsXG4gICAgfSk7XG4gICAgaWYgKCFib3hlcy5pdGVtcylcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXJnbyBub2RlIEJveGVzQnlBZGRyZXNzIGFwaSBleHBlY3RlZCB0byBoYXZlIGl0ZW1zJyk7XG4gICAgY29uc3QgZXJnb0JveGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBib3hlcy5pdGVtcy5tYXAoYXN5bmMgKGJveCkgPT4gYXdhaXQgdGhpcy5jb252ZXJ0VG9FcmdvQm94KGJveCkpXG4gICAgKTtcbiAgICByZXR1cm4geyBib3hlczogZXJnb0JveGVzLCBoYXNOZXh0QmF0Y2g6IGJveGVzLml0ZW1zLmxlbmd0aCA+IDAgfTtcbiAgfTtcblxuICAvKipcbiAgICogdXNlIG5vZGUgYXBpIHRvIHJldHVybiByZWxhdGVkIGJveGVzIGJ5IHNwZWNpZmllZCB0b2tlbiBpZFxuICAgKiBAcGFyYW0gdG9rZW5JZFxuICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAqIEBwYXJhbSBsaW1pdFxuICAgKiBAcmV0dXJucyByZWxhdGVkIGJveGVzXG4gICAqL1xuICBnZXRCb3hlc0J5VG9rZW5JZCA9IGFzeW5jIChcbiAgICB0b2tlbklkOiBzdHJpbmcsXG4gICAgb2Zmc2V0OiBudW1iZXIsXG4gICAgbGltaXQ6IG51bWJlclxuICApOiBQcm9taXNlPHsgYm94ZXM6IEVyZ29Cb3hbXTsgaGFzTmV4dEJhdGNoOiBib29sZWFuIH0+ID0+IHtcbiAgICBjb25zdCBib3hlcyA9IGF3YWl0IHRoaXMuYXBpLmdldEJveGVzQnlUb2tlbklkKHRva2VuSWQsIHtcbiAgICAgIG9mZnNldDogb2Zmc2V0LFxuICAgICAgbGltaXQ6IGxpbWl0LFxuICAgIH0pO1xuICAgIGlmICghYm94ZXMuaXRlbXMpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VyZ28gbm9kZSBCb3hlc0J5VG9rZW5JZCBhcGkgZXhwZWN0ZWQgdG8gaGF2ZSBpdGVtcycpO1xuICAgIGNvbnN0IGVyZ29Cb3hlcyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgYm94ZXMuaXRlbXMubWFwKGFzeW5jIChib3gpID0+IGF3YWl0IHRoaXMuY29udmVydFRvRXJnb0JveChib3gpKVxuICAgICk7XG4gICAgcmV0dXJuIHsgYm94ZXM6IGVyZ29Cb3hlcywgaGFzTmV4dEJhdGNoOiBib3hlcy5pdGVtcy5sZW5ndGggPiAwIH07XG4gIH07XG59XG4iXX0=
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9kZU5ldHdvcmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXJnby9uZXR3b3JrL05vZGVOZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8scUJBRU4sTUFBTSwwQkFBMEIsQ0FBQztBQUlsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUFlO0lBQ3RDLEdBQUcsQ0FBQztJQUVaLFlBQVksR0FBVztRQUNyQixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxHQUFHLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsR0FBRyxLQUFLLEVBQUUsR0FBbUIsRUFBb0IsRUFBRTtRQUNqRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGFBQWMsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxrQkFBa0I7WUFDdEMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUM7WUFDL0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLE9BQU87WUFDTCxhQUFhLEVBQUUsR0FBRyxDQUFDLGFBQWEsSUFBSSxFQUFFO1lBQ3RDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUM7WUFDckIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUN0QixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFO1lBQzVCLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYyxJQUFJLENBQUM7WUFDdkMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxNQUFNO1lBQzFCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFDeEIsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLG1CQUFtQjtZQUM1QyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3RCLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSTtZQUNoQixZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksSUFBSSxTQUFTO1lBQzFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxJQUFJLFNBQVM7U0FDNUMsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILFVBQVUsR0FBRyxLQUFLLEVBQUUsSUFBWSxFQUFzQixFQUFFO1FBQ3RELE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUMsT0FBTztZQUNMLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTztZQUNoQixNQUFNLEVBQUUsRUFBRSxDQUFDLGVBQWU7U0FDM0IsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGOzs7Ozs7T0FNRztJQUNILGlCQUFpQixHQUFHLEtBQUssRUFDdkIsT0FBZSxFQUNmLE1BQWMsRUFDZCxLQUFhLEVBQ3lDLEVBQUU7UUFDeEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRTtZQUN0RCxNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDakMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDakUsQ0FBQztRQUNGLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNwRSxDQUFDLENBQUM7SUFFRjs7Ozs7O09BTUc7SUFDSCxpQkFBaUIsR0FBRyxLQUFLLEVBQ3ZCLE9BQWUsRUFDZixNQUFjLEVBQ2QsS0FBYSxFQUN5QyxFQUFFO1FBQ3hELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUU7WUFDdEQsTUFBTSxFQUFFLE1BQU07WUFDZCxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztRQUN6RSxNQUFNLFNBQVMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2pDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ2pFLENBQUM7UUFDRixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDcEUsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXJnb05vZGVDbGllbnRGYWN0b3J5LCB7XG4gIEluZGV4ZWRFcmdvQm94LFxufSBmcm9tICdAcm9zZW4tY2xpZW50cy9lcmdvLW5vZGUnO1xuXG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEVyZ29Cb3ggfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFic3RyYWN0TmV0d29yayB9IGZyb20gJy4vQWJzdHJhY3ROZXR3b3JrJztcblxuZXhwb3J0IGNsYXNzIE5vZGVOZXR3b3JrIGV4dGVuZHMgQWJzdHJhY3ROZXR3b3JrIHtcbiAgcHJpdmF0ZSBhcGk7XG5cbiAgY29uc3RydWN0b3IodXJsOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBpID0gZXJnb05vZGVDbGllbnRGYWN0b3J5KHVybCk7XG4gIH1cblxuICAvKipcbiAgICogY29udmVydCBub2RlIGFwaSBib3hlcyB0byBFcmdvQm94IGludGVyZmFjZVxuICAgKiBAcGFyYW0gYm94XG4gICAqIEByZXR1cm5zIEVyZ29Cb3hcbiAgICovXG4gIGNvbnZlcnRUb0VyZ29Cb3ggPSBhc3luYyAoYm94OiBJbmRleGVkRXJnb0JveCk6IFByb21pc2U8RXJnb0JveD4gPT4ge1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdGhpcy5nZXRUeEJsb2NrKGJveC50cmFuc2FjdGlvbklkISk7XG4gICAgY29uc3Qgc3BlbmRJbmZvID0gYm94LnNwZW50VHJhbnNhY3Rpb25JZFxuICAgICAgPyBhd2FpdCB0aGlzLmdldFR4QmxvY2soYm94LnNwZW50VHJhbnNhY3Rpb25JZClcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiB7XG4gICAgICB0cmFuc2FjdGlvbklkOiBib3gudHJhbnNhY3Rpb25JZCB8fCAnJyxcbiAgICAgIGluZGV4OiBib3guaW5kZXggfHwgMCxcbiAgICAgIHZhbHVlOiBib3gudmFsdWUgfHwgMG4sXG4gICAgICBlcmdvVHJlZTogYm94LmVyZ29UcmVlIHx8ICcnLFxuICAgICAgY3JlYXRpb25IZWlnaHQ6IGJveC5jcmVhdGlvbkhlaWdodCB8fCAwLFxuICAgICAgaW5jbHVzaW9uSGVpZ2h0OiB0eC5oZWlnaHQsXG4gICAgICBhc3NldHM6IGJveC5hc3NldHMgfHwgW10sXG4gICAgICBhZGRpdGlvbmFsUmVnaXN0ZXJzOiBib3guYWRkaXRpb25hbFJlZ2lzdGVycyxcbiAgICAgIGJveElkOiBib3guYm94SWQgfHwgJycsXG4gICAgICBibG9ja0lkOiB0eC5oYXNoLFxuICAgICAgc3BlbnRCbG9ja0lkOiBzcGVuZEluZm8/Lmhhc2ggPz8gdW5kZWZpbmVkLFxuICAgICAgc3BlbnRIZWlnaHQ6IHNwZW5kSW5mbz8uaGVpZ2h0ID8/IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiByZXR1cm4gYmxvY2sgaW5mb3JtYXRpb24gb2Ygc3BlY2lmaWVkIHR4XG4gICAqIEBwYXJhbSB0eElkXG4gICAqL1xuICBnZXRUeEJsb2NrID0gYXN5bmMgKHR4SWQ6IHN0cmluZyk6IFByb21pc2U8QmxvY2tJbmZvPiA9PiB7XG4gICAgY29uc3QgdHggPSBhd2FpdCB0aGlzLmFwaS5nZXRUeEJ5SWQodHhJZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhhc2g6IHR4LmJsb2NrSWQsXG4gICAgICBoZWlnaHQ6IHR4LmluY2x1c2lvbkhlaWdodCxcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiB1c2Ugbm9kZSBhcGkgdG8gcmV0dXJuIHJlbGF0ZWQgYm94ZXMgYnkgc3BlY2lmaWVkIGFkZHJlc3NcbiAgICogQHBhcmFtIGFkZHJlc3NcbiAgICogQHBhcmFtIG9mZnNldFxuICAgKiBAcGFyYW0gbGltaXRcbiAgICogQHJldHVybnMgcmVsYXRlZCBib3hlc1xuICAgKi9cbiAgZ2V0Qm94ZXNCeUFkZHJlc3MgPSBhc3luYyAoXG4gICAgYWRkcmVzczogc3RyaW5nLFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIGxpbWl0OiBudW1iZXJcbiAgKTogUHJvbWlzZTx7IGJveGVzOiBFcmdvQm94W107IGhhc05leHRCYXRjaDogYm9vbGVhbiB9PiA9PiB7XG4gICAgY29uc3QgYm94ZXMgPSBhd2FpdCB0aGlzLmFwaS5nZXRCb3hlc0J5QWRkcmVzcyhhZGRyZXNzLCB7XG4gICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgIGxpbWl0OiBsaW1pdCxcbiAgICB9KTtcbiAgICBpZiAoIWJveGVzLml0ZW1zKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcmdvIG5vZGUgQm94ZXNCeUFkZHJlc3MgYXBpIGV4cGVjdGVkIHRvIGhhdmUgaXRlbXMnKTtcbiAgICBjb25zdCBlcmdvQm94ZXMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIGJveGVzLml0ZW1zLm1hcChhc3luYyAoYm94KSA9PiBhd2FpdCB0aGlzLmNvbnZlcnRUb0VyZ29Cb3goYm94KSlcbiAgICApO1xuICAgIHJldHVybiB7IGJveGVzOiBlcmdvQm94ZXMsIGhhc05leHRCYXRjaDogYm94ZXMuaXRlbXMubGVuZ3RoID4gMCB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiB1c2Ugbm9kZSBhcGkgdG8gcmV0dXJuIHJlbGF0ZWQgYm94ZXMgYnkgc3BlY2lmaWVkIHRva2VuIGlkXG4gICAqIEBwYXJhbSB0b2tlbklkXG4gICAqIEBwYXJhbSBvZmZzZXRcbiAgICogQHBhcmFtIGxpbWl0XG4gICAqIEByZXR1cm5zIHJlbGF0ZWQgYm94ZXNcbiAgICovXG4gIGdldEJveGVzQnlUb2tlbklkID0gYXN5bmMgKFxuICAgIHRva2VuSWQ6IHN0cmluZyxcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyXG4gICk6IFByb21pc2U8eyBib3hlczogRXJnb0JveFtdOyBoYXNOZXh0QmF0Y2g6IGJvb2xlYW4gfT4gPT4ge1xuICAgIGNvbnN0IGJveGVzID0gYXdhaXQgdGhpcy5hcGkuZ2V0Qm94ZXNCeVRva2VuSWQodG9rZW5JZCwge1xuICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICBsaW1pdDogbGltaXQsXG4gICAgfSk7XG4gICAgaWYgKCFib3hlcy5pdGVtcylcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXJnbyBub2RlIEJveGVzQnlUb2tlbklkIGFwaSBleHBlY3RlZCB0byBoYXZlIGl0ZW1zJyk7XG4gICAgY29uc3QgZXJnb0JveGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBib3hlcy5pdGVtcy5tYXAoYXN5bmMgKGJveCkgPT4gYXdhaXQgdGhpcy5jb252ZXJ0VG9FcmdvQm94KGJveCkpXG4gICAgKTtcbiAgICByZXR1cm4geyBib3hlczogZXJnb0JveGVzLCBoYXNOZXh0QmF0Y2g6IGJveGVzLml0ZW1zLmxlbmd0aCA+IDAgfTtcbiAgfTtcbn1cbiJdfQ==
@@ -58,28 +58,23 @@ export abstract class AbstractInitializableErgoExtractor<
58
58
  const apiOutput = await this.getBoxesWithOffsetLimit(offset, limit);
59
59
 
60
60
  const filteredBoxes = apiOutput.boxes.filter(
61
- (box: ErgoBox) => box.creationHeight <= initialHeight && this.hasData(box)
61
+ (box: ErgoBox) =>
62
+ box.inclusionHeight <= initialHeight && this.hasData(box)
62
63
  );
63
64
  for (const box of filteredBoxes) {
64
- const data = this.extractBoxData(box, box.blockId, box.creationHeight);
65
+ const data = this.extractBoxData(box, box.blockId, box.inclusionHeight);
65
66
  if (!data) continue;
66
- let spendBlock, spendHeight;
67
- if (box.spentTransactionId) {
68
- const block = await this.getTxBlock(box.spentTransactionId);
69
- if (block.height <= initialHeight) {
70
- this.logger.debug(
71
- `Box with id ${box.boxId} spent at block ${JsonBigInt.stringify(
72
- block
73
- )} bellow the initial height`
74
- );
75
- spendBlock = block.hash;
76
- spendHeight = block.height;
77
- }
78
- }
67
+ const spent = box.spentHeight && box.spentHeight <= initialHeight;
68
+ if (spent)
69
+ this.logger.debug(
70
+ `Box with id ${box.boxId} spent at block ${JsonBigInt.stringify(
71
+ box.blockId
72
+ )} bellow the initial height`
73
+ );
79
74
  const extractedData = {
80
75
  ...data,
81
- spendBlock,
82
- spendHeight,
76
+ spendBlock: spent ? box.spentBlockId : undefined,
77
+ spendHeight: spent ? box.spentHeight : undefined,
83
78
  } as ExtractedData;
84
79
  this.logger.debug(
85
80
  `Extracted data ${JsonBigInt.stringify(extractedData)} from box ${
@@ -38,7 +38,9 @@ export type OutputBox = {
38
38
 
39
39
  export interface ErgoBox extends OutputBox {
40
40
  blockId: string;
41
- spentTransactionId?: string;
41
+ inclusionHeight: number;
42
+ spentBlockId?: string;
43
+ spentHeight?: number;
42
44
  }
43
45
 
44
46
  export type Transaction = {
@@ -3,6 +3,7 @@ import ergoExplorerClientFactory from '@rosen-clients/ergo-explorer';
3
3
  import { BlockInfo } from '../../interfaces';
4
4
  import { ErgoBox } from '../interfaces';
5
5
  import { AbstractNetwork } from './AbstractNetwork';
6
+ import { V1 } from '@rosen-clients/ergo-explorer';
6
7
 
7
8
  export class ExplorerNetwork extends AbstractNetwork {
8
9
  private api;
@@ -24,6 +25,31 @@ export class ExplorerNetwork extends AbstractNetwork {
24
25
  };
25
26
  };
26
27
 
28
+ /**
29
+ * convert explorer api boxes to ErgoBox interface
30
+ * @param box
31
+ * @returns ErgoBox
32
+ */
33
+ convertBox = async (box: V1.OutputInfo): Promise<ErgoBox> => {
34
+ const spendInfo = box.spentTransactionId
35
+ ? await this.getTxBlock(box.spentTransactionId)
36
+ : undefined;
37
+ return {
38
+ blockId: box.blockId,
39
+ boxId: box.boxId,
40
+ creationHeight: box.creationHeight,
41
+ inclusionHeight: box.settlementHeight,
42
+ ergoTree: box.ergoTree,
43
+ index: box.index,
44
+ transactionId: box.transactionId,
45
+ value: box.value,
46
+ additionalRegisters: box.additionalRegisters,
47
+ assets: box.assets,
48
+ spentHeight: spendInfo?.height,
49
+ spentBlockId: spendInfo?.hash,
50
+ };
51
+ };
52
+
27
53
  /**
28
54
  * use explorer api to return related boxes by specified address
29
55
  * @param address
@@ -42,7 +68,11 @@ export class ExplorerNetwork extends AbstractNetwork {
42
68
  });
43
69
  if (!boxes.items)
44
70
  throw new Error('Explorer BoxesByAddress api expected to have items');
45
- return { boxes: boxes.items, hasNextBatch: boxes.total > offset + limit };
71
+ const resultBoxes: Array<ErgoBox> = [];
72
+ for (const box of boxes.items) {
73
+ resultBoxes.push(await this.convertBox(box));
74
+ }
75
+ return { boxes: resultBoxes, hasNextBatch: boxes.total > offset + limit };
46
76
  };
47
77
 
48
78
  /**
@@ -63,6 +93,10 @@ export class ExplorerNetwork extends AbstractNetwork {
63
93
  });
64
94
  if (!boxes.items)
65
95
  throw new Error('Explorer BoxesByTokeId api expected to have items');
66
- return { boxes: boxes.items, hasNextBatch: boxes.total > offset + limit };
96
+ const resultBoxes: Array<ErgoBox> = [];
97
+ for (const box of boxes.items) {
98
+ resultBoxes.push(await this.convertBox(box));
99
+ }
100
+ return { boxes: resultBoxes, hasNextBatch: boxes.total > offset + limit };
67
101
  };
68
102
  }
@@ -15,23 +15,28 @@ export class NodeNetwork extends AbstractNetwork {
15
15
  }
16
16
 
17
17
  /**
18
- * covert node api boxes to ErgoBox interface
18
+ * convert node api boxes to ErgoBox interface
19
19
  * @param box
20
20
  * @returns ErgoBox
21
21
  */
22
22
  convertToErgoBox = async (box: IndexedErgoBox): Promise<ErgoBox> => {
23
23
  const tx = await this.getTxBlock(box.transactionId!);
24
+ const spendInfo = box.spentTransactionId
25
+ ? await this.getTxBlock(box.spentTransactionId)
26
+ : undefined;
24
27
  return {
25
28
  transactionId: box.transactionId || '',
26
29
  index: box.index || 0,
27
30
  value: box.value || 0n,
28
31
  ergoTree: box.ergoTree || '',
29
32
  creationHeight: box.creationHeight || 0,
33
+ inclusionHeight: tx.height,
30
34
  assets: box.assets || [],
31
35
  additionalRegisters: box.additionalRegisters,
32
36
  boxId: box.boxId || '',
33
37
  blockId: tx.hash,
34
- spentTransactionId: box.spentTransactionId,
38
+ spentBlockId: spendInfo?.hash ?? undefined,
39
+ spentHeight: spendInfo?.height ?? undefined,
35
40
  };
36
41
  };
37
42
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rosen-bridge/abstract-extractor",
3
- "version": "0.1.2-7aba94c9",
3
+ "version": "0.1.2",
4
4
  "description": "Rosen Bridge extractor interfaces to work with scanner",
5
5
  "repository": "",
6
6
  "license": "GPL-3.0",
@@ -13,11 +13,10 @@ describe('AbstractInitializableErgoExtractorAction', () => {
13
13
  * @scenario
14
14
  * - mock extractor
15
15
  * - mock `hasData` to return true for an unspent box in the init block
16
- * - spy `extractData` and `getTxBlock`
16
+ * - spy `extractData`
17
17
  * - run test (call `fetchDataWithOffsetLimit`)
18
18
  * @expected
19
19
  * - to call `extractData` with unspent box information
20
- * - not to call `getTxBlock` since its unspent
21
20
  * - return one extracted element (the unspent box) and api total
22
21
  */
23
22
  it('should extract unspent box data in the initial block', async () => {
@@ -35,7 +34,7 @@ describe('AbstractInitializableErgoExtractorAction', () => {
35
34
  expect(extractSpy).toHaveBeenCalledWith(
36
35
  unspentBox,
37
36
  unspentBox.blockId,
38
- unspentBox.creationHeight
37
+ unspentBox.inclusionHeight
39
38
  );
40
39
  expect(txBlockSpy).not.toHaveBeenCalled();
41
40
  expect(data).toEqual({
@@ -52,11 +51,10 @@ describe('AbstractInitializableErgoExtractorAction', () => {
52
51
  * @scenario
53
52
  * - mock extractor
54
53
  * - mock `hasData` to return true for all boxes
55
- * - spy `extractData` and `getTxBlock`
54
+ * - spy `extractData`
56
55
  * - run test (call `fetchDataWithOffsetLimit`)
57
56
  * @expected
58
57
  * - to call `extractData` with spent box information
59
- * - to call `getTxBlock` since box is spent
60
58
  * - return one extracted element created bellow the initial block
61
59
  */
62
60
  it('should filter boxes created below the initial block', async () => {
@@ -65,17 +63,12 @@ describe('AbstractInitializableErgoExtractorAction', () => {
65
63
  extractor.hasData = (box: OutputBox) => true;
66
64
  const extractSpy = vitest.fn().mockReturnValue(extractedData);
67
65
  extractor.extractBoxData = extractSpy;
68
- const txBlockSpy = vitest
69
- .fn()
70
- .mockResolvedValue({ id: 'hash', height: 1252690 });
71
- extractor.getTxBlock = txBlockSpy;
72
- const data = await extractor.fetchDataWithOffsetLimit(1252680, 0, 2);
66
+ const data = await extractor.fetchDataWithOffsetLimit(1252678, 0, 2);
73
67
  expect(extractSpy).toHaveBeenCalledWith(
74
68
  spentBox,
75
69
  spentBox.blockId,
76
- spentBox.creationHeight
70
+ spentBox.inclusionHeight
77
71
  );
78
- expect(txBlockSpy).toHaveBeenCalledWith(spentBox.spentTransactionId);
79
72
  expect(data).toEqual({
80
73
  extractedBoxes: [
81
74
  { ...extractedData, spendBlock: undefined, spendHeight: undefined },
@@ -90,11 +83,10 @@ describe('AbstractInitializableErgoExtractorAction', () => {
90
83
  * @scenario
91
84
  * - mock extractor
92
85
  * - mock `hasData` to return true for an spent box created below the init block
93
- * - spy `extractData` and `getTxBlock`
86
+ * - spy `extractData`
94
87
  * - run test (call `fetchDataWithOffsetLimit`)
95
88
  * @expected
96
89
  * - to call `extractData` with spent box information
97
- * - to call `getTxBlock` since box is spent
98
90
  * - return one extracted element with spending information
99
91
  */
100
92
  it('should extract spent box data created and spent below the initial block', async () => {
@@ -106,20 +98,20 @@ describe('AbstractInitializableErgoExtractorAction', () => {
106
98
  };
107
99
  const extractSpy = vitest.fn().mockReturnValue(extractedData);
108
100
  extractor.extractBoxData = extractSpy;
109
- const txBlockSpy = vitest
110
- .fn()
111
- .mockResolvedValue({ hash: 'hash', height: 1252680 });
112
- extractor.getTxBlock = txBlockSpy;
113
101
  const data = await extractor.fetchDataWithOffsetLimit(1252681, 0, 2);
114
102
  expect(extractSpy).toHaveBeenCalledWith(
115
103
  spentBox,
116
104
  spentBox.blockId,
117
- spentBox.creationHeight
105
+ spentBox.inclusionHeight
118
106
  );
119
- expect(txBlockSpy).toHaveBeenCalledWith(spentBox.spentTransactionId);
120
107
  expect(data).toEqual({
121
108
  extractedBoxes: [
122
- { ...extractedData, spendBlock: 'hash', spendHeight: 1252680 },
109
+ {
110
+ ...extractedData,
111
+ spendBlock:
112
+ '9239ebca7b3b10701895e491a2213da4e07a37abc413d05434a5fab04993a19d',
113
+ spendHeight: 1252680,
114
+ },
123
115
  ],
124
116
  hasNextBatch: true,
125
117
  });
@@ -131,11 +123,10 @@ describe('AbstractInitializableErgoExtractorAction', () => {
131
123
  * @scenario
132
124
  * - mock extractor
133
125
  * - mock `hasData` to return true for an spent box created below the init block
134
- * - spy `extractData` and `getTxBlock`
126
+ * - spy `extractData`
135
127
  * - run test (call `fetchDataWithOffsetLimit`)
136
128
  * @expected
137
129
  * - to call `extractData` with spent box information
138
- * - to call `getTxBlock` since box is spent
139
130
  * - return one extracted element without spending information
140
131
  */
141
132
  it('should extract spent box data created below the initial block but spent later', async () => {
@@ -147,17 +138,12 @@ describe('AbstractInitializableErgoExtractorAction', () => {
147
138
  };
148
139
  const extractSpy = vitest.fn().mockReturnValue(extractedData);
149
140
  extractor.extractBoxData = extractSpy;
150
- const txBlockSpy = vitest
151
- .fn()
152
- .mockResolvedValue({ hash: 'hash', height: 1252690 });
153
- extractor.getTxBlock = txBlockSpy;
154
- const data = await extractor.fetchDataWithOffsetLimit(1252681, 0, 2);
141
+ const data = await extractor.fetchDataWithOffsetLimit(1252678, 0, 2);
155
142
  expect(extractSpy).toHaveBeenCalledWith(
156
143
  spentBox,
157
144
  spentBox.blockId,
158
- spentBox.creationHeight
145
+ spentBox.inclusionHeight
159
146
  );
160
- expect(txBlockSpy).toHaveBeenCalledWith(spentBox.spentTransactionId);
161
147
  expect(data).toEqual({
162
148
  extractedBoxes: [
163
149
  { ...extractedData, spendBlock: undefined, spendHeight: undefined },