@cetusprotocol/aggregator-sdk 0.0.8 → 0.1.1

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.
Files changed (57) hide show
  1. package/dist/index.d.mts +98 -161
  2. package/dist/index.d.ts +98 -161
  3. package/dist/index.js +1128 -1550
  4. package/dist/index.mjs +1116 -1488
  5. package/dist/src/api.d.ts +53 -0
  6. package/dist/src/client.d.ts +38 -65
  7. package/dist/src/const.d.ts +0 -68
  8. package/dist/src/index.d.ts +9 -5
  9. package/dist/src/transaction/afsui.d.ts +10 -0
  10. package/dist/src/transaction/aftermath.d.ts +13 -24
  11. package/dist/src/transaction/cetus.d.ts +9 -33
  12. package/dist/src/transaction/deepbook_v2.d.ts +14 -0
  13. package/dist/src/transaction/flowx_v2.d.ts +7 -0
  14. package/dist/src/transaction/haedal.d.ts +6 -0
  15. package/dist/src/transaction/index.d.ts +6 -1
  16. package/dist/src/transaction/kriya_v2.d.ts +6 -0
  17. package/dist/src/transaction/kriya_v3.d.ts +7 -0
  18. package/dist/src/transaction/swap.d.ts +1 -2
  19. package/dist/src/transaction/turbos.d.ts +7 -22
  20. package/dist/src/transaction/volo.d.ts +8 -0
  21. package/dist/src/utils/coin.d.ts +9 -0
  22. package/dist/{src → tests}/test_data.test.d.ts +1 -0
  23. package/package.json +2 -2
  24. package/src/api.ts +144 -0
  25. package/src/client.ts +295 -239
  26. package/src/const.ts +0 -113
  27. package/src/index.ts +10 -5
  28. package/src/transaction/afsui.ts +60 -0
  29. package/src/transaction/aftermath.ts +71 -124
  30. package/src/transaction/cetus.ts +87 -258
  31. package/src/transaction/deepbook_v2.ts +122 -0
  32. package/src/transaction/flowx_v2.ts +42 -0
  33. package/src/transaction/haedal.ts +41 -0
  34. package/src/transaction/index.ts +17 -1
  35. package/src/transaction/kriya_v2.ts +38 -0
  36. package/src/transaction/kriya_v3.ts +46 -0
  37. package/src/transaction/swap.ts +17 -24
  38. package/src/transaction/turbos.ts +40 -99
  39. package/src/transaction/volo.ts +52 -0
  40. package/src/utils/coin.ts +91 -6
  41. package/src/utils/transaction.ts +1 -1
  42. package/tests/router.test.ts +123 -73
  43. package/{src → tests}/test_data.test.ts +2 -0
  44. package/dist/src/config.d.ts +0 -26
  45. package/dist/src/transaction/common.d.ts +0 -12
  46. package/dist/src/transaction/deepbook.d.ts +0 -21
  47. package/dist/src/transaction/flowx.d.ts +0 -20
  48. package/dist/src/transaction/kriya.d.ts +0 -21
  49. package/dist/src/transaction/router.d.ts +0 -6
  50. package/dist/src/utils/account_cap.d.ts +0 -7
  51. package/src/config.ts +0 -65
  52. package/src/transaction/common.ts +0 -169
  53. package/src/transaction/deepbook.ts +0 -126
  54. package/src/transaction/flowx.ts +0 -97
  55. package/src/transaction/kriya.ts +0 -77
  56. package/src/transaction/router.ts +0 -339
  57. package/src/utils/account_cap.ts +0 -62
@@ -0,0 +1,53 @@
1
+ import BN from "bn.js";
2
+ import Decimal from "decimal.js";
3
+ export interface FindRouterParams {
4
+ from: string;
5
+ target: string;
6
+ amount: BN;
7
+ byAmountIn: boolean;
8
+ depth?: number;
9
+ splitAlgorithm?: string;
10
+ splitFactor?: number;
11
+ splitCount?: number;
12
+ providers?: string[];
13
+ }
14
+ export type ExtendedDetails = {
15
+ aftermathPoolFlatness?: number;
16
+ aftermathLpSupplyType?: string;
17
+ turbosFeeType?: string;
18
+ };
19
+ export type Path = {
20
+ id: string;
21
+ direction: boolean;
22
+ provider: string;
23
+ from: string;
24
+ target: string;
25
+ feeRate: number;
26
+ amountIn: number;
27
+ amountOut: number;
28
+ extendedDetails?: ExtendedDetails;
29
+ version?: string;
30
+ };
31
+ export type Router = {
32
+ path: Path[];
33
+ amountIn: BN;
34
+ amountOut: BN;
35
+ initialPrice: Decimal;
36
+ };
37
+ export type RouterError = {
38
+ code: number;
39
+ msg: string;
40
+ };
41
+ export type RouterData = {
42
+ amountIn: BN;
43
+ amountOut: BN;
44
+ routes: Router[];
45
+ insufficientLiquidity: boolean;
46
+ error?: RouterError;
47
+ };
48
+ export type AggregatorResponse = {
49
+ code: number;
50
+ msg: string;
51
+ data: RouterData;
52
+ };
53
+ export declare function getRouterResult(endpoint: string, params: FindRouterParams): Promise<RouterData | null>;
@@ -1,71 +1,36 @@
1
- import type { AggregatorConfig } from "./config";
2
- import Decimal from "decimal.js";
3
- import { CoinAsset } from "./types/sui";
4
- import { Transaction } from "@mysten/sui/transactions";
5
- import { Signer } from "@mysten/sui/dist/cjs/cryptography";
1
+ import { SuiClient } from "@mysten/sui/client";
2
+ import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
3
+ import { Signer } from "@mysten/sui/cryptography";
6
4
  import BN from "bn.js";
7
- export type ExtendedDetails = {
8
- aftermathPoolFlatness?: number;
9
- aftermathLpSupplyType?: string;
10
- turbosFeeType?: string;
11
- };
12
- export type Path = {
13
- id: string;
14
- a2b: boolean;
15
- provider: string;
16
- from: string;
17
- target: string;
18
- feeRate: number;
19
- amountIn: number;
20
- amountOut: number;
21
- extendedDetails?: ExtendedDetails;
22
- version?: string;
23
- };
24
- export type Router = {
25
- path: Path[];
26
- amountIn: BN;
27
- amountOut: BN;
28
- initialPrice: Decimal;
29
- };
30
- export type RouterError = {
31
- code: number;
32
- msg: string;
33
- };
34
- export type RouterData = {
35
- amountIn: BN;
36
- amountOut: BN;
37
- routes: Router[];
38
- insufficientLiquidity: boolean;
39
- error?: RouterError;
40
- };
41
- export type AggregatorResponse = {
42
- code: number;
43
- msg: string;
44
- data: RouterData;
45
- };
5
+ import { Dex, Env, FindRouterParams, Router, RouterData } from ".";
6
+ import { CoinAsset } from "./types/sui";
7
+ export declare const CETUS = "CETUS";
8
+ export declare const DEEPBOOKV2 = "DEEPBOOK";
9
+ export declare const KRIYA = "KRIYA";
10
+ export declare const FLOWXV2 = "FLOWX";
11
+ export declare const KRIYAV3 = "KRIYAV3";
12
+ export declare const TURBOS = "TURBOS";
13
+ export declare const AFTERMATH = "AFTERMATH";
14
+ export declare const HAEDAL = "HAEDAL";
15
+ export declare const VOLO = "VOLO";
16
+ export declare const AFSUI = "AFSUI";
46
17
  export type BuildRouterSwapParams = {
47
18
  routers: Router[];
48
- amountIn: BN;
49
- amountOut: BN;
50
19
  byAmountIn: boolean;
20
+ inputCoin: TransactionObjectArgument;
51
21
  slippage: number;
52
- fromCoinType: string;
53
- targetCoinType: string;
22
+ txb: Transaction;
23
+ partner?: string;
24
+ };
25
+ export type BuildFastRouterSwapParams = {
26
+ routers: Router[];
27
+ byAmountIn: boolean;
28
+ slippage: number;
29
+ txb: Transaction;
54
30
  partner?: string;
55
31
  isMergeTragetCoin?: boolean;
56
32
  refreshAllCoins?: boolean;
57
33
  };
58
- export interface FindRouterParams {
59
- from: string;
60
- target: string;
61
- amount: BN;
62
- byAmountIn: boolean;
63
- depth: number | null;
64
- splitAlgorithm: string | null;
65
- splitFactor: number | null;
66
- splitCount: number | null;
67
- providers: string[] | null;
68
- }
69
34
  export interface SwapInPoolsParams {
70
35
  from: string;
71
36
  target: string;
@@ -78,15 +43,23 @@ export interface SwapInPoolsResult {
78
43
  routeData?: RouterData;
79
44
  }
80
45
  export declare class AggregatorClient {
81
- private config;
82
- private wallet;
83
- private client;
46
+ endpoint: string;
47
+ signer: string;
48
+ client: SuiClient;
49
+ env: Env;
84
50
  private allCoins;
85
- constructor(config: AggregatorConfig);
51
+ constructor(endpoint: string, signer: string, client: SuiClient, env: Env);
86
52
  getAllCoins(): Promise<CoinAsset[]>;
87
- findRouter(fromRouterParams: FindRouterParams): Promise<RouterData | null>;
53
+ findRouters(params: FindRouterParams): Promise<RouterData | null>;
54
+ expectInputSwap(txb: Transaction, inputCoin: TransactionObjectArgument, routers: Router[], amountOutLimit: BN, partner?: string): Promise<TransactionObjectArgument>;
55
+ expectOutputSwap(txb: Transaction, inputCoin: TransactionObjectArgument, routers: Router[], partner?: string): Promise<TransactionObjectArgument>;
88
56
  swapInPools(params: SwapInPoolsParams): Promise<SwapInPoolsResult | null>;
89
- routerSwap(params: BuildRouterSwapParams): Promise<Transaction>;
57
+ routerSwap(params: BuildRouterSwapParams): Promise<TransactionObjectArgument>;
58
+ fastRouterSwap(params: BuildFastRouterSwapParams): Promise<void>;
59
+ publishedAt(): string;
60
+ transferOrDestoryCoin(txb: Transaction, coin: TransactionObjectArgument, coinType: string): void;
61
+ checkCoinThresholdAndMergeCoin(txb: Transaction, coins: TransactionObjectArgument[], coinType: string, amountLimit: BN): TransactionObjectArgument;
62
+ newDex(provider: string, partner?: string): Dex;
90
63
  signAndExecuteTransaction(txb: Transaction, signer: Signer): Promise<import("@mysten/sui/client").SuiTransactionBlockResponse>;
91
64
  devInspectTransactionBlock(txb: Transaction): Promise<import("@mysten/sui/client").DevInspectResults>;
92
65
  sendTransaction(txb: Transaction, signer: Signer): Promise<import("@mysten/sui/client").SuiTransactionBlockResponse>;
@@ -1,59 +1,4 @@
1
1
  import BN from "bn.js";
2
- /**
3
- * The address representing the clock in the system.
4
- */
5
- export declare const CLOCK_ADDRESS = "0x0000000000000000000000000000000000000000000000000000000000000006";
6
- /**
7
- * The address for CoinInfo module.
8
- */
9
- export declare const CoinInfoAddress = "0x1::coin::CoinInfo";
10
- /**
11
- * The address for CoinStore module.
12
- */
13
- export declare const CoinStoreAddress = "0x1::coin::CoinStore";
14
- export declare const SuiZeroCoinFn = "0x2::coin::zero";
15
- export declare const AGGREGATOR = "aggregator";
16
- export declare const CETUS_DEX = "CETUS";
17
- export declare const DEEPBOOK_DEX = "DEEPBOOK";
18
- export declare const KRIYA_DEX = "KRIYA";
19
- export declare const FLOWX_AMM = "FLOWX";
20
- export declare const TURBOS_DEX = "TURBOS";
21
- export declare const AFTERMATH_AMM = "AFTERMATH";
22
- export declare const INTEGRATE = "integrate";
23
- export declare const CETUS_MODULE = "cetus";
24
- export declare const DEEPBOOK_MODULE = "deepbook";
25
- export declare const KRIYA_MODULE = "kriya";
26
- export declare const UTILS_MODULE = "utils";
27
- export declare const POOL_MODULT = "pool";
28
- export declare const PAY_MODULE = "pay";
29
- export declare const FLOWX_AMM_MODULE = "flowx_amm";
30
- export declare const TURBOS_MODULE = "turbos";
31
- export declare const AFTERMATH_MODULE = "aftermath";
32
- export declare const DEEPBOOK_CUSTODIAN_V2_MODULE = "custodian_v2";
33
- export declare const DEEPBOOK_CLOB_V2_MODULE = "clob_v2";
34
- export declare const FlashSwapFunc = "flash_swap";
35
- export declare const FlashSwapWithPartnerFunc = "flash_swap_with_partner";
36
- export declare const RepayFalshSwapFunc = "repay_flash_swap";
37
- export declare const RepayFlashSwapWithPartnerFunc = "repay_flash_swap_with_partner";
38
- export declare const FlashSwapA2BFunc = "flash_swap_a2b";
39
- export declare const FlashSwapB2AFunc = "flash_swap_b2a";
40
- export declare const FlashSwapWithPartnerA2BFunc = "flash_swap_with_partner_a2b";
41
- export declare const FlashSwapWithPartnerB2AFunc = "flash_swap_with_partner_b2a";
42
- export declare const REPAY_FLASH_SWAP_A2B_FUNC = "repay_flash_swap_a2b";
43
- export declare const REPAY_FLASH_SWAP_B2A_FUNC = "repay_flash_swap_b2a";
44
- export declare const REPAY_FLASH_SWAP_WITH_PARTNER_A2B_FUNC = "repay_flash_swap_with_partner_a2b";
45
- export declare const REPAY_FLASH_SWAP_WITH_PARTNER_B2A_FUNC = "repay_flash_swap_with_partner_b2a";
46
- export declare const SWAP_A2B_FUNC = "swap_a2b";
47
- export declare const SWAP_B2A_FUNC = "swap_b2a";
48
- export declare const TRANSFER_OR_DESTORY_COIN_FUNC = "transfer_or_destroy_coin";
49
- export declare const CHECK_COINS_THRESHOLD_FUNC = "check_coins_threshold";
50
- export declare const JOIN_FUNC = "join_vec";
51
- export declare const TRANSFER_ACCOUNT_CAP = "transfer_account_cap";
52
- export declare const DEEPBOOK_PACKAGE_ID = "0x000000000000000000000000000000000000000000000000000000000000dee9";
53
- export declare const DEEPBOOK_PUBLISHED_AT = "0x000000000000000000000000000000000000000000000000000000000000dee9";
54
- export declare const CETUS_PUBLISHED_AT = "0x70968826ad1b4ba895753f634b0aea68d0672908ca1075a2abdf0fc9e0b2fc6a";
55
- export declare const MAINNET_CETUS_GLOBAL_CONFIG_ID = "0xdaa46292632c3c4d8f31f23ea0f9b36a28ff3677e9684980e4438403a67a3d8f";
56
- export declare const TESTNET_CETUS_GLOBAL_CONFIG_ID = "0x6f4149091a5aea0e818e7243a13adcfb403842d670b9a2089de058512620687a";
57
2
  export declare const ZERO: BN;
58
3
  export declare const ONE: BN;
59
4
  export declare const TWO: BN;
@@ -61,16 +6,3 @@ export declare const U128: BN;
61
6
  export declare const U64_MAX_BN: BN;
62
7
  export declare const U64_MAX = "18446744073709551615";
63
8
  export declare const TEN_POW_NINE = 1000000000;
64
- export declare const MAINNET_FLOWX_AMM_CONTAINER_ID = "0xb65dcbf63fd3ad5d0ebfbf334780dc9f785eff38a4459e37ab08fa79576ee511";
65
- export declare const TESTNET_FLOWX_AMM_CONTAINER_ID = "";
66
- export declare const TURBOS_VERSIONED = "0xf1cf0e81048df168ebeb1b8030fad24b3e0b53ae827c25053fff0779c1445b6f";
67
- export declare const MAINNET_AFTERMATH_REGISTRY_ID = "0xfcc774493db2c45c79f688f88d28023a3e7d98e4ee9f48bbf5c7990f651577ae";
68
- export declare const TESTNET_AFTERMATH_REGISTRY_ID = "";
69
- export declare const MAINNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID = "0xf194d9b1bcad972e45a7dd67dd49b3ee1e3357a00a50850c52cd51bb450e13b4";
70
- export declare const TESTNET_AFTERMATH_PROTOCOL_FEE_VAULT_ID = "";
71
- export declare const MAINNET_AFTERMATH_TREASURY_ID = "0x28e499dff5e864a2eafe476269a4f5035f1c16f338da7be18b103499abf271ce";
72
- export declare const TESTNET_AFTERMATH_TREASURY_ID = "";
73
- export declare const MAINNET_AFTERMATH_INSURANCE_FUND_ID = "0xf0c40d67b078000e18032334c3325c47b9ec9f3d9ae4128be820d54663d14e3b";
74
- export declare const TESTNET_AFTERMATH_INSURANCE_FUND_ID = "";
75
- export declare const MAINNET_AFTERMATH_REFERRAL_VAULT_ID = "0x35d35b0e5b177593d8c3a801462485572fc30861e6ce96a55af6dc4730709278";
76
- export declare const TESTNET_AFTERMATH_REFERRAL_VAULT_ID = "";
@@ -1,5 +1,9 @@
1
- export * from './client';
2
- export * from './transaction';
3
- export * from './config';
4
- export * from './utils';
5
- export * from './const';
1
+ export * from "./client";
2
+ export * from "./transaction";
3
+ export * from "./utils";
4
+ export * from "./const";
5
+ export * from "./api";
6
+ export declare enum Env {
7
+ Mainnet = 0,
8
+ Testnet = 1
9
+ }
@@ -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
+ }
@@ -1,24 +1,13 @@
1
- import { TransactionArgument, Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
2
- import { AggregatorConfig } from "../config";
3
- export type AftermathSwapParams = {
4
- poolId: string;
5
- amount: TransactionArgument;
6
- amountOut: number;
7
- amountLimit: number;
8
- a2b: boolean;
9
- byAmountIn: boolean;
10
- coinA?: TransactionObjectArgument;
11
- coinB?: TransactionObjectArgument;
12
- useFullInputCoinAmount: boolean;
13
- coinAType: string;
14
- coinBType: string;
15
- slippage: number;
16
- lpSupplyType: string;
17
- };
18
- export type AftermathSwapResult = {
19
- targetCoin: TransactionObjectArgument;
20
- amountIn: TransactionArgument;
21
- amountOut: TransactionArgument;
22
- txb: Transaction;
23
- };
24
- export declare function AftermathAmmSwapMovecall(swapParams: AftermathSwapParams, txb: Transaction, config: AggregatorConfig): Promise<AftermathSwapResult>;
1
+ import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
2
+ import { AggregatorClient, Dex, Env, Path } from "..";
3
+ export declare class Aftermath implements Dex {
4
+ private slippage;
5
+ private poolRegistry;
6
+ private protocolFeeVault;
7
+ private treasury;
8
+ private insuranceFund;
9
+ private referrealVault;
10
+ constructor(env: Env);
11
+ amountLimit(exportAmountOut: number): number;
12
+ swap(client: AggregatorClient, txb: Transaction, path: Path, inputCoin: TransactionObjectArgument): Promise<TransactionObjectArgument>;
13
+ }
@@ -1,39 +1,15 @@
1
1
  import { Transaction, TransactionArgument, TransactionObjectArgument } from "@mysten/sui/transactions";
2
- import { AggregatorConfig } from "../config";
3
- import BN from "bn.js";
4
- export type CetusSwapParams = {
5
- poolId: string;
6
- amount: TransactionArgument;
7
- amountLimit: string;
8
- a2b: boolean;
9
- byAmountIn: boolean;
10
- sqrtPriceLimit: BN;
11
- partner?: string;
12
- coinAType: string;
13
- coinBType: string;
14
- };
2
+ import { AggregatorClient, Dex, Env, Path } from "..";
15
3
  export type CetusFlashSwapResult = {
16
4
  targetCoin: TransactionObjectArgument;
17
5
  flashReceipt: TransactionObjectArgument;
18
6
  payAmount: TransactionArgument;
19
- swapedAmount: TransactionArgument;
20
- txb: Transaction;
21
- };
22
- export declare function cetusFlashSwapMovecall(swapParams: CetusSwapParams, txb: Transaction, config: AggregatorConfig): CetusFlashSwapResult;
23
- export type repayParams = {
24
- poolId: string;
25
- a2b: boolean;
26
- coinA?: TransactionObjectArgument;
27
- coinB?: TransactionObjectArgument;
28
- receipt: TransactionObjectArgument;
29
- coinAType: string;
30
- coinBType: string;
31
- partner?: string;
32
- };
33
- export type SwapResult = {
34
- repayTargetCoin: TransactionObjectArgument;
35
- nextInputAmount?: TransactionArgument;
36
- flashTargetCoin?: TransactionObjectArgument;
37
7
  };
38
- export declare function cetusRepayFlashSwapMovecall(repayParams: repayParams, txb: Transaction, config: AggregatorConfig): Promise<SwapResult>;
39
- export declare function cetusSwapWithOutLimit(swapParams: CetusSwapParams, fromCoin: TransactionObjectArgument, txb: Transaction, config: AggregatorConfig): Promise<SwapResult>;
8
+ export declare class Cetus implements Dex {
9
+ private globalConfig;
10
+ private partner;
11
+ constructor(env: Env, partner?: string);
12
+ flash_swap(client: AggregatorClient, txb: Transaction, path: Path, by_amount_in: boolean): CetusFlashSwapResult;
13
+ repay_flash_swap(client: AggregatorClient, txb: Transaction, path: Path, inputCoin: TransactionObjectArgument, receipt: TransactionArgument): TransactionObjectArgument;
14
+ swap(client: AggregatorClient, txb: Transaction, path: Path, inputCoin: TransactionObjectArgument): Promise<TransactionObjectArgument>;
15
+ }
@@ -0,0 +1,14 @@
1
+ import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
2
+ import { AggregatorClient, Dex, Env, Path } from "..";
3
+ import { SuiClient } from "@mysten/sui/client";
4
+ type GetOrCreateAccountCapResult = {
5
+ accountCap: TransactionObjectArgument;
6
+ isCreate: boolean;
7
+ };
8
+ export declare class DeepbookV2 implements Dex {
9
+ constructor(env: Env);
10
+ getAccountCap(client: SuiClient, owner: string): Promise<string | null>;
11
+ getOrCreateAccountCap(txb: Transaction, client: SuiClient, owner: string): Promise<GetOrCreateAccountCapResult>;
12
+ swap(client: AggregatorClient, txb: Transaction, path: Path, inputCoin: TransactionObjectArgument): Promise<TransactionObjectArgument>;
13
+ }
14
+ export {};
@@ -0,0 +1,7 @@
1
+ import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
2
+ import { AggregatorClient, Dex, Env, Path } from "..";
3
+ export declare class FlowxV2 implements Dex {
4
+ private container;
5
+ constructor(env: Env);
6
+ swap(client: AggregatorClient, txb: Transaction, path: Path, inputCoin: TransactionObjectArgument): Promise<TransactionObjectArgument>;
7
+ }
@@ -0,0 +1,6 @@
1
+ import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
2
+ import { AggregatorClient, Dex, Env, Path } from "..";
3
+ export declare class Haedal implements Dex {
4
+ constructor(env: Env);
5
+ swap(client: AggregatorClient, txb: Transaction, path: Path, inputCoin: TransactionObjectArgument): Promise<TransactionObjectArgument>;
6
+ }
@@ -1 +1,6 @@
1
- export * from "./router";
1
+ import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
2
+ import { AggregatorClient, Path } from "..";
3
+ export declare const CLOCK_ADDRESS = "0x0000000000000000000000000000000000000000000000000000000000000006";
4
+ export interface Dex {
5
+ swap(client: AggregatorClient, ptb: Transaction, path: Path, inputCoin: TransactionObjectArgument): Promise<TransactionObjectArgument>;
6
+ }
@@ -0,0 +1,6 @@
1
+ import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
2
+ import { AggregatorClient, Dex, Env, Path } from "..";
3
+ export declare class KriyaV2 implements Dex {
4
+ constructor(env: Env);
5
+ swap(client: AggregatorClient, txb: Transaction, path: Path, inputCoin: TransactionObjectArgument): Promise<TransactionObjectArgument>;
6
+ }
@@ -0,0 +1,7 @@
1
+ import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
2
+ import { AggregatorClient, Dex, Env, Path } from "..";
3
+ export declare class KriyaV3 implements Dex {
4
+ private version;
5
+ constructor(env: Env);
6
+ swap(client: AggregatorClient, txb: Transaction, path: Path, inputCoin: TransactionObjectArgument): Promise<TransactionObjectArgument>;
7
+ }
@@ -1,5 +1,4 @@
1
1
  import { SwapInPoolsParams } from "~/client";
2
- import { AggregatorConfig } from "~/config";
3
2
  import { SwapInPoolsResult } from "..";
4
3
  import { SuiClient } from "@mysten/sui/client";
5
- export declare function swapInPools(client: SuiClient, params: SwapInPoolsParams, config: AggregatorConfig): Promise<SwapInPoolsResult>;
4
+ export declare function swapInPools(client: SuiClient, params: SwapInPoolsParams, sender: string): Promise<SwapInPoolsResult>;
@@ -1,22 +1,7 @@
1
- import { TransactionArgument, Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
2
- import { AggregatorConfig } from "../config";
3
- export type TurbosSwapParams = {
4
- poolId: string;
5
- amount: TransactionArgument;
6
- amountLimit: number;
7
- a2b: boolean;
8
- byAmountIn: boolean;
9
- coinA?: TransactionObjectArgument;
10
- coinB?: TransactionObjectArgument;
11
- useFullInputCoinAmount: boolean;
12
- coinAType: string;
13
- coinBType: string;
14
- feeType: string;
15
- };
16
- export type TurbosSwapResult = {
17
- targetCoin: TransactionObjectArgument;
18
- amountIn: TransactionArgument;
19
- amountOut: TransactionArgument;
20
- txb: Transaction;
21
- };
22
- export declare function turbosClmmSwapMovecall(swapParams: TurbosSwapParams, txb: Transaction, config: AggregatorConfig): Promise<TurbosSwapResult>;
1
+ import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
2
+ import { AggregatorClient, Dex, Env, Path } from "..";
3
+ export declare class Turbos implements Dex {
4
+ private versioned;
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
+ }
@@ -1,2 +1,11 @@
1
+ import { CoinAsset } from "../types/sui";
2
+ import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
1
3
  export declare function completionCoin(s: string): string;
2
4
  export declare function compareCoins(coinA: string, coinB: string): boolean;
5
+ export declare function mintZeroCoin(txb: Transaction, coinType: string): TransactionObjectArgument;
6
+ export type BuildCoinResult = {
7
+ targetCoin: TransactionObjectArgument;
8
+ isMintZeroCoin: boolean;
9
+ targetCoinAmount: number;
10
+ };
11
+ export declare function buildInputCoin(txb: Transaction, allCoins: CoinAsset[], amount: bigint, coinType: string): BuildCoinResult;
@@ -6,3 +6,4 @@ export declare const M_SUI = "0x2::sui::SUI";
6
6
  export declare const M_VSUI = "0x549e8b69270defbfafd4f94e17ec44cdbdd99820b33bda2278dea3b9a32d3f55::cert::CERT";
7
7
  export declare const M_VAPOR = "0xa1f2c11169f32165ad4efb4468ec5bdfc880cd66b22094024b32ab7b76d14d30::vapor::VAPOR";
8
8
  export declare const M_HASUI = "0xbde4ba4c2e274a60ce15c1cfff9e5c42e41654ac8b6d906a57efa4bd3c29f47d::hasui::HASUI";
9
+ export declare const M_SSWP = "0x361dd589b98e8fcda9a7ee53b85efabef3569d00416640d2faa516e3801d7ffc::TOKEN::TOKEN";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cetusprotocol/aggregator-sdk",
3
- "version": "0.0.8",
3
+ "version": "0.1.1",
4
4
  "sideEffects": false,
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -27,7 +27,7 @@
27
27
  "@babel/preset-env": "^7.24.5",
28
28
  "@babel/preset-typescript": "^7.24.1",
29
29
  "@jest/globals": "^29.7.0",
30
- "@mysten/sui": "^1.0.5",
30
+ "@mysten/sui": "^1.6.0",
31
31
  "@types/jest": "^29.5.12",
32
32
  "@types/node": "^20.12.12",
33
33
  "babel-jest": "^29.7.0",
package/src/api.ts ADDED
@@ -0,0 +1,144 @@
1
+ import BN from "bn.js"
2
+ import Decimal from "decimal.js"
3
+ import { completionCoin } from "~/utils/coin"
4
+ import { ZERO } from "./const"
5
+ import {
6
+ AggregatorServerErrorCode,
7
+ getAggregatorServerErrorMessage,
8
+ } from "./errors"
9
+ import { parseRouterResponse } from "./client"
10
+
11
+ export interface FindRouterParams {
12
+ from: string
13
+ target: string
14
+ amount: BN
15
+ byAmountIn: boolean
16
+ depth?: number
17
+ splitAlgorithm?: string
18
+ splitFactor?: number
19
+ splitCount?: number
20
+ providers?: string[]
21
+ }
22
+
23
+ export type ExtendedDetails = {
24
+ aftermathPoolFlatness?: number
25
+ aftermathLpSupplyType?: string
26
+ turbosFeeType?: string
27
+ }
28
+
29
+ export type Path = {
30
+ id: string
31
+ direction: boolean
32
+ provider: string
33
+ from: string
34
+ target: string
35
+ feeRate: number
36
+ amountIn: number
37
+ amountOut: number
38
+ extendedDetails?: ExtendedDetails
39
+ version?: string
40
+ }
41
+
42
+ export type Router = {
43
+ path: Path[]
44
+ amountIn: BN
45
+ amountOut: BN
46
+ initialPrice: Decimal
47
+ }
48
+
49
+ export type RouterError = {
50
+ code: number
51
+ msg: string
52
+ }
53
+
54
+ export type RouterData = {
55
+ amountIn: BN
56
+ amountOut: BN
57
+ routes: Router[]
58
+ insufficientLiquidity: boolean
59
+ error?: RouterError
60
+ }
61
+
62
+ export type AggregatorResponse = {
63
+ code: number
64
+ msg: string
65
+ data: RouterData
66
+ }
67
+
68
+ export async function getRouterResult(
69
+ endpoint: string,
70
+ params: FindRouterParams
71
+ ): Promise<RouterData | null> {
72
+ const {
73
+ from,
74
+ target,
75
+ amount,
76
+ byAmountIn,
77
+ depth,
78
+ splitAlgorithm,
79
+ splitFactor,
80
+ splitCount,
81
+ providers,
82
+ } = params
83
+ const fromCoin = completionCoin(from)
84
+ const targetCoin = completionCoin(target)
85
+
86
+ let url = `${endpoint}?from=${fromCoin}&target=${targetCoin}&amount=${amount.toString()}&by_amount_in=${byAmountIn}`
87
+
88
+ if (depth) {
89
+ url += `&depth=${depth}`
90
+ }
91
+
92
+ if (splitAlgorithm) {
93
+ url += `&split_algorithm=${splitAlgorithm}`
94
+ }
95
+
96
+ if (splitFactor) {
97
+ url += `&split_factor=${splitFactor}`
98
+ }
99
+
100
+ if (splitCount) {
101
+ url += `&split_count=${splitCount}`
102
+ }
103
+
104
+ if (providers) {
105
+ if (providers.length > 0) {
106
+ url += `&providers=${providers.join(",")}`
107
+ }
108
+ }
109
+
110
+ const response = await fetch(url)
111
+ if (!response.ok) {
112
+ return {
113
+ amountIn: ZERO,
114
+ amountOut: ZERO,
115
+ routes: [],
116
+ insufficientLiquidity: false,
117
+ error: {
118
+ code: AggregatorServerErrorCode.NumberTooLarge,
119
+ msg: getAggregatorServerErrorMessage(
120
+ AggregatorServerErrorCode.NumberTooLarge
121
+ ),
122
+ },
123
+ }
124
+ }
125
+ const data = await response.json()
126
+ if (data.data != null) {
127
+ const res = parseRouterResponse(data.data)
128
+ return res
129
+ }
130
+ const insufficientLiquidity = data.msg === "liquidity is not enough"
131
+
132
+ return {
133
+ amountIn: ZERO,
134
+ amountOut: ZERO,
135
+ routes: [],
136
+ insufficientLiquidity,
137
+ error: {
138
+ code: AggregatorServerErrorCode.InsufficientLiquidity,
139
+ msg: getAggregatorServerErrorMessage(
140
+ AggregatorServerErrorCode.InsufficientLiquidity
141
+ ),
142
+ },
143
+ }
144
+ }