@cetusprotocol/aggregator-sdk 0.0.0-experimental-20240819205256 → 0.0.0-experimental-20240822182903
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/index.d.mts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +141 -6
- package/dist/index.mjs +138 -6
- package/dist/src/client.d.ts +3 -0
- package/dist/src/transaction/afsui.d.ts +10 -0
- package/dist/src/transaction/haedal.d.ts +7 -0
- package/dist/src/transaction/volo.d.ts +8 -0
- package/package.json +1 -1
- package/src/client.ts +14 -2
- package/src/transaction/afsui.ts +60 -0
- package/src/transaction/haedal.ts +49 -0
- package/src/transaction/swap.ts +5 -3
- package/src/transaction/volo.ts +52 -0
- package/tests/router.test.ts +27 -21
package/dist/index.d.mts
CHANGED
|
@@ -67,6 +67,9 @@ declare const FLOWXV2 = "FLOWX";
|
|
|
67
67
|
declare const KRIYAV3 = "KRIYAV3";
|
|
68
68
|
declare const TURBOS = "TURBOS";
|
|
69
69
|
declare const AFTERMATH = "AFTERMATH";
|
|
70
|
+
declare const HAEDAL = "HAEDAL";
|
|
71
|
+
declare const VOLO = "VOLO";
|
|
72
|
+
declare const AFSUI = "AFSUI";
|
|
70
73
|
type BuildRouterSwapParams = {
|
|
71
74
|
routers: Router[];
|
|
72
75
|
byAmountIn: boolean;
|
|
@@ -264,4 +267,4 @@ declare enum Env {
|
|
|
264
267
|
Testnet = 1
|
|
265
268
|
}
|
|
266
269
|
|
|
267
|
-
export { AFTERMATH, AFTERMATH_MODULE, AggregatorClient, type AggregatorResponse, type BuildFastRouterSwapParams, type BuildRouterSwapParams, CETUS, CETUS_MODULE, CETUS_PUBLISHED_AT, CHECK_COINS_THRESHOLD_FUNC, CLOCK_ADDRESS, CoinInfoAddress, CoinStoreAddress, DEEPBOOKV2, DEEPBOOK_CLOB_V2_MODULE, DEEPBOOK_CUSTODIAN_V2_MODULE, DEEPBOOK_MODULE, DEEPBOOK_PACKAGE_ID, DEEPBOOK_PUBLISHED_AT, type Dex, Env, type ExtendedDetails, FLOWXV2, FLOWX_AMM_MODULE, type FindRouterParams, FlashSwapA2BFunc, FlashSwapB2AFunc, FlashSwapFunc, FlashSwapWithPartnerA2BFunc, FlashSwapWithPartnerB2AFunc, FlashSwapWithPartnerFunc, JOIN_FUNC, KRIYA, KRIYAV3, KRIYA_MODULE, MAINNET_AFTERMATH_INSURANCE_FUND_ID, MAINNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID, MAINNET_AFTERMATH_REFERRAL_VAULT_ID, MAINNET_AFTERMATH_REGISTRY_ID, MAINNET_AFTERMATH_TREASURY_ID, MAINNET_CETUS_GLOBAL_CONFIG_ID, MAINNET_FLOWX_AMM_CONTAINER_ID, ONE, PAY_MODULE, POOL_MODULT, type Path, REPAY_FLASH_SWAP_A2B_FUNC, REPAY_FLASH_SWAP_B2A_FUNC, REPAY_FLASH_SWAP_WITH_PARTNER_A2B_FUNC, REPAY_FLASH_SWAP_WITH_PARTNER_B2A_FUNC, RepayFalshSwapFunc, RepayFlashSwapWithPartnerFunc, type Router, type RouterData, type RouterError, SWAP_A2B_FUNC, SWAP_B2A_FUNC, SuiZeroCoinFn, type SwapInPoolsParams, type SwapInPoolsResult, TEN_POW_NINE, TESTNET_AFTERMATH_INSURANCE_FUND_ID, TESTNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID, TESTNET_AFTERMATH_REFERRAL_VAULT_ID, TESTNET_AFTERMATH_REGISTRY_ID, TESTNET_AFTERMATH_TREASURY_ID, TESTNET_CETUS_GLOBAL_CONFIG_ID, TESTNET_FLOWX_AMM_CONTAINER_ID, TRANSFER_ACCOUNT_CAP, TRANSFER_OR_DESTORY_COIN_FUNC, TURBOS, TURBOS_MODULE, TURBOS_VERSIONED, TWO, U128, U64_MAX, U64_MAX_BN, UTILS_MODULE, ZERO, composeType, createTarget, extractAddressFromType, extractStructTagFromType, fixSuiObjectId, getRouterResult, isSortedSymbols, normalizeCoinType, parseRouterResponse, patchFixSuiObjectId };
|
|
270
|
+
export { AFSUI, AFTERMATH, AFTERMATH_MODULE, AggregatorClient, type AggregatorResponse, type BuildFastRouterSwapParams, type BuildRouterSwapParams, CETUS, CETUS_MODULE, CETUS_PUBLISHED_AT, CHECK_COINS_THRESHOLD_FUNC, CLOCK_ADDRESS, CoinInfoAddress, CoinStoreAddress, DEEPBOOKV2, DEEPBOOK_CLOB_V2_MODULE, DEEPBOOK_CUSTODIAN_V2_MODULE, DEEPBOOK_MODULE, DEEPBOOK_PACKAGE_ID, DEEPBOOK_PUBLISHED_AT, type Dex, Env, type ExtendedDetails, FLOWXV2, FLOWX_AMM_MODULE, type FindRouterParams, FlashSwapA2BFunc, FlashSwapB2AFunc, FlashSwapFunc, FlashSwapWithPartnerA2BFunc, FlashSwapWithPartnerB2AFunc, FlashSwapWithPartnerFunc, HAEDAL, JOIN_FUNC, KRIYA, KRIYAV3, KRIYA_MODULE, MAINNET_AFTERMATH_INSURANCE_FUND_ID, MAINNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID, MAINNET_AFTERMATH_REFERRAL_VAULT_ID, MAINNET_AFTERMATH_REGISTRY_ID, MAINNET_AFTERMATH_TREASURY_ID, MAINNET_CETUS_GLOBAL_CONFIG_ID, MAINNET_FLOWX_AMM_CONTAINER_ID, ONE, PAY_MODULE, POOL_MODULT, type Path, REPAY_FLASH_SWAP_A2B_FUNC, REPAY_FLASH_SWAP_B2A_FUNC, REPAY_FLASH_SWAP_WITH_PARTNER_A2B_FUNC, REPAY_FLASH_SWAP_WITH_PARTNER_B2A_FUNC, RepayFalshSwapFunc, RepayFlashSwapWithPartnerFunc, type Router, type RouterData, type RouterError, SWAP_A2B_FUNC, SWAP_B2A_FUNC, SuiZeroCoinFn, type SwapInPoolsParams, type SwapInPoolsResult, TEN_POW_NINE, TESTNET_AFTERMATH_INSURANCE_FUND_ID, TESTNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID, TESTNET_AFTERMATH_REFERRAL_VAULT_ID, TESTNET_AFTERMATH_REGISTRY_ID, TESTNET_AFTERMATH_TREASURY_ID, TESTNET_CETUS_GLOBAL_CONFIG_ID, TESTNET_FLOWX_AMM_CONTAINER_ID, TRANSFER_ACCOUNT_CAP, TRANSFER_OR_DESTORY_COIN_FUNC, TURBOS, TURBOS_MODULE, TURBOS_VERSIONED, TWO, U128, U64_MAX, U64_MAX_BN, UTILS_MODULE, VOLO, ZERO, composeType, createTarget, extractAddressFromType, extractStructTagFromType, fixSuiObjectId, getRouterResult, isSortedSymbols, normalizeCoinType, parseRouterResponse, patchFixSuiObjectId };
|
package/dist/index.d.ts
CHANGED
|
@@ -67,6 +67,9 @@ declare const FLOWXV2 = "FLOWX";
|
|
|
67
67
|
declare const KRIYAV3 = "KRIYAV3";
|
|
68
68
|
declare const TURBOS = "TURBOS";
|
|
69
69
|
declare const AFTERMATH = "AFTERMATH";
|
|
70
|
+
declare const HAEDAL = "HAEDAL";
|
|
71
|
+
declare const VOLO = "VOLO";
|
|
72
|
+
declare const AFSUI = "AFSUI";
|
|
70
73
|
type BuildRouterSwapParams = {
|
|
71
74
|
routers: Router[];
|
|
72
75
|
byAmountIn: boolean;
|
|
@@ -264,4 +267,4 @@ declare enum Env {
|
|
|
264
267
|
Testnet = 1
|
|
265
268
|
}
|
|
266
269
|
|
|
267
|
-
export { AFTERMATH, AFTERMATH_MODULE, AggregatorClient, type AggregatorResponse, type BuildFastRouterSwapParams, type BuildRouterSwapParams, CETUS, CETUS_MODULE, CETUS_PUBLISHED_AT, CHECK_COINS_THRESHOLD_FUNC, CLOCK_ADDRESS, CoinInfoAddress, CoinStoreAddress, DEEPBOOKV2, DEEPBOOK_CLOB_V2_MODULE, DEEPBOOK_CUSTODIAN_V2_MODULE, DEEPBOOK_MODULE, DEEPBOOK_PACKAGE_ID, DEEPBOOK_PUBLISHED_AT, type Dex, Env, type ExtendedDetails, FLOWXV2, FLOWX_AMM_MODULE, type FindRouterParams, FlashSwapA2BFunc, FlashSwapB2AFunc, FlashSwapFunc, FlashSwapWithPartnerA2BFunc, FlashSwapWithPartnerB2AFunc, FlashSwapWithPartnerFunc, JOIN_FUNC, KRIYA, KRIYAV3, KRIYA_MODULE, MAINNET_AFTERMATH_INSURANCE_FUND_ID, MAINNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID, MAINNET_AFTERMATH_REFERRAL_VAULT_ID, MAINNET_AFTERMATH_REGISTRY_ID, MAINNET_AFTERMATH_TREASURY_ID, MAINNET_CETUS_GLOBAL_CONFIG_ID, MAINNET_FLOWX_AMM_CONTAINER_ID, ONE, PAY_MODULE, POOL_MODULT, type Path, REPAY_FLASH_SWAP_A2B_FUNC, REPAY_FLASH_SWAP_B2A_FUNC, REPAY_FLASH_SWAP_WITH_PARTNER_A2B_FUNC, REPAY_FLASH_SWAP_WITH_PARTNER_B2A_FUNC, RepayFalshSwapFunc, RepayFlashSwapWithPartnerFunc, type Router, type RouterData, type RouterError, SWAP_A2B_FUNC, SWAP_B2A_FUNC, SuiZeroCoinFn, type SwapInPoolsParams, type SwapInPoolsResult, TEN_POW_NINE, TESTNET_AFTERMATH_INSURANCE_FUND_ID, TESTNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID, TESTNET_AFTERMATH_REFERRAL_VAULT_ID, TESTNET_AFTERMATH_REGISTRY_ID, TESTNET_AFTERMATH_TREASURY_ID, TESTNET_CETUS_GLOBAL_CONFIG_ID, TESTNET_FLOWX_AMM_CONTAINER_ID, TRANSFER_ACCOUNT_CAP, TRANSFER_OR_DESTORY_COIN_FUNC, TURBOS, TURBOS_MODULE, TURBOS_VERSIONED, TWO, U128, U64_MAX, U64_MAX_BN, UTILS_MODULE, ZERO, composeType, createTarget, extractAddressFromType, extractStructTagFromType, fixSuiObjectId, getRouterResult, isSortedSymbols, normalizeCoinType, parseRouterResponse, patchFixSuiObjectId };
|
|
270
|
+
export { AFSUI, AFTERMATH, AFTERMATH_MODULE, AggregatorClient, type AggregatorResponse, type BuildFastRouterSwapParams, type BuildRouterSwapParams, CETUS, CETUS_MODULE, CETUS_PUBLISHED_AT, CHECK_COINS_THRESHOLD_FUNC, CLOCK_ADDRESS, CoinInfoAddress, CoinStoreAddress, DEEPBOOKV2, DEEPBOOK_CLOB_V2_MODULE, DEEPBOOK_CUSTODIAN_V2_MODULE, DEEPBOOK_MODULE, DEEPBOOK_PACKAGE_ID, DEEPBOOK_PUBLISHED_AT, type Dex, Env, type ExtendedDetails, FLOWXV2, FLOWX_AMM_MODULE, type FindRouterParams, FlashSwapA2BFunc, FlashSwapB2AFunc, FlashSwapFunc, FlashSwapWithPartnerA2BFunc, FlashSwapWithPartnerB2AFunc, FlashSwapWithPartnerFunc, HAEDAL, JOIN_FUNC, KRIYA, KRIYAV3, KRIYA_MODULE, MAINNET_AFTERMATH_INSURANCE_FUND_ID, MAINNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID, MAINNET_AFTERMATH_REFERRAL_VAULT_ID, MAINNET_AFTERMATH_REGISTRY_ID, MAINNET_AFTERMATH_TREASURY_ID, MAINNET_CETUS_GLOBAL_CONFIG_ID, MAINNET_FLOWX_AMM_CONTAINER_ID, ONE, PAY_MODULE, POOL_MODULT, type Path, REPAY_FLASH_SWAP_A2B_FUNC, REPAY_FLASH_SWAP_B2A_FUNC, REPAY_FLASH_SWAP_WITH_PARTNER_A2B_FUNC, REPAY_FLASH_SWAP_WITH_PARTNER_B2A_FUNC, RepayFalshSwapFunc, RepayFlashSwapWithPartnerFunc, type Router, type RouterData, type RouterError, SWAP_A2B_FUNC, SWAP_B2A_FUNC, SuiZeroCoinFn, type SwapInPoolsParams, type SwapInPoolsResult, TEN_POW_NINE, TESTNET_AFTERMATH_INSURANCE_FUND_ID, TESTNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID, TESTNET_AFTERMATH_REFERRAL_VAULT_ID, TESTNET_AFTERMATH_REGISTRY_ID, TESTNET_AFTERMATH_TREASURY_ID, TESTNET_CETUS_GLOBAL_CONFIG_ID, TESTNET_FLOWX_AMM_CONTAINER_ID, TRANSFER_ACCOUNT_CAP, TRANSFER_OR_DESTORY_COIN_FUNC, TURBOS, TURBOS_MODULE, TURBOS_VERSIONED, TWO, U128, U64_MAX, U64_MAX_BN, UTILS_MODULE, VOLO, ZERO, composeType, createTarget, extractAddressFromType, extractStructTagFromType, fixSuiObjectId, getRouterResult, isSortedSymbols, normalizeCoinType, parseRouterResponse, patchFixSuiObjectId };
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var utils = require('@mysten/sui/utils');
|
|
4
4
|
var transactions = require('@mysten/sui/transactions');
|
|
5
|
+
var utils$1 = require('@mysten/sui/dist/cjs/utils');
|
|
5
6
|
|
|
6
7
|
var __create = Object.create;
|
|
7
8
|
var __defProp = Object.defineProperty;
|
|
@@ -5814,6 +5815,7 @@ function swapInPools(client, params, sender) {
|
|
|
5814
5815
|
}
|
|
5815
5816
|
}
|
|
5816
5817
|
const event = valueData[tempIndex].parsedJson.data;
|
|
5818
|
+
console.log("event", JSON.stringify(event, null, 2));
|
|
5817
5819
|
const currentSqrtPrice = event.step_results[0].current_sqrt_price;
|
|
5818
5820
|
const [decimalA, decimalB] = yield Promise.all([
|
|
5819
5821
|
client.getCoinMetadata({ coinType: coinA }).then((metadata) => metadata == null ? void 0 : metadata.decimals),
|
|
@@ -5842,9 +5844,9 @@ function swapInPools(client, params, sender) {
|
|
|
5842
5844
|
provider: "CETUS",
|
|
5843
5845
|
from: fromCoin,
|
|
5844
5846
|
target: targetCoin,
|
|
5845
|
-
feeRate:
|
|
5846
|
-
amountIn:
|
|
5847
|
-
amountOut:
|
|
5847
|
+
feeRate: event.fee_rate,
|
|
5848
|
+
amountIn: event.amount_in,
|
|
5849
|
+
amountOut: event.amount_out
|
|
5848
5850
|
}
|
|
5849
5851
|
],
|
|
5850
5852
|
amountIn: new import_bn4.BN((_d = event.amount_in) != null ? _d : 0),
|
|
@@ -5862,6 +5864,127 @@ function swapInPools(client, params, sender) {
|
|
|
5862
5864
|
});
|
|
5863
5865
|
}
|
|
5864
5866
|
|
|
5867
|
+
// src/transaction/kriya_v3.ts
|
|
5868
|
+
var KriyaV3 = class {
|
|
5869
|
+
constructor(env) {
|
|
5870
|
+
if (env !== 0 /* Mainnet */) {
|
|
5871
|
+
throw new Error("Kriya clmm only supported on mainnet");
|
|
5872
|
+
}
|
|
5873
|
+
this.version = "0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78";
|
|
5874
|
+
}
|
|
5875
|
+
swap(client, txb, path, inputCoin) {
|
|
5876
|
+
return __async(this, null, function* () {
|
|
5877
|
+
const { direction, from, target } = path;
|
|
5878
|
+
const [func, coinAType, coinBType] = direction ? ["swap_a2b", from, target] : ["swap_b2a", target, from];
|
|
5879
|
+
const args = [
|
|
5880
|
+
txb.object(path.id),
|
|
5881
|
+
inputCoin,
|
|
5882
|
+
txb.object(this.version),
|
|
5883
|
+
txb.object(CLOCK_ADDRESS)
|
|
5884
|
+
];
|
|
5885
|
+
const res = txb.moveCall({
|
|
5886
|
+
target: `${client.publishedAt()}::kriya_clmm::${func}`,
|
|
5887
|
+
typeArguments: [coinAType, coinBType],
|
|
5888
|
+
arguments: args
|
|
5889
|
+
});
|
|
5890
|
+
return res;
|
|
5891
|
+
});
|
|
5892
|
+
}
|
|
5893
|
+
};
|
|
5894
|
+
var Haedal = class {
|
|
5895
|
+
constructor(env) {
|
|
5896
|
+
if (env !== 0 /* Mainnet */) {
|
|
5897
|
+
throw new Error("Haedal only supported on mainnet");
|
|
5898
|
+
}
|
|
5899
|
+
this.stake = "0x47b224762220393057ebf4f70501b6e657c3e56684737568439a04f80849b2ca";
|
|
5900
|
+
}
|
|
5901
|
+
swap(client, txb, path, inputCoin) {
|
|
5902
|
+
return __async(this, null, function* () {
|
|
5903
|
+
const { direction, from, target } = path;
|
|
5904
|
+
if (!direction) {
|
|
5905
|
+
throw new Error("Haedal not support b2a swap");
|
|
5906
|
+
}
|
|
5907
|
+
const [func, coinAType, coinBType] = ["swap_a2b", from, target];
|
|
5908
|
+
const args = [
|
|
5909
|
+
txb.pure.address(utils$1.SUI_SYSTEM_ADDRESS),
|
|
5910
|
+
txb.object(this.stake),
|
|
5911
|
+
inputCoin,
|
|
5912
|
+
txb.pure.address("0x0")
|
|
5913
|
+
];
|
|
5914
|
+
const res = txb.moveCall({
|
|
5915
|
+
target: `${client.publishedAt()}::haedal::${func}`,
|
|
5916
|
+
typeArguments: [coinAType, coinBType],
|
|
5917
|
+
arguments: args
|
|
5918
|
+
});
|
|
5919
|
+
return res;
|
|
5920
|
+
});
|
|
5921
|
+
}
|
|
5922
|
+
};
|
|
5923
|
+
var Afsui = class {
|
|
5924
|
+
constructor(env) {
|
|
5925
|
+
if (env !== 0 /* Mainnet */) {
|
|
5926
|
+
throw new Error("Afsui only supported on mainnet");
|
|
5927
|
+
}
|
|
5928
|
+
this.stakedSuiVault = "0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d";
|
|
5929
|
+
this.safe = "0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610";
|
|
5930
|
+
this.referVault = "0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef";
|
|
5931
|
+
this.validator = "0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2";
|
|
5932
|
+
}
|
|
5933
|
+
swap(client, txb, path, inputCoin) {
|
|
5934
|
+
return __async(this, null, function* () {
|
|
5935
|
+
const { direction, from, target } = path;
|
|
5936
|
+
if (!direction) {
|
|
5937
|
+
throw new Error("Afsui not support b2a swap");
|
|
5938
|
+
}
|
|
5939
|
+
const [func, coinAType, coinBType] = ["swap_a2b", from, target];
|
|
5940
|
+
const args = [
|
|
5941
|
+
txb.object(this.stakedSuiVault),
|
|
5942
|
+
txb.object(this.safe),
|
|
5943
|
+
txb.pure.address(utils$1.SUI_SYSTEM_ADDRESS),
|
|
5944
|
+
txb.object(this.referVault),
|
|
5945
|
+
inputCoin,
|
|
5946
|
+
txb.object(this.validator)
|
|
5947
|
+
];
|
|
5948
|
+
const res = txb.moveCall({
|
|
5949
|
+
target: `${client.publishedAt()}::afsui::${func}`,
|
|
5950
|
+
typeArguments: [coinAType, coinBType],
|
|
5951
|
+
arguments: args
|
|
5952
|
+
});
|
|
5953
|
+
return res;
|
|
5954
|
+
});
|
|
5955
|
+
}
|
|
5956
|
+
};
|
|
5957
|
+
var Volo = class {
|
|
5958
|
+
constructor(env) {
|
|
5959
|
+
if (env !== 0 /* Mainnet */) {
|
|
5960
|
+
throw new Error("Volo only supported on mainnet");
|
|
5961
|
+
}
|
|
5962
|
+
this.nativePool = "0x7fa2faa111b8c65bea48a23049bfd81ca8f971a262d981dcd9a17c3825cb5baf";
|
|
5963
|
+
this.metadata = "0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60";
|
|
5964
|
+
}
|
|
5965
|
+
swap(client, txb, path, inputCoin) {
|
|
5966
|
+
return __async(this, null, function* () {
|
|
5967
|
+
const { direction, from, target } = path;
|
|
5968
|
+
if (!direction) {
|
|
5969
|
+
throw new Error("Volo not support b2a swap");
|
|
5970
|
+
}
|
|
5971
|
+
const [func, coinAType, coinBType] = ["swap_a2b", from, target];
|
|
5972
|
+
const args = [
|
|
5973
|
+
txb.object(this.nativePool),
|
|
5974
|
+
txb.object(this.metadata),
|
|
5975
|
+
txb.pure.address(utils$1.SUI_SYSTEM_ADDRESS),
|
|
5976
|
+
inputCoin
|
|
5977
|
+
];
|
|
5978
|
+
const res = txb.moveCall({
|
|
5979
|
+
target: `${client.publishedAt()}::volo::${func}`,
|
|
5980
|
+
typeArguments: [coinAType, coinBType],
|
|
5981
|
+
arguments: args
|
|
5982
|
+
});
|
|
5983
|
+
return res;
|
|
5984
|
+
});
|
|
5985
|
+
}
|
|
5986
|
+
};
|
|
5987
|
+
|
|
5865
5988
|
// src/client.ts
|
|
5866
5989
|
var CETUS = "CETUS";
|
|
5867
5990
|
var DEEPBOOKV2 = "DEEPBOOK";
|
|
@@ -5870,7 +5993,10 @@ var FLOWXV2 = "FLOWX";
|
|
|
5870
5993
|
var KRIYAV3 = "KRIYAV3";
|
|
5871
5994
|
var TURBOS = "TURBOS";
|
|
5872
5995
|
var AFTERMATH = "AFTERMATH";
|
|
5873
|
-
var
|
|
5996
|
+
var HAEDAL = "HAEDAL";
|
|
5997
|
+
var VOLO = "VOLO";
|
|
5998
|
+
var AFSUI = "AFSUI";
|
|
5999
|
+
var AggregatorClient5 = class {
|
|
5874
6000
|
constructor(endpoint, signer, client, env) {
|
|
5875
6001
|
this.endpoint = endpoint;
|
|
5876
6002
|
this.client = client;
|
|
@@ -6146,13 +6272,19 @@ var AggregatorClient4 = class {
|
|
|
6146
6272
|
case KRIYA:
|
|
6147
6273
|
return new KriyaV2(this.env);
|
|
6148
6274
|
case KRIYAV3:
|
|
6149
|
-
return new
|
|
6275
|
+
return new KriyaV3(this.env);
|
|
6150
6276
|
case FLOWXV2:
|
|
6151
6277
|
return new FlowxV2(this.env);
|
|
6152
6278
|
case TURBOS:
|
|
6153
6279
|
return new Turbos(this.env);
|
|
6154
6280
|
case AFTERMATH:
|
|
6155
6281
|
return new Aftermath(this.env);
|
|
6282
|
+
case HAEDAL:
|
|
6283
|
+
return new Haedal(this.env);
|
|
6284
|
+
case AFSUI:
|
|
6285
|
+
return new Afsui(this.env);
|
|
6286
|
+
case VOLO:
|
|
6287
|
+
return new Volo(this.env);
|
|
6156
6288
|
default:
|
|
6157
6289
|
throw new Error(`Unsupported dex ${provider}`);
|
|
6158
6290
|
}
|
|
@@ -6323,9 +6455,10 @@ decimal.js/decimal.mjs:
|
|
|
6323
6455
|
*)
|
|
6324
6456
|
*/
|
|
6325
6457
|
|
|
6458
|
+
exports.AFSUI = AFSUI;
|
|
6326
6459
|
exports.AFTERMATH = AFTERMATH;
|
|
6327
6460
|
exports.AFTERMATH_MODULE = AFTERMATH_MODULE;
|
|
6328
|
-
exports.AggregatorClient =
|
|
6461
|
+
exports.AggregatorClient = AggregatorClient5;
|
|
6329
6462
|
exports.CETUS = CETUS;
|
|
6330
6463
|
exports.CETUS_MODULE = CETUS_MODULE;
|
|
6331
6464
|
exports.CETUS_PUBLISHED_AT = CETUS_PUBLISHED_AT;
|
|
@@ -6348,6 +6481,7 @@ exports.FlashSwapFunc = FlashSwapFunc;
|
|
|
6348
6481
|
exports.FlashSwapWithPartnerA2BFunc = FlashSwapWithPartnerA2BFunc;
|
|
6349
6482
|
exports.FlashSwapWithPartnerB2AFunc = FlashSwapWithPartnerB2AFunc;
|
|
6350
6483
|
exports.FlashSwapWithPartnerFunc = FlashSwapWithPartnerFunc;
|
|
6484
|
+
exports.HAEDAL = HAEDAL;
|
|
6351
6485
|
exports.JOIN_FUNC = JOIN_FUNC;
|
|
6352
6486
|
exports.KRIYA = KRIYA;
|
|
6353
6487
|
exports.KRIYAV3 = KRIYAV3;
|
|
@@ -6389,6 +6523,7 @@ exports.U128 = U128;
|
|
|
6389
6523
|
exports.U64_MAX = U64_MAX;
|
|
6390
6524
|
exports.U64_MAX_BN = U64_MAX_BN;
|
|
6391
6525
|
exports.UTILS_MODULE = UTILS_MODULE;
|
|
6526
|
+
exports.VOLO = VOLO;
|
|
6392
6527
|
exports.ZERO = ZERO;
|
|
6393
6528
|
exports.composeType = composeType;
|
|
6394
6529
|
exports.createTarget = createTarget;
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { normalizeSuiObjectId, SUI_FRAMEWORK_ADDRESS } from '@mysten/sui/utils';
|
|
2
2
|
import { Transaction } from '@mysten/sui/transactions';
|
|
3
|
+
import { SUI_SYSTEM_ADDRESS } from '@mysten/sui/dist/cjs/utils';
|
|
3
4
|
|
|
4
5
|
var __create = Object.create;
|
|
5
6
|
var __defProp = Object.defineProperty;
|
|
@@ -5812,6 +5813,7 @@ function swapInPools(client, params, sender) {
|
|
|
5812
5813
|
}
|
|
5813
5814
|
}
|
|
5814
5815
|
const event = valueData[tempIndex].parsedJson.data;
|
|
5816
|
+
console.log("event", JSON.stringify(event, null, 2));
|
|
5815
5817
|
const currentSqrtPrice = event.step_results[0].current_sqrt_price;
|
|
5816
5818
|
const [decimalA, decimalB] = yield Promise.all([
|
|
5817
5819
|
client.getCoinMetadata({ coinType: coinA }).then((metadata) => metadata == null ? void 0 : metadata.decimals),
|
|
@@ -5840,9 +5842,9 @@ function swapInPools(client, params, sender) {
|
|
|
5840
5842
|
provider: "CETUS",
|
|
5841
5843
|
from: fromCoin,
|
|
5842
5844
|
target: targetCoin,
|
|
5843
|
-
feeRate:
|
|
5844
|
-
amountIn:
|
|
5845
|
-
amountOut:
|
|
5845
|
+
feeRate: event.fee_rate,
|
|
5846
|
+
amountIn: event.amount_in,
|
|
5847
|
+
amountOut: event.amount_out
|
|
5846
5848
|
}
|
|
5847
5849
|
],
|
|
5848
5850
|
amountIn: new import_bn4.BN((_d = event.amount_in) != null ? _d : 0),
|
|
@@ -5860,6 +5862,127 @@ function swapInPools(client, params, sender) {
|
|
|
5860
5862
|
});
|
|
5861
5863
|
}
|
|
5862
5864
|
|
|
5865
|
+
// src/transaction/kriya_v3.ts
|
|
5866
|
+
var KriyaV3 = class {
|
|
5867
|
+
constructor(env) {
|
|
5868
|
+
if (env !== 0 /* Mainnet */) {
|
|
5869
|
+
throw new Error("Kriya clmm only supported on mainnet");
|
|
5870
|
+
}
|
|
5871
|
+
this.version = "0xf5145a7ac345ca8736cf8c76047d00d6d378f30e81be6f6eb557184d9de93c78";
|
|
5872
|
+
}
|
|
5873
|
+
swap(client, txb, path, inputCoin) {
|
|
5874
|
+
return __async(this, null, function* () {
|
|
5875
|
+
const { direction, from, target } = path;
|
|
5876
|
+
const [func, coinAType, coinBType] = direction ? ["swap_a2b", from, target] : ["swap_b2a", target, from];
|
|
5877
|
+
const args = [
|
|
5878
|
+
txb.object(path.id),
|
|
5879
|
+
inputCoin,
|
|
5880
|
+
txb.object(this.version),
|
|
5881
|
+
txb.object(CLOCK_ADDRESS)
|
|
5882
|
+
];
|
|
5883
|
+
const res = txb.moveCall({
|
|
5884
|
+
target: `${client.publishedAt()}::kriya_clmm::${func}`,
|
|
5885
|
+
typeArguments: [coinAType, coinBType],
|
|
5886
|
+
arguments: args
|
|
5887
|
+
});
|
|
5888
|
+
return res;
|
|
5889
|
+
});
|
|
5890
|
+
}
|
|
5891
|
+
};
|
|
5892
|
+
var Haedal = class {
|
|
5893
|
+
constructor(env) {
|
|
5894
|
+
if (env !== 0 /* Mainnet */) {
|
|
5895
|
+
throw new Error("Haedal only supported on mainnet");
|
|
5896
|
+
}
|
|
5897
|
+
this.stake = "0x47b224762220393057ebf4f70501b6e657c3e56684737568439a04f80849b2ca";
|
|
5898
|
+
}
|
|
5899
|
+
swap(client, txb, path, inputCoin) {
|
|
5900
|
+
return __async(this, null, function* () {
|
|
5901
|
+
const { direction, from, target } = path;
|
|
5902
|
+
if (!direction) {
|
|
5903
|
+
throw new Error("Haedal not support b2a swap");
|
|
5904
|
+
}
|
|
5905
|
+
const [func, coinAType, coinBType] = ["swap_a2b", from, target];
|
|
5906
|
+
const args = [
|
|
5907
|
+
txb.pure.address(SUI_SYSTEM_ADDRESS),
|
|
5908
|
+
txb.object(this.stake),
|
|
5909
|
+
inputCoin,
|
|
5910
|
+
txb.pure.address("0x0")
|
|
5911
|
+
];
|
|
5912
|
+
const res = txb.moveCall({
|
|
5913
|
+
target: `${client.publishedAt()}::haedal::${func}`,
|
|
5914
|
+
typeArguments: [coinAType, coinBType],
|
|
5915
|
+
arguments: args
|
|
5916
|
+
});
|
|
5917
|
+
return res;
|
|
5918
|
+
});
|
|
5919
|
+
}
|
|
5920
|
+
};
|
|
5921
|
+
var Afsui = class {
|
|
5922
|
+
constructor(env) {
|
|
5923
|
+
if (env !== 0 /* Mainnet */) {
|
|
5924
|
+
throw new Error("Afsui only supported on mainnet");
|
|
5925
|
+
}
|
|
5926
|
+
this.stakedSuiVault = "0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d";
|
|
5927
|
+
this.safe = "0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610";
|
|
5928
|
+
this.referVault = "0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef";
|
|
5929
|
+
this.validator = "0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2";
|
|
5930
|
+
}
|
|
5931
|
+
swap(client, txb, path, inputCoin) {
|
|
5932
|
+
return __async(this, null, function* () {
|
|
5933
|
+
const { direction, from, target } = path;
|
|
5934
|
+
if (!direction) {
|
|
5935
|
+
throw new Error("Afsui not support b2a swap");
|
|
5936
|
+
}
|
|
5937
|
+
const [func, coinAType, coinBType] = ["swap_a2b", from, target];
|
|
5938
|
+
const args = [
|
|
5939
|
+
txb.object(this.stakedSuiVault),
|
|
5940
|
+
txb.object(this.safe),
|
|
5941
|
+
txb.pure.address(SUI_SYSTEM_ADDRESS),
|
|
5942
|
+
txb.object(this.referVault),
|
|
5943
|
+
inputCoin,
|
|
5944
|
+
txb.object(this.validator)
|
|
5945
|
+
];
|
|
5946
|
+
const res = txb.moveCall({
|
|
5947
|
+
target: `${client.publishedAt()}::afsui::${func}`,
|
|
5948
|
+
typeArguments: [coinAType, coinBType],
|
|
5949
|
+
arguments: args
|
|
5950
|
+
});
|
|
5951
|
+
return res;
|
|
5952
|
+
});
|
|
5953
|
+
}
|
|
5954
|
+
};
|
|
5955
|
+
var Volo = class {
|
|
5956
|
+
constructor(env) {
|
|
5957
|
+
if (env !== 0 /* Mainnet */) {
|
|
5958
|
+
throw new Error("Volo only supported on mainnet");
|
|
5959
|
+
}
|
|
5960
|
+
this.nativePool = "0x7fa2faa111b8c65bea48a23049bfd81ca8f971a262d981dcd9a17c3825cb5baf";
|
|
5961
|
+
this.metadata = "0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60";
|
|
5962
|
+
}
|
|
5963
|
+
swap(client, txb, path, inputCoin) {
|
|
5964
|
+
return __async(this, null, function* () {
|
|
5965
|
+
const { direction, from, target } = path;
|
|
5966
|
+
if (!direction) {
|
|
5967
|
+
throw new Error("Volo not support b2a swap");
|
|
5968
|
+
}
|
|
5969
|
+
const [func, coinAType, coinBType] = ["swap_a2b", from, target];
|
|
5970
|
+
const args = [
|
|
5971
|
+
txb.object(this.nativePool),
|
|
5972
|
+
txb.object(this.metadata),
|
|
5973
|
+
txb.pure.address(SUI_SYSTEM_ADDRESS),
|
|
5974
|
+
inputCoin
|
|
5975
|
+
];
|
|
5976
|
+
const res = txb.moveCall({
|
|
5977
|
+
target: `${client.publishedAt()}::volo::${func}`,
|
|
5978
|
+
typeArguments: [coinAType, coinBType],
|
|
5979
|
+
arguments: args
|
|
5980
|
+
});
|
|
5981
|
+
return res;
|
|
5982
|
+
});
|
|
5983
|
+
}
|
|
5984
|
+
};
|
|
5985
|
+
|
|
5863
5986
|
// src/client.ts
|
|
5864
5987
|
var CETUS = "CETUS";
|
|
5865
5988
|
var DEEPBOOKV2 = "DEEPBOOK";
|
|
@@ -5868,7 +5991,10 @@ var FLOWXV2 = "FLOWX";
|
|
|
5868
5991
|
var KRIYAV3 = "KRIYAV3";
|
|
5869
5992
|
var TURBOS = "TURBOS";
|
|
5870
5993
|
var AFTERMATH = "AFTERMATH";
|
|
5871
|
-
var
|
|
5994
|
+
var HAEDAL = "HAEDAL";
|
|
5995
|
+
var VOLO = "VOLO";
|
|
5996
|
+
var AFSUI = "AFSUI";
|
|
5997
|
+
var AggregatorClient5 = class {
|
|
5872
5998
|
constructor(endpoint, signer, client, env) {
|
|
5873
5999
|
this.endpoint = endpoint;
|
|
5874
6000
|
this.client = client;
|
|
@@ -6144,13 +6270,19 @@ var AggregatorClient4 = class {
|
|
|
6144
6270
|
case KRIYA:
|
|
6145
6271
|
return new KriyaV2(this.env);
|
|
6146
6272
|
case KRIYAV3:
|
|
6147
|
-
return new
|
|
6273
|
+
return new KriyaV3(this.env);
|
|
6148
6274
|
case FLOWXV2:
|
|
6149
6275
|
return new FlowxV2(this.env);
|
|
6150
6276
|
case TURBOS:
|
|
6151
6277
|
return new Turbos(this.env);
|
|
6152
6278
|
case AFTERMATH:
|
|
6153
6279
|
return new Aftermath(this.env);
|
|
6280
|
+
case HAEDAL:
|
|
6281
|
+
return new Haedal(this.env);
|
|
6282
|
+
case AFSUI:
|
|
6283
|
+
return new Afsui(this.env);
|
|
6284
|
+
case VOLO:
|
|
6285
|
+
return new Volo(this.env);
|
|
6154
6286
|
default:
|
|
6155
6287
|
throw new Error(`Unsupported dex ${provider}`);
|
|
6156
6288
|
}
|
|
@@ -6321,4 +6453,4 @@ decimal.js/decimal.mjs:
|
|
|
6321
6453
|
*)
|
|
6322
6454
|
*/
|
|
6323
6455
|
|
|
6324
|
-
export { AFTERMATH, AFTERMATH_MODULE,
|
|
6456
|
+
export { AFSUI, AFTERMATH, AFTERMATH_MODULE, AggregatorClient5 as AggregatorClient, CETUS, CETUS_MODULE, CETUS_PUBLISHED_AT, CHECK_COINS_THRESHOLD_FUNC, CLOCK_ADDRESS, CoinInfoAddress, CoinStoreAddress, DEEPBOOKV2, DEEPBOOK_CLOB_V2_MODULE, DEEPBOOK_CUSTODIAN_V2_MODULE, DEEPBOOK_MODULE, DEEPBOOK_PACKAGE_ID2 as DEEPBOOK_PACKAGE_ID, DEEPBOOK_PUBLISHED_AT, Env, FLOWXV2, FLOWX_AMM_MODULE, FlashSwapA2BFunc, FlashSwapB2AFunc, FlashSwapFunc, FlashSwapWithPartnerA2BFunc, FlashSwapWithPartnerB2AFunc, FlashSwapWithPartnerFunc, HAEDAL, JOIN_FUNC, KRIYA, KRIYAV3, KRIYA_MODULE, MAINNET_AFTERMATH_INSURANCE_FUND_ID, MAINNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID, MAINNET_AFTERMATH_REFERRAL_VAULT_ID, MAINNET_AFTERMATH_REGISTRY_ID, MAINNET_AFTERMATH_TREASURY_ID, MAINNET_CETUS_GLOBAL_CONFIG_ID, MAINNET_FLOWX_AMM_CONTAINER_ID, ONE, PAY_MODULE, POOL_MODULT, REPAY_FLASH_SWAP_A2B_FUNC, REPAY_FLASH_SWAP_B2A_FUNC, REPAY_FLASH_SWAP_WITH_PARTNER_A2B_FUNC, REPAY_FLASH_SWAP_WITH_PARTNER_B2A_FUNC, RepayFalshSwapFunc, RepayFlashSwapWithPartnerFunc, SWAP_A2B_FUNC, SWAP_B2A_FUNC, SuiZeroCoinFn, TEN_POW_NINE, TESTNET_AFTERMATH_INSURANCE_FUND_ID, TESTNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID, TESTNET_AFTERMATH_REFERRAL_VAULT_ID, TESTNET_AFTERMATH_REGISTRY_ID, TESTNET_AFTERMATH_TREASURY_ID, TESTNET_CETUS_GLOBAL_CONFIG_ID, TESTNET_FLOWX_AMM_CONTAINER_ID, TRANSFER_ACCOUNT_CAP, TRANSFER_OR_DESTORY_COIN_FUNC, TURBOS, TURBOS_MODULE, TURBOS_VERSIONED, TWO, U128, U64_MAX, U64_MAX_BN, UTILS_MODULE, VOLO, ZERO, composeType, createTarget, extractAddressFromType, extractStructTagFromType, fixSuiObjectId, getRouterResult, isSortedSymbols, normalizeCoinType, parseRouterResponse, patchFixSuiObjectId };
|
package/dist/src/client.d.ts
CHANGED
|
@@ -11,6 +11,9 @@ export declare const FLOWXV2 = "FLOWX";
|
|
|
11
11
|
export declare const KRIYAV3 = "KRIYAV3";
|
|
12
12
|
export declare const TURBOS = "TURBOS";
|
|
13
13
|
export declare const AFTERMATH = "AFTERMATH";
|
|
14
|
+
export declare const HAEDAL = "HAEDAL";
|
|
15
|
+
export declare const VOLO = "VOLO";
|
|
16
|
+
export declare const AFSUI = "AFSUI";
|
|
14
17
|
export type BuildRouterSwapParams = {
|
|
15
18
|
routers: Router[];
|
|
16
19
|
byAmountIn: boolean;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
|
|
2
|
+
import { AggregatorClient, Dex, Env, Path } from "..";
|
|
3
|
+
export declare class Afsui implements Dex {
|
|
4
|
+
private stakedSuiVault;
|
|
5
|
+
private safe;
|
|
6
|
+
private referVault;
|
|
7
|
+
private validator;
|
|
8
|
+
constructor(env: Env);
|
|
9
|
+
swap(client: AggregatorClient, txb: Transaction, path: Path, inputCoin: TransactionObjectArgument): Promise<TransactionObjectArgument>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
|
|
2
|
+
import { AggregatorClient, Dex, Env, Path } from "..";
|
|
3
|
+
export declare class Haedal implements Dex {
|
|
4
|
+
private stake;
|
|
5
|
+
constructor(env: Env);
|
|
6
|
+
swap(client: AggregatorClient, txb: Transaction, path: Path, inputCoin: TransactionObjectArgument): Promise<TransactionObjectArgument>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
|
|
2
|
+
import { AggregatorClient, Dex, Env, Path } from "..";
|
|
3
|
+
export declare class Volo implements Dex {
|
|
4
|
+
private nativePool;
|
|
5
|
+
private metadata;
|
|
6
|
+
constructor(env: Env);
|
|
7
|
+
swap(client: AggregatorClient, txb: Transaction, path: Path, inputCoin: TransactionObjectArgument): Promise<TransactionObjectArgument>;
|
|
8
|
+
}
|
package/package.json
CHANGED
package/src/client.ts
CHANGED
|
@@ -2,7 +2,6 @@ import Decimal from "decimal.js"
|
|
|
2
2
|
import { SuiClient } from "@mysten/sui/client"
|
|
3
3
|
import {
|
|
4
4
|
Transaction,
|
|
5
|
-
TransactionArgument,
|
|
6
5
|
TransactionObjectArgument,
|
|
7
6
|
} from "@mysten/sui/transactions"
|
|
8
7
|
import { Signer } from "@mysten/sui/dist/cjs/cryptography"
|
|
@@ -27,6 +26,10 @@ import { swapInPools } from "./transaction/swap"
|
|
|
27
26
|
import { CalculateAmountLimit } from "./math"
|
|
28
27
|
import { buildInputCoin } from "./utils/coin"
|
|
29
28
|
import { CoinAsset } from "./types/sui"
|
|
29
|
+
import { KriyaV3 } from "./transaction/kriya_v3"
|
|
30
|
+
import { Haedal } from "./transaction/haedal"
|
|
31
|
+
import { Afsui } from "./transaction/afsui"
|
|
32
|
+
import { Volo } from "./transaction/volo"
|
|
30
33
|
|
|
31
34
|
export const CETUS = "CETUS"
|
|
32
35
|
export const DEEPBOOKV2 = "DEEPBOOK"
|
|
@@ -35,6 +38,9 @@ export const FLOWXV2 = "FLOWX"
|
|
|
35
38
|
export const KRIYAV3 = "KRIYAV3"
|
|
36
39
|
export const TURBOS = "TURBOS"
|
|
37
40
|
export const AFTERMATH = "AFTERMATH"
|
|
41
|
+
export const HAEDAL = "HAEDAL"
|
|
42
|
+
export const VOLO = "VOLO"
|
|
43
|
+
export const AFSUI = "AFSUI"
|
|
38
44
|
|
|
39
45
|
export type BuildRouterSwapParams = {
|
|
40
46
|
routers: Router[]
|
|
@@ -379,13 +385,19 @@ export class AggregatorClient {
|
|
|
379
385
|
case KRIYA:
|
|
380
386
|
return new KriyaV2(this.env)
|
|
381
387
|
case KRIYAV3:
|
|
382
|
-
return new
|
|
388
|
+
return new KriyaV3(this.env)
|
|
383
389
|
case FLOWXV2:
|
|
384
390
|
return new FlowxV2(this.env)
|
|
385
391
|
case TURBOS:
|
|
386
392
|
return new Turbos(this.env)
|
|
387
393
|
case AFTERMATH:
|
|
388
394
|
return new Aftermath(this.env)
|
|
395
|
+
case HAEDAL:
|
|
396
|
+
return new Haedal(this.env)
|
|
397
|
+
case AFSUI:
|
|
398
|
+
return new Afsui(this.env)
|
|
399
|
+
case VOLO:
|
|
400
|
+
return new Volo(this.env)
|
|
389
401
|
default:
|
|
390
402
|
throw new Error(`Unsupported dex ${provider}`)
|
|
391
403
|
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Transaction,
|
|
3
|
+
TransactionObjectArgument,
|
|
4
|
+
} from "@mysten/sui/transactions"
|
|
5
|
+
import { AggregatorClient, Dex, Env, Path } from ".."
|
|
6
|
+
import { SUI_SYSTEM_ADDRESS } from "@mysten/sui/dist/cjs/utils"
|
|
7
|
+
|
|
8
|
+
export class Afsui implements Dex {
|
|
9
|
+
private stakedSuiVault: string
|
|
10
|
+
private safe: string
|
|
11
|
+
private referVault: string
|
|
12
|
+
private validator: string
|
|
13
|
+
|
|
14
|
+
constructor(env: Env) {
|
|
15
|
+
if (env !== Env.Mainnet) {
|
|
16
|
+
throw new Error("Afsui only supported on mainnet")
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
this.stakedSuiVault =
|
|
20
|
+
"0x2f8f6d5da7f13ea37daa397724280483ed062769813b6f31e9788e59cc88994d"
|
|
21
|
+
this.safe =
|
|
22
|
+
"0xeb685899830dd5837b47007809c76d91a098d52aabbf61e8ac467c59e5cc4610"
|
|
23
|
+
this.referVault =
|
|
24
|
+
"0x4ce9a19b594599536c53edb25d22532f82f18038dc8ef618afd00fbbfb9845ef"
|
|
25
|
+
this.validator =
|
|
26
|
+
"0xd30018ec3f5ff1a3c75656abf927a87d7f0529e6dc89c7ddd1bd27ecb05e3db2"
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async swap(
|
|
30
|
+
client: AggregatorClient,
|
|
31
|
+
txb: Transaction,
|
|
32
|
+
path: Path,
|
|
33
|
+
inputCoin: TransactionObjectArgument
|
|
34
|
+
): Promise<TransactionObjectArgument> {
|
|
35
|
+
const { direction, from, target } = path
|
|
36
|
+
|
|
37
|
+
if (!direction) {
|
|
38
|
+
throw new Error("Afsui not support b2a swap")
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const [func, coinAType, coinBType] = ["swap_a2b", from, target]
|
|
42
|
+
|
|
43
|
+
const args = [
|
|
44
|
+
txb.object(this.stakedSuiVault),
|
|
45
|
+
txb.object(this.safe),
|
|
46
|
+
txb.pure.address(SUI_SYSTEM_ADDRESS),
|
|
47
|
+
txb.object(this.referVault),
|
|
48
|
+
inputCoin,
|
|
49
|
+
txb.object(this.validator),
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
const res = txb.moveCall({
|
|
53
|
+
target: `${client.publishedAt()}::afsui::${func}`,
|
|
54
|
+
typeArguments: [coinAType, coinBType],
|
|
55
|
+
arguments: args,
|
|
56
|
+
}) as TransactionObjectArgument
|
|
57
|
+
|
|
58
|
+
return res
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Transaction,
|
|
3
|
+
TransactionObjectArgument,
|
|
4
|
+
} from "@mysten/sui/transactions"
|
|
5
|
+
import { AggregatorClient, Dex, Env, Path } from ".."
|
|
6
|
+
import { SUI_SYSTEM_ADDRESS } from "@mysten/sui/dist/cjs/utils"
|
|
7
|
+
|
|
8
|
+
export class Haedal implements Dex {
|
|
9
|
+
private stake: string
|
|
10
|
+
|
|
11
|
+
constructor(env: Env) {
|
|
12
|
+
if (env !== Env.Mainnet) {
|
|
13
|
+
throw new Error("Haedal only supported on mainnet")
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
this.stake =
|
|
17
|
+
"0x47b224762220393057ebf4f70501b6e657c3e56684737568439a04f80849b2ca"
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
async swap(
|
|
21
|
+
client: AggregatorClient,
|
|
22
|
+
txb: Transaction,
|
|
23
|
+
path: Path,
|
|
24
|
+
inputCoin: TransactionObjectArgument
|
|
25
|
+
): Promise<TransactionObjectArgument> {
|
|
26
|
+
const { direction, from, target } = path
|
|
27
|
+
|
|
28
|
+
if (!direction) {
|
|
29
|
+
throw new Error("Haedal not support b2a swap")
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const [func, coinAType, coinBType] = ["swap_a2b", from, target]
|
|
33
|
+
|
|
34
|
+
const args = [
|
|
35
|
+
txb.pure.address(SUI_SYSTEM_ADDRESS),
|
|
36
|
+
txb.object(this.stake),
|
|
37
|
+
inputCoin,
|
|
38
|
+
txb.pure.address("0x0"),
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
const res = txb.moveCall({
|
|
42
|
+
target: `${client.publishedAt()}::haedal::${func}`,
|
|
43
|
+
typeArguments: [coinAType, coinBType],
|
|
44
|
+
arguments: args,
|
|
45
|
+
}) as TransactionObjectArgument
|
|
46
|
+
|
|
47
|
+
return res
|
|
48
|
+
}
|
|
49
|
+
}
|
package/src/transaction/swap.ts
CHANGED
|
@@ -91,6 +91,8 @@ export async function swapInPools(
|
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
const event = valueData[tempIndex].parsedJson.data
|
|
94
|
+
console.log("event", JSON.stringify(event, null, 2))
|
|
95
|
+
|
|
94
96
|
const currentSqrtPrice = event.step_results[0].current_sqrt_price
|
|
95
97
|
|
|
96
98
|
const [decimalA, decimalB] = await Promise.all([
|
|
@@ -126,9 +128,9 @@ export async function swapInPools(
|
|
|
126
128
|
provider: "CETUS",
|
|
127
129
|
from: fromCoin,
|
|
128
130
|
target: targetCoin,
|
|
129
|
-
feeRate:
|
|
130
|
-
amountIn:
|
|
131
|
-
amountOut:
|
|
131
|
+
feeRate: event.fee_rate,
|
|
132
|
+
amountIn: event.amount_in,
|
|
133
|
+
amountOut: event.amount_out,
|
|
132
134
|
},
|
|
133
135
|
],
|
|
134
136
|
amountIn: new BN(event.amount_in ?? 0),
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Transaction,
|
|
3
|
+
TransactionObjectArgument,
|
|
4
|
+
} from "@mysten/sui/transactions"
|
|
5
|
+
import { AggregatorClient, Dex, Env, Path } from ".."
|
|
6
|
+
import { SUI_SYSTEM_ADDRESS } from "@mysten/sui/dist/cjs/utils"
|
|
7
|
+
|
|
8
|
+
export class Volo implements Dex {
|
|
9
|
+
private nativePool: string
|
|
10
|
+
private metadata: string
|
|
11
|
+
|
|
12
|
+
constructor(env: Env) {
|
|
13
|
+
if (env !== Env.Mainnet) {
|
|
14
|
+
throw new Error("Volo only supported on mainnet")
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
this.nativePool =
|
|
18
|
+
"0x7fa2faa111b8c65bea48a23049bfd81ca8f971a262d981dcd9a17c3825cb5baf"
|
|
19
|
+
this.metadata =
|
|
20
|
+
"0x680cd26af32b2bde8d3361e804c53ec1d1cfe24c7f039eb7f549e8dfde389a60"
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async swap(
|
|
24
|
+
client: AggregatorClient,
|
|
25
|
+
txb: Transaction,
|
|
26
|
+
path: Path,
|
|
27
|
+
inputCoin: TransactionObjectArgument
|
|
28
|
+
): Promise<TransactionObjectArgument> {
|
|
29
|
+
const { direction, from, target } = path
|
|
30
|
+
|
|
31
|
+
if (!direction) {
|
|
32
|
+
throw new Error("Volo not support b2a swap")
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const [func, coinAType, coinBType] = ["swap_a2b", from, target]
|
|
36
|
+
|
|
37
|
+
const args = [
|
|
38
|
+
txb.object(this.nativePool),
|
|
39
|
+
txb.object(this.metadata),
|
|
40
|
+
txb.pure.address(SUI_SYSTEM_ADDRESS),
|
|
41
|
+
inputCoin,
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
const res = txb.moveCall({
|
|
45
|
+
target: `${client.publishedAt()}::volo::${func}`,
|
|
46
|
+
typeArguments: [coinAType, coinBType],
|
|
47
|
+
arguments: args,
|
|
48
|
+
}) as TransactionObjectArgument
|
|
49
|
+
|
|
50
|
+
return res
|
|
51
|
+
}
|
|
52
|
+
}
|
package/tests/router.test.ts
CHANGED
|
@@ -27,18 +27,11 @@ describe("router module", () => {
|
|
|
27
27
|
const aggregatorURL = process.env.CETUS_AGGREGATOR!
|
|
28
28
|
const secret = process.env.SUI_WALLET_SECRET!
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
const u8Array = new Uint8Array(byte)
|
|
36
|
-
const secretKey = fromB64(secret)
|
|
37
|
-
|
|
38
|
-
// keypair = Ed25519Keypair.fromSecretKey(fromB64(secret).slice(1, 33))
|
|
39
|
-
keypair = secret
|
|
40
|
-
? Ed25519Keypair.fromSecretKey(u8Array.slice(1, 33))
|
|
41
|
-
: buildTestAccount()
|
|
30
|
+
if (secret) {
|
|
31
|
+
keypair = Ed25519Keypair.fromSecretKey(fromB64(secret).slice(1, 33))
|
|
32
|
+
} else {
|
|
33
|
+
keypair = buildTestAccount()
|
|
34
|
+
}
|
|
42
35
|
|
|
43
36
|
const wallet = keypair.getPublicKey().toSuiAddress()
|
|
44
37
|
|
|
@@ -85,12 +78,13 @@ describe("router module", () => {
|
|
|
85
78
|
|
|
86
79
|
test("Downgrade swap in route", async () => {
|
|
87
80
|
const amount = 1000000
|
|
81
|
+
const byAmountIn = false
|
|
88
82
|
|
|
89
|
-
const res = await client.swapInPools({
|
|
83
|
+
const res: any = await client.swapInPools({
|
|
90
84
|
from: M_USDC,
|
|
91
85
|
target: M_SUI,
|
|
92
86
|
amount: new BN(amount),
|
|
93
|
-
byAmountIn
|
|
87
|
+
byAmountIn,
|
|
94
88
|
pools: [
|
|
95
89
|
"0xcf994611fd4c48e277ce3ffd4d4364c914af2c3cbb05f7bf6facd371de688630",
|
|
96
90
|
],
|
|
@@ -98,8 +92,20 @@ describe("router module", () => {
|
|
|
98
92
|
|
|
99
93
|
if (res != null) {
|
|
100
94
|
console.log(JSON.stringify(res, null, 2))
|
|
95
|
+
const txb = new Transaction()
|
|
96
|
+
await client.fastRouterSwap({
|
|
97
|
+
routers: res.routeData.routes,
|
|
98
|
+
byAmountIn,
|
|
99
|
+
txb,
|
|
100
|
+
slippage: 0.01,
|
|
101
|
+
isMergeTragetCoin: false,
|
|
102
|
+
refreshAllCoins: true,
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
let result = await client.devInspectTransactionBlock(txb)
|
|
106
|
+
console.log("🚀 ~ file: router.test.ts:114 ~ test ~ result:", result)
|
|
101
107
|
}
|
|
102
|
-
})
|
|
108
|
+
}, 10000)
|
|
103
109
|
|
|
104
110
|
test("Find router", async () => {
|
|
105
111
|
const amount = "4239267610000000000"
|
|
@@ -134,12 +140,12 @@ describe("router module", () => {
|
|
|
134
140
|
byAmountIn,
|
|
135
141
|
depth: 3,
|
|
136
142
|
providers: [
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
+
"CETUS",
|
|
144
|
+
"DEEPBOOK",
|
|
145
|
+
"AFTERMATH",
|
|
146
|
+
"FLOWX",
|
|
147
|
+
"KRIYA",
|
|
148
|
+
"KRIYAV3",
|
|
143
149
|
"TURBOS",
|
|
144
150
|
],
|
|
145
151
|
})
|