@rosen-bridge/minimum-fee 0.1.12 → 0.1.13-672ee610

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/README.md ADDED
@@ -0,0 +1,28 @@
1
+ # @rosen-bridge/minimum-fee
2
+
3
+ ## Table of contents
4
+
5
+ - [Introduction](#introduction)
6
+ - [Installation](#installation)
7
+
8
+ ## Introduction
9
+
10
+ `@rosen-bridge/minimum-fee` Typescript package to build and get minimum fee of the bridge for supported tokens from blockchain
11
+
12
+ ## Installation
13
+
14
+ npm:
15
+
16
+ ```sh
17
+ npm i @rosen-bridge/minimum-fee
18
+ ```
19
+
20
+ yarn:
21
+
22
+ ```sh
23
+ yarn add @rosen-bridge/minimum-fee
24
+ ```
25
+
26
+ #### Examples
27
+
28
+ **TODO**
@@ -0,0 +1,38 @@
1
+ import { ErgoBox } from 'ergo-lib-wasm-nodejs';
2
+ import { ErgoNetworkType } from './types';
3
+ import ergoExplorerClientFactory from '@rosen-clients/ergo-explorer';
4
+ import ergoNodeClientFactory from '@rosen-clients/ergo-node';
5
+ import { AbstractLogger } from '@rosen-bridge/logger-interface';
6
+ export declare class MinimumFeeBox {
7
+ protected readonly BOX_FETCHING_PAGE_SIZE = 50;
8
+ protected logger: AbstractLogger;
9
+ protected box: ErgoBox;
10
+ protected tokenId: string;
11
+ protected minimumFeeNFT: string;
12
+ protected address: string;
13
+ protected explorerClient: ReturnType<typeof ergoExplorerClientFactory>;
14
+ protected nodeClient: ReturnType<typeof ergoNodeClientFactory>;
15
+ constructor(tokenId: string, minimumFeeNFT: string, address: string, networkType: ErgoNetworkType, networkUrl: string, logger?: AbstractLogger);
16
+ /**
17
+ * fetches the box from the blockchain
18
+ */
19
+ fetchBox: () => Promise<void>;
20
+ /**
21
+ * returns fetched box or throws approprite error if found more or none
22
+ * @param eligibleBoxes
23
+ */
24
+ protected selectEligibleBox: (eligibleBoxes: Array<ErgoBox>) => ErgoBox;
25
+ /**
26
+ * fetches box from the blockchain using explorer client
27
+ */
28
+ protected fetchBoxUsingExplorer: () => Promise<ErgoBox>;
29
+ /**
30
+ * fetches the box from the blockchain using node client
31
+ */
32
+ protected fetchBoxUsingNode: () => Promise<ErgoBox>;
33
+ /**
34
+ * returns fetched config box
35
+ */
36
+ getBox: () => ErgoBox;
37
+ }
38
+ //# sourceMappingURL=MinimumFeeBox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MinimumFeeBox.d.ts","sourceRoot":"","sources":["../../lib/MinimumFeeBox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,OAAO,yBAAyB,MAAM,8BAA8B,CAAC;AACrE,OAAO,qBAEN,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,cAAc,EAAe,MAAM,gCAAgC,CAAC;AAI7E,qBAAa,aAAa;IACxB,SAAS,CAAC,QAAQ,CAAC,sBAAsB,MAAM;IAC/C,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC;IACjC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,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,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,eAAe,EAC5B,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,cAAc;IAWzB;;OAEG;IACH,QAAQ,QAAa,QAAQ,IAAI,CAAC,CAGhC;IAEF;;;OAGG;IACH,SAAS,CAAC,iBAAiB,kBAAmB,MAAM,OAAO,CAAC,KAAG,OAAO,CAyBpE;IAEF;;OAEG;IACH,SAAS,CAAC,qBAAqB,QAAa,QAAQ,OAAO,CAAC,CA+C1D;IAEF;;OAEG;IACH,SAAS,CAAC,iBAAiB,QAAa,QAAQ,OAAO,CAAC,CAyDtD;IAEF;;OAEG;IACH,MAAM,QAAO,OAAO,CAAa;CAClC"}
@@ -0,0 +1,132 @@
1
+ import { ErgoBox } from 'ergo-lib-wasm-nodejs';
2
+ import { 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/logger-interface';
9
+ const ERGO_NATIVE_TOKEN = 'erg';
10
+ export class MinimumFeeBox {
11
+ BOX_FETCHING_PAGE_SIZE = 50;
12
+ logger;
13
+ box;
14
+ tokenId;
15
+ minimumFeeNFT;
16
+ address;
17
+ explorerClient;
18
+ nodeClient;
19
+ constructor(tokenId, minimumFeeNFT, address, networkType, networkUrl, logger) {
20
+ this.tokenId = tokenId;
21
+ this.minimumFeeNFT = minimumFeeNFT;
22
+ this.address = address;
23
+ if (networkType === ErgoNetworkType.explorer)
24
+ this.explorerClient = ergoExplorerClientFactory(networkUrl);
25
+ else
26
+ this.nodeClient = ergoNodeClientFactory(networkUrl);
27
+ this.logger = logger ? logger : new DummyLogger();
28
+ }
29
+ /**
30
+ * fetches the box from the blockchain
31
+ */
32
+ fetchBox = async () => {
33
+ if (this.explorerClient)
34
+ this.box = await this.fetchBoxUsingExplorer();
35
+ else
36
+ this.box = await this.fetchBoxUsingNode();
37
+ };
38
+ /**
39
+ * returns fetched box or throws approprite error if found more or none
40
+ * @param eligibleBoxes
41
+ */
42
+ selectEligibleBox = (eligibleBoxes) => {
43
+ this.logger.debug(`Found [${eligibleBoxes.length}] minimum-fee boxes: ${JsonBigInt.stringify(eligibleBoxes.map((box) => box.to_json()))}`);
44
+ if (eligibleBoxes.length === 0)
45
+ throw new NotFoundError(`Found no minimum-fee box for token [${this.tokenId}] and address [${this.address}]`);
46
+ else if (eligibleBoxes.length > 1)
47
+ throw new FailedError(`Found [${eligibleBoxes.length}] minimum-fee boxes for token [${this.tokenId}] and address [${this.address}]`);
48
+ else {
49
+ this.logger.debug(`Found minimum-fee box [${eligibleBoxes[0]
50
+ .box_id()
51
+ .to_str()}] for token [${this.tokenId}] and address [${this.address}]`);
52
+ return eligibleBoxes[0];
53
+ }
54
+ };
55
+ /**
56
+ * fetches box from the blockchain using explorer client
57
+ */
58
+ fetchBoxUsingExplorer = async () => {
59
+ const eligibleBoxes = [];
60
+ try {
61
+ let currentPage = 0;
62
+ let boxesPage = await this.explorerClient.v1.getApiV1BoxesUnspentBytokenidP1(this.minimumFeeNFT, {
63
+ offset: currentPage * this.BOX_FETCHING_PAGE_SIZE,
64
+ limit: this.BOX_FETCHING_PAGE_SIZE,
65
+ });
66
+ while (boxesPage.items?.length) {
67
+ this.logger.debug(`requested 'explorerClient.getApiV1BoxesUnspentBytokenidP1' for token [${this.minimumFeeNFT}]. res: ${JsonBigInt.stringify(boxesPage)}`);
68
+ eligibleBoxes.push(...boxesPage.items
69
+ .filter((box) => box.address === this.address && this.tokenId === ERGO_NATIVE_TOKEN
70
+ ? box.assets?.length === 1
71
+ : box.assets?.length === 2 &&
72
+ box.assets?.some((asset) => asset.tokenId === this.tokenId))
73
+ .map((box) => ErgoBox.from_json(JsonBigInt.stringify(box))));
74
+ currentPage++;
75
+ boxesPage =
76
+ await this.explorerClient.v1.getApiV1BoxesUnspentBytokenidP1(this.minimumFeeNFT, {
77
+ offset: currentPage * this.BOX_FETCHING_PAGE_SIZE,
78
+ limit: this.BOX_FETCHING_PAGE_SIZE,
79
+ });
80
+ }
81
+ }
82
+ catch (error) {
83
+ return handleApiError(error, 'Failed to get boxes by token id from Ergo Explorer:');
84
+ }
85
+ return this.selectEligibleBox(eligibleBoxes);
86
+ };
87
+ /**
88
+ * fetches the box from the blockchain using node client
89
+ */
90
+ fetchBoxUsingNode = async () => {
91
+ const eligibleBoxes = [];
92
+ try {
93
+ const boxHasConfigToken = (box) => box.assets?.some((asset) => asset.tokenId === this.minimumFeeNFT);
94
+ const boxHasAppropriateToken = (box) => this.tokenId === ERGO_NATIVE_TOKEN
95
+ ? box.assets?.length === 1
96
+ : box.assets?.length === 2 &&
97
+ box.assets?.some((asset) => asset.tokenId === this.tokenId);
98
+ let currentPage = 0;
99
+ let boxesPage = await this.nodeClient.getBoxesByAddressUnspent(this.address, {
100
+ offset: currentPage * this.BOX_FETCHING_PAGE_SIZE,
101
+ limit: this.BOX_FETCHING_PAGE_SIZE,
102
+ });
103
+ while (boxesPage.length !== 0) {
104
+ this.logger.debug(`requested 'nodeClient.getBoxesByAddressUnspent' for token [${this.minimumFeeNFT}]. res: ${JsonBigInt.stringify(boxesPage)}`);
105
+ eligibleBoxes.push(...boxesPage
106
+ .filter((box) => boxHasConfigToken(box) && boxHasAppropriateToken(box))
107
+ .map((box) => ErgoBox.from_json(JsonBigInt.stringify(box))));
108
+ currentPage++;
109
+ boxesPage = await this.nodeClient.getBoxesByAddressUnspent(this.address, {
110
+ offset: currentPage * this.BOX_FETCHING_PAGE_SIZE,
111
+ limit: this.BOX_FETCHING_PAGE_SIZE,
112
+ });
113
+ }
114
+ }
115
+ catch (error) {
116
+ const baseError = 'Failed to get boxes by token id from Ergo Node:';
117
+ handleApiError(error, baseError, {
118
+ handleRespondedState: (error) => {
119
+ if (error.response.status === 400)
120
+ return;
121
+ throw new FailedError(`${baseError} [${error.response.status}] ${error.response.data.reason}`);
122
+ },
123
+ });
124
+ }
125
+ return this.selectEligibleBox(eligibleBoxes);
126
+ };
127
+ /**
128
+ * returns fetched config box
129
+ */
130
+ getBox = () => this.box;
131
+ }
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWluaW11bUZlZUJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9NaW5pbXVtRmVlQm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3RELE9BQU8seUJBQXlCLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxxQkFFTixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sVUFBVSxNQUFNLDJCQUEyQixDQUFDO0FBQ25ELE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFDO0FBQzlDLE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFN0UsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUM7QUFFaEMsTUFBTSxPQUFPLGFBQWE7SUFDTCxzQkFBc0IsR0FBRyxFQUFFLENBQUM7SUFDckMsTUFBTSxDQUFpQjtJQUN2QixHQUFHLENBQVU7SUFDYixPQUFPLENBQVM7SUFDaEIsYUFBYSxDQUFTO0lBQ3RCLE9BQU8sQ0FBUztJQUNoQixjQUFjLENBQStDO0lBQzdELFVBQVUsQ0FBMkM7SUFFL0QsWUFDRSxPQUFlLEVBQ2YsYUFBcUIsRUFDckIsT0FBZSxFQUNmLFdBQTRCLEVBQzVCLFVBQWtCLEVBQ2xCLE1BQXVCO1FBRXZCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksV0FBVyxLQUFLLGVBQWUsQ0FBQyxRQUFRO1lBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcseUJBQXlCLENBQUMsVUFBVSxDQUFDLENBQUM7O1lB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QUssRUFBRSxJQUFJLENBQUMsc0JBQXNCO2lCQUNuQyxDQUNGLENBQUM7YUFDSDtTQUNGO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxNQUFNLFNBQVMsR0FBRyxpREFBaUQsQ0FBQztZQUNwRSxjQUFjLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQkFDL0Isb0JBQW9CLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDOUIsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHO3dCQUFFLE9BQU87b0JBQzFDLE1BQU0sSUFBSSxXQUFXLENBQ25CLEdBQUcsU0FBUyxLQUFLLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUN4RSxDQUFDO2dCQUNKLENBQUM7YUFDRixDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9DLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsTUFBTSxHQUFHLEdBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7Q0FDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFcmdvQm94IH0gZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuaW1wb3J0IHsgRXJnb05ldHdvcmtUeXBlIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBGYWlsZWRFcnJvciwgTm90Rm91bmRFcnJvciB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5IGZyb20gJ0Byb3Nlbi1jbGllbnRzL2VyZ28tZXhwbG9yZXInO1xuaW1wb3J0IGVyZ29Ob2RlQ2xpZW50RmFjdG9yeSwge1xuICBJbmRleGVkRXJnb0JveCxcbn0gZnJvbSAnQHJvc2VuLWNsaWVudHMvZXJnby1ub2RlJztcbmltcG9ydCBKc29uQmlnSW50IGZyb20gJ0Byb3Nlbi1icmlkZ2UvanNvbi1iaWdpbnQnO1xuaW1wb3J0IGhhbmRsZUFwaUVycm9yIGZyb20gJy4vaGFuZGxlQXBpRXJyb3InO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9sb2dnZXItaW50ZXJmYWNlJztcblxuY29uc3QgRVJHT19OQVRJVkVfVE9LRU4gPSAnZXJnJztcblxuZXhwb3J0IGNsYXNzIE1pbmltdW1GZWVCb3gge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgQk9YX0ZFVENISU5HX1BBR0VfU0laRSA9IDUwO1xuICBwcm90ZWN0ZWQgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcjtcbiAgcHJvdGVjdGVkIGJveDogRXJnb0JveDtcbiAgcHJvdGVjdGVkIHRva2VuSWQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIG1pbmltdW1GZWVORlQ6IHN0cmluZztcbiAgcHJvdGVjdGVkIGFkZHJlc3M6IHN0cmluZztcbiAgcHJvdGVjdGVkIGV4cGxvcmVyQ2xpZW50OiBSZXR1cm5UeXBlPHR5cGVvZiBlcmdvRXhwbG9yZXJDbGllbnRGYWN0b3J5PjtcbiAgcHJvdGVjdGVkIG5vZGVDbGllbnQ6IFJldHVyblR5cGU8dHlwZW9mIGVyZ29Ob2RlQ2xpZW50RmFjdG9yeT47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdG9rZW5JZDogc3RyaW5nLFxuICAgIG1pbmltdW1GZWVORlQ6IHN0cmluZyxcbiAgICBhZGRyZXNzOiBzdHJpbmcsXG4gICAgbmV0d29ya1R5cGU6IEVyZ29OZXR3b3JrVHlwZSxcbiAgICBuZXR3b3JrVXJsOiBzdHJpbmcsXG4gICAgbG9nZ2VyPzogQWJzdHJhY3RMb2dnZXJcbiAgKSB7XG4gICAgdGhpcy50b2tlbklkID0gdG9rZW5JZDtcbiAgICB0aGlzLm1pbmltdW1GZWVORlQgPSBtaW5pbXVtRmVlTkZUO1xuICAgIHRoaXMuYWRkcmVzcyA9IGFkZHJlc3M7XG4gICAgaWYgKG5ldHdvcmtUeXBlID09PSBFcmdvTmV0d29ya1R5cGUuZXhwbG9yZXIpXG4gICAgICB0aGlzLmV4cGxvcmVyQ2xpZW50ID0gZXJnb0V4cGxvcmVyQ2xpZW50RmFjdG9yeShuZXR3b3JrVXJsKTtcbiAgICBlbHNlIHRoaXMubm9kZUNsaWVudCA9IGVyZ29Ob2RlQ2xpZW50RmFjdG9yeShuZXR3b3JrVXJsKTtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlciA/IGxvZ2dlciA6IG5ldyBEdW1teUxvZ2dlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIGZldGNoZXMgdGhlIGJveCBmcm9tIHRoZSBibG9ja2NoYWluXG4gICAqL1xuICBmZXRjaEJveCA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAodGhpcy5leHBsb3JlckNsaWVudCkgdGhpcy5ib3ggPSBhd2FpdCB0aGlzLmZldGNoQm94VXNpbmdFeHBsb3JlcigpO1xuICAgIGVsc2UgdGhpcy5ib3ggPSBhd2FpdCB0aGlzLmZldGNoQm94VXNpbmdOb2RlKCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJldHVybnMgZmV0Y2hlZCBib3ggb3IgdGhyb3dzIGFwcHJvcHJpdGUgZXJyb3IgaWYgZm91bmQgbW9yZSBvciBub25lXG4gICAqIEBwYXJhbSBlbGlnaWJsZUJveGVzXG4gICAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0RWxpZ2libGVCb3ggPSAoZWxpZ2libGVCb3hlczogQXJyYXk8RXJnb0JveD4pOiBFcmdvQm94ID0+IHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBGb3VuZCBbJHtcbiAgICAgICAgZWxpZ2libGVCb3hlcy5sZW5ndGhcbiAgICAgIH1dIG1pbmltdW0tZmVlIGJveGVzOiAke0pzb25CaWdJbnQuc3RyaW5naWZ5KFxuICAgICAgICBlbGlnaWJsZUJveGVzLm1hcCgoYm94KSA9PiBib3gudG9fanNvbigpKVxuICAgICAgKX1gXG4gICAgKTtcblxuICAgIGlmIChlbGlnaWJsZUJveGVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKFxuICAgICAgICBgRm91bmQgbm8gbWluaW11bS1mZWUgYm94IGZvciB0b2tlbiBbJHt0aGlzLnRva2VuSWR9XSBhbmQgYWRkcmVzcyBbJHt0aGlzLmFkZHJlc3N9XWBcbiAgICAgICk7XG4gICAgZWxzZSBpZiAoZWxpZ2libGVCb3hlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgbmV3IEZhaWxlZEVycm9yKFxuICAgICAgICBgRm91bmQgWyR7ZWxpZ2libGVCb3hlcy5sZW5ndGh9XSBtaW5pbXVtLWZlZSBib3hlcyBmb3IgdG9rZW4gWyR7dGhpcy50b2tlbklkfV0gYW5kIGFkZHJlc3MgWyR7dGhpcy5hZGRyZXNzfV1gXG4gICAgICApO1xuICAgIGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBGb3VuZCBtaW5pbXVtLWZlZSBib3ggWyR7ZWxpZ2libGVCb3hlc1swXVxuICAgICAgICAgIC5ib3hfaWQoKVxuICAgICAgICAgIC50b19zdHIoKX1dIGZvciB0b2tlbiBbJHt0aGlzLnRva2VuSWR9XSBhbmQgYWRkcmVzcyBbJHt0aGlzLmFkZHJlc3N9XWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gZWxpZ2libGVCb3hlc1swXTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIGZldGNoZXMgYm94IGZyb20gdGhlIGJsb2NrY2hhaW4gdXNpbmcgZXhwbG9yZXIgY2xpZW50XG4gICAqL1xuICBwcm90ZWN0ZWQgZmV0Y2hCb3hVc2luZ0V4cGxvcmVyID0gYXN5bmMgKCk6IFByb21pc2U8RXJnb0JveD4gPT4ge1xuICAgIGNvbnN0IGVsaWdpYmxlQm94ZXM6IEFycmF5PEVyZ29Cb3g+ID0gW107XG4gICAgdHJ5IHtcbiAgICAgIGxldCBjdXJyZW50UGFnZSA9IDA7XG4gICAgICBsZXQgYm94ZXNQYWdlID1cbiAgICAgICAgYXdhaXQgdGhpcy5leHBsb3JlckNsaWVudC52MS5nZXRBcGlWMUJveGVzVW5zcGVudEJ5dG9rZW5pZFAxKFxuICAgICAgICAgIHRoaXMubWluaW11bUZlZU5GVCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvZmZzZXQ6IGN1cnJlbnRQYWdlICogdGhpcy5CT1hfRkVUQ0hJTkdfUEFHRV9TSVpFLFxuICAgICAgICAgICAgbGltaXQ6IHRoaXMuQk9YX0ZFVENISU5HX1BBR0VfU0laRSxcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB3aGlsZSAoYm94ZXNQYWdlLml0ZW1zPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYHJlcXVlc3RlZCAnZXhwbG9yZXJDbGllbnQuZ2V0QXBpVjFCb3hlc1Vuc3BlbnRCeXRva2VuaWRQMScgZm9yIHRva2VuIFske1xuICAgICAgICAgICAgdGhpcy5taW5pbXVtRmVlTkZUXG4gICAgICAgICAgfV0uIHJlczogJHtKc29uQmlnSW50LnN0cmluZ2lmeShib3hlc1BhZ2UpfWBcbiAgICAgICAgKTtcblxuICAgICAgICBlbGlnaWJsZUJveGVzLnB1c2goXG4gICAgICAgICAgLi4uYm94ZXNQYWdlLml0ZW1zXG4gICAgICAgICAgICAuZmlsdGVyKChib3gpID0+XG4gICAgICAgICAgICAgIGJveC5hZGRyZXNzID09PSB0aGlzLmFkZHJlc3MgJiYgdGhpcy50b2tlbklkID09PSBFUkdPX05BVElWRV9UT0tFTlxuICAgICAgICAgICAgICAgID8gYm94LmFzc2V0cz8ubGVuZ3RoID09PSAxXG4gICAgICAgICAgICAgICAgOiBib3guYXNzZXRzPy5sZW5ndGggPT09IDIgJiZcbiAgICAgICAgICAgICAgICAgIGJveC5hc3NldHM/LnNvbWUoKGFzc2V0KSA9PiBhc3NldC50b2tlbklkID09PSB0aGlzLnRva2VuSWQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubWFwKChib3g6IGFueSkgPT4gRXJnb0JveC5mcm9tX2pzb24oSnNvbkJpZ0ludC5zdHJpbmdpZnkoYm94KSkpXG4gICAgICAgICk7XG4gICAgICAgIGN1cnJlbnRQYWdlKys7XG4gICAgICAgIGJveGVzUGFnZSA9XG4gICAgICAgICAgYXdhaXQgdGhpcy5leHBsb3JlckNsaWVudC52MS5nZXRBcGlWMUJveGVzVW5zcGVudEJ5dG9rZW5pZFAxKFxuICAgICAgICAgICAgdGhpcy5taW5pbXVtRmVlTkZULFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBvZmZzZXQ6IGN1cnJlbnRQYWdlICogdGhpcy5CT1hfRkVUQ0hJTkdfUEFHRV9TSVpFLFxuICAgICAgICAgICAgICBsaW1pdDogdGhpcy5CT1hfRkVUQ0hJTkdfUEFHRV9TSVpFLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHJldHVybiBoYW5kbGVBcGlFcnJvcihcbiAgICAgICAgZXJyb3IsXG4gICAgICAgICdGYWlsZWQgdG8gZ2V0IGJveGVzIGJ5IHRva2VuIGlkIGZyb20gRXJnbyBFeHBsb3JlcjonXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNlbGVjdEVsaWdpYmxlQm94KGVsaWdpYmxlQm94ZXMpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBmZXRjaGVzIHRoZSBib3ggZnJvbSB0aGUgYmxvY2tjaGFpbiB1c2luZyBub2RlIGNsaWVudFxuICAgKi9cbiAgcHJvdGVjdGVkIGZldGNoQm94VXNpbmdOb2RlID0gYXN5bmMgKCk6IFByb21pc2U8RXJnb0JveD4gPT4ge1xuICAgIGNvbnN0IGVsaWdpYmxlQm94ZXM6IEFycmF5PEVyZ29Cb3g+ID0gW107XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJveEhhc0NvbmZpZ1Rva2VuID0gKGJveDogSW5kZXhlZEVyZ29Cb3gpID0+XG4gICAgICAgIGJveC5hc3NldHM/LnNvbWUoKGFzc2V0KSA9PiBhc3NldC50b2tlbklkID09PSB0aGlzLm1pbmltdW1GZWVORlQpO1xuICAgICAgY29uc3QgYm94SGFzQXBwcm9wcmlhdGVUb2tlbiA9IChib3g6IEluZGV4ZWRFcmdvQm94KSA9PlxuICAgICAgICB0aGlzLnRva2VuSWQgPT09IEVSR09fTkFUSVZFX1RPS0VOXG4gICAgICAgICAgPyBib3guYXNzZXRzPy5sZW5ndGggPT09IDFcbiAgICAgICAgICA6IGJveC5hc3NldHM/Lmxlbmd0aCA9PT0gMiAmJlxuICAgICAgICAgICAgYm94LmFzc2V0cz8uc29tZSgoYXNzZXQpID0+IGFzc2V0LnRva2VuSWQgPT09IHRoaXMudG9rZW5JZCk7XG5cbiAgICAgIGxldCBjdXJyZW50UGFnZSA9IDA7XG4gICAgICBsZXQgYm94ZXNQYWdlID0gYXdhaXQgdGhpcy5ub2RlQ2xpZW50LmdldEJveGVzQnlBZGRyZXNzVW5zcGVudChcbiAgICAgICAgdGhpcy5hZGRyZXNzLFxuICAgICAgICB7XG4gICAgICAgICAgb2Zmc2V0OiBjdXJyZW50UGFnZSAqIHRoaXMuQk9YX0ZFVENISU5HX1BBR0VfU0laRSxcbiAgICAgICAgICBsaW1pdDogdGhpcy5CT1hfRkVUQ0hJTkdfUEFHRV9TSVpFLFxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgd2hpbGUgKGJveGVzUGFnZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYHJlcXVlc3RlZCAnbm9kZUNsaWVudC5nZXRCb3hlc0J5QWRkcmVzc1Vuc3BlbnQnIGZvciB0b2tlbiBbJHtcbiAgICAgICAgICAgIHRoaXMubWluaW11bUZlZU5GVFxuICAgICAgICAgIH1dLiByZXM6ICR7SnNvbkJpZ0ludC5zdHJpbmdpZnkoYm94ZXNQYWdlKX1gXG4gICAgICAgICk7XG5cbiAgICAgICAgZWxpZ2libGVCb3hlcy5wdXNoKFxuICAgICAgICAgIC4uLmJveGVzUGFnZVxuICAgICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgICAgKGJveCkgPT4gYm94SGFzQ29uZmlnVG9rZW4oYm94KSAmJiBib3hIYXNBcHByb3ByaWF0ZVRva2VuKGJveClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5tYXAoKGJveDogSW5kZXhlZEVyZ29Cb3gpID0+XG4gICAgICAgICAgICAgIEVyZ29Cb3guZnJvbV9qc29uKEpzb25CaWdJbnQuc3RyaW5naWZ5KGJveCkpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGN1cnJlbnRQYWdlKys7XG4gICAgICAgIGJveGVzUGFnZSA9IGF3YWl0IHRoaXMubm9kZUNsaWVudC5nZXRCb3hlc0J5QWRkcmVzc1Vuc3BlbnQoXG4gICAgICAgICAgdGhpcy5hZGRyZXNzLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9mZnNldDogY3VycmVudFBhZ2UgKiB0aGlzLkJPWF9GRVRDSElOR19QQUdFX1NJWkUsXG4gICAgICAgICAgICBsaW1pdDogdGhpcy5CT1hfRkVUQ0hJTkdfUEFHRV9TSVpFLFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgYmFzZUVycm9yID0gJ0ZhaWxlZCB0byBnZXQgYm94ZXMgYnkgdG9rZW4gaWQgZnJvbSBFcmdvIE5vZGU6JztcbiAgICAgIGhhbmRsZUFwaUVycm9yKGVycm9yLCBiYXNlRXJyb3IsIHtcbiAgICAgICAgaGFuZGxlUmVzcG9uZGVkU3RhdGU6IChlcnJvcikgPT4ge1xuICAgICAgICAgIGlmIChlcnJvci5yZXNwb25zZS5zdGF0dXMgPT09IDQwMCkgcmV0dXJuO1xuICAgICAgICAgIHRocm93IG5ldyBGYWlsZWRFcnJvcihcbiAgICAgICAgICAgIGAke2Jhc2VFcnJvcn0gWyR7ZXJyb3IucmVzcG9uc2Uuc3RhdHVzfV0gJHtlcnJvci5yZXNwb25zZS5kYXRhLnJlYXNvbn1gXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnNlbGVjdEVsaWdpYmxlQm94KGVsaWdpYmxlQm94ZXMpO1xuICB9O1xuXG4gIC8qKlxuICAgKiByZXR1cm5zIGZldGNoZWQgY29uZmlnIGJveFxuICAgKi9cbiAgZ2V0Qm94ID0gKCk6IEVyZ29Cb3ggPT4gdGhpcy5ib3g7XG59XG4iXX0=
@@ -0,0 +1,47 @@
1
+ import { BoxValue, ErgoBoxCandidate } from 'ergo-lib-wasm-nodejs';
2
+ import { MinimumFeeConfig } from './MinimumFeeConfig';
3
+ import { Fee } from './types';
4
+ export declare class MinimumFeeBoxBuilder {
5
+ protected fees: Array<Fee>;
6
+ protected boxValue: BoxValue;
7
+ protected boxheight: number;
8
+ protected tokenId: string;
9
+ protected minimumFeeNFT: string;
10
+ protected address: string;
11
+ constructor(minimumFeeNFT: string, address: string);
12
+ /**
13
+ * adds a feeConfig
14
+ * @param feeConfig
15
+ */
16
+ addConfig: (feeConfig: MinimumFeeConfig) => MinimumFeeBoxBuilder;
17
+ /**
18
+ * removes a config by index
19
+ * @param index
20
+ */
21
+ removeConfig: (index: number) => MinimumFeeBoxBuilder;
22
+ /**
23
+ * sets ErgoBox Erg value
24
+ * @param nanoErg
25
+ * @returns
26
+ */
27
+ setValue: (nanoErg: bigint) => MinimumFeeBoxBuilder;
28
+ /**
29
+ * sets ErgoBox creationheight
30
+ * @param currentHeight
31
+ */
32
+ setHeight: (currentHeight: number) => MinimumFeeBoxBuilder;
33
+ /**
34
+ * sets config token id
35
+ * @param tokenId
36
+ */
37
+ setToken: (tokenId: string) => MinimumFeeBoxBuilder;
38
+ /**
39
+ * validates some of specified configs
40
+ */
41
+ protected validate: () => void;
42
+ /**
43
+ * validates specified configs and builds ErgoBoxCandidate of config box using them
44
+ */
45
+ build: () => ErgoBoxCandidate;
46
+ }
47
+ //# 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,EAOR,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;;;;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,gBAAgB,CAmF1B;CACH"}
@@ -0,0 +1,149 @@
1
+ import { Address, BoxValue, Contract, ErgoBoxCandidateBuilder, I64, TokenAmount, TokenId, Constant, } from 'ergo-lib-wasm-nodejs';
2
+ import { InvalidConfig } from './errors';
3
+ const ERGO_NATIVE_TOKEN = 'erg';
4
+ export class MinimumFeeBoxBuilder {
5
+ fees;
6
+ boxValue;
7
+ boxheight;
8
+ tokenId;
9
+ minimumFeeNFT;
10
+ address;
11
+ constructor(minimumFeeNFT, address) {
12
+ this.fees = [];
13
+ this.minimumFeeNFT = minimumFeeNFT;
14
+ this.address = address;
15
+ }
16
+ /**
17
+ * adds a feeConfig
18
+ * @param feeConfig
19
+ */
20
+ addConfig = (feeConfig) => {
21
+ this.fees.push(feeConfig.getConfig());
22
+ return this;
23
+ };
24
+ /**
25
+ * removes a config by index
26
+ * @param index
27
+ */
28
+ removeConfig = (index) => {
29
+ this.fees.splice(index);
30
+ return this;
31
+ };
32
+ /**
33
+ * sets ErgoBox Erg value
34
+ * @param nanoErg
35
+ * @returns
36
+ */
37
+ setValue = (nanoErg) => {
38
+ this.boxValue = BoxValue.from_i64(I64.from_str(nanoErg.toString()));
39
+ return this;
40
+ };
41
+ /**
42
+ * sets ErgoBox creationheight
43
+ * @param currentHeight
44
+ */
45
+ setHeight = (currentHeight) => {
46
+ this.boxheight = currentHeight;
47
+ return this;
48
+ };
49
+ /**
50
+ * sets config token id
51
+ * @param tokenId
52
+ */
53
+ setToken = (tokenId) => {
54
+ this.tokenId = tokenId;
55
+ return this;
56
+ };
57
+ /**
58
+ * validates some of specified configs
59
+ */
60
+ validate = () => {
61
+ if (!this.boxValue)
62
+ throw new InvalidConfig(`Box value argument is not defined`);
63
+ if (!this.boxheight)
64
+ throw new InvalidConfig(`Box creation height argument is not defined`);
65
+ if (!this.tokenId)
66
+ throw new InvalidConfig(`Config token id is not defined`);
67
+ if (this.fees.length === 0)
68
+ throw new InvalidConfig(`No config added. Please add at least one config`);
69
+ for (let i = 0; i < this.fees.length - 1; i++) {
70
+ const chains = Object.keys(this.fees[0].heights);
71
+ chains.forEach((chain) => {
72
+ if (!this.fees[i + 1].heights[chain])
73
+ throw new InvalidConfig(`Expected chain [${chain}] at index [${i + 1}]`);
74
+ if (this.fees[i + 1].heights[chain] < this.fees[i].heights[chain])
75
+ 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]}]`);
76
+ });
77
+ }
78
+ };
79
+ /**
80
+ * validates specified configs and builds ErgoBoxCandidate of config box using them
81
+ */
82
+ build = () => {
83
+ this.validate();
84
+ // add box value, address and creation height
85
+ const boxBuilder = new ErgoBoxCandidateBuilder(this.boxValue, Contract.new(Address.from_base58(this.address).to_ergo_tree()), this.boxheight);
86
+ // add box tokens
87
+ boxBuilder.add_token(TokenId.from_str(this.minimumFeeNFT), TokenAmount.from_i64(I64.from_str('1')));
88
+ if (this.tokenId !== ERGO_NATIVE_TOKEN)
89
+ boxBuilder.add_token(TokenId.from_str(this.tokenId), TokenAmount.from_i64(I64.from_str('1')));
90
+ // generate register values
91
+ // extract chains
92
+ const chains = [];
93
+ this.fees.forEach((fee) => {
94
+ Object.keys(fee.heights).forEach((feeChain) => {
95
+ if (!chains.includes(feeChain))
96
+ chains.push(feeChain);
97
+ });
98
+ });
99
+ chains.sort();
100
+ // extract configs
101
+ const heights = [];
102
+ const brdigeFees = [];
103
+ const networkFees = [];
104
+ const rsnRatios = [];
105
+ const feeRatios = [];
106
+ this.fees.forEach((fee) => {
107
+ const heightsConfigs = [];
108
+ const brdigeFeesConfigs = [];
109
+ const networkFeesConfigs = [];
110
+ const rsnRatiosConfigs = [];
111
+ const feeRatiosConfigs = [];
112
+ chains.forEach((chain) => {
113
+ if (Object.hasOwn(fee.heights, chain))
114
+ heightsConfigs.push(fee.heights[chain]);
115
+ else
116
+ heightsConfigs.push(-1);
117
+ if (Object.hasOwn(fee.configs, chain)) {
118
+ brdigeFeesConfigs.push(fee.configs[chain].bridgeFee);
119
+ networkFeesConfigs.push(fee.configs[chain].networkFee);
120
+ rsnRatiosConfigs.push([
121
+ fee.configs[chain].rsnRatio,
122
+ fee.configs[chain].rsnRatioDivisor,
123
+ ]);
124
+ feeRatiosConfigs.push(fee.configs[chain].feeRatio);
125
+ }
126
+ else {
127
+ brdigeFeesConfigs.push(-1n);
128
+ networkFeesConfigs.push(-1n);
129
+ rsnRatiosConfigs.push([-1n, -1n]);
130
+ feeRatiosConfigs.push(-1n);
131
+ }
132
+ });
133
+ heights.push(heightsConfigs);
134
+ brdigeFees.push(brdigeFeesConfigs);
135
+ networkFees.push(networkFeesConfigs);
136
+ rsnRatios.push(rsnRatiosConfigs);
137
+ feeRatios.push(feeRatiosConfigs);
138
+ });
139
+ // add box registers
140
+ boxBuilder.set_register_value(4, Constant.from_coll_coll_byte(chains.map((chain) => Buffer.from(chain))));
141
+ boxBuilder.set_register_value(5, Constant.from_js(heights));
142
+ boxBuilder.set_register_value(6, Constant.from_js(brdigeFees));
143
+ boxBuilder.set_register_value(7, Constant.from_js(networkFees));
144
+ boxBuilder.set_register_value(8, Constant.from_js(rsnRatios));
145
+ boxBuilder.set_register_value(9, Constant.from_js(feeRatios));
146
+ return boxBuilder.build();
147
+ };
148
+ }
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWluaW11bUZlZUJveEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvTWluaW11bUZlZUJveEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsUUFBUSxFQUNSLHVCQUF1QixFQUN2QixHQUFHLEVBQ0gsV0FBVyxFQUNYLE9BQU8sRUFDUCxRQUFRLEdBRVQsTUFBTSxzQkFBc0IsQ0FBQztBQUc5QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXpDLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDO0FBRWhDLE1BQU0sT0FBTyxvQkFBb0I7SUFDckIsSUFBSSxDQUFhO0lBQ2pCLFFBQVEsQ0FBVztJQUNuQixTQUFTLENBQVM7SUFDbEIsT0FBTyxDQUFTO0lBQ2hCLGFBQWEsQ0FBUztJQUN0QixPQUFPLENBQVM7SUFFMUIsWUFBWSxhQUFxQixFQUFFLE9BQWU7UUFDaEQsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxHQUFHLENBQUMsU0FBMkIsRUFBd0IsRUFBRTtRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztJQUVGOzs7T0FHRztJQUNILFlBQVksR0FBRyxDQUFDLEtBQWEsRUFBd0IsRUFBRTtRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztJQUVGOzs7O09BSUc7SUFDSCxRQUFRLEdBQUcs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LENBQUM7UUFDOUQsVUFBVSxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFFOUQsT0FBTyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDNUIsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZGRyZXNzLFxuICBCb3hWYWx1ZSxcbiAgQ29udHJhY3QsXG4gIEVyZ29Cb3hDYW5kaWRhdGVCdWlsZGVyLFxuICBJNjQsXG4gIFRva2VuQW1vdW50LFxuICBUb2tlbklkLFxuICBDb25zdGFudCxcbiAgRXJnb0JveENhbmRpZGF0ZSxcbn0gZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuaW1wb3J0IHsgTWluaW11bUZlZUNvbmZpZyB9IGZyb20gJy4vTWluaW11bUZlZUNvbmZpZyc7XG5pbXBvcnQgeyBGZWUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEludmFsaWRDb25maWcgfSBmcm9tICcuL2Vycm9ycyc7XG5cbmNvbnN0IEVSR09fTkFUSVZFX1RPS0VOID0gJ2VyZyc7XG5cbmV4cG9ydCBjbGFzcyBNaW5pbXVtRmVlQm94QnVpbGRlciB7XG4gIHByb3RlY3RlZCBmZWVzOiBBcnJheTxGZWU+O1xuICBwcm90ZWN0ZWQgYm94VmFsdWU6IEJveFZhbHVlO1xuICBwcm90ZWN0ZWQgYm94aGVpZ2h0OiBudW1iZXI7XG4gIHByb3RlY3RlZCB0b2tlbklkOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBtaW5pbXVtRmVlTkZUOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBhZGRyZXNzOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobWluaW11bUZlZU5GVDogc3RyaW5nLCBhZGRyZXNzOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZlZXMgPSBbXTtcbiAgICB0aGlzLm1pbmltdW1GZWVORlQgPSBtaW5pbXVtRmVlTkZUO1xuICAgIHRoaXMuYWRkcmVzcyA9IGFkZHJlc3M7XG4gIH1cblxuICAvKipcbiAgICogYWRkcyBhIGZlZUNvbmZpZ1xuICAgKiBAcGFyYW0gZmVlQ29uZmlnXG4gICAqL1xuICBhZGRDb25maWcgPSAoZmVlQ29uZmlnOiBNaW5pbXVtRmVlQ29uZmlnKTogTWluaW11bUZlZUJveEJ1aWxkZXIgPT4ge1xuICAgIHRoaXMuZmVlcy5wdXNoKGZlZUNvbmZpZy5nZXRDb25maWcoKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJlbW92ZXMgYSBjb25maWcgYnkgaW5kZXhcbiAgICogQHBhcmFtIGluZGV4XG4gICAqL1xuICByZW1vdmVDb25maWcgPSAoaW5kZXg6IG51bWJlcik6IE1pbmltdW1GZWVCb3hCdWlsZGVyID0+IHtcbiAgICB0aGlzLmZlZXMuc3BsaWNlKGluZGV4KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvKipcbiAgICogc2V0cyBFcmdvQm94IEVyZyB2YWx1ZVxuICAgKiBAcGFyYW0gbmFub0VyZ1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc2V0VmFsdWUgPSAobmFub0VyZzogYmlnaW50KTogTWluaW11bUZlZUJveEJ1aWxkZXIgPT4ge1xuICAgIHRoaXMuYm94VmFsdWUgPSBCb3hWYWx1ZS5mcm9tX2k2NChJNjQuZnJvbV9zdHIobmFub0VyZy50b1N0cmluZygpKSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIHNldHMgRXJnb0JveCBjcmVhdGlvbmhlaWdodFxuICAgKiBAcGFyYW0gY3VycmVudEhlaWdodFxuICAgKi9cbiAgc2V0SGVpZ2h0ID0gKGN1cnJlbnRIZWlnaHQ6IG51bWJlcik6IE1pbmltdW1GZWVCb3hCdWlsZGVyID0+IHtcbiAgICB0aGlzLmJveGhlaWdodCA9IGN1cnJlbnRIZWlnaHQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIHNldHMgY29uZmlnIHRva2VuIGlkXG4gICAqIEBwYXJhbSB0b2tlbklkXG4gICAqL1xuICBzZXRUb2tlbiA9ICh0b2tlbklkOiBzdHJpbmcpOiBNaW5pbXVtRmVlQm94QnVpbGRlciA9PiB7XG4gICAgdGhpcy50b2tlbklkID0gdG9rZW5JZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvKipcbiAgICogdmFsaWRhdGVzIHNvbWUgb2Ygc3BlY2lmaWVkIGNvbmZpZ3NcbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZSA9ICgpOiB2b2lkID0+IHtcbiAgICBpZiAoIXRoaXMuYm94VmFsdWUpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZyhgQm94IHZhbHVlIGFyZ3VtZW50IGlzIG5vdCBkZWZpbmVkYCk7XG4gICAgaWYgKCF0aGlzLmJveGhlaWdodClcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkQ29uZmlnKGBCb3ggY3JlYXRpb24gaGVpZ2h0IGFyZ3VtZW50IGlzIG5vdCBkZWZpbmVkYCk7XG4gICAgaWYgKCF0aGlzLnRva2VuSWQpXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZyhgQ29uZmlnIHRva2VuIGlkIGlzIG5vdCBkZWZpbmVkYCk7XG4gICAgaWYgKHRoaXMuZmVlcy5sZW5ndGggPT09IDApXG4gICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZyhcbiAgICAgICAgYE5vIGNvbmZpZyBhZGRlZC4gUGxlYXNlIGFkZCBhdCBsZWFzdCBvbmUgY29uZmlnYFxuICAgICAgKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5mZWVzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgY29uc3QgY2hhaW5zID0gT2JqZWN0LmtleXModGhpcy5mZWVzWzBdLmhlaWdodHMpO1xuICAgICAgY2hhaW5zLmZvckVhY2goKGNoYWluKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5mZWVzW2kgKyAxXS5oZWlnaHRzW2NoYWluXSlcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZENvbmZpZyhcbiAgICAgICAgICAgIGBFeHBlY3RlZCBjaGFpbiBbJHtjaGFpbn1dIGF0IGluZGV4IFske2kgKyAxfV1gXG4gICAgICAgICAgKTtcbiAgICAgICAgaWYgKHRoaXMuZmVlc1tpICsgMV0uaGVpZ2h0c1tjaGFpbl0gPCB0aGlzLmZlZXNbaV0uaGVpZ2h0c1tjaGFpbl0pXG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRDb25maWcoXG4gICAgICAgICAgICBgQWxsIGhlaWdodHMgZm9yIGEgY2hhaW4gc2hvdWxkIGJlIGFzY2VuZGluZy4gSGVpZ2h0cyBvZiBjaGFpbiBbJHtjaGFpbn1dIGF0IGluZGV4ZXMgWyR7aX0sJHtcbiAgICAgICAgICAgICAgaSArIDFcbiAgICAgICAgICAgIH1dIGFyZSBpbnZhbGlkIFske3RoaXMuZmVlc1tpICsgMV0uaGVpZ2h0c1tjaGFpbl19IDwgJHtcbiAgICAgICAgICAgICAgdGhpcy5mZWVzW2ldLmhlaWdodHNbY2hhaW5dXG4gICAgICAgICAgICB9XWBcbiAgICAgICAgICApO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiB2YWxpZGF0ZXMgc3BlY2lmaWVkIGNvbmZpZ3MgYW5kIGJ1aWxkcyBFcmdvQm94Q2FuZGlkYXRlIG9mIGNvbmZpZyBib3ggdXNpbmcgdGhlbVxuICAgKi9cbiAgYnVpbGQgPSAoKTogRXJnb0JveENhbmRpZGF0ZSA9PiB7XG4gICAgdGhpcy52YWxpZGF0ZSgpO1xuXG4gICAgLy8gYWRkIGJveCB2YWx1ZSwgYWRkcmVzcyBhbmQgY3JlYXRpb24gaGVpZ2h0XG4gICAgY29uc3QgYm94QnVpbGRlciA9IG5ldyBFcmdvQm94Q2FuZGlkYXRlQnVpbGRlcihcbiAgICAgIHRoaXMuYm94VmFsdWUsXG4gICAgICBDb250cmFjdC5uZXcoQWRkcmVzcy5mcm9tX2Jhc2U1OCh0aGlzLmFkZHJlc3MpLnRvX2VyZ29fdHJlZSgpKSxcbiAgICAgIHRoaXMuYm94aGVpZ2h0XG4gICAgKTtcblxuICAgIC8vIGFkZCBib3ggdG9rZW5zXG4gICAgYm94QnVpbGRlci5hZGRfdG9rZW4oXG4gICAgICBUb2tlbklkLmZyb21fc3RyKHRoaXMubWluaW11bUZlZU5GVCksXG4gICAgICBUb2tlbkFtb3VudC5mcm9tX2k2NChJNjQuZnJvbV9zdHIoJzEnKSlcbiAgICApO1xuICAgIGlmICh0aGlzLnRva2VuSWQgIT09IEVSR09fTkFUSVZFX1RPS0VOKVxuICAgICAgYm94QnVpbGRlci5hZGRfdG9rZW4oXG4gICAgICAgIFRva2VuSWQuZnJvbV9zdHIodGhpcy50b2tlbklkKSxcbiAgICAgICAgVG9rZW5BbW91bnQuZnJvbV9pNjQoSTY0LmZyb21fc3RyKCcxJykpXG4gICAgICApO1xuXG4gICAgLy8gZ2VuZXJhdGUgcmVnaXN0ZXIgdmFsdWVzXG4gICAgLy8gIGV4dHJhY3QgY2hhaW5zXG4gICAgY29uc3QgY2hhaW5zOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgdGhpcy5mZWVzLmZvckVhY2goKGZlZSkgPT4ge1xuICAgICAgT2JqZWN0LmtleXMoZmVlLmhlaWdodHMpLmZvckVhY2goKGZlZUNoYWluKSA9PiB7XG4gICAgICAgIGlmICghY2hhaW5zLmluY2x1ZGVzKGZlZUNoYWluKSkgY2hhaW5zLnB1c2goZmVlQ2hhaW4pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgY2hhaW5zLnNvcnQoKTtcbiAgICAvLyAgZXh0cmFjdCBjb25maWdzXG4gICAgY29uc3QgaGVpZ2h0czogQXJyYXk8QXJyYXk8bnVtYmVyPj4gPSBbXTtcbiAgICBjb25zdCBicmRpZ2VGZWVzOiBBcnJheTxBcnJheTxiaWdpbnQ+PiA9IFtdO1xuICAgIGNvbnN0IG5ldHdvcmtGZWVzOiBBcnJheTxBcnJheTxiaWdpbnQ+PiA9IFtdO1xuICAgIGNvbnN0IHJzblJhdGlvczogQXJyYXk8QXJyYXk8QXJyYXk8YmlnaW50Pj4+ID0gW107XG4gICAgY29uc3QgZmVlUmF0aW9zOiBBcnJheTxBcnJheTxiaWdpbnQ+PiA9IFtdO1xuICAgIHRoaXMuZmVlcy5mb3JFYWNoKChmZWUpID0+IHtcbiAgICAgIGNvbnN0IGhlaWdodHNDb25maWdzOiBBcnJheTxudW1iZXI+ID0gW107XG4gICAgICBjb25zdCBicmRpZ2VGZWVzQ29uZmlnczogQXJyYXk8YmlnaW50PiA9IFtdO1xuICAgICAgY29uc3QgbmV0d29ya0ZlZXNDb25maWdzOiBBcnJheTxiaWdpbnQ+ID0gW107XG4gICAgICBjb25zdCByc25SYXRpb3NDb25maWdzOiBBcnJheTxBcnJheTxiaWdpbnQ+PiA9IFtdO1xuICAgICAgY29uc3QgZmVlUmF0aW9zQ29uZmlnczogQXJyYXk8YmlnaW50PiA9IFtdO1xuXG4gICAgICBjaGFpbnMuZm9yRWFjaCgoY2hhaW4pID0+IHtcbiAgICAgICAgaWYgKE9iamVjdC5oYXNPd24oZmVlLmhlaWdodHMsIGNoYWluKSlcbiAgICAgICAgICBoZWlnaHRzQ29uZmlncy5wdXNoKGZlZS5oZWlnaHRzW2NoYWluXSk7XG4gICAgICAgIGVsc2UgaGVpZ2h0c0NvbmZpZ3MucHVzaCgtMSk7XG5cbiAgICAgICAgaWYgKE9iamVjdC5oYXNPd24oZmVlLmNvbmZpZ3MsIGNoYWluKSkge1xuICAgICAgICAgIGJyZGlnZUZlZXNDb25maWdzLnB1c2goZmVlLmNvbmZpZ3NbY2hhaW5dLmJyaWRnZUZlZSk7XG4gICAgICAgICAgbmV0d29ya0ZlZXNDb25maWdzLnB1c2goZmVlLmNvbmZpZ3NbY2hhaW5dLm5ldHdvcmtGZWUpO1xuICAgICAgICAgIHJzblJhdGlvc0NvbmZpZ3MucHVzaChbXG4gICAgICAgICAgICBmZWUuY29uZmlnc1tjaGFpbl0ucnNuUmF0aW8sXG4gICAgICAgICAgICBmZWUuY29uZmlnc1tjaGFpbl0ucnNuUmF0aW9EaXZpc29yLFxuICAgICAgICAgIF0pO1xuICAgICAgICAgIGZlZVJhdGlvc0NvbmZpZ3MucHVzaChmZWUuY29uZmlnc1tjaGFpbl0uZmVlUmF0aW8pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZGlnZUZlZXNDb25maWdzLnB1c2goLTFuKTtcbiAgICAgICAgICBuZXR3b3JrRmVlc0NvbmZpZ3MucHVzaCgtMW4pO1xuICAgICAgICAgIHJzblJhdGlvc0NvbmZpZ3MucHVzaChbLTFuLCAtMW5dKTtcbiAgICAgICAgICBmZWVSYXRpb3NDb25maWdzLnB1c2goLTFuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGhlaWdodHMucHVzaChoZWlnaHRzQ29uZmlncyk7XG4gICAgICBicmRpZ2VGZWVzLnB1c2goYnJkaWdlRmVlc0NvbmZpZ3MpO1xuICAgICAgbmV0d29ya0ZlZXMucHVzaChuZXR3b3JrRmVlc0NvbmZpZ3MpO1xuICAgICAgcnNuUmF0aW9zLnB1c2gocnNuUmF0aW9zQ29uZmlncyk7XG4gICAgICBmZWVSYXRpb3MucHVzaChmZWVSYXRpb3NDb25maWdzKTtcbiAgICB9KTtcblxuICAgIC8vIGFkZCBib3ggcmVnaXN0ZXJzXG4gICAgYm94QnVpbGRlci5zZXRfcmVnaXN0ZXJfdmFsdWUoXG4gICAgICA0LFxuICAgICAgQ29uc3RhbnQuZnJvbV9jb2xsX2NvbGxfYnl0ZShjaGFpbnMubWFwKChjaGFpbikgPT4gQnVmZmVyLmZyb20oY2hhaW4pKSlcbiAgICApO1xuICAgIGJveEJ1aWxkZXIuc2V0X3JlZ2lzdGVyX3ZhbHVlKDUsIENvbnN0YW50LmZyb21fanMoaGVpZ2h0cykpO1xuICAgIGJveEJ1aWxkZXIuc2V0X3JlZ2lzdGVyX3ZhbHVlKDYsIENvbnN0YW50LmZyb21fanMoYnJkaWdlRmVlcykpO1xuICAgIGJveEJ1aWxkZXIuc2V0X3JlZ2lzdGVyX3ZhbHVlKDcsIENvbnN0YW50LmZyb21fanMobmV0d29ya0ZlZXMpKTtcbiAgICBib3hCdWlsZGVyLnNldF9yZWdpc3Rlcl92YWx1ZSg4LCBDb25zdGFudC5mcm9tX2pzKHJzblJhdGlvcykpO1xuICAgIGJveEJ1aWxkZXIuc2V0X3JlZ2lzdGVyX3ZhbHVlKDksIENvbnN0YW50LmZyb21fanMoZmVlUmF0aW9zKSk7XG5cbiAgICByZXR1cm4gYm94QnVpbGRlci5idWlsZCgpO1xuICB9O1xufVxuIl19
@@ -0,0 +1,23 @@
1
+ import { ChainFee, Fee } from './types';
2
+ export declare class MinimumFeeConfig {
3
+ protected fee: Fee;
4
+ readonly feeRatioDivisor: bigint;
5
+ constructor();
6
+ /**
7
+ * sets fee for a chain
8
+ * @param chain
9
+ * @param height
10
+ * @param chainFee
11
+ */
12
+ setChainConfig: (chain: string, height: number, chainFee: ChainFee | undefined) => MinimumFeeConfig;
13
+ /**
14
+ * removes fee for a chain
15
+ * @param chain
16
+ */
17
+ removeChainConfig: (chain: string) => MinimumFeeConfig;
18
+ /**
19
+ * returns generated fee
20
+ */
21
+ getConfig: () => Fee;
22
+ }
23
+ //# sourceMappingURL=MinimumFeeConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MinimumFeeConfig.d.ts","sourceRoot":"","sources":["../../lib/MinimumFeeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAExC,qBAAa,gBAAgB;IAC3B,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAU;;IAS1C;;;;;OAKG;IACH,cAAc,UACL,MAAM,UACL,MAAM,YACJ,QAAQ,GAAG,SAAS,KAC7B,gBAAgB,CAIjB;IAEF;;;OAGG;IACH,iBAAiB,UAAW,MAAM,KAAG,gBAAgB,CAInD;IAEF;;OAEG;IACH,SAAS,QAAO,GAAG,CAEjB;CACH"}
@@ -0,0 +1,38 @@
1
+ export class MinimumFeeConfig {
2
+ fee;
3
+ feeRatioDivisor = 10000n;
4
+ constructor() {
5
+ this.fee = {
6
+ heights: {},
7
+ configs: {},
8
+ };
9
+ }
10
+ /**
11
+ * sets fee for a chain
12
+ * @param chain
13
+ * @param height
14
+ * @param chainFee
15
+ */
16
+ setChainConfig = (chain, height, chainFee) => {
17
+ this.fee.heights[chain] = height;
18
+ if (chainFee)
19
+ this.fee.configs[chain] = chainFee;
20
+ return this;
21
+ };
22
+ /**
23
+ * removes fee for a chain
24
+ * @param chain
25
+ */
26
+ removeChainConfig = (chain) => {
27
+ delete this.fee.heights[chain];
28
+ delete this.fee.configs[chain];
29
+ return this;
30
+ };
31
+ /**
32
+ * returns generated fee
33
+ */
34
+ getConfig = () => {
35
+ return this.fee;
36
+ };
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWluaW11bUZlZUNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9NaW5pbXVtRmVlQ29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxnQkFBZ0I7SUFDakIsR0FBRyxDQUFNO0lBQ1YsZUFBZSxHQUFXLE1BQU0sQ0FBQztJQUUxQztRQUNFLElBQUksQ0FBQyxHQUFHLEdBQUc7WUFDVCxPQUFPLEVBQUUsRUFBRTtZQUNYLE9BQU8sRUFBRSxFQUFFO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGNBQWMsR0FBRyxDQUNmLEtBQWEsRUFDYixNQUFjLEVBQ2QsUUFBOEIsRUFDWixFQUFFO1FBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNqQyxJQUFJLFFBQVE7WUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSCxpQkFBaUIsR0FBRyxDQUFDLEtBQWEsRUFBb0IsRUFBRTtRQUN0RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7SUFFRjs7T0FFRztJQUNILFNBQVMsR0FBRyxHQUFRLEVBQUU7UUFDcEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhaW5GZWUsIEZlZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgTWluaW11bUZlZUNvbmZpZyB7XG4gIHByb3RlY3RlZCBmZWU6IEZlZTtcbiAgcmVhZG9ubHkgZmVlUmF0aW9EaXZpc29yOiBiaWdpbnQgPSAxMDAwMG47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5mZWUgPSB7XG4gICAgICBoZWlnaHRzOiB7fSxcbiAgICAgIGNvbmZpZ3M6IHt9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogc2V0cyBmZWUgZm9yIGEgY2hhaW5cbiAgICogQHBhcmFtIGNoYWluXG4gICAqIEBwYXJhbSBoZWlnaHRcbiAgICogQHBhcmFtIGNoYWluRmVlXG4gICAqL1xuICBzZXRDaGFpbkNvbmZpZyA9IChcbiAgICBjaGFpbjogc3RyaW5nLFxuICAgIGhlaWdodDogbnVtYmVyLFxuICAgIGNoYWluRmVlOiBDaGFpbkZlZSB8IHVuZGVmaW5lZFxuICApOiBNaW5pbXVtRmVlQ29uZmlnID0+IHtcbiAgICB0aGlzLmZlZS5oZWlnaHRzW2NoYWluXSA9IGhlaWdodDtcbiAgICBpZiAoY2hhaW5GZWUpIHRoaXMuZmVlLmNvbmZpZ3NbY2hhaW5dID0gY2hhaW5GZWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJlbW92ZXMgZmVlIGZvciBhIGNoYWluXG4gICAqIEBwYXJhbSBjaGFpblxuICAgKi9cbiAgcmVtb3ZlQ2hhaW5Db25maWcgPSAoY2hhaW46IHN0cmluZyk6IE1pbmltdW1GZWVDb25maWcgPT4ge1xuICAgIGRlbGV0ZSB0aGlzLmZlZS5oZWlnaHRzW2NoYWluXTtcbiAgICBkZWxldGUgdGhpcy5mZWUuY29uZmlnc1tjaGFpbl07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIHJldHVybnMgZ2VuZXJhdGVkIGZlZVxuICAgKi9cbiAgZ2V0Q29uZmlnID0gKCk6IEZlZSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZmVlO1xuICB9O1xufVxuIl19
@@ -0,0 +1,16 @@
1
+ export declare class InvalidConfig extends Error {
2
+ constructor(msg: string);
3
+ }
4
+ export declare class FailedError extends Error {
5
+ constructor(msg: string);
6
+ }
7
+ export declare class NetworkError extends Error {
8
+ constructor(msg: string);
9
+ }
10
+ export declare class UnexpectedApiError extends Error {
11
+ constructor(msg: string);
12
+ }
13
+ export declare class NotFoundError extends Error {
14
+ constructor(msg: string);
15
+ }
16
+ //# 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;AAED,qBAAa,WAAY,SAAQ,KAAK;gBACxB,GAAG,EAAE,MAAM;CAGxB;AAED,qBAAa,YAAa,SAAQ,KAAK;gBACzB,GAAG,EAAE,MAAM;CAGxB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,GAAG,EAAE,MAAM;CAGxB;AAED,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,GAAG,EAAE,MAAM;CAGxB"}
@@ -0,0 +1,26 @@
1
+ export class InvalidConfig extends Error {
2
+ constructor(msg) {
3
+ super('InvalidConfig: ' + msg);
4
+ }
5
+ }
6
+ export class FailedError extends Error {
7
+ constructor(msg) {
8
+ super('FailedError: ' + msg);
9
+ }
10
+ }
11
+ export class NetworkError extends Error {
12
+ constructor(msg) {
13
+ super('NetworkError: ' + msg);
14
+ }
15
+ }
16
+ export class UnexpectedApiError extends Error {
17
+ constructor(msg) {
18
+ super('UnexpectedApiError: ' + msg);
19
+ }
20
+ }
21
+ export class NotFoundError extends Error {
22
+ constructor(msg) {
23
+ super('NotFoundError: ' + msg);
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sYUFBYyxTQUFRLEtBQUs7SUFDdEMsWUFBWSxHQUFXO1FBQ3JCLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sV0FBWSxTQUFRLEtBQUs7SUFDcEMsWUFBWSxHQUFXO1FBQ3JCLEtBQUssQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLFlBQWEsU0FBUSxLQUFLO0lBQ3JDLFlBQVksR0FBVztRQUNyQixLQUFLLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBRUQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLEtBQUs7SUFDM0MsWUFBWSxHQUFXO1FBQ3JCLEtBQUssQ0FBQyxzQkFBc0IsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN0QyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sYUFBYyxTQUFRLEtBQUs7SUFDdEMsWUFBWSxHQUFXO1FBQ3JCLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgSW52YWxpZENvbmZpZyBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcpIHtcbiAgICBzdXBlcignSW52YWxpZENvbmZpZzogJyArIG1zZyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZhaWxlZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZykge1xuICAgIHN1cGVyKCdGYWlsZWRFcnJvcjogJyArIG1zZyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5ldHdvcmtFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcpIHtcbiAgICBzdXBlcignTmV0d29ya0Vycm9yOiAnICsgbXNnKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW5leHBlY3RlZEFwaUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZykge1xuICAgIHN1cGVyKCdVbmV4cGVjdGVkQXBpRXJyb3I6ICcgKyBtc2cpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RGb3VuZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZykge1xuICAgIHN1cGVyKCdOb3RGb3VuZEVycm9yOiAnICsgbXNnKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,18 @@
1
+ interface ErrorHandler<HandlerReturnType> {
2
+ (error: any): HandlerReturnType;
3
+ }
4
+ /**
5
+ * handle an axios api error, considering different kinds of events which may
6
+ * cause it
7
+ * @param error the error object
8
+ * @param baseMessage string to prepend the actual error message
9
+ * @param overrideHandlers an object for overriding how different kinds of error
10
+ * are handled
11
+ */
12
+ declare const handleApiError: <RespondedStateHandlerReturnType = never, NotRespondedStateHandlerReturnType = never, UnknownStateHandlerReturnType = never>(error: any, baseMessage: string, overrideHandlers?: {
13
+ handleRespondedState?: ErrorHandler<RespondedStateHandlerReturnType> | undefined;
14
+ handleNotRespondedState?: ErrorHandler<NotRespondedStateHandlerReturnType> | undefined;
15
+ handleUnknownState?: ErrorHandler<UnknownStateHandlerReturnType> | undefined;
16
+ } | undefined) => RespondedStateHandlerReturnType | NotRespondedStateHandlerReturnType | UnknownStateHandlerReturnType;
17
+ export default handleApiError;
18
+ //# sourceMappingURL=handleApiError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleApiError.d.ts","sourceRoot":"","sources":["../../lib/handleApiError.ts"],"names":[],"mappings":"AAEA,UAAU,YAAY,CAAC,iBAAiB;IACtC,CAAC,KAAK,EAAE,GAAG,GAAG,iBAAiB,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,QAAA,MAAM,cAAc,sIAKX,GAAG,eACG,MAAM;;;;sHAoCpB,CAAC;AAEF,eAAe,cAAc,CAAC"}