@rosen-bridge/minimum-fee 2.2.3 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/MinimumFeeBox.d.ts.map +1 -0
- package/dist/MinimumFeeBox.js +219 -0
- package/dist/MinimumFeeBoxBuilder.d.ts.map +1 -0
- package/dist/MinimumFeeBoxBuilder.js +138 -0
- package/dist/MinimumFeeConfig.d.ts.map +1 -0
- package/dist/MinimumFeeConfig.js +41 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +3 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +26 -0
- package/dist/{lib/handleApiError.d.ts → handleApiError.d.ts} +4 -4
- package/dist/handleApiError.d.ts.map +1 -0
- package/dist/handleApiError.js +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +22 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +111 -0
- package/package.json +10 -14
- package/dist/lib/MinimumFeeBox.d.ts.map +0 -1
- package/dist/lib/MinimumFeeBox.js +0 -219
- package/dist/lib/MinimumFeeBoxBuilder.d.ts.map +0 -1
- package/dist/lib/MinimumFeeBoxBuilder.js +0 -138
- package/dist/lib/MinimumFeeConfig.d.ts.map +0 -1
- package/dist/lib/MinimumFeeConfig.js +0 -41
- package/dist/lib/constants.d.ts.map +0 -1
- package/dist/lib/constants.js +0 -3
- package/dist/lib/errors.d.ts.map +0 -1
- package/dist/lib/errors.js +0 -26
- package/dist/lib/handleApiError.d.ts.map +0 -1
- package/dist/lib/handleApiError.js +0 -35
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/index.js +0 -8
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js +0 -22
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/utils.js +0 -111
- package/dist/tsconfig.build.tsbuildinfo +0 -1
- /package/dist/{lib/MinimumFeeBox.d.ts → MinimumFeeBox.d.ts} +0 -0
- /package/dist/{lib/MinimumFeeBoxBuilder.d.ts → MinimumFeeBoxBuilder.d.ts} +0 -0
- /package/dist/{lib/MinimumFeeConfig.d.ts → MinimumFeeConfig.d.ts} +0 -0
- /package/dist/{lib/constants.d.ts → constants.d.ts} +0 -0
- /package/dist/{lib/errors.d.ts → errors.d.ts} +0 -0
- /package/dist/{lib/index.d.ts → index.d.ts} +0 -0
- /package/dist/{lib/types.d.ts → types.d.ts} +0 -0
- /package/dist/{lib/utils.d.ts → utils.d.ts} +0 -0
package/dist/types.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { FEE_RATIO_DIVISOR } from './constants';
|
|
2
|
+
export class ChainMinimumFee {
|
|
3
|
+
bridgeFee;
|
|
4
|
+
networkFee;
|
|
5
|
+
rsnRatio;
|
|
6
|
+
rsnRatioDivisor;
|
|
7
|
+
feeRatio;
|
|
8
|
+
feeRatioDivisor = FEE_RATIO_DIVISOR;
|
|
9
|
+
constructor(chainFee) {
|
|
10
|
+
this.bridgeFee = chainFee.bridgeFee;
|
|
11
|
+
this.networkFee = chainFee.networkFee;
|
|
12
|
+
this.rsnRatio = chainFee.rsnRatio;
|
|
13
|
+
this.rsnRatioDivisor = chainFee.rsnRatioDivisor;
|
|
14
|
+
this.feeRatio = chainFee.feeRatio;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export var ErgoNetworkType;
|
|
18
|
+
(function (ErgoNetworkType) {
|
|
19
|
+
ErgoNetworkType["explorer"] = "explorer";
|
|
20
|
+
ErgoNetworkType["node"] = "node";
|
|
21
|
+
})(ErgoNetworkType || (ErgoNetworkType = {}));
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBZWhELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFNBQVMsQ0FBUztJQUNsQixVQUFVLENBQVM7SUFDbkIsUUFBUSxDQUFTO0lBQ2pCLGVBQWUsQ0FBUztJQUN4QixRQUFRLENBQVM7SUFDUixlQUFlLEdBQVcsaUJBQWlCLENBQUM7SUFFckQsWUFBWSxRQUFrQjtRQUM1QixJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUNsQyxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQ3BDLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBTixJQUFZLGVBR1g7QUFIRCxXQUFZLGVBQWU7SUFDekIsd0NBQXFCLENBQUE7SUFDckIsZ0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFIVyxlQUFlLEtBQWYsZUFBZSxRQUcxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0YW50IH0gZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuaW1wb3J0IHsgRkVFX1JBVElPX0RJVklTT1IgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVlIHtcbiAgaGVpZ2h0czogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfTtcbiAgY29uZmlnczogeyBba2V5OiBzdHJpbmddOiBDaGFpbkZlZSB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYWluRmVlIHtcbiAgYnJpZGdlRmVlOiBiaWdpbnQ7XG4gIG5ldHdvcmtGZWU6IGJpZ2ludDtcbiAgcnNuUmF0aW86IGJpZ2ludDtcbiAgcnNuUmF0aW9EaXZpc29yOiBiaWdpbnQ7XG4gIGZlZVJhdGlvOiBiaWdpbnQ7XG59XG5cbmV4cG9ydCBjbGFzcyBDaGFpbk1pbmltdW1GZWUgaW1wbGVtZW50cyBDaGFpbkZlZSB7XG4gIGJyaWRnZUZlZTogYmlnaW50O1xuICBuZXR3b3JrRmVlOiBiaWdpbnQ7XG4gIHJzblJhdGlvOiBiaWdpbnQ7XG4gIHJzblJhdGlvRGl2aXNvcjogYmlnaW50O1xuICBmZWVSYXRpbzogYmlnaW50O1xuICByZWFkb25seSBmZWVSYXRpb0Rpdmlzb3I6IGJpZ2ludCA9IEZFRV9SQVRJT19ESVZJU09SO1xuXG4gIGNvbnN0cnVjdG9yKGNoYWluRmVlOiBDaGFpbkZlZSkge1xuICAgIHRoaXMuYnJpZGdlRmVlID0gY2hhaW5GZWUuYnJpZGdlRmVlO1xuICAgIHRoaXMubmV0d29ya0ZlZSA9IGNoYWluRmVlLm5ldHdvcmtGZWU7XG4gICAgdGhpcy5yc25SYXRpbyA9IGNoYWluRmVlLnJzblJhdGlvO1xuICAgIHRoaXMucnNuUmF0aW9EaXZpc29yID0gY2hhaW5GZWUucnNuUmF0aW9EaXZpc29yO1xuICAgIHRoaXMuZmVlUmF0aW8gPSBjaGFpbkZlZS5mZWVSYXRpbztcbiAgfVxufVxuXG5leHBvcnQgZW51bSBFcmdvTmV0d29ya1R5cGUge1xuICBleHBsb3JlciA9ICdleHBsb3JlcicsXG4gIG5vZGUgPSAnbm9kZScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJWYWx1ZXMge1xuICBSNDogQ29uc3RhbnQ7XG4gIFI1OiBDb25zdGFudDtcbiAgUjY6IENvbnN0YW50O1xuICBSNzogQ29uc3RhbnQ7XG4gIFI4OiBDb25zdGFudDtcbiAgUjk6IENvbnN0YW50O1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,OAAO,KAAG,KAAK,CAAC,GAAG,CAiDzD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,KAAK,CAAC,GAAG,CAAC;;;;;;;CA0DnD,CAAC"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { Constant } from 'ergo-lib-wasm-nodejs';
|
|
2
|
+
/**
|
|
3
|
+
* extracts Fee config from box registers
|
|
4
|
+
* @param box
|
|
5
|
+
*/
|
|
6
|
+
export const extractFeeFromBox = (box) => {
|
|
7
|
+
const R4 = box.register_value(4);
|
|
8
|
+
const R5 = box.register_value(5);
|
|
9
|
+
const R6 = box.register_value(6);
|
|
10
|
+
const R7 = box.register_value(7);
|
|
11
|
+
const R8 = box.register_value(8);
|
|
12
|
+
const R9 = box.register_value(9);
|
|
13
|
+
if (!R4 || !R5 || !R6 || !R7 || !R8 || !R9)
|
|
14
|
+
throw Error(`Incomplete register data for minimum-fee config box [${box
|
|
15
|
+
.box_id()
|
|
16
|
+
.to_str()}]`);
|
|
17
|
+
const fees = [];
|
|
18
|
+
const chains = R4.to_coll_coll_byte().map((element) => Buffer.from(element).toString());
|
|
19
|
+
const heights = R5.to_js();
|
|
20
|
+
const bridgeFees = R6.to_js();
|
|
21
|
+
const networkFees = R7.to_js();
|
|
22
|
+
const rsnRatios = R8.to_js();
|
|
23
|
+
const feeRatios = R9.to_js();
|
|
24
|
+
for (let feeIdx = 0; feeIdx < heights.length; feeIdx++) {
|
|
25
|
+
const fee = {
|
|
26
|
+
heights: {},
|
|
27
|
+
configs: {},
|
|
28
|
+
};
|
|
29
|
+
for (let chainIdx = 0; chainIdx < chains.length; chainIdx++) {
|
|
30
|
+
const chain = chains[chainIdx];
|
|
31
|
+
if (heights[feeIdx][chainIdx] === -1)
|
|
32
|
+
continue;
|
|
33
|
+
fee.heights[chain] = heights[feeIdx][chainIdx];
|
|
34
|
+
if (bridgeFees[feeIdx][chainIdx] === '-1')
|
|
35
|
+
continue;
|
|
36
|
+
fee.configs[chain] = {
|
|
37
|
+
bridgeFee: BigInt(bridgeFees[feeIdx][chainIdx]),
|
|
38
|
+
networkFee: BigInt(networkFees[feeIdx][chainIdx]),
|
|
39
|
+
rsnRatio: BigInt(rsnRatios[feeIdx][chainIdx][0]),
|
|
40
|
+
rsnRatioDivisor: BigInt(rsnRatios[feeIdx][chainIdx][1]),
|
|
41
|
+
feeRatio: BigInt(feeRatios[feeIdx][chainIdx]),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
fees.push(fee);
|
|
45
|
+
}
|
|
46
|
+
return fees;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* converts fee config to register values
|
|
50
|
+
* @param fees
|
|
51
|
+
* @returns
|
|
52
|
+
*/
|
|
53
|
+
export const feeToRegisterValues = (fees) => {
|
|
54
|
+
// extract chains
|
|
55
|
+
const chains = [];
|
|
56
|
+
fees.forEach((fee) => {
|
|
57
|
+
Object.keys(fee.heights).forEach((feeChain) => {
|
|
58
|
+
if (!chains.includes(feeChain))
|
|
59
|
+
chains.push(feeChain);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
chains.sort();
|
|
63
|
+
// extract configs
|
|
64
|
+
const heights = [];
|
|
65
|
+
const bridgeFees = [];
|
|
66
|
+
const networkFees = [];
|
|
67
|
+
const rsnRatios = [];
|
|
68
|
+
const feeRatios = [];
|
|
69
|
+
fees.forEach((fee) => {
|
|
70
|
+
const heightsConfigs = [];
|
|
71
|
+
const bridgeFeesConfigs = [];
|
|
72
|
+
const networkFeesConfigs = [];
|
|
73
|
+
const rsnRatiosConfigs = [];
|
|
74
|
+
const feeRatiosConfigs = [];
|
|
75
|
+
chains.forEach((chain) => {
|
|
76
|
+
if (Object.hasOwn(fee.heights, chain))
|
|
77
|
+
heightsConfigs.push(fee.heights[chain]);
|
|
78
|
+
else
|
|
79
|
+
heightsConfigs.push(-1);
|
|
80
|
+
if (Object.hasOwn(fee.configs, chain)) {
|
|
81
|
+
bridgeFeesConfigs.push(fee.configs[chain].bridgeFee.toString());
|
|
82
|
+
networkFeesConfigs.push(fee.configs[chain].networkFee.toString());
|
|
83
|
+
rsnRatiosConfigs.push([
|
|
84
|
+
fee.configs[chain].rsnRatio.toString(),
|
|
85
|
+
fee.configs[chain].rsnRatioDivisor.toString(),
|
|
86
|
+
]);
|
|
87
|
+
feeRatiosConfigs.push(fee.configs[chain].feeRatio.toString());
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
bridgeFeesConfigs.push('-1');
|
|
91
|
+
networkFeesConfigs.push('-1');
|
|
92
|
+
rsnRatiosConfigs.push(['-1', '-1']);
|
|
93
|
+
feeRatiosConfigs.push('-1');
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
heights.push(heightsConfigs);
|
|
97
|
+
bridgeFees.push(bridgeFeesConfigs);
|
|
98
|
+
networkFees.push(networkFeesConfigs);
|
|
99
|
+
rsnRatios.push(rsnRatiosConfigs);
|
|
100
|
+
feeRatios.push(feeRatiosConfigs);
|
|
101
|
+
});
|
|
102
|
+
return {
|
|
103
|
+
R4: Constant.from_coll_coll_byte(chains.map((chain) => Buffer.from(chain))),
|
|
104
|
+
R5: Constant.from_js(heights),
|
|
105
|
+
R6: Constant.from_js(bridgeFees),
|
|
106
|
+
R7: Constant.from_js(networkFees),
|
|
107
|
+
R8: Constant.from_js(rsnRatios),
|
|
108
|
+
R9: Constant.from_js(feeRatios),
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBVyxNQUFNLHNCQUFzQixDQUFDO0FBR3pEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsR0FBWSxFQUFjLEVBQUU7SUFDNUQsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFakMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDeEMsTUFBTSxLQUFLLENBQ1Qsd0RBQXdELEdBQUc7YUFDeEQsTUFBTSxFQUFFO2FBQ1IsTUFBTSxFQUFFLEdBQUcsQ0FDZixDQUFDO0lBRUosTUFBTSxJQUFJLEdBQWUsRUFBRSxDQUFDO0lBQzVCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ3BELE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQ2hDLENBQUM7SUFDRixNQUFNLE9B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QyxTQUFTLENBQUM7S0FDaEMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0YW50LCBFcmdvQm94IH0gZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuaW1wb3J0IHsgRmVlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogZXh0cmFjdHMgRmVlIGNvbmZpZyBmcm9tIGJveCByZWdpc3RlcnNcbiAqIEBwYXJhbSBib3hcbiAqL1xuZXhwb3J0IGNvbnN0IGV4dHJhY3RGZWVGcm9tQm94ID0gKGJveDogRXJnb0JveCk6IEFycmF5PEZlZT4gPT4ge1xuICBjb25zdCBSNCA9IGJveC5yZWdpc3Rlcl92YWx1ZSg0KTtcbiAgY29uc3QgUjUgPSBib3gucmVnaXN0ZXJfdmFsdWUoNSk7XG4gIGNvbnN0IFI2ID0gYm94LnJlZ2lzdGVyX3ZhbHVlKDYpO1xuICBjb25zdCBSNyA9IGJveC5yZWdpc3Rlcl92YWx1ZSg3KTtcbiAgY29uc3QgUjggPSBib3gucmVnaXN0ZXJfdmFsdWUoOCk7XG4gIGNvbnN0IFI5ID0gYm94LnJlZ2lzdGVyX3ZhbHVlKDkpO1xuXG4gIGlmICghUjQgfHwgIVI1IHx8ICFSNiB8fCAhUjcgfHwgIVI4IHx8ICFSOSlcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIGBJbmNvbXBsZXRlIHJlZ2lzdGVyIGRhdGEgZm9yIG1pbmltdW0tZmVlIGNvbmZpZyBib3ggWyR7Ym94XG4gICAgICAgIC5ib3hfaWQoKVxuICAgICAgICAudG9fc3RyKCl9XWBcbiAgICApO1xuXG4gIGNvbnN0IGZlZXM6IEFycmF5PEZlZT4gPSBbXTtcbiAgY29uc3QgY2hhaW5zID0gUjQudG9fY29sbF9jb2xsX2J5dGUoKS5tYXAoKGVsZW1lbnQpID0+XG4gICAgQnVmZmVyLmZyb20oZWxlbWVudCkudG9TdHJpbmcoKVxuICApO1xuICBjb25zdCBoZWlnaHRzID0gUjUudG9fanMoKSBhcyBBcnJheTxBcnJheTxudW1iZXI+PjtcbiAgY29uc3QgYnJpZGdlRmVlcyA9IFI2LnRvX2pzKCkgYXMgQXJyYXk8QXJyYXk8c3RyaW5nPj47XG4gIGNvbnN0IG5ldHdvcmtGZWVzID0gUjcudG9fanMoKSBhcyBBcnJheTxBcnJheTxzdHJpbmc+PjtcbiAgY29uc3QgcnNuUmF0aW9zID0gUjgudG9fanMoKSBhcyBBcnJheTxBcnJheTxBcnJheTxzdHJpbmc+Pj47XG4gIGNvbnN0IGZlZVJhdGlvcyA9IFI5LnRvX2pzKCkgYXMgQXJyYXk8QXJyYXk8c3RyaW5nPj47XG5cbiAgZm9yIChsZXQgZmVlSWR4ID0gMDsgZmVlSWR4IDwgaGVpZ2h0cy5sZW5ndGg7IGZlZUlkeCsrKSB7XG4gICAgY29uc3QgZmVlOiBGZWUgPSB7XG4gICAgICBoZWlnaHRzOiB7fSxcbiAgICAgIGNvbmZpZ3M6IHt9LFxuICAgIH07XG4gICAgZm9yIChsZXQgY2hhaW5JZHggPSAwOyBjaGFpbklkeCA8IGNoYWlucy5sZW5ndGg7IGNoYWluSWR4KyspIHtcbiAgICAgIGNvbnN0IGNoYWluID0gY2hhaW5zW2NoYWluSWR4XTtcblxuICAgICAgaWYgKGhlaWdodHNbZmVlSWR4XVtjaGFpbklkeF0gPT09IC0xKSBjb250aW51ZTtcbiAgICAgIGZlZS5oZWlnaHRzW2NoYWluXSA9IGhlaWdodHNbZmVlSWR4XVtjaGFpbklkeF07XG5cbiAgICAgIGlmIChicmlkZ2VGZWVzW2ZlZUlkeF1bY2hhaW5JZHhdID09PSAnLTEnKSBjb250aW51ZTtcbiAgICAgIGZlZS5jb25maWdzW2NoYWluXSA9IHtcbiAgICAgICAgYnJpZGdlRmVlOiBCaWdJbnQoYnJpZGdlRmVlc1tmZWVJZHhdW2NoYWluSWR4XSksXG4gICAgICAgIG5ldHdvcmtGZWU6IEJpZ0ludChuZXR3b3JrRmVlc1tmZWVJZHhdW2NoYWluSWR4XSksXG4gICAgICAgIHJzblJhdGlvOiBCaWdJbnQocnNuUmF0aW9zW2ZlZUlkeF1bY2hhaW5JZHhdWzBdKSxcbiAgICAgICAgcnNuUmF0aW9EaXZpc29yOiBCaWdJbnQocnNuUmF0aW9zW2ZlZUlkeF1bY2hhaW5JZHhdWzFdKSxcbiAgICAgICAgZmVlUmF0aW86IEJpZ0ludChmZWVSYXRpb3NbZmVlSWR4XVtjaGFpbklkeF0pLFxuICAgICAgfTtcbiAgICB9XG4gICAgZmVlcy5wdXNoKGZlZSk7XG4gIH1cblxuICByZXR1cm4gZmVlcztcbn07XG5cbi8qKlxuICogY29udmVydHMgZmVlIGNvbmZpZyB0byByZWdpc3RlciB2YWx1ZXNcbiAqIEBwYXJhbSBmZWVzXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgZmVlVG9SZWdpc3RlclZhbHVlcyA9IChmZWVzOiBBcnJheTxGZWU+KSA9PiB7XG4gIC8vICBleHRyYWN0IGNoYWluc1xuICBjb25zdCBjaGFpbnM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgZmVlcy5mb3JFYWNoKChmZWUpID0+IHtcbiAgICBPYmplY3Qua2V5cyhmZWUuaGVpZ2h0cykuZm9yRWFjaCgoZmVlQ2hhaW4pID0+IHtcbiAgICAgIGlmICghY2hhaW5zLmluY2x1ZGVzKGZlZUNoYWluKSkgY2hhaW5zLnB1c2goZmVlQ2hhaW4pO1xuICAgIH0pO1xuICB9KTtcbiAgY2hhaW5zLnNvcnQoKTtcbiAgLy8gIGV4dHJhY3QgY29uZmlnc1xuICBjb25zdCBoZWlnaHRzOiBBcnJheTxBcnJheTxudW1iZXI+PiA9IFtdO1xuICBjb25zdCBicmlkZ2VGZWVzOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IFtdO1xuICBjb25zdCBuZXR3b3JrRmVlczogQXJyYXk8QXJyYXk8c3RyaW5nPj4gPSBbXTtcbiAgY29uc3QgcnNuUmF0aW9zOiBBcnJheTxBcnJheTxBcnJheTxzdHJpbmc+Pj4gPSBbXTtcbiAgY29uc3QgZmVlUmF0aW9zOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IFtdO1xuICBmZWVzLmZvckVhY2goKGZlZSkgPT4ge1xuICAgIGNvbnN0IGhlaWdodHNDb25maWdzOiBBcnJheTxudW1iZXI+ID0gW107XG4gICAgY29uc3QgYnJpZGdlRmVlc0NvbmZpZ3M6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBjb25zdCBuZXR3b3JrRmVlc0NvbmZpZ3M6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBjb25zdCByc25SYXRpb3NDb25maWdzOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IFtdO1xuICAgIGNvbnN0IGZlZVJhdGlvc0NvbmZpZ3M6IEFycmF5PHN0cmluZz4gPSBbXTtcblxuICAgIGNoYWlucy5mb3JFYWNoKChjaGFpbikgPT4ge1xuICAgICAgaWYgKE9iamVjdC5oYXNPd24oZmVlLmhlaWdodHMsIGNoYWluKSlcbiAgICAgICAgaGVpZ2h0c0NvbmZpZ3MucHVzaChmZWUuaGVpZ2h0c1tjaGFpbl0pO1xuICAgICAgZWxzZSBoZWlnaHRzQ29uZmlncy5wdXNoKC0xKTtcblxuICAgICAgaWYgKE9iamVjdC5oYXNPd24oZmVlLmNvbmZpZ3MsIGNoYWluKSkge1xuICAgICAgICBicmlkZ2VGZWVzQ29uZmlncy5wdXNoKGZlZS5jb25maWdzW2NoYWluXS5icmlkZ2VGZWUudG9TdHJpbmcoKSk7XG4gICAgICAgIG5ldHdvcmtGZWVzQ29uZmlncy5wdXNoKGZlZS5jb25maWdzW2NoYWluXS5uZXR3b3JrRmVlLnRvU3RyaW5nKCkpO1xuICAgICAgICByc25SYXRpb3NDb25maWdzLnB1c2goW1xuICAgICAgICAgIGZlZS5jb25maWdzW2NoYWluXS5yc25SYXRpby50b1N0cmluZygpLFxuICAgICAgICAgIGZlZS5jb25maWdzW2NoYWluXS5yc25SYXRpb0Rpdmlzb3IudG9TdHJpbmcoKSxcbiAgICAgICAgXSk7XG4gICAgICAgIGZlZVJhdGlvc0NvbmZpZ3MucHVzaChmZWUuY29uZmlnc1tjaGFpbl0uZmVlUmF0aW8udG9TdHJpbmcoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmlkZ2VGZWVzQ29uZmlncy5wdXNoKCctMScpO1xuICAgICAgICBuZXR3b3JrRmVlc0NvbmZpZ3MucHVzaCgnLTEnKTtcbiAgICAgICAgcnNuUmF0aW9zQ29uZmlncy5wdXNoKFsnLTEnLCAnLTEnXSk7XG4gICAgICAgIGZlZVJhdGlvc0NvbmZpZ3MucHVzaCgnLTEnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGhlaWdodHMucHVzaChoZWlnaHRzQ29uZmlncyk7XG4gICAgYnJpZGdlRmVlcy5wdXNoKGJyaWRnZUZlZXNDb25maWdzKTtcbiAgICBuZXR3b3JrRmVlcy5wdXNoKG5ldHdvcmtGZWVzQ29uZmlncyk7XG4gICAgcnNuUmF0aW9zLnB1c2gocnNuUmF0aW9zQ29uZmlncyk7XG4gICAgZmVlUmF0aW9zLnB1c2goZmVlUmF0aW9zQ29uZmlncyk7XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgUjQ6IENvbnN0YW50LmZyb21fY29sbF9jb2xsX2J5dGUoY2hhaW5zLm1hcCgoY2hhaW4pID0+IEJ1ZmZlci5mcm9tKGNoYWluKSkpLFxuICAgIFI1OiBDb25zdGFudC5mcm9tX2pzKGhlaWdodHMpLFxuICAgIFI2OiBDb25zdGFudC5mcm9tX2pzKGJyaWRnZUZlZXMpLFxuICAgIFI3OiBDb25zdGFudC5mcm9tX2pzKG5ldHdvcmtGZWVzKSxcbiAgICBSODogQ29uc3RhbnQuZnJvbV9qcyhyc25SYXRpb3MpLFxuICAgIFI5OiBDb25zdGFudC5mcm9tX2pzKGZlZVJhdGlvcyksXG4gIH07XG59O1xuIl19
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rosen-bridge/minimum-fee",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "this project gets minimum fee of the bridge for supported tokens from blockchain",
|
|
5
|
-
"main": "dist/
|
|
6
|
-
"types": "dist/
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"author": "Rosen Team",
|
|
9
9
|
"scripts": {
|
|
@@ -22,26 +22,22 @@
|
|
|
22
22
|
"files": [
|
|
23
23
|
"dist"
|
|
24
24
|
],
|
|
25
|
-
"license": "
|
|
25
|
+
"license": "MIT",
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@rosen-bridge/abstract-logger": "^2.0
|
|
28
|
-
"@rosen-bridge/json-bigint": "^0.
|
|
27
|
+
"@rosen-bridge/abstract-logger": "^2.1.0",
|
|
28
|
+
"@rosen-bridge/json-bigint": "^0.2.0",
|
|
29
29
|
"@rosen-clients/ergo-explorer": "^1.1.5",
|
|
30
30
|
"@rosen-clients/ergo-node": "^1.2.3",
|
|
31
31
|
"ergo-lib-wasm-nodejs": "^0.24.1"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/jest": "^29.1.2",
|
|
35
|
-
"@types/node": "^
|
|
36
|
-
"@typescript-eslint/eslint-plugin": "^5.30.7",
|
|
37
|
-
"@typescript-eslint/parser": "^5.26.0",
|
|
38
|
-
"eslint": "^8.16.0",
|
|
39
|
-
"eslint-config-prettier": "^8.5.0",
|
|
35
|
+
"@types/node": "^20.11.0",
|
|
40
36
|
"jest": "^29.2.0",
|
|
41
|
-
"prettier": "^2.7.1",
|
|
42
37
|
"ts-jest": "^29.0.3",
|
|
43
38
|
"ts-node": "^10.8.1",
|
|
44
|
-
"
|
|
39
|
+
"@babel/preset-env": "^7.19.0",
|
|
40
|
+
"typescript": "^5.8.3"
|
|
45
41
|
},
|
|
46
42
|
"directories": {
|
|
47
43
|
"lib": "lib",
|
|
@@ -51,6 +47,6 @@
|
|
|
51
47
|
"rosen"
|
|
52
48
|
],
|
|
53
49
|
"engines": {
|
|
54
|
-
"node": ">=
|
|
50
|
+
"node": ">=20.11.0"
|
|
55
51
|
}
|
|
56
52
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MinimumFeeBox.d.ts","sourceRoot":"","sources":["../../lib/MinimumFeeBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,OAAO,EAAiB,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAEhE,OAAO,yBAAyB,MAAM,8BAA8B,CAAC;AACrE,OAAO,qBAAqB,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9D,qBAAa,aAAa;IACxB,SAAS,CAAC,QAAQ,CAAC,sBAAsB,MAAM;IAC/C,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;IACjC,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,cAAc,EAAE,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC;IACvE,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;gBAG7D,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,eAAe,EAC5B,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,cAAc;IAUzB;;;OAGG;IACH,QAAQ,QAAa,QAAQ,OAAO,CAAC,CAoCnC;IAEF;;;OAGG;IACH,SAAS,CAAC,iBAAiB,kBAAmB,MAAM,OAAO,CAAC,KAAG,OAAO,CAyBpE;IAEF;;OAEG;IACH,SAAS,CAAC,uBAAuB,QAAa,QAAQ,MAAM,OAAO,CAAC,CAAC,CA8CnE;IAEF;;OAEG;IACH,SAAS,CAAC,mBAAmB,QAAa,QAAQ,MAAM,OAAO,CAAC,CAAC,CAiD/D;IAEF;;OAEG;IACH,MAAM,QAAO,OAAO,GAAG,SAAS,CAAa;IAE7C;;OAEG;IACH,UAAU,QAAO,MAAM,GAAG,CAAC,CASzB;IAEF;;;;;OAKG;IACH,MAAM,cACO,MAAM,UACT,MAAM,WACL,MAAM,KACd,eAAe,CA4BhB;IAEF;;;OAGG;IACH,SAAS,QAAO,oBAAoB,CA+BlC;CACH"}
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
import { Address, ErgoBox, NetworkPrefix } from 'ergo-lib-wasm-nodejs';
|
|
2
|
-
import { ChainMinimumFee, ErgoNetworkType } from './types';
|
|
3
|
-
import { FailedError, NotFoundError } from './errors';
|
|
4
|
-
import ergoExplorerClientFactory from '@rosen-clients/ergo-explorer';
|
|
5
|
-
import ergoNodeClientFactory from '@rosen-clients/ergo-node';
|
|
6
|
-
import JsonBigInt from '@rosen-bridge/json-bigint';
|
|
7
|
-
import handleApiError from './handleApiError';
|
|
8
|
-
import { DummyLogger } from '@rosen-bridge/abstract-logger';
|
|
9
|
-
import { MinimumFeeBoxBuilder } from './MinimumFeeBoxBuilder';
|
|
10
|
-
import { MinimumFeeConfig } from './MinimumFeeConfig';
|
|
11
|
-
import { ERGO_NATIVE_TOKEN } from './constants';
|
|
12
|
-
import { extractFeeFromBox } from './utils';
|
|
13
|
-
export class MinimumFeeBox {
|
|
14
|
-
BOX_FETCHING_PAGE_SIZE = 50;
|
|
15
|
-
logger;
|
|
16
|
-
box;
|
|
17
|
-
tokenId;
|
|
18
|
-
minimumFeeNFT;
|
|
19
|
-
explorerClient;
|
|
20
|
-
nodeClient;
|
|
21
|
-
constructor(tokenId, minimumFeeNFT, networkType, networkUrl, logger) {
|
|
22
|
-
this.tokenId = tokenId;
|
|
23
|
-
this.minimumFeeNFT = minimumFeeNFT;
|
|
24
|
-
if (networkType === ErgoNetworkType.explorer)
|
|
25
|
-
this.explorerClient = ergoExplorerClientFactory(networkUrl);
|
|
26
|
-
else
|
|
27
|
-
this.nodeClient = ergoNodeClientFactory(networkUrl);
|
|
28
|
-
this.logger = logger ? logger : new DummyLogger();
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* fetches the box from the blockchain
|
|
32
|
-
* @returns true if action was successful, otherwise false
|
|
33
|
-
*/
|
|
34
|
-
fetchBox = async () => {
|
|
35
|
-
const boxHasAppropriateTokens = (box) => {
|
|
36
|
-
const tokenLen = box.tokens().len();
|
|
37
|
-
let hasMinimumFeeNFT = false;
|
|
38
|
-
let hasTargetToken = this.tokenId === ERGO_NATIVE_TOKEN ? true : false;
|
|
39
|
-
const hasCorrectTokens = this.tokenId === ERGO_NATIVE_TOKEN ? tokenLen === 1 : tokenLen === 2;
|
|
40
|
-
for (let i = 0; i < tokenLen; i++) {
|
|
41
|
-
const id = box.tokens().get(i).id().to_str();
|
|
42
|
-
if (id === this.minimumFeeNFT)
|
|
43
|
-
hasMinimumFeeNFT = true;
|
|
44
|
-
else if (id === this.tokenId)
|
|
45
|
-
hasTargetToken = true;
|
|
46
|
-
}
|
|
47
|
-
return hasCorrectTokens && hasMinimumFeeNFT && hasTargetToken;
|
|
48
|
-
};
|
|
49
|
-
try {
|
|
50
|
-
const boxes = this.explorerClient
|
|
51
|
-
? await this.fetchBoxesUsingExplorer()
|
|
52
|
-
: await this.fetchBoxesUsingNode();
|
|
53
|
-
this.box = this.selectEligibleBox(boxes.filter((box) => boxHasAppropriateTokens(box)));
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
catch (e) {
|
|
57
|
-
if (e instanceof NotFoundError || e instanceof FailedError) {
|
|
58
|
-
this.logger.warn(`No valid minimum-fee box. reason: ${e}`);
|
|
59
|
-
this.box = undefined;
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
this.logger.warn(`An error occurred while updating minimum-fee box for token [${this.tokenId}]: ${e}`);
|
|
63
|
-
if (e instanceof Error && e.stack)
|
|
64
|
-
this.logger.warn(e.stack);
|
|
65
|
-
}
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* returns fetched box or throws appropriate error if found more or none
|
|
71
|
-
* @param eligibleBoxes
|
|
72
|
-
*/
|
|
73
|
-
selectEligibleBox = (eligibleBoxes) => {
|
|
74
|
-
this.logger.debug(`Found [${eligibleBoxes.length}] minimum-fee boxes: ${JsonBigInt.stringify(eligibleBoxes.map((box) => box.to_json()))}`);
|
|
75
|
-
if (eligibleBoxes.length === 0) {
|
|
76
|
-
throw new NotFoundError(`Found no minimum-fee box for token [${this.tokenId}]`);
|
|
77
|
-
}
|
|
78
|
-
else if (eligibleBoxes.length > 1) {
|
|
79
|
-
throw new FailedError(`Found [${eligibleBoxes.length}] minimum-fee boxes for token [${this.tokenId}]`);
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
this.logger.debug(`Found minimum-fee box [${eligibleBoxes[0]
|
|
83
|
-
.box_id()
|
|
84
|
-
.to_str()}] for token [${this.tokenId}]`);
|
|
85
|
-
return eligibleBoxes[0];
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
/**
|
|
89
|
-
* fetches box from the blockchain using explorer client
|
|
90
|
-
*/
|
|
91
|
-
fetchBoxesUsingExplorer = async () => {
|
|
92
|
-
const boxes = [];
|
|
93
|
-
try {
|
|
94
|
-
let currentPage = 0;
|
|
95
|
-
let boxesPage = await this.explorerClient.v1.getApiV1BoxesUnspentBytokenidP1(this.minimumFeeNFT, {
|
|
96
|
-
offset: currentPage * this.BOX_FETCHING_PAGE_SIZE,
|
|
97
|
-
limit: this.BOX_FETCHING_PAGE_SIZE,
|
|
98
|
-
});
|
|
99
|
-
this.logger.debug(`requested 'explorerClient.getApiV1BoxesUnspentBytokenidP1' for token [${this.minimumFeeNFT}]. res: ${JsonBigInt.stringify(boxesPage)}`);
|
|
100
|
-
while (boxesPage.items?.length) {
|
|
101
|
-
boxes.push(...boxesPage.items.map((box) => ErgoBox.from_json(JsonBigInt.stringify(box))));
|
|
102
|
-
currentPage++;
|
|
103
|
-
boxesPage =
|
|
104
|
-
await this.explorerClient.v1.getApiV1BoxesUnspentBytokenidP1(this.minimumFeeNFT, {
|
|
105
|
-
offset: currentPage * this.BOX_FETCHING_PAGE_SIZE,
|
|
106
|
-
limit: this.BOX_FETCHING_PAGE_SIZE,
|
|
107
|
-
});
|
|
108
|
-
this.logger.debug(`requested 'explorerClient.getApiV1BoxesUnspentBytokenidP1' for token [${this.minimumFeeNFT}]. res: ${JsonBigInt.stringify(boxesPage)}`);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
catch (error) {
|
|
112
|
-
return handleApiError(error, 'Failed to get boxes by token id from Ergo Explorer:');
|
|
113
|
-
}
|
|
114
|
-
return boxes;
|
|
115
|
-
};
|
|
116
|
-
/**
|
|
117
|
-
* fetches the box from the blockchain using node client
|
|
118
|
-
*/
|
|
119
|
-
fetchBoxesUsingNode = async () => {
|
|
120
|
-
const boxes = [];
|
|
121
|
-
try {
|
|
122
|
-
let currentPage = 0;
|
|
123
|
-
let boxesPage = await this.nodeClient.getBoxesByTokenIdUnspent(this.minimumFeeNFT, {
|
|
124
|
-
offset: currentPage * this.BOX_FETCHING_PAGE_SIZE,
|
|
125
|
-
limit: this.BOX_FETCHING_PAGE_SIZE,
|
|
126
|
-
});
|
|
127
|
-
this.logger.debug(`requested 'nodeClient.getBoxesByTokenIdUnspent' for token [${this.minimumFeeNFT}]. res: ${JsonBigInt.stringify(boxesPage)}`);
|
|
128
|
-
while (boxesPage.length !== 0) {
|
|
129
|
-
boxes.push(...boxesPage.map((box) => ErgoBox.from_json(JsonBigInt.stringify(box))));
|
|
130
|
-
currentPage++;
|
|
131
|
-
boxesPage = await this.nodeClient.getBoxesByTokenIdUnspent(this.minimumFeeNFT, {
|
|
132
|
-
offset: currentPage * this.BOX_FETCHING_PAGE_SIZE,
|
|
133
|
-
limit: this.BOX_FETCHING_PAGE_SIZE,
|
|
134
|
-
});
|
|
135
|
-
this.logger.debug(`requested 'nodeClient.getBoxesByTokenIdUnspent' for token [${this.minimumFeeNFT}]. res: ${JsonBigInt.stringify(boxesPage)}`);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
catch (error) {
|
|
139
|
-
const baseError = 'Failed to get boxes by token id from Ergo Node:';
|
|
140
|
-
handleApiError(error, baseError, {
|
|
141
|
-
handleRespondedState: (error) => {
|
|
142
|
-
if (error.response.status === 400)
|
|
143
|
-
return;
|
|
144
|
-
throw new FailedError(`${baseError} [${error.response.status}] ${error.response.data.reason}`);
|
|
145
|
-
},
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
return boxes;
|
|
149
|
-
};
|
|
150
|
-
/**
|
|
151
|
-
* returns fetched config box
|
|
152
|
-
*/
|
|
153
|
-
getBox = () => this.box;
|
|
154
|
-
/**
|
|
155
|
-
* gets current feeConfig
|
|
156
|
-
*/
|
|
157
|
-
getConfigs = () => {
|
|
158
|
-
if (!this.box)
|
|
159
|
-
throw Error(`Box is not fetched yet`);
|
|
160
|
-
const fee = extractFeeFromBox(this.box);
|
|
161
|
-
this.logger.debug(`Extracted fee config from box [${this.box
|
|
162
|
-
.box_id()
|
|
163
|
-
.to_str()}]: ${JsonBigInt.stringify(fee)}`);
|
|
164
|
-
return fee;
|
|
165
|
-
};
|
|
166
|
-
/**
|
|
167
|
-
* gets corresponding config for two chains and height
|
|
168
|
-
* @param fromChain
|
|
169
|
-
* @param height blockchain height for fromChain
|
|
170
|
-
* @param toChain
|
|
171
|
-
*/
|
|
172
|
-
getFee = (fromChain, height, toChain) => {
|
|
173
|
-
if (!this.box)
|
|
174
|
-
throw Error(`Box is not fetched yet`);
|
|
175
|
-
const fees = this.getConfigs().reverse();
|
|
176
|
-
for (const fee of fees) {
|
|
177
|
-
if (!Object.hasOwn(fee.heights, fromChain))
|
|
178
|
-
throw new NotFoundError(`No fee found for chain [${fromChain}] in box [${this.box
|
|
179
|
-
.box_id()
|
|
180
|
-
.to_str()}]`);
|
|
181
|
-
if (fee.heights[fromChain] < height) {
|
|
182
|
-
const chainFee = fee.configs[toChain];
|
|
183
|
-
if (chainFee)
|
|
184
|
-
return new ChainMinimumFee(chainFee);
|
|
185
|
-
else
|
|
186
|
-
throw new Error(`Chain [${toChain}] is not supported at given height of fromChain [${height} of ${fromChain}] in box [${this.box
|
|
187
|
-
.box_id()
|
|
188
|
-
.to_str()}]`);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
throw new NotFoundError(`Config does not support height [${height}] for chain [${fromChain}] in box [${this.box
|
|
192
|
-
.box_id()
|
|
193
|
-
.to_str()}]`);
|
|
194
|
-
};
|
|
195
|
-
/**
|
|
196
|
-
* generates a MinimumFeeBoxBuilder using current box
|
|
197
|
-
* note that 'height' parameter of builder won't be set
|
|
198
|
-
*/
|
|
199
|
-
toBuilder = () => {
|
|
200
|
-
if (!this.box)
|
|
201
|
-
throw Error(`Box is not fetched yet`);
|
|
202
|
-
const builder = new MinimumFeeBoxBuilder(this.minimumFeeNFT, Address.recreate_from_ergo_tree(this.box.ergo_tree()).to_base58(NetworkPrefix.Mainnet))
|
|
203
|
-
.setValue(BigInt(this.box.value().as_i64().to_str()))
|
|
204
|
-
.setToken(this.tokenId);
|
|
205
|
-
this.getConfigs().forEach((fee) => {
|
|
206
|
-
this.logger.debug(`Extracted fee config from box [${this.box.box_id().to_str()}]: ${JsonBigInt.stringify(fee)}`);
|
|
207
|
-
const chainFee = new MinimumFeeConfig();
|
|
208
|
-
Object.keys(fee.heights).forEach((chain) => {
|
|
209
|
-
if (Object.hasOwn(fee.configs, chain))
|
|
210
|
-
chainFee.setChainConfig(chain, fee.heights[chain], fee.configs[chain]);
|
|
211
|
-
else
|
|
212
|
-
chainFee.setChainConfig(chain, fee.heights[chain], undefined);
|
|
213
|
-
});
|
|
214
|
-
builder.addConfig(chainFee);
|
|
215
|
-
});
|
|
216
|
-
return builder;
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWluaW11bUZlZUJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9NaW5pbXVtRmVlQm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFPLE1BQU0sU0FBUyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RELE9BQU8seUJBQXlCLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxxQkFBcUIsTUFBTSwwQkFBMEIsQ0FBQztBQUM3RCxPQUFPLFVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRCxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNoRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFNUMsTUFBTSxPQUFPLGFBQWE7SUFDTCxzQkFBc0IsR0FBRyxFQUFFLENBQUM7SUFDckMsTUFBTSxDQUFpQjtJQUN2QixHQUFHLENBQXNCO0lBQ3pCLE9BQU8sQ0FBUztJQUNoQixhQUFhLENBQVM7SUFDdEIsY0FBYyxDQUErQztJQUM3RCxVQUFVLENBQTJDO0lBRS9ELFlBQ0UsT0FBZSxFQUNmLGFBQXFCLEVBQ3JCLFdBQTRCLEVBQzVCLFVBQWtCLEVBQ2xCLE1BQXVCO1FBRXZCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FB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Q0FBQzthQUNwRCxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixrQ0FBa0MsSUFBSSxDQUFDLEdBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUNyRixHQUFHLENBQ0osRUFBRSxDQUNKLENBQUM7WUFDRixNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3pDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztvQkFDbkMsUUFBUSxDQUFDLGNBQWMsQ0FDckIsS0FBSyxFQUNMLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQ2xCLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQ25CLENBQUM7O29CQUNDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDckUsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZGRyZXNzLCBFcmdvQm94LCBOZXR3b3JrUHJlZml4IH0gZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuaW1wb3J0IHsgQ2hhaW5NaW5pbXVtRmVlLCBFcmdvTmV0d29ya1R5cGUsIEZlZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgRmFpbGVkRXJyb3IsIE5vdEZvdW5kRXJyb3IgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgZXJnb0V4cGxvcmVyQ2xpZW50RmFjdG9yeSBmcm9tICdAcm9zZW4tY2xpZW50cy9lcmdvLWV4cGxvcmVyJztcbmltcG9ydCBlcmdvTm9kZUNsaWVudEZhY3RvcnkgZnJvbSAnQHJvc2VuLWNsaWVudHMvZXJnby1ub2RlJztcbmltcG9ydCBKc29uQmlnSW50IGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuaW1wb3J0IGhhbmRsZUFwaUVycm9yIGZyb20gJy4vaGFuZGxlQXBpRXJyb3InO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgTWluaW11bUZlZUJveEJ1aWxkZXIgfSBmcm9tICcuL01pbmltdW1GZWVCb3hCdWlsZGVyJztcbmltcG9ydCB7IE1pbmltdW1GZWVDb25maWcgfSBmcm9tICcuL01pbmltdW1GZWVDb25maWcnO1xuaW1wb3J0IHsgRVJHT19OQVRJVkVfVE9LRU4gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBleHRyYWN0RmVlRnJvbUJveCB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgTWluaW11bUZlZUJveCB7XG4gIHByb3RlY3RlZCByZWFkb25seSBCT1hfRkVUQ0hJTkdfUEFHRV9TSVpFID0gNTA7XG4gIHByb3RlY3RlZCBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyO1xuICBwcm90ZWN0ZWQgYm94OiBFcmdvQm94IHwgdW5kZWZpbmVkO1xuICBwcm90ZWN0ZWQgdG9rZW5JZDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgbWluaW11bUZlZU5GVDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgZXhwbG9yZXJDbGllbnQ6IFJldHVyblR5cGU8dHlwZW9mIGVyZ29FeHBsb3JlckNsaWVudEZhY3Rvcnk+O1xuICBwcm90ZWN0ZWQgbm9kZUNsaWVudDogUmV0dXJuVHlwZTx0eXBlb2YgZXJnb05vZGVDbGllbnRGYWN0b3J5PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICB0b2tlbklkOiBzdHJpbmcsXG4gICAgbWluaW11bUZlZU5GVDogc3RyaW5nLFxuICAgIG5ldHdvcmtUeXBlOiBFcmdvTmV0d29ya1R5cGUsXG4gICAgbmV0d29ya1VybDogc3RyaW5nLFxuICAgIGxvZ2dlcj86IEFic3RyYWN0TG9nZ2VyXG4gICkge1xuICAgIHRoaXMudG9rZW5JZCA9IHRva2VuSWQ7XG4gICAgdGhpcy5taW5pbXVtRmVlTkZUID0gbWluaW11bUZlZU5GVDtcbiAgICBpZiAobmV0d29ya1R5cGUgPT09IEVyZ29OZXR3b3JrVHlwZS5leHBsb3JlcilcbiAgICAgIHRoaXMuZXhwbG9yZXJDbGllbnQgPSBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5KG5ldHdvcmtVcmwpO1xuICAgIGVsc2UgdGhpcy5ub2RlQ2xpZW50ID0gZXJnb05vZGVDbGllbnRGYWN0b3J5KG5ldHdvcmtVcmwpO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyID8gbG9nZ2VyIDogbmV3IER1bW15TG9nZ2VyKCk7XG4gIH1cblxuICAvKipcbiAgICogZmV0Y2hlcyB0aGUgYm94IGZyb20gdGhlIGJsb2NrY2hhaW5cbiAgICogQHJldHVybnMgdHJ1ZSBpZiBhY3Rpb24gd2FzIHN1Y2Nlc3NmdWwsIG90aGVyd2lzZSBmYWxzZVxuICAgKi9cbiAgZmV0Y2hCb3ggPSBhc3luYyAoKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgY29uc3QgYm94SGFzQXBwcm9wcmlhdGVUb2tlbnMgPSAoYm94OiBFcmdvQm94KSA9PiB7XG4gICAgICBjb25zdCB0b2tlbkxlbiA9IGJveC50b2tlbnMoKS5sZW4oKTtcbiAgICAgIGxldCBoYXNNaW5pbXVtRmVlTkZUID0gZmFsc2U7XG4gICAgICBsZXQgaGFzVGFyZ2V0VG9rZW4gPSB0aGlzLnRva2VuSWQgPT09IEVSR09fTkFUSVZFX1RPS0VOID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgY29uc3QgaGFzQ29ycmVjdFRva2VucyA9XG4gICAgICAgIHRoaXMudG9rZW5JZCA9PT0gRVJHT19OQVRJVkVfVE9LRU4gPyB0b2tlbkxlbiA9PT0gMSA6IHRva2VuTGVuID09PSAyO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbkxlbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGlkID0gYm94LnRva2VucygpLmdldChpKS5pZCgpLnRvX3N0cigpO1xuICAgICAgICBpZiAoaWQgPT09IHRoaXMubWluaW11bUZlZU5GVCkgaGFzTWluaW11bUZlZU5GVCA9IHRydWU7XG4gICAgICAgIGVsc2UgaWYgKGlkID09PSB0aGlzLnRva2VuSWQpIGhhc1RhcmdldFRva2VuID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBoYXNDb3JyZWN0VG9rZW5zICYmIGhhc01pbmltdW1GZWVORlQgJiYgaGFzVGFyZ2V0VG9rZW47XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBib3hlcyA9IHRoaXMuZXhwbG9yZXJDbGllbnRcbiAgICAgICAgPyBhd2FpdCB0aGlzLmZldGNoQm94ZXNVc2luZ0V4cGxvcmVyKClcbiAgICAgICAgOiBhd2FpdCB0aGlzLmZldGNoQm94ZXNVc2luZ05vZGUoKTtcblxuICAgICAgdGhpcy5ib3ggPSB0aGlzLnNlbGVjdEVsaWdpYmxlQm94KFxuICAgICAgICBib3hlcy5maWx0ZXIoKGJveDogRXJnb0JveCkgPT4gYm94SGFzQXBwcm9wcmlhdGVUb2tlbnMoYm94KSlcbiAgICAgICk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZSBpbnN0YW5jZW9mIE5vdEZvdW5kRXJyb3IgfHwgZSBpbnN0YW5jZW9mIEZhaWxlZEVycm9yKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYE5vIHZhbGlkIG1pbmltdW0tZmVlIGJveC4gcmVhc29uOiAke2V9YCk7XG4gICAgICAgIHRoaXMuYm94ID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgICBgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdXBkYXRpbmcgbWluaW11bS1mZWUgYm94IGZvciB0b2tlbiBbJHt0aGlzLnRva2VuSWR9XTogJHtlfWBcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvciAmJiBlLnN0YWNrKSB0aGlzLmxvZ2dlci53YXJuKGUuc3RhY2spO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogcmV0dXJucyBmZXRjaGVkIGJveCBvciB0aHJvd3MgYXBwcm9wcmlhdGUgZXJyb3IgaWYgZm91bmQgbW9yZSBvciBub25lXG4gICAqIEBwYXJhbSBlbGlnaWJsZUJveGVzXG4gICAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0RWxpZ2libGVCb3ggPSAoZWxpZ2libGVCb3hlczogQXJyYXk8RXJnb0JveD4pOiBFcmdvQm94ID0+IHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBGb3VuZCBbJHtcbiAgICAgICAgZWxpZ2libGVCb3hlcy5sZW5ndGhcbiAgICAgIH1dIG1pbmltdW0tZmVlIGJveGVzOiAke0pzb25CaWdJbnQuc3RyaW5naWZ5KFxuICAgICAgICBlbGlnaWJsZUJveGVzLm1hcCgoYm94KSA9PiBib3gudG9fanNvbigpKVxuICAgICAgKX1gXG4gICAgKTtcblxuICAgIGlmIChlbGlnaWJsZUJveGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgIGBGb3VuZCBubyBtaW5pbXVtLWZlZSBib3ggZm9yIHRva2VuIFske3RoaXMudG9rZW5JZH1dYFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGVsaWdpYmxlQm94ZXMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEZhaWxlZEVycm9yKFxuICAgICAgICBgRm91bmQgWyR7ZWxpZ2libGVCb3hlcy5sZW5ndGh9XSBtaW5pbXVtLWZlZSBib3hlcyBmb3IgdG9rZW4gWyR7dGhpcy50b2tlbklkfV1gXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYEZvdW5kIG1pbmltdW0tZmVlIGJveCBbJHtlbGlnaWJsZUJveGVzWzBdXG4gICAgICAgICAgLmJveF9pZCgpXG4gICAgICAgICAgLnRvX3N0cigpfV0gZm9yIHRva2VuIFske3RoaXMudG9rZW5JZH1dYFxuICAgICAgKTtcbiAgICAgIHJldHVybiBlbGlnaWJsZUJveGVzWzBdO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogZmV0Y2hlcyBib3ggZnJvbSB0aGUgYmxvY2tjaGFpbiB1c2luZyBleHBsb3JlciBjbGllbnRcbiAgICovXG4gIHByb3RlY3RlZCBmZXRjaEJveGVzVXNpbmdFeHBsb3JlciA9IGFzeW5jICgpOiBQcm9taXNlPEFycmF5PEVyZ29Cb3g+PiA9PiB7XG4gICAgY29uc3QgYm94ZXM6IEFycmF5PEVyZ29Cb3g+ID0gW107XG4gICAgdHJ5IHtcbiAgICAgIGxldCBjdXJyZW50UGFnZSA9IDA7XG4gICAgICBsZXQgYm94ZXNQYWdlID1cbiAgICAgICAgYXdhaXQgdGhpcy5leHBsb3JlckNsaWVudC52MS5nZXRBcGlWMUJveGVzVW5zcGVudEJ5dG9rZW5pZFAxKFxuICAgICAgICAgIHRoaXMubWluaW11bUZlZU5GVCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvZmZzZXQ6IGN1cnJlbnRQYWdlICogdGhpcy5CT1hfRkVUQ0hJTkdfUEFHRV9TSVpFLFxuICAgICAgICAgICAgbGltaXQ6IHRoaXMuQk9YX0ZFVENISU5HX1BBR0VfU0laRSxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYHJlcXVlc3RlZCAnZXhwbG9yZXJDbGllbnQuZ2V0QXBpVjFCb3hlc1Vuc3BlbnRCeXRva2VuaWRQMScgZm9yIHRva2VuIFske1xuICAgICAgICAgIHRoaXMubWluaW11bUZlZU5GVFxuICAgICAgICB9XS4gcmVzOiAke0pzb25CaWdJbnQuc3RyaW5naWZ5KGJveGVzUGFnZSl9YFxuICAgICAgKTtcbiAgICAgIHdoaWxlIChib3hlc1BhZ2UuaXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICBib3hlcy5wdXNoKFxuICAgICAgICAgIC4uLmJveGVzUGFnZS5pdGVtcy5tYXAoKGJveCkgPT5cbiAgICAgICAgICAgIEVyZ29Cb3guZnJvbV9qc29uKEpzb25CaWdJbnQuc3RyaW5naWZ5KGJveCkpXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBjdXJyZW50UGFnZSsrO1xuICAgICAgICBib3hlc1BhZ2UgPVxuICAgICAgICAgIGF3YWl0IHRoaXMuZXhwbG9yZXJDbGllbnQudjEuZ2V0QXBpVjFCb3hlc1Vuc3BlbnRCeXRva2VuaWRQMShcbiAgICAgICAgICAgIHRoaXMubWluaW11bUZlZU5GVCxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgb2Zmc2V0OiBjdXJyZW50UGFnZSAqIHRoaXMuQk9YX0ZFVENISU5HX1BBR0VfU0laRSxcbiAgICAgICAgICAgICAgbGltaXQ6IHRoaXMuQk9YX0ZFVENISU5HX1BBR0VfU0laRSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgcmVxdWVzdGVkICdleHBsb3JlckNsaWVudC5nZXRBcGlWMUJveGVzVW5zcGVudEJ5dG9rZW5pZFAxJyBmb3IgdG9rZW4gWyR7XG4gICAgICAgICAgICB0aGlzLm1pbmltdW1GZWVORlRcbiAgICAgICAgICB9XS4gcmVzOiAke0pzb25CaWdJbnQuc3RyaW5naWZ5KGJveGVzUGFnZSl9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICByZXR1cm4gaGFuZGxlQXBpRXJyb3IoXG4gICAgICAgIGVycm9yLFxuICAgICAgICAnRmFpbGVkIHRvIGdldCBib3hlcyBieSB0b2tlbiBpZCBmcm9tIEVyZ28gRXhwbG9yZXI6J1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYm94ZXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIGZldGNoZXMgdGhlIGJveCBmcm9tIHRoZSBibG9ja2NoYWluIHVzaW5nIG5vZGUgY2xpZW50XG4gICAqL1xuICBwcm90ZWN0ZWQgZmV0Y2hCb3hlc1VzaW5nTm9kZSA9IGFzeW5jICgpOiBQcm9taXNlPEFycmF5PEVyZ29Cb3g+PiA9PiB7XG4gICAgY29uc3QgYm94ZXM6IEFycmF5PEVyZ29Cb3g+ID0gW107XG4gICAgdHJ5IHtcbiAgICAgIGxldCBjdXJyZW50UGFnZSA9IDA7XG4gICAgICBsZXQgYm94ZXNQYWdlID0gYXdhaXQgdGhpcy5ub2RlQ2xpZW50LmdldEJveGVzQnlUb2tlbklkVW5zcGVudChcbiAgICAgICAgdGhpcy5taW5pbXVtRmVlTkZULFxuICAgICAgICB7XG4gICAgICAgICAgb2Zmc2V0OiBjdXJyZW50UGFnZSAqIHRoaXMuQk9YX0ZFVENISU5HX1BBR0VfU0laRSxcbiAgICAgICAgICBsaW1pdDogdGhpcy5CT1hfRkVUQ0hJTkdfUEFHRV9TSVpFLFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGByZXF1ZXN0ZWQgJ25vZGVDbGllbnQuZ2V0Qm94ZXNCeVRva2VuSWRVbnNwZW50JyBmb3IgdG9rZW4gWyR7XG4gICAgICAgICAgdGhpcy5taW5pbXVtRmVlTkZUXG4gICAgICAgIH1dLiByZXM6ICR7SnNvbkJpZ0ludC5zdHJpbmdpZnkoYm94ZXNQYWdlKX1gXG4gICAgICApO1xuICAgICAgd2hpbGUgKGJveGVzUGFnZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgYm94ZXMucHVzaChcbiAgICAgICAgICAuLi5ib3hlc1BhZ2UubWFwKChib3gpID0+XG4gICAgICAgICAgICBFcmdvQm94LmZyb21fanNvbihKc29uQmlnSW50LnN0cmluZ2lmeShib3gpKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgY3VycmVudFBhZ2UrKztcbiAgICAgICAgYm94ZXNQYWdlID0gYXdhaXQgdGhpcy5ub2RlQ2xpZW50LmdldEJveGVzQnlUb2tlbklkVW5zcGVudChcbiAgICAgICAgICB0aGlzLm1pbmltdW1GZWVORlQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgb2Zmc2V0OiBjdXJyZW50UGFnZSAqIHRoaXMuQk9YX0ZFVENISU5HX1BBR0VfU0laRSxcbiAgICAgICAgICAgIGxpbWl0OiB0aGlzLkJPWF9GRVRDSElOR19QQUdFX1NJWkUsXG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgcmVxdWVzdGVkICdub2RlQ2xpZW50LmdldEJveGVzQnlUb2tlbklkVW5zcGVudCcgZm9yIHRva2VuIFske1xuICAgICAgICAgICAgdGhpcy5taW5pbXVtRmVlTkZUXG4gICAgICAgICAgfV0uIHJlczogJHtKc29uQmlnSW50LnN0cmluZ2lmeShib3hlc1BhZ2UpfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgYmFzZUVycm9yID0gJ0ZhaWxlZCB0byBnZXQgYm94ZXMgYnkgdG9rZW4gaWQgZnJvbSBFcmdvIE5vZGU6JztcbiAgICAgIGhhbmRsZUFwaUVycm9yKGVycm9yLCBiYXNlRXJyb3IsIHtcbiAgICAgICAgaGFuZGxlUmVzcG9uZGVkU3RhdGU6IChlcnJvcikgPT4ge1xuICAgICAgICAgIGlmIChlcnJvci5yZXNwb25zZS5zdGF0dXMgPT09IDQwMCkgcmV0dXJuO1xuICAgICAgICAgIHRocm93IG5ldyBGYWlsZWRFcnJvcihcbiAgICAgICAgICAgIGAke2Jhc2VFcnJvcn0gWyR7ZXJyb3IucmVzcG9uc2Uuc3RhdHVzfV0gJHtlcnJvci5yZXNwb25zZS5kYXRhLnJlYXNvbn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBib3hlcztcbiAgfTtcblxuICAvKipcbiAgICogcmV0dXJucyBmZXRjaGVkIGNvbmZpZyBib3hcbiAgICovXG4gIGdldEJveCA9ICgpOiBFcmdvQm94IHwgdW5kZWZpbmVkID0+IHRoaXMuYm94O1xuXG4gIC8qKlxuICAgKiBnZXRzIGN1cnJlbnQgZmVlQ29uZmlnXG4gICAqL1xuICBnZXRDb25maWdzID0gKCk6IEFycmF5PEZlZT4gPT4ge1xuICAgIGlmICghdGhpcy5ib3gpIHRocm93IEVycm9yKGBCb3ggaXMgbm90IGZldGNoZWQgeWV0YCk7XG4gICAgY29uc3QgZmVlID0gZXh0cmFjdEZlZUZyb21Cb3godGhpcy5ib3gpO1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgYEV4dHJhY3RlZCBmZWUgY29uZmlnIGZyb20gYm94IFske3RoaXMuYm94XG4gICAgICAgIC5ib3hfaWQoKVxuICAgICAgICAudG9fc3RyKCl9XTogJHtKc29uQmlnSW50LnN0cmluZ2lmeShmZWUpfWBcbiAgICApO1xuICAgIHJldHVybiBmZWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIGdldHMgY29ycmVzcG9uZGluZyBjb25maWcgZm9yIHR3byBjaGFpbnMgYW5kIGhlaWdodFxuICAgKiBAcGFyYW0gZnJvbUNoYWluXG4gICAqIEBwYXJhbSBoZWlnaHQgYmxvY2tjaGFpbiBoZWlnaHQgZm9yIGZyb21DaGFpblxuICAgKiBAcGFyYW0gdG9DaGFpblxuICAgKi9cbiAgZ2V0RmVlID0gKFxuICAgIGZyb21DaGFpbjogc3RyaW5nLFxuICAgIGhlaWdodDogbnVtYmVyLFxuICAgIHRvQ2hhaW46IHN0cmluZ1xuICApOiBDaGFpbk1pbmltdW1GZWUgPT4ge1xuICAgIGlmICghdGhpcy5ib3gpIHRocm93IEVycm9yKGBCb3ggaXMgbm90IGZldGNoZWQgeWV0YCk7XG5cbiAgICBjb25zdCBmZWVzID0gdGhpcy5nZXRDb25maWdzKCkucmV2ZXJzZSgpO1xuICAgIGZvciAoY29uc3QgZmVlIG9mIGZlZXMpIHtcbiAgICAgIGlmICghT2JqZWN0Lmhhc093bihmZWUuaGVpZ2h0cywgZnJvbUNoYWluKSlcbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoXG4gICAgICAgICAgYE5vIGZlZSBmb3VuZCBmb3IgY2hhaW4gWyR7ZnJvbUNoYWlufV0gaW4gYm94IFske3RoaXMuYm94XG4gICAgICAgICAgICAuYm94X2lkKClcbiAgICAgICAgICAgIC50b19zdHIoKX1dYFxuICAgICAgICApO1xuICAgICAgaWYgKGZlZS5oZWlnaHRzW2Zyb21DaGFpbl0gPCBoZWlnaHQpIHtcbiAgICAgICAgY29uc3QgY2hhaW5GZWUgPSBmZWUuY29uZmlnc1t0b0NoYWluXTtcbiAgICAgICAgaWYgKGNoYWluRmVlKSByZXR1cm4gbmV3IENoYWluTWluaW11bUZlZShjaGFpbkZlZSk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgQ2hhaW4gWyR7dG9DaGFpbn1dIGlzIG5vdCBzdXBwb3J0ZWQgYXQgZ2l2ZW4gaGVpZ2h0IG9mIGZyb21DaGFpbiBbJHtoZWlnaHR9IG9mICR7ZnJvbUNoYWlufV0gaW4gYm94IFske3RoaXMuYm94XG4gICAgICAgICAgICAgIC5ib3hfaWQoKVxuICAgICAgICAgICAgICAudG9fc3RyKCl9XWBcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgYENvbmZpZyBkb2VzIG5vdCBzdXBwb3J0IGhlaWdodCBbJHtoZWlnaHR9XSBmb3IgY2hhaW4gWyR7ZnJvbUNoYWlufV0gaW4gYm94IFske3RoaXMuYm94XG4gICAgICAgIC5ib3hfaWQoKVxuICAgICAgICAudG9fc3RyKCl9XWBcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBnZW5lcmF0ZXMgYSBNaW5pbXVtRmVlQm94QnVpbGRlciB1c2luZyBjdXJyZW50IGJveFxuICAgKiAgbm90ZSB0aGF0ICdoZWlnaHQnIHBhcmFtZXRlciBvZiBidWlsZGVyIHdvbid0IGJlIHNldFxuICAgKi9cbiAgdG9CdWlsZGVyID0gKCk6IE1pbmltdW1GZWVCb3hCdWlsZGVyID0+IHtcbiAgICBpZiAoIXRoaXMuYm94KSB0aHJvdyBFcnJvcihgQm94IGlzIG5vdCBmZXRjaGVkIHlldGApO1xuXG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBNaW5pbXVtRmVlQm94QnVpbGRlcihcbiAgICAgIHRoaXMubWluaW11bUZlZU5GVCxcbiAgICAgIEFkZHJlc3MucmVjcmVhdGVfZnJvbV9lcmdvX3RyZWUodGhpcy5ib3guZXJnb190cmVlKCkpLnRvX2Jhc2U1OChcbiAgICAgICAgTmV0d29ya1ByZWZpeC5NYWlubmV0XG4gICAgICApXG4gICAgKVxuICAgICAgLnNldFZhbHVlKEJpZ0ludCh0aGlzLmJveC52YWx1ZSgpLmFzX2k2NCgpLnRvX3N0cigpKSlcbiAgICAgIC5zZXRUb2tlbih0aGlzLnRva2VuSWQpO1xuXG4gICAgdGhpcy5nZXRDb25maWdzKCkuZm9yRWFjaCgoZmVlKSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYEV4dHJhY3RlZCBmZWUgY29uZmlnIGZyb20gYm94IFske3RoaXMuYm94IS5ib3hfaWQoKS50b19zdHIoKX1dOiAke0pzb25CaWdJbnQuc3RyaW5naWZ5KFxuICAgICAgICAgIGZlZVxuICAgICAgICApfWBcbiAgICAgICk7XG4gICAgICBjb25zdCBjaGFpbkZlZSA9IG5ldyBNaW5pbXVtRmVlQ29uZmlnKCk7XG4gICAgICBPYmplY3Qua2V5cyhmZWUuaGVpZ2h0cykuZm9yRWFjaCgoY2hhaW4pID0+IHtcbiAgICAgICAgaWYgKE9iamVjdC5oYXNPd24oZmVlLmNvbmZpZ3MsIGNoYWluKSlcbiAgICAgICAgICBjaGFpbkZlZS5zZXRDaGFpbkNvbmZpZyhcbiAgICAgICAgICAgIGNoYWluLFxuICAgICAgICAgICAgZmVlLmhlaWdodHNbY2hhaW5dLFxuICAgICAgICAgICAgZmVlLmNvbmZpZ3NbY2hhaW5dXG4gICAgICAgICAgKTtcbiAgICAgICAgZWxzZSBjaGFpbkZlZS5zZXRDaGFpbkNvbmZpZyhjaGFpbiwgZmVlLmhlaWdodHNbY2hhaW5dLCB1bmRlZmluZWQpO1xuICAgICAgfSk7XG4gICAgICBidWlsZGVyLmFkZENvbmZpZyhjaGFpbkZlZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGJ1aWxkZXI7XG4gIH07XG59XG4iXX0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MinimumFeeBoxBuilder.d.ts","sourceRoot":"","sources":["../../lib/MinimumFeeBoxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAMR,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAK9B,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,cAAe,gBAAgB,KAAG,oBAAoB,CAG7D;IAEF;;;OAGG;IACH,YAAY,UAAW,MAAM,KAAG,oBAAoB,CAGlD;IAEF;;OAEG;IACH,UAAU,QAAO,MAAM,GAAG,CAAC,CAEzB;IAEF;;;;OAIG;IACH,QAAQ,YAAa,MAAM,KAAG,oBAAoB,CAGhD;IAEF;;;OAGG;IACH,SAAS,kBAAmB,MAAM,KAAG,oBAAoB,CAGvD;IAEF;;;OAGG;IACH,QAAQ,YAAa,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"}
|