@rosen-bridge/extended-minimum-fee 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1 @@
1
+ # @rosen-bridge/extended-minimum-fee
package/README.md ADDED
@@ -0,0 +1,41 @@
1
+ # @rosen-bridge/extended-minimum-fee
2
+
3
+ ## Table of contents
4
+
5
+ - [Introduction](#introduction)
6
+ - [Installation](#installation)
7
+ - [Usage](#usage)
8
+
9
+ ## Introduction
10
+
11
+ `@rosen-bridge/extended-minimum-fee` Typescript package to build and get minimum fee of the bridge for supported tokens from blockchain
12
+
13
+ ## Installation
14
+
15
+ npm:
16
+
17
+ ```sh
18
+ npm i @rosen-bridge/extended-minimum-fee
19
+ ```
20
+
21
+ yarn:
22
+
23
+ ```sh
24
+ yarn add @rosen-bridge/extended-minimum-fee
25
+ ```
26
+
27
+ ## Usage
28
+
29
+ Here's a basic example of how to use this package:
30
+
31
+ ```typescript
32
+ import {
33
+ ExtendedMinimumFeeBox,
34
+ MinimumFeeExplorerNetwork,
35
+ } from '@rosen-bridge/extended-minimum-fee';
36
+
37
+ const network = new MinimumFeeExplorerNetwork('URL');
38
+ const minimumFeeBox = new ExtendedMinimumFeeBox('TOKEN_ID', 'NFT', network);
39
+ await minimumFeeBox.fetchBox();
40
+ const builder = minimumFeeBox.toBuilder();
41
+ ```
@@ -0,0 +1,4 @@
1
+ export declare class InvalidConfig extends Error {
2
+ constructor(msg: string);
3
+ }
4
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../lib/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,GAAG,EAAE,MAAM;CAGxB"}
package/dist/errors.js ADDED
@@ -0,0 +1,6 @@
1
+ export class InvalidConfig extends Error {
2
+ constructor(msg) {
3
+ super('InvalidConfig: ' + msg);
4
+ }
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sYUFBYyxTQUFRLEtBQUs7SUFDdEMsWUFBWSxHQUFXO1FBQ3JCLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgSW52YWxpZENvbmZpZyBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcpIHtcbiAgICBzdXBlcignSW52YWxpZENvbmZpZzogJyArIG1zZyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,12 @@
1
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
+ import { AbstractMinimumFeeNetwork, MinimumFeeBox } from '@rosen-bridge/minimum-fee';
3
+ import { MinimumFeeBoxBuilder } from './minimumFeeBoxBuilder';
4
+ export declare class ExtendedMinimumFeeBox extends MinimumFeeBox {
5
+ constructor(tokenId: string, minimumFeeNFT: string, network: AbstractMinimumFeeNetwork, logger?: AbstractLogger);
6
+ /**
7
+ * generates a MinimumFeeBoxBuilder using current box
8
+ * note that 'height' parameter of builder won't be set
9
+ */
10
+ toBuilder: () => MinimumFeeBoxBuilder;
11
+ }
12
+ //# sourceMappingURL=extendedMinimumFeeBox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extendedMinimumFeeBox.d.ts","sourceRoot":"","sources":["../lib/extendedMinimumFeeBox.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EACL,yBAAyB,EACzB,aAAa,EAEd,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,qBAAa,qBAAsB,SAAQ,aAAa;gBAEpD,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,yBAAyB,EAClC,MAAM,CAAC,EAAE,cAAc;IAKzB;;;OAGG;IACH,SAAS,QAAO,oBAAoB,CA+BlC;CACH"}
@@ -0,0 +1,34 @@
1
+ import { Address, ErgoTree, NetworkPrefix } from 'ergo-lib-wasm-nodejs';
2
+ import JsonBigInt from '@rosen-bridge/json-bigint';
3
+ import { MinimumFeeBox, MinimumFeeConfig, } from '@rosen-bridge/minimum-fee';
4
+ import { MinimumFeeBoxBuilder } from './minimumFeeBoxBuilder';
5
+ import { decodeRegister } from './utils';
6
+ export class ExtendedMinimumFeeBox extends MinimumFeeBox {
7
+ constructor(tokenId, minimumFeeNFT, network, logger) {
8
+ super(tokenId, minimumFeeNFT, network, decodeRegister, logger);
9
+ }
10
+ /**
11
+ * generates a MinimumFeeBoxBuilder using current box
12
+ * note that 'height' parameter of builder won't be set
13
+ */
14
+ toBuilder = () => {
15
+ if (!this.box)
16
+ throw Error(`Box is not fetched yet`);
17
+ const builder = new MinimumFeeBoxBuilder(this.minimumFeeNFT, Address.recreate_from_ergo_tree(ErgoTree.from_base16_bytes(this.box.ergoTree)).to_base58(NetworkPrefix.Mainnet))
18
+ .setValue(this.box.value)
19
+ .setToken(this.tokenId);
20
+ this.getConfigs().forEach((fee) => {
21
+ this.logger.debug(`Extracted fee config from box [${this.box.boxId}]: ${JsonBigInt.stringify(fee)}`);
22
+ const chainFee = new MinimumFeeConfig();
23
+ Object.keys(fee.heights).forEach((chain) => {
24
+ if (Object.hasOwn(fee.configs, chain))
25
+ chainFee.setChainConfig(chain, fee.heights[chain], fee.configs[chain]);
26
+ else
27
+ chainFee.setChainConfig(chain, fee.heights[chain], undefined);
28
+ });
29
+ builder.addConfig(chainFee);
30
+ });
31
+ return builder;
32
+ };
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5kZWRNaW5pbXVtRmVlQm94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2V4dGVuZGVkTWluaW11bUZlZUJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd4RSxPQUFPLFVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLEVBRUwsYUFBYSxFQUNiLGdCQUFnQixHQUNqQixNQUFNLDJCQUEyQixDQUFDO0FBRW5DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFekMsTUFBTSxPQUFPLHFCQUFzQixTQUFRLGFBQWE7SUFDdEQsWUFDRSxPQUFlLEVBQ2YsYUFBcUIsRUFDckIsT0FBa0MsRUFDbEMsTUFBdUI7UUFFdkIsS0FBSyxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxHQUFHLEdBQXlCLEVBQUU7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHO1lBQUUsTUFBTSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUVyRCxNQUFNLE9BQU8sR0FBRyxJQUFJLG9CQUFvQixDQUN0QyxJQUFJLENBQUMsYUFBYSxFQUNsQixPQUFPLENBQUMsdUJBQXVCLENBQzdCLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUM5QyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQ25DO2FBQ0UsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO2FBQ3hCLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFMUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLGtDQUFrQyxJQUFJLENBQUMsR0FBSSxDQUFDLEtBQUssTUFBTSxVQUFVLENBQUMsU0FBUyxDQUN6RSxHQUFHLENBQ0osRUFBRSxDQUNKLENBQUM7WUFDRixNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztvQkFDbkMsUUFBUSxDQUFDLGNBQWMsQ0FDckIsS0FBSyxFQUNMLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQ2xCLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQ25CLENBQUM7O29CQUNDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDckUsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZGRyZXNzLCBFcmdvVHJlZSwgTmV0d29ya1ByZWZpeCB9IGZyb20gJ2VyZ28tbGliLXdhc20tbm9kZWpzJztcblxuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWxvZ2dlcic7XG5pbXBvcnQgSnNvbkJpZ0ludCBmcm9tICdAcm9zZW4tYnJpZGdlL2pzb24tYmlnaW50JztcbmltcG9ydCB7XG4gIEFic3RyYWN0TWluaW11bUZlZU5ldHdvcmssXG4gIE1pbmltdW1GZWVCb3gsXG4gIE1pbmltdW1GZWVDb25maWcsXG59IGZyb20gJ0Byb3Nlbi1icmlkZ2UvbWluaW11bS1mZWUnO1xuXG5pbXBvcnQgeyBNaW5pbXVtRmVlQm94QnVpbGRlciB9IGZyb20gJy4vbWluaW11bUZlZUJveEJ1aWxkZXInO1xuaW1wb3J0IHsgZGVjb2RlUmVnaXN0ZXIgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEV4dGVuZGVkTWluaW11bUZlZUJveCBleHRlbmRzIE1pbmltdW1GZWVCb3gge1xuICBjb25zdHJ1Y3RvcihcbiAgICB0b2tlbklkOiBzdHJpbmcsXG4gICAgbWluaW11bUZlZU5GVDogc3RyaW5nLFxuICAgIG5ldHdvcms6IEFic3RyYWN0TWluaW11bUZlZU5ldHdvcmssXG4gICAgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXIsXG4gICkge1xuICAgIHN1cGVyKHRva2VuSWQsIG1pbmltdW1GZWVORlQsIG5ldHdvcmssIGRlY29kZVJlZ2lzdGVyLCBsb2dnZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIGdlbmVyYXRlcyBhIE1pbmltdW1GZWVCb3hCdWlsZGVyIHVzaW5nIGN1cnJlbnQgYm94XG4gICAqICBub3RlIHRoYXQgJ2hlaWdodCcgcGFyYW1ldGVyIG9mIGJ1aWxkZXIgd29uJ3QgYmUgc2V0XG4gICAqL1xuICB0b0J1aWxkZXIgPSAoKTogTWluaW11bUZlZUJveEJ1aWxkZXIgPT4ge1xuICAgIGlmICghdGhpcy5ib3gpIHRocm93IEVycm9yKGBCb3ggaXMgbm90IGZldGNoZWQgeWV0YCk7XG5cbiAgICBjb25zdCBidWlsZGVyID0gbmV3IE1pbmltdW1GZWVCb3hCdWlsZGVyKFxuICAgICAgdGhpcy5taW5pbXVtRmVlTkZULFxuICAgICAgQWRkcmVzcy5yZWNyZWF0ZV9mcm9tX2VyZ29fdHJlZShcbiAgICAgICAgRXJnb1RyZWUuZnJvbV9iYXNlMTZfYnl0ZXModGhpcy5ib3guZXJnb1RyZWUpLFxuICAgICAgKS50b19iYXNlNTgoTmV0d29ya1ByZWZpeC5NYWlubmV0KSxcbiAgICApXG4gICAgICAuc2V0VmFsdWUodGhpcy5ib3gudmFsdWUpXG4gICAgICAuc2V0VG9rZW4odGhpcy50b2tlbklkKTtcblxuICAgIHRoaXMuZ2V0Q29uZmlncygpLmZvckVhY2goKGZlZSkgPT4ge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBFeHRyYWN0ZWQgZmVlIGNvbmZpZyBmcm9tIGJveCBbJHt0aGlzLmJveCEuYm94SWR9XTogJHtKc29uQmlnSW50LnN0cmluZ2lmeShcbiAgICAgICAgICBmZWUsXG4gICAgICAgICl9YCxcbiAgICAgICk7XG4gICAgICBjb25zdCBjaGFpbkZlZSA9IG5ldyBNaW5pbXVtRmVlQ29uZmlnKCk7XG4gICAgICBPYmplY3Qua2V5cyhmZWUuaGVpZ2h0cykuZm9yRWFjaCgoY2hhaW4pID0+IHtcbiAgICAgICAgaWYgKE9iamVjdC5oYXNPd24oZmVlLmNvbmZpZ3MsIGNoYWluKSlcbiAgICAgICAgICBjaGFpbkZlZS5zZXRDaGFpbkNvbmZpZyhcbiAgICAgICAgICAgIGNoYWluLFxuICAgICAgICAgICAgZmVlLmhlaWdodHNbY2hhaW5dLFxuICAgICAgICAgICAgZmVlLmNvbmZpZ3NbY2hhaW5dLFxuICAgICAgICAgICk7XG4gICAgICAgIGVsc2UgY2hhaW5GZWUuc2V0Q2hhaW5Db25maWcoY2hhaW4sIGZlZS5oZWlnaHRzW2NoYWluXSwgdW5kZWZpbmVkKTtcbiAgICAgIH0pO1xuICAgICAgYnVpbGRlci5hZGRDb25maWcoY2hhaW5GZWUpO1xuICAgIH0pO1xuICAgIHJldHVybiBidWlsZGVyO1xuICB9O1xufVxuIl19
@@ -0,0 +1,6 @@
1
+ export * from './errors';
2
+ export { MinimumFeeBoxBuilder } from './minimumFeeBoxBuilder';
3
+ export { ExtendedMinimumFeeBox } from './extendedMinimumFeeBox';
4
+ export * from './utils';
5
+ export * from '@rosen-bridge/minimum-fee';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,cAAc,SAAS,CAAC;AACxB,cAAc,2BAA2B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from './errors';
2
+ export { MinimumFeeBoxBuilder } from './minimumFeeBoxBuilder';
3
+ export { ExtendedMinimumFeeBox } from './extendedMinimumFeeBox';
4
+ export * from './utils';
5
+ export * from '@rosen-bridge/minimum-fee';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxVQUFVLENBQUM7QUFDekIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDaEUsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZXJyb3JzJztcbmV4cG9ydCB7IE1pbmltdW1GZWVCb3hCdWlsZGVyIH0gZnJvbSAnLi9taW5pbXVtRmVlQm94QnVpbGRlcic7XG5leHBvcnQgeyBFeHRlbmRlZE1pbmltdW1GZWVCb3ggfSBmcm9tICcuL2V4dGVuZGVkTWluaW11bUZlZUJveCc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCAqIGZyb20gJ0Byb3Nlbi1icmlkZ2UvbWluaW11bS1mZWUnO1xuIl19
@@ -0,0 +1,54 @@
1
+ import { BoxValue, ErgoBoxCandidate } from 'ergo-lib-wasm-nodejs';
2
+ import { Fee, MinimumFeeConfig } from '@rosen-bridge/minimum-fee';
3
+ export declare class MinimumFeeBoxBuilder {
4
+ protected fees: Array<Fee>;
5
+ protected boxValue: BoxValue;
6
+ protected boxHeight: number;
7
+ protected tokenId: string;
8
+ protected minimumFeeNFT: string;
9
+ protected address: string;
10
+ constructor(minimumFeeNFT: string, address: string);
11
+ /**
12
+ * adds a feeConfig
13
+ * @param feeConfig
14
+ */
15
+ addConfig: (feeConfig: MinimumFeeConfig) => MinimumFeeBoxBuilder;
16
+ /**
17
+ * removes a config by index
18
+ * @param index
19
+ */
20
+ removeConfig: (index: number) => MinimumFeeBoxBuilder;
21
+ /**
22
+ * gets current feeConfig
23
+ */
24
+ getConfigs: () => Array<Fee>;
25
+ /**
26
+ * sets ErgoBox Erg value
27
+ * @param nanoErg
28
+ * @returns
29
+ */
30
+ setValue: (nanoErg: bigint) => MinimumFeeBoxBuilder;
31
+ /**
32
+ * sets ErgoBox creationheight
33
+ * @param currentHeight
34
+ */
35
+ setHeight: (currentHeight: number) => MinimumFeeBoxBuilder;
36
+ /**
37
+ * sets config token id
38
+ * @param tokenId
39
+ */
40
+ setToken: (tokenId: string) => MinimumFeeBoxBuilder;
41
+ /**
42
+ * validates some of specified configs
43
+ */
44
+ protected validate: () => void;
45
+ /**
46
+ * removes heights and configs of all chains which don't have any configs
47
+ */
48
+ prune: () => MinimumFeeBoxBuilder;
49
+ /**
50
+ * validates specified configs and builds ErgoBoxCandidate of config box using them
51
+ */
52
+ build: () => ErgoBoxCandidate;
53
+ }
54
+ //# sourceMappingURL=minimumFeeBoxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimumFeeBoxBuilder.d.ts","sourceRoot":"","sources":["../lib/minimumFeeBoxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAMR,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,GAAG,EACH,gBAAgB,EAEjB,MAAM,2BAA2B,CAAC;AAKnC,qBAAa,oBAAoB;IAC/B,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEd,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMlD;;;OAGG;IACH,SAAS,GAAI,WAAW,gBAAgB,KAAG,oBAAoB,CAG7D;IAEF;;;OAGG;IACH,YAAY,GAAI,OAAO,MAAM,KAAG,oBAAoB,CAGlD;IAEF;;OAEG;IACH,UAAU,QAAO,KAAK,CAAC,GAAG,CAAC,CAEzB;IAEF;;;;OAIG;IACH,QAAQ,GAAI,SAAS,MAAM,KAAG,oBAAoB,CAGhD;IAEF;;;OAGG;IACH,SAAS,GAAI,eAAe,MAAM,KAAG,oBAAoB,CAGvD;IAEF;;;OAGG;IACH,QAAQ,GAAI,SAAS,MAAM,KAAG,oBAAoB,CAGhD;IAEF;;OAEG;IACH,SAAS,CAAC,QAAQ,QAAO,IAAI,CA6B3B;IAEF;;OAEG;IACH,KAAK,QAAO,oBAAoB,CA8B9B;IAEF;;OAEG;IACH,KAAK,QAAO,gBAAgB,CAiC1B;CACH"}
@@ -0,0 +1,138 @@
1
+ import { Address, BoxValue, Contract, ErgoBoxCandidateBuilder, I64, TokenAmount, TokenId, } from 'ergo-lib-wasm-nodejs';
2
+ import { ERGO_NATIVE_TOKEN, } from '@rosen-bridge/minimum-fee';
3
+ import { InvalidConfig } from './errors';
4
+ import { feeToRegisterValues } from './utils';
5
+ export class MinimumFeeBoxBuilder {
6
+ fees;
7
+ boxValue;
8
+ boxHeight;
9
+ tokenId;
10
+ minimumFeeNFT;
11
+ address;
12
+ constructor(minimumFeeNFT, address) {
13
+ this.fees = [];
14
+ this.minimumFeeNFT = minimumFeeNFT;
15
+ this.address = address;
16
+ }
17
+ /**
18
+ * adds a feeConfig
19
+ * @param feeConfig
20
+ */
21
+ addConfig = (feeConfig) => {
22
+ this.fees.push(feeConfig.getConfig());
23
+ return this;
24
+ };
25
+ /**
26
+ * removes a config by index
27
+ * @param index
28
+ */
29
+ removeConfig = (index) => {
30
+ this.fees.splice(index, 1);
31
+ return this;
32
+ };
33
+ /**
34
+ * gets current feeConfig
35
+ */
36
+ getConfigs = () => {
37
+ return this.fees;
38
+ };
39
+ /**
40
+ * sets ErgoBox Erg value
41
+ * @param nanoErg
42
+ * @returns
43
+ */
44
+ setValue = (nanoErg) => {
45
+ this.boxValue = BoxValue.from_i64(I64.from_str(nanoErg.toString()));
46
+ return this;
47
+ };
48
+ /**
49
+ * sets ErgoBox creationheight
50
+ * @param currentHeight
51
+ */
52
+ setHeight = (currentHeight) => {
53
+ this.boxHeight = currentHeight;
54
+ return this;
55
+ };
56
+ /**
57
+ * sets config token id
58
+ * @param tokenId
59
+ */
60
+ setToken = (tokenId) => {
61
+ this.tokenId = tokenId;
62
+ return this;
63
+ };
64
+ /**
65
+ * validates some of specified configs
66
+ */
67
+ validate = () => {
68
+ if (!this.boxValue)
69
+ throw new InvalidConfig(`Box value argument is not defined`);
70
+ if (!this.boxHeight)
71
+ throw new InvalidConfig(`Box creation height argument is not defined`);
72
+ if (!this.tokenId)
73
+ throw new InvalidConfig(`Config token id is not defined`);
74
+ if (this.fees.length === 0)
75
+ throw new InvalidConfig(`No config added. Please add at least one config`);
76
+ for (let i = 0; i < this.fees.length - 1; i++) {
77
+ const chains = Object.keys(this.fees[0].heights);
78
+ chains.forEach((chain) => {
79
+ if (!this.fees[i + 1].heights[chain])
80
+ throw new InvalidConfig(`Expected chain [${chain}] at index [${i + 1}]`);
81
+ if (this.fees[i + 1].heights[chain] < this.fees[i].heights[chain])
82
+ throw new InvalidConfig(`All heights for a chain should be ascending. Heights of chain [${chain}] at indexes [${i},${i + 1}] are invalid [${this.fees[i + 1].heights[chain]} < ${this.fees[i].heights[chain]}]`);
83
+ });
84
+ }
85
+ };
86
+ /**
87
+ * removes heights and configs of all chains which don't have any configs
88
+ */
89
+ prune = () => {
90
+ const activeChains = [];
91
+ for (let i = 0; i < this.fees.length; i++) {
92
+ const chains = Object.keys(this.fees[i].heights);
93
+ chains.forEach((chain) => {
94
+ const feeConfig = this.fees[i].configs[chain];
95
+ if (feeConfig &&
96
+ (feeConfig.bridgeFee !== -1n ||
97
+ feeConfig.networkFee !== -1n ||
98
+ feeConfig.rsnRatio !== -1n ||
99
+ feeConfig.rsnRatioDivisor !== -1n ||
100
+ feeConfig.feeRatio !== -1n))
101
+ activeChains.push(chain);
102
+ });
103
+ }
104
+ for (let i = 0; i < this.fees.length; i++) {
105
+ const chains = Object.keys(this.fees[i].heights);
106
+ chains.forEach((chain) => {
107
+ if (!activeChains.includes(chain)) {
108
+ delete this.fees[i].heights[chain];
109
+ delete this.fees[i].configs[chain];
110
+ }
111
+ });
112
+ }
113
+ return this;
114
+ };
115
+ /**
116
+ * validates specified configs and builds ErgoBoxCandidate of config box using them
117
+ */
118
+ build = () => {
119
+ this.validate();
120
+ // add box value, address and creation height
121
+ const boxBuilder = new ErgoBoxCandidateBuilder(this.boxValue, Contract.new(Address.from_base58(this.address).to_ergo_tree()), this.boxHeight);
122
+ // add box tokens
123
+ boxBuilder.add_token(TokenId.from_str(this.minimumFeeNFT), TokenAmount.from_i64(I64.from_str('1')));
124
+ if (this.tokenId !== ERGO_NATIVE_TOKEN)
125
+ boxBuilder.add_token(TokenId.from_str(this.tokenId), TokenAmount.from_i64(I64.from_str('1')));
126
+ // generate register values
127
+ const registerValues = feeToRegisterValues(this.fees);
128
+ // add box registers
129
+ boxBuilder.set_register_value(4, registerValues.R4);
130
+ boxBuilder.set_register_value(5, registerValues.R5);
131
+ boxBuilder.set_register_value(6, registerValues.R6);
132
+ boxBuilder.set_register_value(7, registerValues.R7);
133
+ boxBuilder.set_register_value(8, registerValues.R8);
134
+ boxBuilder.set_register_value(9, registerValues.R9);
135
+ return boxBuilder.build();
136
+ };
137
+ }
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluaW11bUZlZUJveEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvbWluaW11bUZlZUJveEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsUUFBUSxFQUNSLHVCQUF1QixFQUN2QixHQUFHLEVBQ0gsV0FBVyxFQUNYLE9BQU8sR0FFUixNQUFNLHNCQUFzQixDQUFDO0FBRTlCLE9BQU8sRUFHTCxpQkFBaUIsR0FDbEIsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU5QyxNQUFNLE9BQU8sb0JBQW9CO0lBQ3JCLElBQUksQ0FBYTtJQUNqQixRQUFRLENBQVc7SUFDbkIsU0FBUyxDQUFTO0lBQ2xCLE9BQU8sQ0FBUztJQUNoQixhQUFhLENBQVM7SUFDdEIsT0FBTyxDQUFTO0lBRTFCLFlBQVksYUFBcUIsRUFBRSxPQUFlO1FBQ2hELElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFNBQVMsR0FBRyxDQUFDLFNBQTJCLEVBQXdCLEVBQUU7UUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDdEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSCxZQUFZLEdBQUcsQ0FBQyxLQUFhLEVBQXdCLEVBQUU7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNCLE9BQU8s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QUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRCxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRCxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRCxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRCxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVwRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QixDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFkZHJlc3MsXG4gIEJveFZhbHVlLFxuICBDb250cmFjdCxcbiAgRXJnb0JveENhbmRpZGF0ZUJ1aWxkZXIsXG4gIEk2NCxcbiAgVG9rZW5BbW91bnQsXG4gIFRva2VuSWQsXG4gIEVyZ29Cb3hDYW5kaWRhdGUsXG59IGZyb20gJ2VyZ28tbGliLXdhc20tbm9kZWpzJztcblxuaW1wb3J0IHtcbiAgRmVlLFxuICBNaW5pbXVtRmVlQ29uZmlnLFxuICBFUkdPX05BVElWRV9UT0tFTixcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9taW5pbXVtLWZlZSc7XG5cbmltcG9ydCB7IEludmFsaWRDb25maWcgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyBmZWVUb1JlZ2lzdGVyVmFsdWVzIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBNaW5pbXVtRmVlQm94QnVpbGRlciB7XG4gIHByb3RlY3RlZCBmZWVzOiBBcnJheTxGZWU+O1xuICBwcm90ZWN0ZWQgYm94VmFsdWU6IEJveFZhbHVlO1xuICBwcm90ZWN0ZWQgYm94SGVpZ2h0OiBudW1iZXI7XG4gIHByb3RlY3RlZCB0b2tlbklkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBtaW5pbXVtRmVlTkZUOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhZGRyZXNzOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobWluaW11bUZlZU5GVDogc3RyaW5nLCBhZGRyZXNzOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZlZXMgPSBbXTtcbiAgICB0aGlzLm1pbmltdW1GZWVORlQgPSBtaW5pbXVtRmVlTkZUO1xuICAgIHRoaXMuYWRkcmVzcyA9IGFkZHJlc3M7XG4gIH1cblxuICAvKipcbiAgICogYWRkcyBhIGZlZUNvbmZpZ1xuICAgKiBAcGFyYW0gZmVlQ29uZmlnXG4gICAqL1xuICBhZGRDb25maWcgPSAoZmVlQ29uZmlnOiBNaW5pbXVtRmVlQ29uZmlnKTogTWluaW11bUZlZUJveEJ1aWxkZXIgPT4ge1xuICAgIHRoaXMuZmVlcy5wdXNoKGZlZUNvbmZpZy5nZXRDb25maWcoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJlbW92ZXMgYSBjb25maWcgYnkgaW5kZXhcbiAgICogQHBhcmFtIGluZGV4XG4gICAqL1xuICByZW1vdmVDb25maWcgPSAoaW5kZXg6IG51bWJlcik6IE1pbmltdW1GZWVCb3hCdWlsZGVyID0+IHtcbiAgICB0aGlzLmZlZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvKipcbiAgICogZ2V0cyBjdXJyZW50IGZlZUNvbmZpZ1xuICAgKi9cbiAgZ2V0Q29uZmlncyA9ICgpOiBBcnJheTxGZWU+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5mZWVzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBzZXRzIEVyZ29Cb3ggRXJnIHZhbHVlXG4gICAqIEBwYXJhbSBuYW5vRXJnXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzZXRWYWx1ZSA9IChuYW5vRXJnOiBiaWdpbnQpOiBNaW5pbXVtRmVlQm94QnVpbGRlciA9PiB7XG4gICAgdGhpcy5ib3hWYWx1ZSA9IEJveFZhbHVlLmZyb21faTY0KEk2NC5mcm9tX3N0cihuYW5vRXJnLnRvU3RyaW5nKCkpKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvKipcbiAgICogc2V0cyBFcmdvQm94IGNyZWF0aW9uaGVpZ2h0XG4gICAqIEBwYXJhbSBjdXJyZW50SGVpZ2h0XG4gICAqL1xuICBzZXRIZWlnaHQgPSAoY3VycmVudEhlaWdodDogbnVtYmVyKTogTWluaW11bUZlZUJveEJ1aWxkZXIgPT4ge1xuICAgIHRoaXMuYm94SGVpZ2h0ID0gY3VycmVudEhlaWdodDtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvKipcbiAgICogc2V0cyBjb25maWcgdG9rZW4gaWRcbiAgICogQHBhcmFtIHRva2VuSWRcbiAgICovXG4gIHNldFRva2VuID0gKHRva2VuSWQ6IHN0cmluZyk6IE1pbmltdW1GZWVCb3hCdWlsZGVyID0+IHtcbiAgICB0aGlzLnRva2VuSWQgPSB0b2tlbklkO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8qKlxuICAgKiB2YWxpZGF0ZXMgc29tZSBvZiBzcGVjaWZpZWQgY29uZmlnc1xuICAgKi9cbiAgcHJvdGVjdGVkIHZhbGlkYXRlID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICghdGhpcy5ib3hWYWx1ZSlcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlnKGBCb3ggdmFsdWUgYXJndW1lbnQgaXMgbm90IGRlZmluZWRgKTtcbiAgICBpZiAoIXRoaXMuYm94SGVpZ2h0KVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWcoYEJveCBjcmVhdGlvbiBoZWlnaHQgYXJndW1lbnQgaXMgbm90IGRlZmluZWRgKTtcbiAgICBpZiAoIXRoaXMudG9rZW5JZClcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlnKGBDb25maWcgdG9rZW4gaWQgaXMgbm90IGRlZmluZWRgKTtcbiAgICBpZiAodGhpcy5mZWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlnKFxuICAgICAgICBgTm8gY29uZmlnIGFkZGVkLiBQbGVhc2UgYWRkIGF0IGxlYXN0IG9uZSBjb25maWdgLFxuICAgICAgKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5mZWVzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgY29uc3QgY2hhaW5zID0gT2JqZWN0LmtleXModGhpcy5mZWVzWzBdLmhlaWdodHMpO1xuICAgICAgY2hhaW5zLmZvckVhY2goKGNoYWluKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5mZWVzW2kgKyAxXS5oZWlnaHRzW2NoYWluXSlcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZyhcbiAgICAgICAgICAgIGBFeHBlY3RlZCBjaGFpbiBbJHtjaGFpbn1dIGF0IGluZGV4IFske2kgKyAxfV1gLFxuICAgICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLmZlZXNbaSArIDFdLmhlaWdodHNbY2hhaW5dIDwgdGhpcy5mZWVzW2ldLmhlaWdodHNbY2hhaW5dKVxuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlnKFxuICAgICAgICAgICAgYEFsbCBoZWlnaHRzIGZvciBhIGNoYWluIHNob3VsZCBiZSBhc2NlbmRpbmcuIEhlaWdodHMgb2YgY2hhaW4gWyR7Y2hhaW59XSBhdCBpbmRleGVzIFske2l9LCR7XG4gICAgICAgICAgICAgIGkgKyAxXG4gICAgICAgICAgICB9XSBhcmUgaW52YWxpZCBbJHt0aGlzLmZlZXNbaSArIDFdLmhlaWdodHNbY2hhaW5dfSA8ICR7XG4gICAgICAgICAgICAgIHRoaXMuZmVlc1tpXS5oZWlnaHRzW2NoYWluXVxuICAgICAgICAgICAgfV1gLFxuICAgICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIHJlbW92ZXMgaGVpZ2h0cyBhbmQgY29uZmlncyBvZiBhbGwgY2hhaW5zIHdoaWNoIGRvbid0IGhhdmUgYW55IGNvbmZpZ3NcbiAgICovXG4gIHBydW5lID0gKCk6IE1pbmltdW1GZWVCb3hCdWlsZGVyID0+IHtcbiAgICBjb25zdCBhY3RpdmVDaGFpbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZmVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY2hhaW5zID0gT2JqZWN0LmtleXModGhpcy5mZWVzW2ldLmhlaWdodHMpO1xuICAgICAgY2hhaW5zLmZvckVhY2goKGNoYWluKSA9PiB7XG4gICAgICAgIGNvbnN0IGZlZUNvbmZpZyA9IHRoaXMuZmVlc1tpXS5jb25maWdzW2NoYWluXTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGZlZUNvbmZpZyAmJlxuICAgICAgICAgIChmZWVDb25maWcuYnJpZGdlRmVlICE9PSAtMW4gfHxcbiAgICAgICAgICAgIGZlZUNvbmZpZy5uZXR3b3JrRmVlICE9PSAtMW4gfHxcbiAgICAgICAgICAgIGZlZUNvbmZpZy5yc25SYXRpbyAhPT0gLTFuIHx8XG4gICAgICAgICAgICBmZWVDb25maWcucnNuUmF0aW9EaXZpc29yICE9PSAtMW4gfHxcbiAgICAgICAgICAgIGZlZUNvbmZpZy5mZWVSYXRpbyAhPT0gLTFuKVxuICAgICAgICApXG4gICAgICAgICAgYWN0aXZlQ2hhaW5zLnB1c2goY2hhaW4pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmZlZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoYWlucyA9IE9iamVjdC5rZXlzKHRoaXMuZmVlc1tpXS5oZWlnaHRzKTtcbiAgICAgIGNoYWlucy5mb3JFYWNoKChjaGFpbikgPT4ge1xuICAgICAgICBpZiAoIWFjdGl2ZUNoYWlucy5pbmNsdWRlcyhjaGFpbikpIHtcbiAgICAgICAgICBkZWxldGUgdGhpcy5mZWVzW2ldLmhlaWdodHNbY2hhaW5dO1xuICAgICAgICAgIGRlbGV0ZSB0aGlzLmZlZXNbaV0uY29uZmlnc1tjaGFpbl07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8qKlxuICAgKiB2YWxpZGF0ZXMgc3BlY2lmaWVkIGNvbmZpZ3MgYW5kIGJ1aWxkcyBFcmdvQm94Q2FuZGlkYXRlIG9mIGNvbmZpZyBib3ggdXNpbmcgdGhlbVxuICAgKi9cbiAgYnVpbGQgPSAoKTogRXJnb0JveENhbmRpZGF0ZSA9PiB7XG4gICAgdGhpcy52YWxpZGF0ZSgpO1xuXG4gICAgLy8gYWRkIGJveCB2YWx1ZSwgYWRkcmVzcyBhbmQgY3JlYXRpb24gaGVpZ2h0XG4gICAgY29uc3QgYm94QnVpbGRlciA9IG5ldyBFcmdvQm94Q2FuZGlkYXRlQnVpbGRlcihcbiAgICAgIHRoaXMuYm94VmFsdWUsXG4gICAgICBDb250cmFjdC5uZXcoQWRkcmVzcy5mcm9tX2Jhc2U1OCh0aGlzLmFkZHJlc3MpLnRvX2VyZ29fdHJlZSgpKSxcbiAgICAgIHRoaXMuYm94SGVpZ2h0LFxuICAgICk7XG5cbiAgICAvLyBhZGQgYm94IHRva2Vuc1xuICAgIGJveEJ1aWxkZXIuYWRkX3Rva2VuKFxuICAgICAgVG9rZW5JZC5mcm9tX3N0cih0aGlzLm1pbmltdW1GZWVORlQpLFxuICAgICAgVG9rZW5BbW91bnQuZnJvbV9pNjQoSTY0LmZyb21fc3RyKCcxJykpLFxuICAgICk7XG4gICAgaWYgKHRoaXMudG9rZW5JZCAhPT0gRVJHT19OQVRJVkVfVE9LRU4pXG4gICAgICBib3hCdWlsZGVyLmFkZF90b2tlbihcbiAgICAgICAgVG9rZW5JZC5mcm9tX3N0cih0aGlzLnRva2VuSWQpLFxuICAgICAgICBUb2tlbkFtb3VudC5mcm9tX2k2NChJNjQuZnJvbV9zdHIoJzEnKSksXG4gICAgICApO1xuXG4gICAgLy8gZ2VuZXJhdGUgcmVnaXN0ZXIgdmFsdWVzXG4gICAgY29uc3QgcmVnaXN0ZXJWYWx1ZXMgPSBmZWVUb1JlZ2lzdGVyVmFsdWVzKHRoaXMuZmVlcyk7XG5cbiAgICAvLyBhZGQgYm94IHJlZ2lzdGVyc1xuICAgIGJveEJ1aWxkZXIuc2V0X3JlZ2lzdGVyX3ZhbHVlKDQsIHJlZ2lzdGVyVmFsdWVzLlI0KTtcbiAgICBib3hCdWlsZGVyLnNldF9yZWdpc3Rlcl92YWx1ZSg1LCByZWdpc3RlclZhbHVlcy5SNSk7XG4gICAgYm94QnVpbGRlci5zZXRfcmVnaXN0ZXJfdmFsdWUoNiwgcmVnaXN0ZXJWYWx1ZXMuUjYpO1xuICAgIGJveEJ1aWxkZXIuc2V0X3JlZ2lzdGVyX3ZhbHVlKDcsIHJlZ2lzdGVyVmFsdWVzLlI3KTtcbiAgICBib3hCdWlsZGVyLnNldF9yZWdpc3Rlcl92YWx1ZSg4LCByZWdpc3RlclZhbHVlcy5SOCk7XG4gICAgYm94QnVpbGRlci5zZXRfcmVnaXN0ZXJfdmFsdWUoOSwgcmVnaXN0ZXJWYWx1ZXMuUjkpO1xuXG4gICAgcmV0dXJuIGJveEJ1aWxkZXIuYnVpbGQoKTtcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ import { Constant } from 'ergo-lib-wasm-nodejs';
2
+ import { Fee } from '@rosen-bridge/minimum-fee';
3
+ /**
4
+ * converts fee config to register values
5
+ * @param fees
6
+ * @returns
7
+ */
8
+ export declare const feeToRegisterValues: (fees: Array<Fee>) => {
9
+ R4: Constant;
10
+ R5: Constant;
11
+ R6: Constant;
12
+ R7: Constant;
13
+ R8: Constant;
14
+ R9: Constant;
15
+ };
16
+ /**
17
+ * decodes register values to its original type
18
+ * @param register
19
+ * @returns
20
+ */
21
+ export declare const decodeRegister: (register: string) => any;
22
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,KAAK,CAAC,GAAG,CAAC;;;;;;;CA0DnD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,UAAU,MAAM,QAE9C,CAAC"}
package/dist/utils.js ADDED
@@ -0,0 +1,73 @@
1
+ import { Constant } from 'ergo-lib-wasm-nodejs';
2
+ /**
3
+ * converts fee config to register values
4
+ * @param fees
5
+ * @returns
6
+ */
7
+ export const feeToRegisterValues = (fees) => {
8
+ // extract chains
9
+ const chains = [];
10
+ fees.forEach((fee) => {
11
+ Object.keys(fee.heights).forEach((feeChain) => {
12
+ if (!chains.includes(feeChain))
13
+ chains.push(feeChain);
14
+ });
15
+ });
16
+ chains.sort();
17
+ // extract configs
18
+ const heights = [];
19
+ const bridgeFees = [];
20
+ const networkFees = [];
21
+ const rsnRatios = [];
22
+ const feeRatios = [];
23
+ fees.forEach((fee) => {
24
+ const heightsConfigs = [];
25
+ const bridgeFeesConfigs = [];
26
+ const networkFeesConfigs = [];
27
+ const rsnRatiosConfigs = [];
28
+ const feeRatiosConfigs = [];
29
+ chains.forEach((chain) => {
30
+ if (Object.hasOwn(fee.heights, chain))
31
+ heightsConfigs.push(fee.heights[chain]);
32
+ else
33
+ heightsConfigs.push(-1);
34
+ if (Object.hasOwn(fee.configs, chain)) {
35
+ bridgeFeesConfigs.push(fee.configs[chain].bridgeFee.toString());
36
+ networkFeesConfigs.push(fee.configs[chain].networkFee.toString());
37
+ rsnRatiosConfigs.push([
38
+ fee.configs[chain].rsnRatio.toString(),
39
+ fee.configs[chain].rsnRatioDivisor.toString(),
40
+ ]);
41
+ feeRatiosConfigs.push(fee.configs[chain].feeRatio.toString());
42
+ }
43
+ else {
44
+ bridgeFeesConfigs.push('-1');
45
+ networkFeesConfigs.push('-1');
46
+ rsnRatiosConfigs.push(['-1', '-1']);
47
+ feeRatiosConfigs.push('-1');
48
+ }
49
+ });
50
+ heights.push(heightsConfigs);
51
+ bridgeFees.push(bridgeFeesConfigs);
52
+ networkFees.push(networkFeesConfigs);
53
+ rsnRatios.push(rsnRatiosConfigs);
54
+ feeRatios.push(feeRatiosConfigs);
55
+ });
56
+ return {
57
+ R4: Constant.from_coll_coll_byte(chains.map((chain) => Buffer.from(chain))),
58
+ R5: Constant.from_js(heights),
59
+ R6: Constant.from_js(bridgeFees),
60
+ R7: Constant.from_js(networkFees),
61
+ R8: Constant.from_js(rsnRatios),
62
+ R9: Constant.from_js(feeRatios),
63
+ };
64
+ };
65
+ /**
66
+ * decodes register values to its original type
67
+ * @param register
68
+ * @returns
69
+ */
70
+ export const decodeRegister = (register) => {
71
+ return Constant.decode_from_base16(register).to_js();
72
+ };
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSWhEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLElBQWdCLEVBQUUsRUFBRTtJQUN0RCxrQkFBa0I7SUFDbEIsTUFBTSxNQUFNLEdBQWtCLEVBQUUsQ0FBQztJQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDbkIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDNUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO2dCQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLG1CQUFtQjtJQUNuQixNQUFNLE9BQU8sR0FBeUIsRUFBRSxDQUFDO0lBQ3pDLE1BQU0sVUFBVSxHQUF5QixFQUFFLENBQUM7SUFDNUMsTUFBTSxXQUFXLEdBQXlCLEVBQUUsQ0FBQztJQUM3QyxNQUFNLFNBQVMsR0FBZ0MsRUFBRSxDQUFDO0lBQ2xELE1BQU0sU0FBUyxHQUF5QixFQUFFLENBQUM7SUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ25CLE1BQU0sY0FBYyxHQUFrQixFQUFFLENBQUM7UUFDekMsTUFBTSxpQkFBaUIsR0FBa0IsRUFBRSxDQUFDO1FBQzVDLE1BQU0sa0JBQWtCLEdBQWtCLEVBQUUsQ0FBQztRQUM3QyxNQUFNLGdCQUFnQixHQUF5QixFQUFFLENBQUM7UUFDbEQsTUFB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ImltcG9ydCB7IENvbnN0YW50IH0gZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuXG5pbXBvcnQgeyBGZWUgfSBmcm9tICdAcm9zZW4tYnJpZGdlL21pbmltdW0tZmVlJztcblxuLyoqXG4gKiBjb252ZXJ0cyBmZWUgY29uZmlnIHRvIHJlZ2lzdGVyIHZhbHVlc1xuICogQHBhcmFtIGZlZXNcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBjb25zdCBmZWVUb1JlZ2lzdGVyVmFsdWVzID0gKGZlZXM6IEFycmF5PEZlZT4pID0+IHtcbiAgLy8gIGV4dHJhY3QgY2hhaW5zXG4gIGNvbnN0IGNoYWluczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBmZWVzLmZvckVhY2goKGZlZSkgPT4ge1xuICAgIE9iamVjdC5rZXlzKGZlZS5oZWlnaHRzKS5mb3JFYWNoKChmZWVDaGFpbikgPT4ge1xuICAgICAgaWYgKCFjaGFpbnMuaW5jbHVkZXMoZmVlQ2hhaW4pKSBjaGFpbnMucHVzaChmZWVDaGFpbik7XG4gICAgfSk7XG4gIH0pO1xuICBjaGFpbnMuc29ydCgpO1xuICAvLyAgZXh0cmFjdCBjb25maWdzXG4gIGNvbnN0IGhlaWdodHM6IEFycmF5PEFycmF5PG51bWJlcj4+ID0gW107XG4gIGNvbnN0IGJyaWRnZUZlZXM6IEFycmF5PEFycmF5PHN0cmluZz4+ID0gW107XG4gIGNvbnN0IG5ldHdvcmtGZWVzOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IFtdO1xuICBjb25zdCByc25SYXRpb3M6IEFycmF5PEFycmF5PEFycmF5PHN0cmluZz4+PiA9IFtdO1xuICBjb25zdCBmZWVSYXRpb3M6IEFycmF5PEFycmF5PHN0cmluZz4+ID0gW107XG4gIGZlZXMuZm9yRWFjaCgoZmVlKSA9PiB7XG4gICAgY29uc3QgaGVpZ2h0c0NvbmZpZ3M6IEFycmF5PG51bWJlcj4gPSBbXTtcbiAgICBjb25zdCBicmlkZ2VGZWVzQ29uZmlnczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIGNvbnN0IG5ldHdvcmtGZWVzQ29uZmlnczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIGNvbnN0IHJzblJhdGlvc0NvbmZpZ3M6IEFycmF5PEFycmF5PHN0cmluZz4+ID0gW107XG4gICAgY29uc3QgZmVlUmF0aW9zQ29uZmlnczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXG4gICAgY2hhaW5zLmZvckVhY2goKGNoYWluKSA9PiB7XG4gICAgICBpZiAoT2JqZWN0Lmhhc093bihmZWUuaGVpZ2h0cywgY2hhaW4pKVxuICAgICAgICBoZWlnaHRzQ29uZmlncy5wdXNoKGZlZS5oZWlnaHRzW2NoYWluXSk7XG4gICAgICBlbHNlIGhlaWdodHNDb25maWdzLnB1c2goLTEpO1xuXG4gICAgICBpZiAoT2JqZWN0Lmhhc093bihmZWUuY29uZmlncywgY2hhaW4pKSB7XG4gICAgICAgIGJyaWRnZUZlZXNDb25maWdzLnB1c2goZmVlLmNvbmZpZ3NbY2hhaW5dLmJyaWRnZUZlZS50b1N0cmluZygpKTtcbiAgICAgICAgbmV0d29ya0ZlZXNDb25maWdzLnB1c2goZmVlLmNvbmZpZ3NbY2hhaW5dLm5ldHdvcmtGZWUudG9TdHJpbmcoKSk7XG4gICAgICAgIHJzblJhdGlvc0NvbmZpZ3MucHVzaChbXG4gICAgICAgICAgZmVlLmNvbmZpZ3NbY2hhaW5dLnJzblJhdGlvLnRvU3RyaW5nKCksXG4gICAgICAgICAgZmVlLmNvbmZpZ3NbY2hhaW5dLnJzblJhdGlvRGl2aXNvci50b1N0cmluZygpLFxuICAgICAgICBdKTtcbiAgICAgICAgZmVlUmF0aW9zQ29uZmlncy5wdXNoKGZlZS5jb25maWdzW2NoYWluXS5mZWVSYXRpby50b1N0cmluZygpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyaWRnZUZlZXNDb25maWdzLnB1c2goJy0xJyk7XG4gICAgICAgIG5ldHdvcmtGZWVzQ29uZmlncy5wdXNoKCctMScpO1xuICAgICAgICByc25SYXRpb3NDb25maWdzLnB1c2goWyctMScsICctMSddKTtcbiAgICAgICAgZmVlUmF0aW9zQ29uZmlncy5wdXNoKCctMScpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaGVpZ2h0cy5wdXNoKGhlaWdodHNDb25maWdzKTtcbiAgICBicmlkZ2VGZWVzLnB1c2goYnJpZGdlRmVlc0NvbmZpZ3MpO1xuICAgIG5ldHdvcmtGZWVzLnB1c2gobmV0d29ya0ZlZXNDb25maWdzKTtcbiAgICByc25SYXRpb3MucHVzaChyc25SYXRpb3NDb25maWdzKTtcbiAgICBmZWVSYXRpb3MucHVzaChmZWVSYXRpb3NDb25maWdzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBSNDogQ29uc3RhbnQuZnJvbV9jb2xsX2NvbGxfYnl0ZShjaGFpbnMubWFwKChjaGFpbikgPT4gQnVmZmVyLmZyb20oY2hhaW4pKSksXG4gICAgUjU6IENvbnN0YW50LmZyb21fanMoaGVpZ2h0cyksXG4gICAgUjY6IENvbnN0YW50LmZyb21fanMoYnJpZGdlRmVlcyksXG4gICAgUjc6IENvbnN0YW50LmZyb21fanMobmV0d29ya0ZlZXMpLFxuICAgIFI4OiBDb25zdGFudC5mcm9tX2pzKHJzblJhdGlvcyksXG4gICAgUjk6IENvbnN0YW50LmZyb21fanMoZmVlUmF0aW9zKSxcbiAgfTtcbn07XG5cbi8qKlxuICogZGVjb2RlcyByZWdpc3RlciB2YWx1ZXMgdG8gaXRzIG9yaWdpbmFsIHR5cGVcbiAqIEBwYXJhbSByZWdpc3RlclxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGNvbnN0IGRlY29kZVJlZ2lzdGVyID0gKHJlZ2lzdGVyOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIENvbnN0YW50LmRlY29kZV9mcm9tX2Jhc2UxNihyZWdpc3RlcikudG9fanMoKTtcbn07XG4iXX0=
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@rosen-bridge/extended-minimum-fee",
3
+ "version": "0.0.0",
4
+ "description": "this project gets minimum fee of the bridge for supported tokens from blockchain",
5
+ "keywords": [
6
+ "rosen"
7
+ ],
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/rosen-bridge/utils.git"
11
+ },
12
+ "license": "MIT",
13
+ "author": "Rosen Team",
14
+ "type": "module",
15
+ "main": "dist/index.js",
16
+ "types": "dist/index.d.ts",
17
+ "directories": {
18
+ "lib": "lib",
19
+ "test": "tests"
20
+ },
21
+ "files": [
22
+ "dist",
23
+ "CHANGELOG.md"
24
+ ],
25
+ "scripts": {
26
+ "build": "tsc --build tsconfig.build.json",
27
+ "coverage": "npm run test -- --coverage",
28
+ "lint": "eslint --fix . && npm run prettify",
29
+ "lint:check": "eslint . && npm run prettify:check",
30
+ "prettify": "prettier --write . --ignore-path ../../../.gitignore",
31
+ "prettify:check": "prettier --check . --ignore-path ../../../.gitignore",
32
+ "release": "npm run test && npm run build && npm publish --access public",
33
+ "test": "NODE_OPTIONS='--import tsx' vitest",
34
+ "type-check": "tsc --noEmit"
35
+ },
36
+ "dependencies": {
37
+ "@rosen-bridge/abstract-logger": "^4.0.0",
38
+ "@rosen-bridge/json-bigint": "^1.1.0",
39
+ "@rosen-bridge/minimum-fee": "^3.1.2",
40
+ "ergo-lib-wasm-nodejs": "^0.24.1"
41
+ },
42
+ "engines": {
43
+ "node": ">=22.18.0",
44
+ "npm": "11.6.2"
45
+ }
46
+ }