genius-intents 0.17.5 → 0.18.1-develop.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +79 -0
- package/dist/direct-pools/fourmeme/fourmeme-direct.config.d.ts +9 -0
- package/dist/direct-pools/fourmeme/fourmeme-direct.config.d.ts.map +1 -0
- package/dist/direct-pools/fourmeme/fourmeme-direct.config.js +14 -0
- package/dist/direct-pools/fourmeme/fourmeme-direct.config.js.map +1 -0
- package/dist/direct-pools/fourmeme/fourmeme-direct.service.d.ts +38 -0
- package/dist/direct-pools/fourmeme/fourmeme-direct.service.d.ts.map +1 -0
- package/dist/direct-pools/fourmeme/fourmeme-direct.service.js +308 -0
- package/dist/direct-pools/fourmeme/fourmeme-direct.service.js.map +1 -0
- package/dist/direct-pools/fourmeme/fourmeme-direct.types.d.ts +41 -0
- package/dist/direct-pools/fourmeme/fourmeme-direct.types.d.ts.map +1 -0
- package/dist/direct-pools/fourmeme/fourmeme-direct.types.js +3 -0
- package/dist/direct-pools/fourmeme/fourmeme-direct.types.js.map +1 -0
- package/dist/lib/dex/hyperswap/hyperswapV2-router.abi.d.ts +3 -0
- package/dist/lib/dex/hyperswap/hyperswapV2-router.abi.d.ts.map +1 -0
- package/dist/lib/dex/hyperswap/hyperswapV2-router.abi.js +249 -0
- package/dist/lib/dex/hyperswap/hyperswapV2-router.abi.js.map +1 -0
- package/dist/protocols/four-meme/four-meme.service.d.ts +23 -43
- package/dist/protocols/four-meme/four-meme.service.d.ts.map +1 -1
- package/dist/protocols/four-meme/four-meme.service.js +391 -157
- package/dist/protocols/four-meme/four-meme.service.js.map +1 -1
- package/dist/protocols/four-meme/four-meme.types.d.ts +47 -0
- package/dist/protocols/four-meme/four-meme.types.d.ts.map +1 -1
- package/dist/protocols/lifi/lifi.service.d.ts.map +1 -1
- package/dist/protocols/lifi/lifi.service.js +2 -0
- package/dist/protocols/lifi/lifi.service.js.map +1 -1
- package/dist/protocols/relay/relay.service.d.ts.map +1 -1
- package/dist/protocols/relay/relay.service.js +1 -0
- package/dist/protocols/relay/relay.service.js.map +1 -1
- package/dist/protocols/v2-dex/v2-dex.service.d.ts +1 -0
- package/dist/protocols/v2-dex/v2-dex.service.d.ts.map +1 -1
- package/dist/protocols/v2-dex/v2-dex.service.js +43 -67
- package/dist/protocols/v2-dex/v2-dex.service.js.map +1 -1
- package/dist/protocols/v2-dex/v2-dex.types.d.ts +9 -2
- package/dist/protocols/v2-dex/v2-dex.types.d.ts.map +1 -1
- package/dist/protocols/v2-dex/v2-dex.types.js +1 -0
- package/dist/protocols/v2-dex/v2-dex.types.js.map +1 -1
- package/dist/protocols/v3-dex/v3-dex.service.d.ts +1 -0
- package/dist/protocols/v3-dex/v3-dex.service.d.ts.map +1 -1
- package/dist/protocols/v3-dex/v3-dex.service.js +73 -16
- package/dist/protocols/v3-dex/v3-dex.service.js.map +1 -1
- package/dist/protocols/v3-dex/v3-dex.types.d.ts +2 -1
- package/dist/protocols/v3-dex/v3-dex.types.d.ts.map +1 -1
- package/dist/protocols/v3-dex/v3-dex.types.js +1 -0
- package/dist/protocols/v3-dex/v3-dex.types.js.map +1 -1
- package/dist/types/price-params.d.ts +4 -0
- package/dist/types/price-params.d.ts.map +1 -1
- package/dist/types/price-response.d.ts +2 -1
- package/dist/types/price-response.d.ts.map +1 -1
- package/dist/types/quote-response.d.ts +2 -1
- package/dist/types/quote-response.d.ts.map +1 -1
- package/dist/utils/check-vm.d.ts.map +1 -1
- package/dist/utils/check-vm.js +2 -1
- package/dist/utils/check-vm.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,82 @@
|
|
|
1
|
+
## [0.18.1-develop.0] - 2025-10-13 (Beta)
|
|
2
|
+
|
|
3
|
+
🧪 **This is a beta release for testing purposes.**
|
|
4
|
+
|
|
5
|
+
### [0.18.1-develop.0](https://github.com/Genius-Foundation/genius-intents/compare/v0.18.0...v0.18.1-develop.0) (2025-10-13)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* Direct Pool FourMeme ([#113](https://github.com/Genius-Foundation/genius-intents/issues/113)) ([236bab1](https://github.com/Genius-Foundation/genius-intents/commit/236bab1ab94429f17b8796a3b3c1740afcf2c961))
|
|
11
|
+
* Improved HyperEVM support ([#114](https://github.com/Genius-Foundation/genius-intents/issues/114)) ([0ae045d](https://github.com/Genius-Foundation/genius-intents/commit/0ae045d94404aa00fff256f741791e23b3d9e771))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Documentation
|
|
15
|
+
|
|
16
|
+
* update CHANGELOG.md for v0.18.0 (beta) ([9c7e4d3](https://github.com/Genius-Foundation/genius-intents/commit/9c7e4d31ab9c4c6870de989ed4b1056d34fac675))
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
⚠️ **Beta Release Notes:**
|
|
21
|
+
- This version is intended for testing and development
|
|
22
|
+
- May contain experimental features
|
|
23
|
+
- Not recommended for production use
|
|
24
|
+
- Feedback and bug reports are welcome
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
## [0.18.0] - 2025-10-10 (Beta)
|
|
30
|
+
|
|
31
|
+
🧪 **This is a beta release for testing purposes.**
|
|
32
|
+
|
|
33
|
+
## [0.18.0](https://github.com/Genius-Foundation/genius-intents/compare/v0.17.5...v0.18.0) (2025-10-10)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
### Features
|
|
37
|
+
|
|
38
|
+
* **dflow:** Update DFlow Service ([#76](https://github.com/Genius-Foundation/genius-intents/issues/76)) ([2cad88f](https://github.com/Genius-Foundation/genius-intents/commit/2cad88ff51786442a48fa9d694810fc464661ed9))
|
|
39
|
+
* Cetus + Aftermath rewrite ([#78](https://github.com/Genius-Foundation/genius-intents/issues/78)) ([cfaaa5a](https://github.com/Genius-Foundation/genius-intents/commit/cfaaa5aca1733a015140c65bdc9e79c9b9321986))
|
|
40
|
+
* **debridge:** re-enable hyperevm for debridge service ([#82](https://github.com/Genius-Foundation/genius-intents/issues/82)) ([ba69cea](https://github.com/Genius-Foundation/genius-intents/commit/ba69cea7ec5e442fe6c22cc26e85208c2aaf9636))
|
|
41
|
+
* **lifi:** remove hyperEVM support within lifi class as txs always revert ([#84](https://github.com/Genius-Foundation/genius-intents/issues/84)) ([d6726b9](https://github.com/Genius-Foundation/genius-intents/commit/d6726b9828d6bd2537c7f55e3d6677f4fed64bc0))
|
|
42
|
+
* adds exports for direct pools ([#104](https://github.com/Genius-Foundation/genius-intents/issues/104)) ([2d18818](https://github.com/Genius-Foundation/genius-intents/commit/2d18818ac01e30c2fc251699f6e03542d6f2dcd4))
|
|
43
|
+
* adds meteora and whirlpools pool info ([#101](https://github.com/Genius-Foundation/genius-intents/issues/101)) ([9ce3321](https://github.com/Genius-Foundation/genius-intents/commit/9ce3321ff0d6efb226cd493e439e4ea1d94892a0))
|
|
44
|
+
* adds solana direct pools ([#88](https://github.com/Genius-Foundation/genius-intents/issues/88)) ([338ae49](https://github.com/Genius-Foundation/genius-intents/commit/338ae495f660810060b3b5ffa8bf6c75e37b7e38))
|
|
45
|
+
* Dex improvements + Lifi Solana support ([#85](https://github.com/Genius-Foundation/genius-intents/issues/85)) ([4295643](https://github.com/Genius-Foundation/genius-intents/commit/4295643369845cb7549a74da33b751c1d5888f7e))
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
### Bug Fixes
|
|
49
|
+
|
|
50
|
+
* Pangolin V3 Quotes ([#79](https://github.com/Genius-Foundation/genius-intents/issues/79)) ([4886187](https://github.com/Genius-Foundation/genius-intents/commit/488618733ad8d6da013ed27d593872ac084adfcb))
|
|
51
|
+
* **relay:** slippage values were not being converted to BPS ([#89](https://github.com/Genius-Foundation/genius-intents/issues/89)) ([6fcfa14](https://github.com/Genius-Foundation/genius-intents/commit/6fcfa14b519e3e4f9562ec6b5281e46bc60f3b3a))
|
|
52
|
+
* Slippage BPS conversion ([#99](https://github.com/Genius-Foundation/genius-intents/issues/99)) ([9c38140](https://github.com/Genius-Foundation/genius-intents/commit/9c381401afb9f67285a440c3839ca36266dbb645))
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
### Documentation
|
|
56
|
+
|
|
57
|
+
* update CHANGELOG.md for v0.13.0 (beta) ([e9b4f13](https://github.com/Genius-Foundation/genius-intents/commit/e9b4f1390db59b56b4d48658a35f512f6ec62841))
|
|
58
|
+
* update CHANGELOG.md for v0.13.1-develop.0 (beta) ([e54f6cf](https://github.com/Genius-Foundation/genius-intents/commit/e54f6cf9f33d3bb6949469155a66907b44e95e3e))
|
|
59
|
+
* update CHANGELOG.md for v0.13.1-develop.1 (beta) ([c39cb3b](https://github.com/Genius-Foundation/genius-intents/commit/c39cb3b12038f1b4024b1e64e8a4f608a032101c))
|
|
60
|
+
* update CHANGELOG.md for v0.14.0 (beta) ([8f9c91a](https://github.com/Genius-Foundation/genius-intents/commit/8f9c91a2015452507f9ee2cbe6e1da578648c65a))
|
|
61
|
+
* update CHANGELOG.md for v0.15.0 (beta) ([e067ba1](https://github.com/Genius-Foundation/genius-intents/commit/e067ba183d1edbaa1d1f696e7e1b6ef9f1f3b498))
|
|
62
|
+
* update CHANGELOG.md for v0.15.1 (beta) ([77bbb61](https://github.com/Genius-Foundation/genius-intents/commit/77bbb61c788353271aa0a45013990e1b34ee2528))
|
|
63
|
+
* update CHANGELOG.md for v0.15.2-develop.0 (beta) ([f7937aa](https://github.com/Genius-Foundation/genius-intents/commit/f7937aafa4440850830cd9df32c52ed2d2131c68))
|
|
64
|
+
* update CHANGELOG.md for v0.16.0 (beta) ([f5a8ac5](https://github.com/Genius-Foundation/genius-intents/commit/f5a8ac5fb88e6f18a62deadc9e7ab42cd63d41fa))
|
|
65
|
+
* update CHANGELOG.md for v0.16.1-develop.0 (beta) ([f97a783](https://github.com/Genius-Foundation/genius-intents/commit/f97a7837f381f1e0a041ecb56585e2492cdc8a46))
|
|
66
|
+
* update CHANGELOG.md for v0.17.0 (beta) ([099f261](https://github.com/Genius-Foundation/genius-intents/commit/099f26170c21b023f8796a234d635e35af264712))
|
|
67
|
+
* update CHANGELOG.md for v0.17.5 ([662d818](https://github.com/Genius-Foundation/genius-intents/commit/662d818152b24839b3eaeb22e0cc86b36b4397d7))
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
⚠️ **Beta Release Notes:**
|
|
72
|
+
- This version is intended for testing and development
|
|
73
|
+
- May contain experimental features
|
|
74
|
+
- Not recommended for production use
|
|
75
|
+
- Feedback and bug reports are welcome
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
|
|
1
80
|
## [0.17.5] - 2025-10-09
|
|
2
81
|
|
|
3
82
|
### [0.17.5](https://github.com/Genius-Foundation/genius-intents/compare/v0.17.4...v0.17.5) (2025-10-09)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare enum FourMemeQuoteTokensEnum {
|
|
2
|
+
BNB = "0x0000000000000000000000000000000000000000",
|
|
3
|
+
WBNB = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
|
|
4
|
+
CAKE = "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82",
|
|
5
|
+
USDT = "0x55d398326f99059fF775485246999027B3197955",
|
|
6
|
+
USD1 = "0x8d0D000Ee44948FC98c9B98A4FA4921476f08B0d",
|
|
7
|
+
ASTER = "0x000Ae314E2A2172a039B26378814C252734f556A"
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=fourmeme-direct.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fourmeme-direct.config.d.ts","sourceRoot":"","sources":["../../../src/direct-pools/fourmeme/fourmeme-direct.config.ts"],"names":[],"mappings":"AAEA,oBAAY,uBAAuB;IACjC,GAAG,+CAAe;IAClB,IAAI,+CAA+C;IACnD,IAAI,+CAA+C;IACnD,IAAI,+CAA+C;IACnD,IAAI,+CAA+C;IACnD,KAAK,+CAA+C;CACrD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FourMemeQuoteTokensEnum = void 0;
|
|
4
|
+
const constants_1 = require("../../utils/constants");
|
|
5
|
+
var FourMemeQuoteTokensEnum;
|
|
6
|
+
(function (FourMemeQuoteTokensEnum) {
|
|
7
|
+
FourMemeQuoteTokensEnum["BNB"] = "0x0000000000000000000000000000000000000000";
|
|
8
|
+
FourMemeQuoteTokensEnum["WBNB"] = "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c";
|
|
9
|
+
FourMemeQuoteTokensEnum["CAKE"] = "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82";
|
|
10
|
+
FourMemeQuoteTokensEnum["USDT"] = "0x55d398326f99059fF775485246999027B3197955";
|
|
11
|
+
FourMemeQuoteTokensEnum["USD1"] = "0x8d0D000Ee44948FC98c9B98A4FA4921476f08B0d";
|
|
12
|
+
FourMemeQuoteTokensEnum["ASTER"] = "0x000Ae314E2A2172a039B26378814C252734f556A";
|
|
13
|
+
})(FourMemeQuoteTokensEnum || (exports.FourMemeQuoteTokensEnum = FourMemeQuoteTokensEnum = {}));
|
|
14
|
+
//# sourceMappingURL=fourmeme-direct.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fourmeme-direct.config.js","sourceRoot":"","sources":["../../../src/direct-pools/fourmeme/fourmeme-direct.config.ts"],"names":[],"mappings":";;;AAAA,qDAAqD;AAErD,IAAY,uBAOX;AAPD,WAAY,uBAAuB;IACjC,6EAAkB,CAAA;IAClB,8EAAmD,CAAA;IACnD,8EAAmD,CAAA;IACnD,8EAAmD,CAAA;IACnD,8EAAmD,CAAA;IACnD,+EAAoD,CAAA;AACtD,CAAC,EAPW,uBAAuB,uCAAvB,uBAAuB,QAOlC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { IntentQuoteParams, PriceResponse, QuoteResponse } from '../..';
|
|
2
|
+
import { FourMemeV2OptimisticQuoteProtocolResponse } from './fourmeme-direct.types';
|
|
3
|
+
import { ChainIdEnum, ProtocolEnum } from '../../types/enums';
|
|
4
|
+
import { IntentPriceParams } from '../../types/price-params';
|
|
5
|
+
export declare class FourMemeV2DirectService {
|
|
6
|
+
readonly protocol = ProtocolEnum.FOUR_MEME;
|
|
7
|
+
readonly chains: ChainIdEnum[];
|
|
8
|
+
readonly singleChain = true;
|
|
9
|
+
readonly multiChain = false;
|
|
10
|
+
/** Fixed HelperV3 address (wrapper for ERC20-quoted + native BNB IO) */
|
|
11
|
+
private readonly _helperV3;
|
|
12
|
+
/** Gas hints */
|
|
13
|
+
private readonly _gasEstimateTM;
|
|
14
|
+
private readonly _gasLimitTM;
|
|
15
|
+
private readonly _gasEstimateHelper;
|
|
16
|
+
private readonly _gasLimitHelper;
|
|
17
|
+
/** ABIs */
|
|
18
|
+
private readonly _tokenManagerV2Abi;
|
|
19
|
+
private readonly _helperV3TxAbi;
|
|
20
|
+
private readonly _tokenManagerV2SecondaryAbi;
|
|
21
|
+
private readonly _ifaceV2Secondary;
|
|
22
|
+
private readonly _ifaceV2;
|
|
23
|
+
private readonly _ifaceHelper;
|
|
24
|
+
fetchPrice(params: IntentPriceParams): PriceResponse;
|
|
25
|
+
fetchQuote(params: IntentQuoteParams): QuoteResponse & {
|
|
26
|
+
protocolResponse: FourMemeV2OptimisticQuoteProtocolResponse;
|
|
27
|
+
};
|
|
28
|
+
private _validatePriceParams;
|
|
29
|
+
private _isQuoteAddress;
|
|
30
|
+
private _isBnbish;
|
|
31
|
+
/** Convert float/decimal to 1e18 fixed-point bigint safely */
|
|
32
|
+
private _toScaled18;
|
|
33
|
+
/** Recover estimated (pre-slippage) from provided minOut */
|
|
34
|
+
private _reverseFromMin;
|
|
35
|
+
/** Align to GWEI for four.meme contracts (avoids GW/GWEI errors) */
|
|
36
|
+
private _formatAmount;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=fourmeme-direct.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fourmeme-direct.service.d.ts","sourceRoot":"","sources":["../../../src/direct-pools/fourmeme/fourmeme-direct.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC5F,OAAO,EAGL,yCAAyC,EAC1C,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAgB,MAAM,mBAAmB,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAK7D,qBAAa,uBAAuB;IAClC,SAAgB,QAAQ,0BAA0B;IAClD,SAAgB,MAAM,gBAAqB;IAC3C,SAAgB,WAAW,QAAQ;IACnC,SAAgB,UAAU,SAAS;IAEnC,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwD;IAElF,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAY;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAY;IACxC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAY;IAE5C,WAAW;IACX,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAGxB;IAEX,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG7B;IAEF,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAEjC;IAEX,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA0D;IAC5F,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiD;IAC1E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6C;IAGnE,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,aAAa;IAqFpD,UAAU,CACf,MAAM,EAAE,iBAAiB,GACxB,aAAa,GAAG;QAAE,gBAAgB,EAAE,yCAAyC,CAAA;KAAE;IA4KlF,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,SAAS;IAKjB,8DAA8D;IAC9D,OAAO,CAAC,WAAW;IASnB,4DAA4D;IAC5D,OAAO,CAAC,eAAe;IAQvB,oEAAoE;IACpE,OAAO,CAAC,aAAa;CAUtB"}
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FourMemeV2DirectService = void 0;
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
5
|
+
const enums_1 = require("../../types/enums");
|
|
6
|
+
const fourmeme_direct_config_1 = require("./fourmeme-direct.config");
|
|
7
|
+
const constants_1 = require("../../utils/constants");
|
|
8
|
+
const is_native_1 = require("../../utils/is-native");
|
|
9
|
+
const utils_1 = require("../../utils");
|
|
10
|
+
class FourMemeV2DirectService {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.protocol = enums_1.ProtocolEnum.FOUR_MEME;
|
|
13
|
+
this.chains = [enums_1.ChainIdEnum.BSC];
|
|
14
|
+
this.singleChain = true;
|
|
15
|
+
this.multiChain = false;
|
|
16
|
+
/** Fixed HelperV3 address (wrapper for ERC20-quoted + native BNB IO) */
|
|
17
|
+
this._helperV3 = '0xF251F83e40a78868FcfA3FA4599Dad6494E46034';
|
|
18
|
+
/** Gas hints */
|
|
19
|
+
this._gasEstimateTM = '200000';
|
|
20
|
+
this._gasLimitTM = '220000';
|
|
21
|
+
this._gasEstimateHelper = '250000';
|
|
22
|
+
this._gasLimitHelper = '275000';
|
|
23
|
+
/** ABIs */
|
|
24
|
+
this._tokenManagerV2Abi = [
|
|
25
|
+
'function buyTokenAMAP(uint256 amountOut,address token,uint256 funds,uint256 minAmount) payable',
|
|
26
|
+
'function sellToken(uint256 amountOut,address token,uint256 expectedAmount,uint256 minAmount)',
|
|
27
|
+
];
|
|
28
|
+
this._helperV3TxAbi = [
|
|
29
|
+
'function buyWithEth(uint256 origin,address token,address to,uint256 funds,uint256 minAmount) payable',
|
|
30
|
+
'function sellForEth(uint256 origin,address token,uint256 amount,uint256 minFunds,uint256 feeRate,address feeRecipient)',
|
|
31
|
+
];
|
|
32
|
+
this._tokenManagerV2SecondaryAbi = [
|
|
33
|
+
'function buyTokenAMAP(address token,uint256 funds,uint256 minAmount) payable',
|
|
34
|
+
];
|
|
35
|
+
this._ifaceV2Secondary = new ethers_1.ethers.Interface(this._tokenManagerV2SecondaryAbi);
|
|
36
|
+
this._ifaceV2 = new ethers_1.ethers.Interface(this._tokenManagerV2Abi);
|
|
37
|
+
this._ifaceHelper = new ethers_1.ethers.Interface(this._helperV3TxAbi);
|
|
38
|
+
}
|
|
39
|
+
// ========================= PRICE (no RPC) =========================
|
|
40
|
+
fetchPrice(params) {
|
|
41
|
+
this._validatePriceParams(params);
|
|
42
|
+
const ov = params.overrideParamsFourMemeDirect;
|
|
43
|
+
if (!ov?.quoteToken || !ov?.tokenManager || !ov?.minAmountOut) {
|
|
44
|
+
throw (0, utils_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, 'overrideParamsFourMemeDirect must include quoteToken, tokenManager, and minAmountOut');
|
|
45
|
+
}
|
|
46
|
+
const isBuying = this._isQuoteAddress(params.tokenIn) && !this._isQuoteAddress(params.tokenOut);
|
|
47
|
+
const nonQuoteToken = isBuying ? params.tokenOut : params.tokenIn;
|
|
48
|
+
const pairIsBnbish = this._isBnbish(ov.quoteToken);
|
|
49
|
+
const helperEligible = (!pairIsBnbish && isBuying && (0, is_native_1.isNative)(params.tokenIn)) ||
|
|
50
|
+
(!pairIsBnbish && !isBuying && (0, is_native_1.isNative)(params.tokenOut));
|
|
51
|
+
// For helper-eligible paths, require conversion inputs for UI/meta conversions
|
|
52
|
+
let quoteFundsWeiFromBnb;
|
|
53
|
+
let bnbFromQuoteWei;
|
|
54
|
+
if (helperEligible) {
|
|
55
|
+
if (ov.bnbUsdPrice == null || ov.quoteTokenPriceUsd == null) {
|
|
56
|
+
throw (0, utils_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, 'overrideParamsFourMemeDirect.bnbUsdPrice and quoteTokenPriceUsd are required for native↔ERC20-quoted conversions');
|
|
57
|
+
}
|
|
58
|
+
const bnbUsd18 = this._toScaled18(ov.bnbUsdPrice);
|
|
59
|
+
const quoteUsd18 = this._toScaled18(ov.quoteTokenPriceUsd);
|
|
60
|
+
if (isBuying) {
|
|
61
|
+
// Convert BNB wei -> QUOTE wei (for analytics/UI)
|
|
62
|
+
const bnbWei = BigInt(this._formatAmount(params.amountIn));
|
|
63
|
+
// quoteWei = bnbWei * (BNB/USD) / (QUOTE/USD)
|
|
64
|
+
quoteFundsWeiFromBnb = (bnbWei * bnbUsd18) / quoteUsd18;
|
|
65
|
+
}
|
|
66
|
+
else if ((0, is_native_1.isNative)(params.tokenOut)) {
|
|
67
|
+
// If we ever need to show "what is the BNB out equivalent of some QUOTE wei"
|
|
68
|
+
// bnbWei = quoteWei * (QUOTE/USD) / (BNB/USD)
|
|
69
|
+
// (we don't know quoteWei here unless you pass it; kept for symmetry)
|
|
70
|
+
// bnbFromQuoteWei = (quoteWei * quoteUsd18) / bnbUsd18;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// UI estimate from provided minOut (reverse slippage)
|
|
74
|
+
const estOut = this._reverseFromMin(BigInt(ov.minAmountOut), params.slippage ?? 0);
|
|
75
|
+
const willUseHelper = helperEligible;
|
|
76
|
+
const router = willUseHelper ? this._helperV3 : ov.tokenManager;
|
|
77
|
+
const protocolResponse = {
|
|
78
|
+
routerAddress: router,
|
|
79
|
+
pairTokens: [nonQuoteToken, ov.quoteToken],
|
|
80
|
+
version: '2',
|
|
81
|
+
rateMode: 'quotePerToken',
|
|
82
|
+
// Optional meta block for your UI/telemetry; types can allow optional fields
|
|
83
|
+
// @ts-ignore (if your type doesn't include this, add optional fields or index signature)
|
|
84
|
+
conversions: {
|
|
85
|
+
helperEligible: String(helperEligible),
|
|
86
|
+
quoteFundsWeiFromBnb: quoteFundsWeiFromBnb?.toString(),
|
|
87
|
+
bnbFromQuoteWei: bnbFromQuoteWei?.toString(),
|
|
88
|
+
bnbUsdPrice: ov.bnbUsdPrice,
|
|
89
|
+
quoteTokenPriceUsd: ov.quoteTokenPriceUsd,
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
return {
|
|
93
|
+
protocol: this.protocol,
|
|
94
|
+
networkIn: params.networkIn,
|
|
95
|
+
networkOut: params.networkOut,
|
|
96
|
+
tokenIn: params.tokenIn,
|
|
97
|
+
tokenOut: params.tokenOut,
|
|
98
|
+
amountIn: params.amountIn,
|
|
99
|
+
amountOut: estOut.toString(), // UI estimate; calldata uses ov.minAmountOut
|
|
100
|
+
estimatedGas: willUseHelper ? this._gasEstimateHelper : this._gasEstimateTM,
|
|
101
|
+
slippage: params.slippage,
|
|
102
|
+
protocolResponse,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
// ========================= QUOTE (build calldata from overrides) =========================
|
|
106
|
+
fetchQuote(params) {
|
|
107
|
+
this._validatePriceParams(params);
|
|
108
|
+
let price = params.priceResponse;
|
|
109
|
+
if (!price)
|
|
110
|
+
price = this.fetchPrice(params);
|
|
111
|
+
const ov = params.overrideParamsFourMemeDirect;
|
|
112
|
+
if (!ov?.quoteToken || !ov?.tokenManager || !ov?.minAmountOut) {
|
|
113
|
+
throw (0, utils_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, 'overrideParamsFourMemeDirect must include quoteToken, tokenManager, and minAmountOut');
|
|
114
|
+
}
|
|
115
|
+
const isBuying = this._isQuoteAddress(params.tokenIn) && !this._isQuoteAddress(params.tokenOut);
|
|
116
|
+
const nonQuoteToken = isBuying ? params.tokenOut : params.tokenIn;
|
|
117
|
+
const pairIsBnbish = this._isBnbish(ov.quoteToken);
|
|
118
|
+
const wantsBnbOut = (0, is_native_1.isNative)(params.tokenOut);
|
|
119
|
+
const isNativeIn = (0, is_native_1.isNative)(params.tokenIn);
|
|
120
|
+
const helperEligible = (!pairIsBnbish && isBuying && isNativeIn) || (!pairIsBnbish && !isBuying && wantsBnbOut);
|
|
121
|
+
// Conversions are only for UI parity, not calldata.
|
|
122
|
+
if (helperEligible && (ov.bnbUsdPrice == null || ov.quoteTokenPriceUsd == null)) {
|
|
123
|
+
throw (0, utils_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, 'overrideParamsFourMemeDirect.bnbUsdPrice and quoteTokenPriceUsd are required for native↔ERC20-quoted conversions');
|
|
124
|
+
}
|
|
125
|
+
const estOut = BigInt(ov.minAmountOut != null ? ov.minAmountOut : price.amountOut);
|
|
126
|
+
const minOut = BigInt(ov.minAmountOut);
|
|
127
|
+
let tx;
|
|
128
|
+
let router;
|
|
129
|
+
if (isBuying) {
|
|
130
|
+
const funds = this._formatAmount(params.amountIn);
|
|
131
|
+
if (helperEligible && isNativeIn) {
|
|
132
|
+
// HelperV3.buyWithEth (selector unchanged from pessimistic)
|
|
133
|
+
const toArg = params.receiver && params.receiver !== params.from ? params.receiver : constants_1.ZERO_ADDRESS;
|
|
134
|
+
const data = this._ifaceHelper.encodeFunctionData('buyWithEth', [
|
|
135
|
+
0n,
|
|
136
|
+
nonQuoteToken,
|
|
137
|
+
toArg,
|
|
138
|
+
BigInt(funds),
|
|
139
|
+
minOut,
|
|
140
|
+
]);
|
|
141
|
+
tx = {
|
|
142
|
+
to: this._helperV3,
|
|
143
|
+
data: data,
|
|
144
|
+
value: funds,
|
|
145
|
+
gasEstimate: this._gasEstimateHelper,
|
|
146
|
+
gasLimit: this._gasLimitHelper,
|
|
147
|
+
};
|
|
148
|
+
router = this._helperV3;
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
// TMv2.buyTokenAMAP — select the SAME selector as pessimistic does
|
|
152
|
+
const useSecondary = !(params.receiver && params.receiver !== params.from);
|
|
153
|
+
const data = useSecondary
|
|
154
|
+
? this._ifaceV2Secondary.encodeFunctionData('buyTokenAMAP', [
|
|
155
|
+
nonQuoteToken,
|
|
156
|
+
BigInt(funds),
|
|
157
|
+
minOut,
|
|
158
|
+
])
|
|
159
|
+
: this._ifaceV2.encodeFunctionData('buyTokenAMAP', [
|
|
160
|
+
0n, // AMAP
|
|
161
|
+
nonQuoteToken,
|
|
162
|
+
BigInt(funds),
|
|
163
|
+
minOut,
|
|
164
|
+
]);
|
|
165
|
+
tx = {
|
|
166
|
+
to: ov.tokenManager,
|
|
167
|
+
data: data,
|
|
168
|
+
value: isNativeIn ? funds : '0',
|
|
169
|
+
gasEstimate: this._gasEstimateTM,
|
|
170
|
+
gasLimit: this._gasLimitTM,
|
|
171
|
+
};
|
|
172
|
+
router = ov.tokenManager;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
// SELL
|
|
177
|
+
const tokenAmountIn = this._formatAmount(params.amountIn);
|
|
178
|
+
if (helperEligible && wantsBnbOut) {
|
|
179
|
+
throw new Error('four.meme HelperV3.sellForEth not yet implemented');
|
|
180
|
+
// HelperV3.sellForEth (selector unchanged from pessimistic)
|
|
181
|
+
const data = this._ifaceHelper.encodeFunctionData('sellForEth', [
|
|
182
|
+
0n,
|
|
183
|
+
nonQuoteToken,
|
|
184
|
+
BigInt(tokenAmountIn),
|
|
185
|
+
minOut, // min BNB out
|
|
186
|
+
0n,
|
|
187
|
+
constants_1.ZERO_ADDRESS,
|
|
188
|
+
]);
|
|
189
|
+
tx = {
|
|
190
|
+
to: this._helperV3,
|
|
191
|
+
data: data,
|
|
192
|
+
value: '0',
|
|
193
|
+
gasEstimate: this._gasEstimateHelper,
|
|
194
|
+
gasLimit: this._gasLimitHelper,
|
|
195
|
+
};
|
|
196
|
+
router = this._helperV3;
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
// TMv2.sellToken
|
|
200
|
+
const data = this._ifaceV2.encodeFunctionData('sellToken', [
|
|
201
|
+
0n, // AMAP
|
|
202
|
+
nonQuoteToken,
|
|
203
|
+
BigInt(tokenAmountIn),
|
|
204
|
+
minOut, // min quote out
|
|
205
|
+
]);
|
|
206
|
+
tx = {
|
|
207
|
+
to: ov.tokenManager,
|
|
208
|
+
data: data,
|
|
209
|
+
value: '0',
|
|
210
|
+
gasEstimate: this._gasEstimateTM,
|
|
211
|
+
gasLimit: this._gasLimitTM,
|
|
212
|
+
};
|
|
213
|
+
router = ov.tokenManager;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Approval parity with pessimistic:
|
|
217
|
+
// - Native-in BUY => no approval
|
|
218
|
+
// - Else => approve TokenManager (even for Helper SELL)
|
|
219
|
+
const needsApproval = !(isBuying && isNativeIn);
|
|
220
|
+
const approvalSpender = needsApproval ? ov.tokenManager : constants_1.ZERO_ADDRESS;
|
|
221
|
+
const protocolResponse = {
|
|
222
|
+
...price.protocolResponse,
|
|
223
|
+
routerAddress: router,
|
|
224
|
+
data: tx.data,
|
|
225
|
+
gas: tx.gasEstimate ?? (helperEligible ? this._gasEstimateHelper : this._gasEstimateTM),
|
|
226
|
+
isBuying,
|
|
227
|
+
};
|
|
228
|
+
return {
|
|
229
|
+
protocol: this.protocol,
|
|
230
|
+
tokenIn: params.tokenIn,
|
|
231
|
+
tokenOut: params.tokenOut,
|
|
232
|
+
amountIn: params.amountIn,
|
|
233
|
+
amountOut: estOut.toString(), // UI estimate only; calldata uses ov.minAmountOut
|
|
234
|
+
from: params.from,
|
|
235
|
+
receiver: params.receiver ?? params.from,
|
|
236
|
+
evmExecutionPayload: {
|
|
237
|
+
transactionData: tx,
|
|
238
|
+
approval: {
|
|
239
|
+
spender: approvalSpender,
|
|
240
|
+
token: params.tokenIn,
|
|
241
|
+
amount: needsApproval ? params.amountIn : '0',
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
slippage: params.slippage,
|
|
245
|
+
networkIn: params.networkIn,
|
|
246
|
+
networkOut: params.networkOut,
|
|
247
|
+
protocolResponse,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
// ========================= helpers =========================
|
|
251
|
+
_validatePriceParams(p) {
|
|
252
|
+
if (p.networkIn !== enums_1.ChainIdEnum.BSC || p.networkOut !== enums_1.ChainIdEnum.BSC) {
|
|
253
|
+
throw (0, utils_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, 'Only BSC single-chain supported');
|
|
254
|
+
}
|
|
255
|
+
const isInQuote = this._isQuoteAddress(p.tokenIn);
|
|
256
|
+
const isOutQuote = this._isQuoteAddress(p.tokenOut);
|
|
257
|
+
if (isInQuote === isOutQuote) {
|
|
258
|
+
throw (0, utils_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, 'Exactly one side must be a supported quote token (BNB/WBNB/CAKE/USDT/USD1/ASTER)');
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
_isQuoteAddress(addr) {
|
|
262
|
+
const a = addr.toLowerCase();
|
|
263
|
+
return (a === constants_1.ZERO_ADDRESS.toLowerCase() ||
|
|
264
|
+
a === fourmeme_direct_config_1.FourMemeQuoteTokensEnum.WBNB.toLowerCase() ||
|
|
265
|
+
a === fourmeme_direct_config_1.FourMemeQuoteTokensEnum.CAKE.toLowerCase() ||
|
|
266
|
+
a === fourmeme_direct_config_1.FourMemeQuoteTokensEnum.USDT.toLowerCase() ||
|
|
267
|
+
a === fourmeme_direct_config_1.FourMemeQuoteTokensEnum.USD1.toLowerCase() ||
|
|
268
|
+
a === fourmeme_direct_config_1.FourMemeQuoteTokensEnum.ASTER.toLowerCase());
|
|
269
|
+
}
|
|
270
|
+
_isBnbish(addr) {
|
|
271
|
+
const a = addr.toLowerCase();
|
|
272
|
+
return a === constants_1.ZERO_ADDRESS.toLowerCase() || a === fourmeme_direct_config_1.FourMemeQuoteTokensEnum.WBNB.toLowerCase();
|
|
273
|
+
}
|
|
274
|
+
/** Convert float/decimal to 1e18 fixed-point bigint safely */
|
|
275
|
+
_toScaled18(val) {
|
|
276
|
+
const s = String(val);
|
|
277
|
+
const [i, f = ''] = s.split('.');
|
|
278
|
+
const DEC = 18n;
|
|
279
|
+
const ip = BigInt(i || '0');
|
|
280
|
+
const frac = f.slice(0, 18).padEnd(18, '0');
|
|
281
|
+
return ip * 10n ** DEC + BigInt(frac || '0');
|
|
282
|
+
}
|
|
283
|
+
/** Recover estimated (pre-slippage) from provided minOut */
|
|
284
|
+
_reverseFromMin(minOut, slippagePercent) {
|
|
285
|
+
const bps = BigInt(Math.floor((slippagePercent ?? 0) * 100));
|
|
286
|
+
if (bps === 0n)
|
|
287
|
+
return minOut;
|
|
288
|
+
const num = minOut * 10000n;
|
|
289
|
+
const den = 10000n - bps;
|
|
290
|
+
return (num + den - 1n) / den; // ceil
|
|
291
|
+
}
|
|
292
|
+
/** Align to GWEI for four.meme contracts (avoids GW/GWEI errors) */
|
|
293
|
+
_formatAmount(amountDecStr) {
|
|
294
|
+
const GWEI = 10n ** 9n;
|
|
295
|
+
let x = BigInt(amountDecStr);
|
|
296
|
+
if (x === 0n)
|
|
297
|
+
return GWEI.toString();
|
|
298
|
+
const rem = x % GWEI;
|
|
299
|
+
if (rem === 0n)
|
|
300
|
+
return x.toString();
|
|
301
|
+
x -= rem; // floor to GWEI
|
|
302
|
+
if (x === 0n)
|
|
303
|
+
return GWEI.toString();
|
|
304
|
+
return x.toString();
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
exports.FourMemeV2DirectService = FourMemeV2DirectService;
|
|
308
|
+
//# sourceMappingURL=fourmeme-direct.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fourmeme-direct.service.js","sourceRoot":"","sources":["../../../src/direct-pools/fourmeme/fourmeme-direct.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export type FourMemeDirectPoolPriceOverrideParams = {
|
|
2
|
+
quoteToken: string;
|
|
3
|
+
tokenManager: string;
|
|
4
|
+
bnbUsdPrice?: number;
|
|
5
|
+
quoteTokenPriceUsd?: number;
|
|
6
|
+
minAmountOut: string;
|
|
7
|
+
};
|
|
8
|
+
/** Protocol payload returned inside your PriceResponse.protocolResponse */
|
|
9
|
+
export type FourMemeV2OptimisticPriceProtocolResponse = {
|
|
10
|
+
/** TokenManager (V2) router */
|
|
11
|
+
routerAddress: string;
|
|
12
|
+
/** [nonQuoteToken, quoteToken] — quoteToken may be ZERO_ADDRESS for native BNB */
|
|
13
|
+
pairTokens: [string, string];
|
|
14
|
+
/** Always "2" for this service */
|
|
15
|
+
version: string;
|
|
16
|
+
/**
|
|
17
|
+
* Orientation of lastPrice; this service assumes "quote per 1 token".
|
|
18
|
+
* - quotePerToken: lastPrice = quote_units / token_units (scaled by priceScale)
|
|
19
|
+
*/
|
|
20
|
+
rateMode: 'quotePerToken';
|
|
21
|
+
};
|
|
22
|
+
/** Protocol payload returned inside your QuoteResponse.protocolResponse */
|
|
23
|
+
export type FourMemeV2OptimisticQuoteProtocolResponse = FourMemeV2OptimisticPriceProtocolResponse & {
|
|
24
|
+
/** Encoded calldata for the TokenManager V2 */
|
|
25
|
+
data: string;
|
|
26
|
+
/** Gas estimate used for UI display */
|
|
27
|
+
gas: string;
|
|
28
|
+
/** Whether this is a BUY (quote->token) path */
|
|
29
|
+
isBuying: boolean;
|
|
30
|
+
};
|
|
31
|
+
export type ResolveFourMemePairParams = {
|
|
32
|
+
tokenIn: string;
|
|
33
|
+
tokenOut: string;
|
|
34
|
+
};
|
|
35
|
+
export type ResolveFourMemePairResponse = {
|
|
36
|
+
isBuying: boolean;
|
|
37
|
+
tokenAddress: string;
|
|
38
|
+
nonQuoteToken: string;
|
|
39
|
+
quoteToken: string;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=fourmeme-direct.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fourmeme-direct.types.d.ts","sourceRoot":"","sources":["../../../src/direct-pools/fourmeme/fourmeme-direct.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qCAAqC,GAAG;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,yCAAyC,GAAG;IACtD,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IAEtB,kFAAkF;IAClF,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,yCAAyC,GACnD,yCAAyC,GAAG;IAC1C,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IAEb,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IAEZ,gDAAgD;IAChD,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEJ,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fourmeme-direct.types.js","sourceRoot":"","sources":["../../../src/direct-pools/fourmeme/fourmeme-direct.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperswapV2-router.abi.d.ts","sourceRoot":"","sources":["../../../../src/lib/dex/hyperswap/hyperswapV2-router.abi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAE3B,eAAO,MAAM,oBAAoB,EAAE,GAoPzB,CAAC"}
|