@rosen-bridge/collateral 0.1.0-ad18b004

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ # @rosen-bridge/collateral
2
+
3
+ ## 0.1.0-ad18b004
4
+
5
+ ### Minor Changes
6
+
7
+ - Initial new package for collateral box
package/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # @rosen-bridge/collateral
2
+
3
+ ## Table of contents
4
+
5
+ - [Introduction](#introduction)
6
+ - [Installation](#installation)
7
+
8
+ ## Introduction
9
+
10
+ provides a structured and reusable way to work with collateral boxes.
11
+ The first class is responsible for reading and exposing all collateral box properties in a clear and consistent manner. The second class is a builder that constructs the final collateral box based on those properties.
12
+
13
+ ## Installation
14
+
15
+ npm:
16
+
17
+ ```sh
18
+ npm i @rosen-bridge/collateral
19
+ ```
20
+
21
+ yarn:
22
+
23
+ ```sh
24
+ yarn add @rosen-bridge/collateral
25
+ ```
@@ -0,0 +1,41 @@
1
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
+ import * as ergoLib from 'ergo-lib-wasm-nodejs';
3
+ import { CollateralBoxBuilder } from './collateralBuilder';
4
+ export declare class CollateralBox {
5
+ protected box: ergoLib.ErgoBox;
6
+ private logger;
7
+ private readonly wid;
8
+ private readonly rsnAmount;
9
+ constructor(box: ergoLib.ErgoBox, logger?: AbstractLogger);
10
+ /**
11
+ * Creates an instance of CollateralBoxBuilder using current instance's properties
12
+ *
13
+ * @return {CollateralBoxBuilder}
14
+ */
15
+ toBuilder: () => CollateralBoxBuilder;
16
+ /**
17
+ * @returns ErgoTree of the box
18
+ */
19
+ getErgoTree: () => string;
20
+ /**
21
+ * @returns Owner WID extracted from R4
22
+ */
23
+ getOwnerWid: () => Uint8Array;
24
+ /**
25
+ * @returns RSN amount stored in R5
26
+ */
27
+ getRsnAmount: () => bigint;
28
+ /**
29
+ * @returns X-AWC NFT token ID
30
+ */
31
+ getAwcNftId: () => string;
32
+ /**
33
+ * @returns RSN token ID
34
+ */
35
+ getRsnId: () => string;
36
+ /**
37
+ * @returns Amount of RSN tokens locked in the box as collateral
38
+ */
39
+ getLockedRsnAmount: () => bigint;
40
+ }
41
+ //# sourceMappingURL=collateral.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collateral.d.ts","sourceRoot":"","sources":["../lib/collateral.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,qBAAa,aAAa;IAKtB,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO;IAC9B,OAAO,CAAC,MAAM;IALhB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAGvB,GAAG,EAAE,OAAO,CAAC,OAAO,EACtB,MAAM,GAAE,cAAkC;IA4BpD;;;;OAIG;IACH,SAAS,QAAO,oBAAoB,CAUlC;IAEF;;OAEG;IACH,WAAW,QAAO,MAAM,CAEtB;IACF;;OAEG;IACH,WAAW,QAAO,UAAU,CAE1B;IAEF;;OAEG;IACH,YAAY,QAAO,MAAM,CAEvB;IACF;;OAEG;IACH,WAAW,QAAO,MAAM,CAEtB;IAEF;;OAEG;IACH,QAAQ,QAAO,MAAM,CAEnB;IACF;;OAEG;IACH,kBAAkB,QAAO,MAAM,CAG7B;CACH"}
@@ -0,0 +1,78 @@
1
+ import { DummyLogger } from '@rosen-bridge/abstract-logger';
2
+ import { CollateralBoxBuilder } from './collateralBuilder';
3
+ export class CollateralBox {
4
+ box;
5
+ logger;
6
+ wid;
7
+ rsnAmount;
8
+ constructor(box, logger = new DummyLogger()) {
9
+ this.box = box;
10
+ this.logger = logger;
11
+ try {
12
+ const widReg = this.box.register_value(4);
13
+ if (!widReg) {
14
+ throw new Error('missing R4 register');
15
+ }
16
+ this.wid = widReg.to_byte_array();
17
+ const rsnAmount = this.box.register_value(5);
18
+ if (!rsnAmount) {
19
+ throw new Error('missing R5 register');
20
+ }
21
+ this.rsnAmount = BigInt(rsnAmount.to_i64().to_str());
22
+ if (this.box.tokens().len() < 1) {
23
+ throw new Error('expected at least 1 token (X-AWC NFT)');
24
+ }
25
+ this.logger.debug(`CollateralBox created wid=[${Buffer.from(this.wid).toString('hex')}] Rsn=[${this.rsnAmount}]`);
26
+ }
27
+ catch (e) {
28
+ throw Error(`Failed to create CollateralBox: ${e}`);
29
+ }
30
+ }
31
+ /**
32
+ * Creates an instance of CollateralBoxBuilder using current instance's properties
33
+ *
34
+ * @return {CollateralBoxBuilder}
35
+ */
36
+ toBuilder = () => {
37
+ return new CollateralBoxBuilder(this.getErgoTree(), this.getAwcNftId(), this.getRsnAmount(), this.getRsnId(), this.getLockedRsnAmount(), this.wid, this.logger);
38
+ };
39
+ /**
40
+ * @returns ErgoTree of the box
41
+ */
42
+ getErgoTree = () => {
43
+ return this.box.ergo_tree().to_base16_bytes();
44
+ };
45
+ /**
46
+ * @returns Owner WID extracted from R4
47
+ */
48
+ getOwnerWid = () => {
49
+ return this.wid;
50
+ };
51
+ /**
52
+ * @returns RSN amount stored in R5
53
+ */
54
+ getRsnAmount = () => {
55
+ return this.rsnAmount;
56
+ };
57
+ /**
58
+ * @returns X-AWC NFT token ID
59
+ */
60
+ getAwcNftId = () => {
61
+ return this.box.tokens().get(0).id().to_str();
62
+ };
63
+ /**
64
+ * @returns RSN token ID
65
+ */
66
+ getRsnId = () => {
67
+ return this.box.tokens().get(1).id().to_str();
68
+ };
69
+ /**
70
+ * @returns Amount of RSN tokens locked in the box as collateral
71
+ */
72
+ getLockedRsnAmount = () => {
73
+ if (this.box.tokens().len() < 2)
74
+ return 0n;
75
+ return BigInt(this.box.tokens().get(1).amount().as_i64().to_str());
76
+ };
77
+ }
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGF0ZXJhbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9jb2xsYXRlcmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFNUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFM0QsTUFBTSxPQUFPLGFBQWE7SUFLWjtJQUNGO0lBTE8sR0FBRyxDQUFhO0lBQ2hCLFNBQVMsQ0FBUztJQUVuQyxZQUNZLEdBQW9CLEVBQ3RCLFNBQXlCLElBQUksV0FBVyxFQUFFO1FBRHhDLFFBQUcsR0FBSCxHQUFHLENBQWlCO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQW9DO1FBRWxELElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDWixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDekMsQ0FBQztZQUNELElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBRWxDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDZixNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFDekMsQ0FBQztZQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBRXJELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiw4QkFBOEIsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUMxRCxLQUFLLENBQ04sVUFBVSxJQUFJLENBQUMsU0FBUyxHQUFHLENBQzdCLENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sS0FBSyxDQUFDLG1DQUFtQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILFNBQVMsR0FBRyxHQUF5QixFQUFFO1FBQ3JDLE9BQU8sSUFBSSxvQkFBb0IsQ0FDN0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUNsQixJQUFJLENBQUMsV0FBVyxFQUFFLEVBQ2xCLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFDbkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUNmLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUN6QixJQUFJLENBQUMsR0FBRyxFQUNSLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsV0FBVyxHQUFHLEdBQVcsRUFBRTtRQUN6QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDaEQsQ0FBQyxDQUFDO0lBQ0Y7O09BRUc7SUFDSCxXQUFXLEdBQUcsR0FBZSxFQUFFO1FBQzdCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILFlBQVksR0FBRyxHQUFXLEVBQUU7UUFDMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUMsQ0FBQztJQUNGOztPQUVHO0lBQ0gsV0FBVyxHQUFHLEdBQVcsRUFBRTtRQUN6QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hELENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsUUFBUSxHQUFHLEdBQVcsRUFBRTtRQUN0QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hELENBQUMsQ0FBQztJQUNGOztPQUVHO0lBQ0gsa0JBQWtCLEdBQUcsR0FBVyxFQUFFO1FBQ2hDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDM0MsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNyRSxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCAqIGFzIGVyZ29MaWIgZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuaW1wb3J0IHsgQ29sbGF0ZXJhbEJveEJ1aWxkZXIgfSBmcm9tICcuL2NvbGxhdGVyYWxCdWlsZGVyJztcblxuZXhwb3J0IGNsYXNzIENvbGxhdGVyYWxCb3gge1xuICBwcml2YXRlIHJlYWRvbmx5IHdpZDogVWludDhBcnJheTtcbiAgcHJpdmF0ZSByZWFkb25seSByc25BbW91bnQ6IGJpZ2ludDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgYm94OiBlcmdvTGliLkVyZ29Cb3gsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyID0gbmV3IER1bW15TG9nZ2VyKCksXG4gICkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB3aWRSZWcgPSB0aGlzLmJveC5yZWdpc3Rlcl92YWx1ZSg0KTtcbiAgICAgIGlmICghd2lkUmVnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBSNCByZWdpc3RlcicpO1xuICAgICAgfVxuICAgICAgdGhpcy53aWQgPSB3aWRSZWcudG9fYnl0ZV9hcnJheSgpO1xuXG4gICAgICBjb25zdCByc25BbW91bnQgPSB0aGlzLmJveC5yZWdpc3Rlcl92YWx1ZSg1KTtcbiAgICAgIGlmICghcnNuQW1vdW50KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyBSNSByZWdpc3RlcicpO1xuICAgICAgfVxuICAgICAgdGhpcy5yc25BbW91bnQgPSBCaWdJbnQocnNuQW1vdW50LnRvX2k2NCgpLnRvX3N0cigpKTtcblxuICAgICAgaWYgKHRoaXMuYm94LnRva2VucygpLmxlbigpIDwgMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4cGVjdGVkIGF0IGxlYXN0IDEgdG9rZW4gKFgtQVdDIE5GVCknKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBDb2xsYXRlcmFsQm94IGNyZWF0ZWQgd2lkPVske0J1ZmZlci5mcm9tKHRoaXMud2lkKS50b1N0cmluZyhcbiAgICAgICAgICAnaGV4JyxcbiAgICAgICAgKX1dIFJzbj1bJHt0aGlzLnJzbkFtb3VudH1dYCxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgRXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgQ29sbGF0ZXJhbEJveDogJHtlfWApO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBDb2xsYXRlcmFsQm94QnVpbGRlciB1c2luZyBjdXJyZW50IGluc3RhbmNlJ3MgcHJvcGVydGllc1xuICAgKlxuICAgKiBAcmV0dXJuIHtDb2xsYXRlcmFsQm94QnVpbGRlcn1cbiAgICovXG4gIHRvQnVpbGRlciA9ICgpOiBDb2xsYXRlcmFsQm94QnVpbGRlciA9PiB7XG4gICAgcmV0dXJuIG5ldyBDb2xsYXRlcmFsQm94QnVpbGRlcihcbiAgICAgIHRoaXMuZ2V0RXJnb1RyZWUoKSxcbiAgICAgIHRoaXMuZ2V0QXdjTmZ0SWQoKSxcbiAgICAgIHRoaXMuZ2V0UnNuQW1vdW50KCksXG4gICAgICB0aGlzLmdldFJzbklkKCksXG4gICAgICB0aGlzLmdldExvY2tlZFJzbkFtb3VudCgpLFxuICAgICAgdGhpcy53aWQsXG4gICAgICB0aGlzLmxvZ2dlcixcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBFcmdvVHJlZSBvZiB0aGUgYm94XG4gICAqL1xuICBnZXRFcmdvVHJlZSA9ICgpOiBzdHJpbmcgPT4ge1xuICAgIHJldHVybiB0aGlzLmJveC5lcmdvX3RyZWUoKS50b19iYXNlMTZfYnl0ZXMoKTtcbiAgfTtcbiAgLyoqXG4gICAqIEByZXR1cm5zIE93bmVyIFdJRCBleHRyYWN0ZWQgZnJvbSBSNFxuICAgKi9cbiAgZ2V0T3duZXJXaWQgPSAoKTogVWludDhBcnJheSA9PiB7XG4gICAgcmV0dXJuIHRoaXMud2lkO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBSU04gYW1vdW50IHN0b3JlZCBpbiBSNVxuICAgKi9cbiAgZ2V0UnNuQW1vdW50ID0gKCk6IGJpZ2ludCA9PiB7XG4gICAgcmV0dXJuIHRoaXMucnNuQW1vdW50O1xuICB9O1xuICAvKipcbiAgICogQHJldHVybnMgWC1BV0MgTkZUIHRva2VuIElEXG4gICAqL1xuICBnZXRBd2NOZnRJZCA9ICgpOiBzdHJpbmcgPT4ge1xuICAgIHJldHVybiB0aGlzLmJveC50b2tlbnMoKS5nZXQoMCkuaWQoKS50b19zdHIoKTtcbiAgfTtcblxuICAvKipcbiAgICogQHJldHVybnMgUlNOIHRva2VuIElEXG4gICAqL1xuICBnZXRSc25JZCA9ICgpOiBzdHJpbmcgPT4ge1xuICAgIHJldHVybiB0aGlzLmJveC50b2tlbnMoKS5nZXQoMSkuaWQoKS50b19zdHIoKTtcbiAgfTtcbiAgLyoqXG4gICAqIEByZXR1cm5zIEFtb3VudCBvZiBSU04gdG9rZW5zIGxvY2tlZCBpbiB0aGUgYm94IGFzIGNvbGxhdGVyYWxcbiAgICovXG4gIGdldExvY2tlZFJzbkFtb3VudCA9ICgpOiBiaWdpbnQgPT4ge1xuICAgIGlmICh0aGlzLmJveC50b2tlbnMoKS5sZW4oKSA8IDIpIHJldHVybiAwbjtcbiAgICByZXR1cm4gQmlnSW50KHRoaXMuYm94LnRva2VucygpLmdldCgxKS5hbW91bnQoKS5hc19pNjQoKS50b19zdHIoKSk7XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,35 @@
1
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
+ import * as ergoLib from 'ergo-lib-wasm-nodejs';
3
+ export declare class CollateralBoxBuilder {
4
+ private collateralErgoTree;
5
+ private awcNftId;
6
+ private rsnAmount;
7
+ private lockedRsnTokenId;
8
+ private lockedRsnTokenAmount;
9
+ private wid;
10
+ private logger;
11
+ private value?;
12
+ private height?;
13
+ constructor(collateralErgoTree: string, awcNftId: string, rsnAmount: bigint, lockedRsnTokenId: string, lockedRsnTokenAmount: bigint | undefined, wid: Uint8Array, logger?: AbstractLogger);
14
+ /**
15
+ * increase a watcher permits (increase locked RSN amount)
16
+ * @param {bigint} amount rwt amount to allocate to the new watcher
17
+ * @returns Updated CollateralBoxBuilder instance
18
+ */
19
+ lockRsn: (amount: bigint) => CollateralBoxBuilder;
20
+ /**
21
+ * Return permits a watcher (decrease locked RSN amount)
22
+ * @param {bigint} amount rwt amount to return from the watcher
23
+ * @returns Updated CollateralBoxBuilder instance
24
+ */
25
+ unlockRsn: (amount: bigint) => CollateralBoxBuilder;
26
+ /**
27
+ * creates a CollateralBox from the properties of this CollateralBoxBuilder instance
28
+ *
29
+ * @return {ergoLib.ErgoBoxCandidate}
30
+ */
31
+ build: () => ergoLib.ErgoBoxCandidate;
32
+ setValue: (value: bigint) => void;
33
+ setHeight: (height: number) => void;
34
+ }
35
+ //# sourceMappingURL=collateralBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collateralBuilder.d.ts","sourceRoot":"","sources":["../lib/collateralBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,qBAAa,oBAAoB;IAK7B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,MAAM;IAVhB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,MAAM,CAAC,CAAS;gBAGd,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,EACxB,oBAAoB,EAAE,MAAM,YAAK,EACjC,GAAG,EAAE,UAAU,EACf,MAAM,GAAE,cAAkC;IAGpD;;;;OAIG;IACH,OAAO,GAAI,QAAQ,MAAM,KAAG,oBAAoB,CAQ9C;IAEF;;;;OAIG;IACH,SAAS,GAAI,QAAQ,MAAM,KAAG,oBAAoB,CAahD;IAEF;;;;OAIG;IACH,KAAK,QAAO,OAAO,CAAC,gBAAgB,CAsClC;IAEF,QAAQ,GAAI,OAAO,MAAM,UAGvB;IAEF,SAAS,GAAI,QAAQ,MAAM,UAGzB;CACH"}
@@ -0,0 +1,75 @@
1
+ import { DummyLogger } from '@rosen-bridge/abstract-logger';
2
+ import * as ergoLib from 'ergo-lib-wasm-nodejs';
3
+ export class CollateralBoxBuilder {
4
+ collateralErgoTree;
5
+ awcNftId;
6
+ rsnAmount;
7
+ lockedRsnTokenId;
8
+ lockedRsnTokenAmount;
9
+ wid;
10
+ logger;
11
+ value;
12
+ height;
13
+ constructor(collateralErgoTree, awcNftId, rsnAmount, lockedRsnTokenId, lockedRsnTokenAmount = 0n, wid, logger = new DummyLogger()) {
14
+ this.collateralErgoTree = collateralErgoTree;
15
+ this.awcNftId = awcNftId;
16
+ this.rsnAmount = rsnAmount;
17
+ this.lockedRsnTokenId = lockedRsnTokenId;
18
+ this.lockedRsnTokenAmount = lockedRsnTokenAmount;
19
+ this.wid = wid;
20
+ this.logger = logger;
21
+ }
22
+ /**
23
+ * increase a watcher permits (increase locked RSN amount)
24
+ * @param {bigint} amount rwt amount to allocate to the new watcher
25
+ * @returns Updated CollateralBoxBuilder instance
26
+ */
27
+ lockRsn = (amount) => {
28
+ if (amount <= 0n)
29
+ throw new Error('amount must be positive');
30
+ this.rsnAmount += amount;
31
+ this.logger.debug(`locked RSN increased by ${amount}, total=${this.rsnAmount}`);
32
+ return this;
33
+ };
34
+ /**
35
+ * Return permits a watcher (decrease locked RSN amount)
36
+ * @param {bigint} amount rwt amount to return from the watcher
37
+ * @returns Updated CollateralBoxBuilder instance
38
+ */
39
+ unlockRsn = (amount) => {
40
+ if (amount <= 0n)
41
+ throw new Error('amount must be positive');
42
+ if (this.rsnAmount < amount)
43
+ throw new Error(`locked RSN [${this.rsnAmount}] < unlock amount [${amount}]`);
44
+ this.rsnAmount -= amount;
45
+ this.logger.debug(`locked RSN decreased by ${amount}, total=${this.rsnAmount}`);
46
+ return this;
47
+ };
48
+ /**
49
+ * creates a CollateralBox from the properties of this CollateralBoxBuilder instance
50
+ *
51
+ * @return {ergoLib.ErgoBoxCandidate}
52
+ */
53
+ build = () => {
54
+ if (this.value === undefined || this.height === undefined) {
55
+ throw new Error(`value and height must be set before build`);
56
+ }
57
+ const boxBuilder = new ergoLib.ErgoBoxCandidateBuilder(ergoLib.BoxValue.from_i64(ergoLib.I64.from_str(this.value.toString())), ergoLib.Contract.new(ergoLib.ErgoTree.from_base16_bytes(this.collateralErgoTree)), this.height);
58
+ boxBuilder.set_register_value(4, ergoLib.Constant.from_byte_array(this.wid));
59
+ boxBuilder.set_register_value(5, ergoLib.Constant.from_i64(ergoLib.I64.from_str(this.rsnAmount.toString())));
60
+ boxBuilder.add_token(ergoLib.TokenId.from_str(this.awcNftId), ergoLib.TokenAmount.from_i64(ergoLib.I64.from_str('1')));
61
+ boxBuilder.add_token(ergoLib.TokenId.from_str(this.lockedRsnTokenId), ergoLib.TokenAmount.from_i64(ergoLib.I64.from_str(this.lockedRsnTokenAmount.toString())));
62
+ return boxBuilder.build();
63
+ };
64
+ setValue = (value) => {
65
+ if (value < 0n)
66
+ throw new Error('value cannot be negative');
67
+ this.value = value;
68
+ };
69
+ setHeight = (height) => {
70
+ if (height < 1)
71
+ throw new Error('height must be positive');
72
+ this.height = height;
73
+ };
74
+ }
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGF0ZXJhbEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvY29sbGF0ZXJhbEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM1RSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBRWhELE1BQU0sT0FBTyxvQkFBb0I7SUFLckI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFWRixLQUFLLENBQVU7SUFDZixNQUFNLENBQVU7SUFFeEIsWUFDVSxrQkFBMEIsRUFDMUIsUUFBZ0IsRUFDaEIsU0FBaUIsRUFDakIsZ0JBQXdCLEVBQ3hCLHVCQUErQixFQUFFLEVBQ2pDLEdBQWUsRUFDZixTQUF5QixJQUFJLFdBQVcsRUFBRTtRQU4xQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQVE7UUFDMUIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQUN4Qix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQWE7UUFDakMsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUNmLFdBQU0sR0FBTixNQUFNLENBQW9DO0lBQ2pELENBQUM7SUFFSjs7OztPQUlHO0lBQ0gsT0FBTyxHQUFHLENBQUMsTUFBYyxFQUF3QixFQUFFO1FBQ2pELElBQUksTUFBTSxJQUFJLEVBQUU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFN0QsSUFBSSxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsMkJBQTJCLE1BQU0sV0FBVyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQzdELENBQUM7UUFDRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztJQUVGOzs7O09BSUc7SUFD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b250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCAqIGFzIGVyZ29MaWIgZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuXG5leHBvcnQgY2xhc3MgQ29sbGF0ZXJhbEJveEJ1aWxkZXIge1xuICBwcml2YXRlIHZhbHVlPzogYmlnaW50O1xuICBwcml2YXRlIGhlaWdodD86IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNvbGxhdGVyYWxFcmdvVHJlZTogc3RyaW5nLFxuICAgIHByaXZhdGUgYXdjTmZ0SWQ6IHN0cmluZyxcbiAgICBwcml2YXRlIHJzbkFtb3VudDogYmlnaW50LFxuICAgIHByaXZhdGUgbG9ja2VkUnNuVG9rZW5JZDogc3RyaW5nLFxuICAgIHByaXZhdGUgbG9ja2VkUnNuVG9rZW5BbW91bnQ6IGJpZ2ludCA9IDBuLFxuICAgIHByaXZhdGUgd2lkOiBVaW50OEFycmF5LFxuICAgIHByaXZhdGUgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlciA9IG5ldyBEdW1teUxvZ2dlcigpLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIGluY3JlYXNlIGEgd2F0Y2hlciBwZXJtaXRzIChpbmNyZWFzZSBsb2NrZWQgUlNOIGFtb3VudClcbiAgICogQHBhcmFtIHtiaWdpbnR9IGFtb3VudCByd3QgYW1vdW50IHRvIGFsbG9jYXRlIHRvIHRoZSBuZXcgd2F0Y2hlclxuICAgKiBAcmV0dXJucyBVcGRhdGVkIENvbGxhdGVyYWxCb3hCdWlsZGVyIGluc3RhbmNlXG4gICAqL1xuICBsb2NrUnNuID0gKGFtb3VudDogYmlnaW50KTogQ29sbGF0ZXJhbEJveEJ1aWxkZXIgPT4ge1xuICAgIGlmIChhbW91bnQgPD0gMG4pIHRocm93IG5ldyBFcnJvcignYW1vdW50IG11c3QgYmUgcG9zaXRpdmUnKTtcblxuICAgIHRoaXMucnNuQW1vdW50ICs9IGFtb3VudDtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBsb2NrZWQgUlNOIGluY3JlYXNlZCBieSAke2Ftb3VudH0sIHRvdGFsPSR7dGhpcy5yc25BbW91bnR9YCxcbiAgICApO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gcGVybWl0cyBhIHdhdGNoZXIgKGRlY3JlYXNlIGxvY2tlZCBSU04gYW1vdW50KVxuICAgKiBAcGFyYW0ge2JpZ2ludH0gYW1vdW50IHJ3dCBhbW91bnQgdG8gcmV0dXJuIGZyb20gdGhlIHdhdGNoZXJcbiAgICogQHJldHVybnMgVXBkYXRlZCBDb2xsYXRlcmFsQm94QnVpbGRlciBpbnN0YW5jZVxuICAgKi9cbiAgdW5sb2NrUnNuID0gKGFtb3VudDogYmlnaW50KTogQ29sbGF0ZXJhbEJveEJ1aWxkZXIgPT4ge1xuICAgIGlmIChhbW91bnQgPD0gMG4pIHRocm93IG5ldyBFcnJvcignYW1vdW50IG11c3QgYmUgcG9zaXRpdmUnKTtcblxuICAgIGlmICh0aGlzLnJzbkFtb3VudCA8IGFtb3VudClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGxvY2tlZCBSU04gWyR7dGhpcy5yc25BbW91bnR9XSA8IHVubG9jayBhbW91bnQgWyR7YW1vdW50fV1gLFxuICAgICAgKTtcblxuICAgIHRoaXMucnNuQW1vdW50IC09IGFtb3VudDtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBsb2NrZWQgUlNOIGRlY3JlYXNlZCBieSAke2Ftb3VudH0sIHRvdGFsPSR7dGhpcy5yc25BbW91bnR9YCxcbiAgICApO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBjcmVhdGVzIGEgQ29sbGF0ZXJhbEJveCBmcm9tIHRoZSBwcm9wZXJ0aWVzIG9mIHRoaXMgQ29sbGF0ZXJhbEJveEJ1aWxkZXIgaW5zdGFuY2VcbiAgICpcbiAgICogQHJldHVybiB7ZXJnb0xpYi5FcmdvQm94Q2FuZGlkYXRlfVxuICAgKi9cbiAgYnVpbGQgPSAoKTogZXJnb0xpYi5FcmdvQm94Q2FuZGlkYXRlID0+IHtcbiAgICBpZiAodGhpcy52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuaGVpZ2h0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgdmFsdWUgYW5kIGhlaWdodCBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRgKTtcbiAgICB9XG5cbiAgICBjb25zdCBib3hCdWlsZGVyID0gbmV3IGVyZ29MaWIuRXJnb0JveENhbmRpZGF0ZUJ1aWxkZXIoXG4gICAgICBlcmdvTGliLkJveFZhbHVlLmZyb21faTY0KGVyZ29MaWIuSTY0LmZyb21fc3RyKHRoaXMudmFsdWUudG9TdHJpbmcoKSkpLFxuICAgICAgZXJnb0xpYi5Db250cmFjdC5uZXcoXG4gICAgICAgIGVyZ29MaWIuRXJnb1RyZWUuZnJvbV9iYXNlMTZfYnl0ZXModGhpcy5jb2xsYXRlcmFsRXJnb1RyZWUpLFxuICAgICAgKSxcbiAgICAgIHRoaXMuaGVpZ2h0LFxuICAgICk7XG5cbiAgICBib3hCdWlsZGVyLnNldF9yZWdpc3Rlcl92YWx1ZShcbiAgICAgIDQsXG4gICAgICBlcmdvTGliLkNvbnN0YW50LmZyb21fYnl0ZV9hcnJheSh0aGlzLndpZCksXG4gICAgKTtcblxuICAgIGJveEJ1aWxkZXIuc2V0X3JlZ2lzdGVyX3ZhbHVlKFxuICAgICAgNSxcbiAgICAgIGVyZ29MaWIuQ29uc3RhbnQuZnJvbV9pNjQoXG4gICAgICAgIGVyZ29MaWIuSTY0LmZyb21fc3RyKHRoaXMucnNuQW1vdW50LnRvU3RyaW5nKCkpLFxuICAgICAgKSxcbiAgICApO1xuXG4gICAgYm94QnVpbGRlci5hZGRfdG9rZW4oXG4gICAgICBlcmdvTGliLlRva2VuSWQuZnJvbV9zdHIodGhpcy5hd2NOZnRJZCksXG4gICAgICBlcmdvTGliLlRva2VuQW1vdW50LmZyb21faTY0KGVyZ29MaWIuSTY0LmZyb21fc3RyKCcxJykpLFxuICAgICk7XG5cbiAgICBib3hCdWlsZGVyLmFkZF90b2tlbihcbiAgICAgIGVyZ29MaWIuVG9rZW5JZC5mcm9tX3N0cih0aGlzLmxvY2tlZFJzblRva2VuSWQpLFxuICAgICAgZXJnb0xpYi5Ub2tlbkFtb3VudC5mcm9tX2k2NChcbiAgICAgICAgZXJnb0xpYi5JNjQuZnJvbV9zdHIodGhpcy5sb2NrZWRSc25Ub2tlbkFtb3VudC50b1N0cmluZygpKSxcbiAgICAgICksXG4gICAgKTtcblxuICAgIHJldHVybiBib3hCdWlsZGVyLmJ1aWxkKCk7XG4gIH07XG5cbiAgc2V0VmFsdWUgPSAodmFsdWU6IGJpZ2ludCkgPT4ge1xuICAgIGlmICh2YWx1ZSA8IDBuKSB0aHJvdyBuZXcgRXJyb3IoJ3ZhbHVlIGNhbm5vdCBiZSBuZWdhdGl2ZScpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfTtcblxuICBzZXRIZWlnaHQgPSAoaGVpZ2h0OiBudW1iZXIpID0+IHtcbiAgICBpZiAoaGVpZ2h0IDwgMSkgdGhyb3cgbmV3IEVycm9yKCdoZWlnaHQgbXVzdCBiZSBwb3NpdGl2ZScpO1xuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICB9O1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ export { CollateralBox } from './collateral';
2
+ export { CollateralBoxBuilder } from './collateralBuilder';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { CollateralBox } from './collateral';
2
+ export { CollateralBoxBuilder } from './collateralBuilder';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IENvbGxhdGVyYWxCb3ggfSBmcm9tICcuL2NvbGxhdGVyYWwnO1xuZXhwb3J0IHsgQ29sbGF0ZXJhbEJveEJ1aWxkZXIgfSBmcm9tICcuL2NvbGxhdGVyYWxCdWlsZGVyJztcbiJdfQ==
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@rosen-bridge/collateral",
3
+ "version": "0.1.0-ad18b004",
4
+ "description": "a package to manage collateral box",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/rosen-bridge/utils.git"
8
+ },
9
+ "license": "MIT",
10
+ "author": "Rosen Team",
11
+ "type": "module",
12
+ "main": "dist/index.js",
13
+ "types": "dist/index.d.ts",
14
+ "files": [
15
+ "dist",
16
+ "CHANGELOG.md"
17
+ ],
18
+ "scripts": {
19
+ "build": "tsc --build tsconfig.build.json",
20
+ "lint": "eslint --fix . && npm run prettify",
21
+ "lint:check": "eslint . && npm run prettify:check",
22
+ "prettify": "prettier --write . --ignore-path ../../../.gitignore",
23
+ "prettify:check": "prettier --check . --ignore-path ../../../.gitignore",
24
+ "test": "NODE_OPTIONS='--import tsx' vitest",
25
+ "coverage": "npm run test -- --run --coverage",
26
+ "release": "npm run clean && npm run build && npm publish --access public",
27
+ "type-check": "tsc --noEmit"
28
+ },
29
+ "engines": {
30
+ "node": ">=22.18.0",
31
+ "npm": "11.6.2"
32
+ },
33
+ "devDependencies": {
34
+ "@rosen-bridge/json-bigint": "^1.1.0",
35
+ "@vitest/coverage-istanbul": "^3.1.4",
36
+ "tsx": "^4.20.5",
37
+ "vitest": "^3.1.4"
38
+ },
39
+ "dependencies": {
40
+ "ergo-lib-wasm-nodejs": "^0.24.1",
41
+ "@rosen-bridge/abstract-logger": "^4.0.0"
42
+ }
43
+ }