aftermath-ts-sdk 0.0.146 → 0.0.147

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 (43) hide show
  1. package/dist/general/api/objectsApiHelpers.d.ts +1 -0
  2. package/dist/general/api/objectsApiHelpers.d.ts.map +1 -1
  3. package/dist/general/api/objectsApiHelpers.js +20 -2
  4. package/dist/general/prices/coingecko/coinGeckoApiHelpers.d.ts +1 -0
  5. package/dist/general/prices/coingecko/coinGeckoApiHelpers.d.ts.map +1 -1
  6. package/dist/general/prices/coingecko/coinGeckoApiHelpers.js +23 -4
  7. package/dist/general/utils/helpers.d.ts +1 -0
  8. package/dist/general/utils/helpers.d.ts.map +1 -1
  9. package/dist/general/utils/helpers.js +8 -0
  10. package/dist/packages/external/cetus/cetusApi.d.ts +11 -4
  11. package/dist/packages/external/cetus/cetusApi.d.ts.map +1 -1
  12. package/dist/packages/external/cetus/cetusApi.js +9 -6
  13. package/dist/packages/external/cetus/cetusApiHelpers.d.ts +54 -4
  14. package/dist/packages/external/cetus/cetusApiHelpers.d.ts.map +1 -1
  15. package/dist/packages/external/cetus/cetusApiHelpers.js +120 -50
  16. package/dist/packages/external/turbos/turbosApi.d.ts +11 -4
  17. package/dist/packages/external/turbos/turbosApi.d.ts.map +1 -1
  18. package/dist/packages/external/turbos/turbosApi.js +9 -6
  19. package/dist/packages/external/turbos/turbosApiHelpers.d.ts +14 -4
  20. package/dist/packages/external/turbos/turbosApiHelpers.d.ts.map +1 -1
  21. package/dist/packages/external/turbos/turbosApiHelpers.js +76 -20
  22. package/dist/packages/router/api/routerApi.d.ts +2 -4
  23. package/dist/packages/router/api/routerApi.d.ts.map +1 -1
  24. package/dist/packages/router/api/routerApi.js +5 -25
  25. package/dist/packages/router/api/routerApiHelpers.d.ts +41 -0
  26. package/dist/packages/router/api/routerApiHelpers.d.ts.map +1 -0
  27. package/dist/packages/router/api/routerApiHelpers.js +191 -0
  28. package/dist/packages/router/api/routerAsyncApiHelpers.d.ts +15 -4
  29. package/dist/packages/router/api/routerAsyncApiHelpers.d.ts.map +1 -1
  30. package/dist/packages/router/api/routerAsyncApiHelpers.js +42 -9
  31. package/dist/packages/router/api/routerSynchronousApiHelpers.d.ts +1 -10
  32. package/dist/packages/router/api/routerSynchronousApiHelpers.d.ts.map +1 -1
  33. package/dist/packages/router/api/routerSynchronousApiHelpers.js +5 -25
  34. package/dist/packages/router/routerTypes.d.ts.map +1 -1
  35. package/dist/packages/router/utils/async/routerAsyncApiInterface.d.ts +13 -6
  36. package/dist/packages/router/utils/async/routerAsyncApiInterface.d.ts.map +1 -1
  37. package/dist/packages/router/utils/async/routerAsyncGraph.d.ts +4 -2
  38. package/dist/packages/router/utils/async/routerAsyncGraph.d.ts.map +1 -1
  39. package/dist/packages/router/utils/async/routerAsyncGraph.js +34 -34
  40. package/dist/packages/router/utils/synchronous/routerGraph.d.ts +13 -11
  41. package/dist/packages/router/utils/synchronous/routerGraph.d.ts.map +1 -1
  42. package/dist/packages/router/utils/synchronous/routerGraph.js +109 -73
  43. package/package.json +1 -1
@@ -3,6 +3,7 @@ import { AftermathApi } from "../providers/aftermathApi";
3
3
  import { AnyObjectType, PackageId } from "../../types";
4
4
  export declare class ObjectsApiHelpers {
5
5
  private readonly Provider;
6
+ private static readonly constants;
6
7
  constructor(Provider: AftermathApi);
7
8
  fetchDoesObjectExist: (objectId: ObjectId | PackageId) => Promise<boolean>;
8
9
  fetchIsObjectOwnedByAddress: (objectId: ObjectId, address: SuiAddress) => Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"objectsApiHelpers.d.ts","sourceRoot":"","sources":["../../../src/general/api/objectsApiHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,QAAQ,EACR,UAAU,EACV,oBAAoB,EACpB,iBAAiB,EAGjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAc,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnE,qBAAa,iBAAiB;IAKjB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,YAAY;IAY5C,oBAAoB,aAAoB,QAAQ,GAAG,SAAS,sBAGjE;IAEK,2BAA2B,aACvB,QAAQ,WACT,UAAU,sBAgBlB;IAEK,gCAAgC,kBACvB,UAAU,cACb,aAAa,gBACX,OAAO,KACnB,QAAQ,iBAAiB,EAAE,CAAC,CAgB7B;IAEK,WAAW,aACP,QAAQ,gBACJ,OAAO,KACnB,QAAQ,iBAAiB,CAAC,CAe3B;IAEK,eAAe,yBACX,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAEJ,OAAO,yBAGpB;IAEK,gBAAgB,cACX,QAAQ,EAAE,YACX,oBAAoB,KAC5B,QAAQ,iBAAiB,EAAE,CAAC,CAqB7B;IAEK,oBAAoB,0BACf,QAAQ,EAAE,sCACe,iBAAiB,2BAC3C,oBAAoB,2BAO7B;IAEK,oCAAoC,8BAC3B,UAAU,cACb,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAIX,OAAO,2BAcpB;CACF"}
1
+ {"version":3,"file":"objectsApiHelpers.d.ts","sourceRoot":"","sources":["../../../src/general/api/objectsApiHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,QAAQ,EACR,UAAU,EACV,oBAAoB,EACpB,iBAAiB,EAEjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEvD,qBAAa,iBAAiB;IAajB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IARrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAE/B;gBAM2B,QAAQ,EAAE,YAAY;IAY5C,oBAAoB,aAAoB,QAAQ,GAAG,SAAS,sBAGjE;IAEK,2BAA2B,aACvB,QAAQ,WACT,UAAU,sBAgBlB;IAEK,gCAAgC,kBACvB,UAAU,cACb,aAAa,gBACX,OAAO,KACnB,QAAQ,iBAAiB,EAAE,CAAC,CAgB7B;IAEK,WAAW,aACP,QAAQ,gBACJ,OAAO,KACnB,QAAQ,iBAAiB,CAAC,CAe3B;IAEK,eAAe,yBACX,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAEJ,OAAO,yBAGpB;IAEK,gBAAgB,cACX,QAAQ,EAAE,YACX,oBAAoB,KAC5B,QAAQ,iBAAiB,EAAE,CAAC,CA+C7B;IAEK,oBAAoB,0BACf,QAAQ,EAAE,sCACe,iBAAiB,2BAC3C,oBAAoB,2BAO7B;IAEK,oCAAoC,8BAC3B,UAAU,cACb,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAIX,OAAO,2BAcpB;CACF"}
@@ -72,7 +72,18 @@ class ObjectsApiHelpers {
72
72
  return castFunc(yield this.fetchObject(objectId, withDisplay));
73
73
  });
74
74
  this.fetchObjectBatch = (objectIds, options) => __awaiter(this, void 0, void 0, function* () {
75
- const objectBatch = yield this.Provider.provider.multiGetObjects({
75
+ let objectIdsBatches = [];
76
+ let endIndex = 0;
77
+ while (true) {
78
+ const newEndIndex = endIndex + ObjectsApiHelpers.constants.maxObjectFetchingLimit;
79
+ if (newEndIndex >= objectIds.length) {
80
+ objectIdsBatches.push(objectIds.slice(endIndex, objectIds.length));
81
+ break;
82
+ }
83
+ objectIdsBatches.push(objectIds.slice(endIndex, newEndIndex));
84
+ endIndex = newEndIndex;
85
+ }
86
+ const objectBatches = yield Promise.all(objectIdsBatches.map((objectIds) => this.Provider.provider.multiGetObjects({
76
87
  ids: objectIds,
77
88
  options: options === undefined
78
89
  ? {
@@ -81,7 +92,8 @@ class ObjectsApiHelpers {
81
92
  showType: true,
82
93
  }
83
94
  : options,
84
- });
95
+ })));
96
+ const objectBatch = objectBatches.reduce((acc, objects) => [...acc, ...objects], []);
85
97
  // const objectDataResponses = objectBatch.filter(
86
98
  // (data) => data.error !== undefined
87
99
  // );
@@ -107,3 +119,9 @@ class ObjectsApiHelpers {
107
119
  }
108
120
  }
109
121
  exports.ObjectsApiHelpers = ObjectsApiHelpers;
122
+ /////////////////////////////////////////////////////////////////////
123
+ //// Private Static Constants
124
+ /////////////////////////////////////////////////////////////////////
125
+ ObjectsApiHelpers.constants = {
126
+ maxObjectFetchingLimit: 50,
127
+ };
@@ -3,6 +3,7 @@ import { CoinHistoricalData } from "../../historicalData/historicalDataTypes";
3
3
  import { CoinGeckoCoinApiId, CoinGeckoCoinData } from "./coinGeckoTypes";
4
4
  export declare class CoinGeckoApiHelpers {
5
5
  private readonly coinGeckoApiKey;
6
+ private static readonly constants;
6
7
  constructor(coinGeckoApiKey: string);
7
8
  fetchAllCoinData: () => Promise<Record<CoinType, CoinGeckoCoinData>>;
8
9
  fetchHistoricalData: (inputs: {
@@ -1 +1 @@
1
- {"version":3,"file":"coinGeckoApiHelpers.d.ts","sourceRoot":"","sources":["../../../../src/general/prices/coingecko/coinGeckoApiHelpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAE9E,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEzE,qBAAa,mBAAmB;IAKnB,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,MAAM;IAU7C,gBAAgB,QAAa,QACnC,OAAO,QAAQ,EAAE,iBAAiB,CAAC,CACnC,CA2CC;IAMK,mBAAmB,WAAkB;QAC3C,SAAS,EAAE,kBAAkB,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;KAChB,KAAG,QAAQ,kBAAkB,CAAC,CAuB7B;IAMK,qBAAqB,WAAkB;QAC7C,YAAY,EAAE,OAAO,QAAQ,EAAE,kBAAkB,CAAC,CAAC;KACnD,KAAG,QAAQ,OAAO,QAAQ,EAAE,aAAa,CAAC,CAAC,CAsC1C;IAUF,OAAO,CAAC,OAAO,CAkBb;CACF"}
1
+ {"version":3,"file":"coinGeckoApiHelpers.d.ts","sourceRoot":"","sources":["../../../../src/general/prices/coingecko/coinGeckoApiHelpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAE9E,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEzE,qBAAa,mBAAmB;IAqBnB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAhB5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAU/B;gBAM2B,eAAe,EAAE,MAAM;IAU7C,gBAAgB,QAAa,QACnC,OAAO,QAAQ,EAAE,iBAAiB,CAAC,CACnC,CA2DC;IAMK,mBAAmB,WAAkB;QAC3C,SAAS,EAAE,kBAAkB,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;KAChB,KAAG,QAAQ,kBAAkB,CAAC,CAuB7B;IAMK,qBAAqB,WAAkB;QAC7C,YAAY,EAAE,OAAO,QAAQ,EAAE,kBAAkB,CAAC,CAAC;KACnD,KAAG,QAAQ,OAAO,QAAQ,EAAE,aAAa,CAAC,CAAC,CAwC1C;IAUF,OAAO,CAAC,OAAO,CAeb;CACF"}
@@ -47,9 +47,16 @@ class CoinGeckoApiHelpers {
47
47
  }
48
48
  })
49
49
  .filter((data) => data !== undefined);
50
- const coinDataObject = suiCoinData.reduce((acc, data) => {
50
+ const partialCoinDataObject = suiCoinData.reduce((acc, data) => {
51
51
  return Object.assign({ [data.coinType]: data }, acc);
52
52
  }, {});
53
+ const coinDataObject = Object.entries(CoinGeckoApiHelpers.constants.coinApiIdsToCoinTypes).reduce((acc, [coinApiId, coinTypes]) => {
54
+ const dataToDuplicate = Object.values(partialCoinDataObject).find((data) => data.apiId === coinApiId);
55
+ if (!dataToDuplicate)
56
+ return acc;
57
+ const newData = coinTypes.reduce((acc, coinType) => (Object.assign({ [coinType]: dataToDuplicate }, acc)), acc);
58
+ return newData;
59
+ }, partialCoinDataObject);
53
60
  return coinDataObject;
54
61
  });
55
62
  /////////////////////////////////////////////////////////////////////
@@ -76,7 +83,7 @@ class CoinGeckoApiHelpers {
76
83
  const { coinsToApiId } = inputs;
77
84
  if (Object.keys(coinsToApiId).length <= 0)
78
85
  return {};
79
- const rawCoinsInfo = yield this.callApi(`simple/price?ids=${Object.values(coinsToApiId).reduce((acc, apiId) => `${acc},${apiId}`, "")}&vs_currencies=USD&include_24hr_change=true&precision=full`);
86
+ const rawCoinsInfo = yield this.callApi(`simple/price?ids=${utils_1.Helpers.uniqueArray(Object.values(coinsToApiId)).reduce((acc, apiId) => `${acc},${apiId}`, "")}&vs_currencies=USD&include_24hr_change=true&precision=full`);
80
87
  const coinsInfo = Object.entries(coinsToApiId).reduce((acc, [coinType, coinApiId]) => {
81
88
  var _a, _b;
82
89
  const info = (_a = Object.entries(rawCoinsInfo).find(([id]) => id === coinApiId)) === null || _a === void 0 ? void 0 : _a[1];
@@ -105,11 +112,23 @@ class CoinGeckoApiHelpers {
105
112
  (this.coinGeckoApiKey === ""
106
113
  ? ""
107
114
  : `&x_cg_pro_api_key=${this.coinGeckoApiKey}`))).json();
108
- if (endpoint.includes("market_chart"))
109
- console.log("someJson", someJson);
110
115
  const castedRes = someJson;
111
116
  return castedRes;
112
117
  });
113
118
  }
114
119
  }
115
120
  exports.CoinGeckoApiHelpers = CoinGeckoApiHelpers;
121
+ /////////////////////////////////////////////////////////////////////
122
+ //// Private Static Class Members
123
+ /////////////////////////////////////////////////////////////////////
124
+ CoinGeckoApiHelpers.constants = {
125
+ coinApiIdsToCoinTypes: {
126
+ "usd-coin-wormhole-from-ethereum": [
127
+ "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN",
128
+ "0xe32d3ebafa42e6011b87ef1087bbc6053b499bf6f095807b9013aff5a6ecd7bb::coin::COIN",
129
+ "0x909cba62ce96d54de25bec9502de5ca7b4f28901747bbf96b76c2e63ec5f1cba::coin::COIN",
130
+ "0xdb9ed08481f9dd565fd36b834eb3c2cda1ee5f388048154807cffcb0267ed3b2::coin::COIN",
131
+ "0xb231fcda8bbddb31f2ef02e6161444aec64a514e2c89279584ac9806ce9cf037::coin::COIN",
132
+ ],
133
+ },
134
+ };
@@ -35,6 +35,7 @@ export declare class Helpers {
35
35
  static uniqueArray: <T>(arr: T[]) => T[];
36
36
  static sleep: (ms: number) => Promise<unknown>;
37
37
  static createUid: () => string;
38
+ static bifilter: <ArrayType>(array: ArrayType[], func: (item: ArrayType, index: number, arr: ArrayType[]) => boolean) => [trues: ArrayType[], falses: ArrayType[]];
38
39
  static filterObject: <Value>(obj: Record<string, Value>, predicate: (key: string, value: Value) => boolean) => Record<string, Value>;
39
40
  static isArrayOfStrings(value: unknown): value is string[];
40
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/general/utils/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,qBAAa,OAAO;IAKnB,gBAAuB,aAAa,iCAA2B;IAC/D,gBAAuB,MAAM,0BAAoB;IACjD,gBAAuB,WAAW,+BAAyB;IAC3D,gBAAuB,OAAO,2BAAqB;IACnD,gBAAuB,GAAG,uBAAiB;IAC3C,gBAAuB,YAAY,gCAA0B;IAM7D,OAAc,0BAA0B,SACjC,aAAa,KACjB,aAAa,CAAiC;IAEjD,OAAc,sBAAsB,SAC7B,aAAa,KACjB,aAAa,CAqBd;IAMF,OAAc,QAAQ,QAAS,MAAM,KAAG,OAAO,CAA6B;IAE5E,OAAc,GAAG,QAAS,MAAM,EAAE,YACQ;IAE1C,OAAc,SAAS,QAAS,MAAM,EAAE,YACU;IAElD,OAAc,WAAW,MAAO,MAAM,KAAK,MAAM,aAAa,MAAM,aACrB;IAE/C,OAAc,iBAAiB,MAC3B,MAAM,KACN,MAAM,aACE,MAAM,aACwC;IAE1D,OAAc,YAAY,MAAO,MAAM,KAAK,MAAM,YAAY,MAAM,aACA;IAEpE,OAAc,iBAAiB;oBAClB,MAAM,KAAK,MAAM,KAAG,MAAM;oBAC1B,MAAM,KAAK,MAAM,KAAG,MAAM;oBAC1B,MAAM,KAAK,MAAM,KAAG,MAAM;oBAC1B,MAAM,KAAK,MAAM,KAAG,MAAM;oBAE1B,MAAM,KAAK,MAAM,KAAG,MAAM;oBAC1B,MAAM,KAAK,MAAM,KAAG,MAAM;MACrC;IAMF,OAAc,yBAAyB,QAAS,MAAM,YACI;IAM1D,OAAc,mBAAmB,SAC1B,MAAM,iDAiBT;IAMJ,OAAc,QAAQ,sBAwBpB;IAEF,OAAc,UAAU,QAAS,GAAG,EAAE,YAcpC;IAEF,OAAc,WAAW,uBAA2C;IAEpE,OAAc,KAAK,OAAQ,MAAM,sBAA2C;IAE5E,OAAc,SAAS,eAC4C;IAEnE,OAAc,YAAY,uDAER,MAAM,mBAAmB,OAAO,2BAWjB;WAMnB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,EAAE;CAMjE"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/general/utils/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,qBAAa,OAAO;IAKnB,gBAAuB,aAAa,iCAA2B;IAC/D,gBAAuB,MAAM,0BAAoB;IACjD,gBAAuB,WAAW,+BAAyB;IAC3D,gBAAuB,OAAO,2BAAqB;IACnD,gBAAuB,GAAG,uBAAiB;IAC3C,gBAAuB,YAAY,gCAA0B;IAM7D,OAAc,0BAA0B,SACjC,aAAa,KACjB,aAAa,CAAiC;IAEjD,OAAc,sBAAsB,SAC7B,aAAa,KACjB,aAAa,CAqBd;IAMF,OAAc,QAAQ,QAAS,MAAM,KAAG,OAAO,CAA6B;IAE5E,OAAc,GAAG,QAAS,MAAM,EAAE,YACQ;IAE1C,OAAc,SAAS,QAAS,MAAM,EAAE,YACU;IAElD,OAAc,WAAW,MAAO,MAAM,KAAK,MAAM,aAAa,MAAM,aACrB;IAE/C,OAAc,iBAAiB,MAC3B,MAAM,KACN,MAAM,aACE,MAAM,aACwC;IAE1D,OAAc,YAAY,MAAO,MAAM,KAAK,MAAM,YAAY,MAAM,aACA;IAEpE,OAAc,iBAAiB;oBAClB,MAAM,KAAK,MAAM,KAAG,MAAM;oBAC1B,MAAM,KAAK,MAAM,KAAG,MAAM;oBAC1B,MAAM,KAAK,MAAM,KAAG,MAAM;oBAC1B,MAAM,KAAK,MAAM,KAAG,MAAM;oBAE1B,MAAM,KAAK,MAAM,KAAG,MAAM;oBAC1B,MAAM,KAAK,MAAM,KAAG,MAAM;MACrC;IAMF,OAAc,yBAAyB,QAAS,MAAM,YACI;IAM1D,OAAc,mBAAmB,SAC1B,MAAM,iDAiBT;IAMJ,OAAc,QAAQ,sBAwBpB;IAEF,OAAc,UAAU,QAAS,GAAG,EAAE,YAcpC;IAEF,OAAc,WAAW,uBAA2C;IAEpE,OAAc,KAAK,OAAQ,MAAM,sBAA2C;IAE5E,OAAc,SAAS,eAC4C;IAEnE,OAAc,QAAQ,iEAEU,MAAM,uBAAuB,OAAO,+CASlE;IAEF,OAAc,YAAY,uDAER,MAAM,mBAAmB,OAAO,2BAWjB;WAMnB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,EAAE;CAMjE"}
@@ -126,6 +126,14 @@ Helpers.indexOfMax = (arr) => {
126
126
  Helpers.uniqueArray = (arr) => [...new Set(arr)];
127
127
  Helpers.sleep = (ms) => new Promise((r) => setTimeout(r, ms));
128
128
  Helpers.createUid = () => Date.now().toString(36) + Math.random().toString(36).substring(2);
129
+ Helpers.bifilter = (array, func) => {
130
+ return array.reduce(([T, F], x, i, arr) => {
131
+ if (func(x, i, arr) === false)
132
+ return [T, [...F, x]];
133
+ else
134
+ return [[...T, x], F];
135
+ }, [[], []]);
136
+ };
129
137
  Helpers.filterObject = (obj, predicate) => Object.keys(obj).reduce((acc, key) => {
130
138
  const val = obj[key];
131
139
  if (!predicate(key, val))
@@ -9,11 +9,14 @@ export declare class CetusApi implements RouterApiInterface<CetusPoolObject> {
9
9
  private readonly Provider;
10
10
  readonly Helpers: CetusApiHelpers;
11
11
  constructor(Provider: AftermathApi);
12
- fetchPoolForCoinTypes: (inputs: {
13
- coinType1: CoinType;
14
- coinType2: CoinType;
15
- }) => Promise<CetusPoolObject>;
16
12
  fetchAllPools: () => Promise<CetusPoolObject[]>;
13
+ fetchPoolsForTrade: (inputs: {
14
+ coinInType: CoinType;
15
+ coinOutType: CoinType;
16
+ }) => Promise<{
17
+ partialMatchPools: CetusPoolObject[];
18
+ exactMatchPools: CetusPoolObject[];
19
+ }>;
17
20
  fetchSupportedCoins: () => Promise<string[]>;
18
21
  fetchTradeAmountOut: (inputs: {
19
22
  walletAddress: SuiAddress;
@@ -22,6 +25,10 @@ export declare class CetusApi implements RouterApiInterface<CetusPoolObject> {
22
25
  coinOutType: CoinType;
23
26
  coinInAmount: Balance;
24
27
  }) => Promise<Balance>;
28
+ otherCoinInPool: (inputs: {
29
+ coinType: CoinType;
30
+ pool: CetusPoolObject;
31
+ }) => string;
25
32
  fetchTradeTx: (inputs: {
26
33
  walletAddress: SuiAddress;
27
34
  pool: CetusPoolObject;
@@ -1 +1 @@
1
- {"version":3,"file":"cetusApi.d.ts","sourceRoot":"","sources":["../../../../src/packages/external/cetus/cetusApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8DAA8D,CAAC;AAGlG,qBAAa,QAAS,YAAW,kBAAkB,CAAC,eAAe,CAAC;IAWvD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IANrC,SAAgB,OAAO,kBAAC;gBAMK,QAAQ,EAAE,YAAY;IAa5C,qBAAqB,WAAkB;QAC7C,SAAS,EAAE,QAAQ,CAAC;QACpB,SAAS,EAAE,QAAQ,CAAC;KACpB,KAAG,QAAQ,eAAe,CAAC,CAE1B;IAEK,aAAa,mCAGlB;IAEK,mBAAmB,0BAQxB;IAMK,mBAAmB,WAAkB;QAC3C,aAAa,EAAE,UAAU,CAAC;QAC1B,IAAI,EAAE,eAAe,CAAC;QACtB,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;KACtB,KAAG,QAAQ,OAAO,CAAC,CAGlB;IAMK,YAAY,WAAY;QAC9B,aAAa,EAAE,UAAU,CAAC;QAC1B,IAAI,EAAE,eAAe,CAAC;QACtB,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;KACtB,KAAG,QAAQ,qBAAqB,CAAC,CAIhC;CACF"}
1
+ {"version":3,"file":"cetusApi.d.ts","sourceRoot":"","sources":["../../../../src/packages/external/cetus/cetusApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8DAA8D,CAAC;AAGlG,qBAAa,QAAS,YAAW,kBAAkB,CAAC,eAAe,CAAC;IAWvD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IANrC,SAAgB,OAAO,kBAAC;gBAMK,QAAQ,EAAE,YAAY;IAa5C,aAAa,mCAGlB;IAEK,kBAAkB,WAAY;QACpC,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;KACtB,KAAG,QAAQ;QACX,iBAAiB,EAAE,eAAe,EAAE,CAAC;QACrC,eAAe,EAAE,eAAe,EAAE,CAAC;KACnC,CAAC,CAEA;IAMK,mBAAmB,0BAQxB;IAEK,mBAAmB,WAAkB;QAC3C,aAAa,EAAE,UAAU,CAAC;QAC1B,IAAI,EAAE,eAAe,CAAC;QACtB,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;KACtB,KAAG,QAAQ,OAAO,CAAC,CAGlB;IAEK,eAAe,WAAY;QACjC,QAAQ,EAAE,QAAQ,CAAC;QACnB,IAAI,EAAE,eAAe,CAAC;KACtB,YAEC;IAMK,YAAY,WAAY;QAC9B,aAAa,EAAE,UAAU,CAAC;QAC1B,IAAI,EAAE,eAAe,CAAC;QACtB,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;KACtB,KAAG,QAAQ,qBAAqB,CAAC,CAIhC;CACF"}
@@ -24,25 +24,28 @@ class CetusApi {
24
24
  /////////////////////////////////////////////////////////////////////
25
25
  //// Objects
26
26
  /////////////////////////////////////////////////////////////////////
27
- this.fetchPoolForCoinTypes = (inputs) => __awaiter(this, void 0, void 0, function* () {
28
- return this.Helpers.fetchPoolForCoinTypes(inputs);
29
- });
30
27
  this.fetchAllPools = () => __awaiter(this, void 0, void 0, function* () {
31
28
  const pools = yield this.Helpers.fetchAllPools();
32
29
  return pools;
33
30
  });
31
+ this.fetchPoolsForTrade = (inputs) => {
32
+ return this.Helpers.fetchPoolsForTrade(inputs);
33
+ };
34
+ /////////////////////////////////////////////////////////////////////
35
+ //// Inspections
36
+ /////////////////////////////////////////////////////////////////////
34
37
  this.fetchSupportedCoins = () => __awaiter(this, void 0, void 0, function* () {
35
38
  const pools = yield this.Helpers.fetchAllPools();
36
39
  const allCoins = pools.reduce((acc, pool) => [...acc, pool.coinTypeA, pool.coinTypeB], []);
37
40
  return utils_1.Helpers.uniqueArray(allCoins);
38
41
  });
39
- /////////////////////////////////////////////////////////////////////
40
- //// Inspections
41
- /////////////////////////////////////////////////////////////////////
42
42
  this.fetchTradeAmountOut = (inputs) => __awaiter(this, void 0, void 0, function* () {
43
43
  const tradeResult = yield this.Helpers.fetchCalcTradeResult(inputs);
44
44
  return tradeResult.amountOut;
45
45
  });
46
+ this.otherCoinInPool = (inputs) => {
47
+ return cetusApiHelpers_1.CetusApiHelpers.otherCoinInPool(inputs);
48
+ };
46
49
  /////////////////////////////////////////////////////////////////////
47
50
  //// Transactions
48
51
  /////////////////////////////////////////////////////////////////////
@@ -15,10 +15,13 @@ export declare class CetusApiHelpers {
15
15
  };
16
16
  constructor(Provider: AftermathApi);
17
17
  fetchAllPools: () => Promise<CetusPoolObject[]>;
18
- fetchPoolForCoinTypes: (inputs: {
19
- coinType1: CoinType;
20
- coinType2: CoinType;
21
- }) => Promise<CetusPoolObject>;
18
+ fetchPoolsForTrade: (inputs: {
19
+ coinInType: CoinType;
20
+ coinOutType: CoinType;
21
+ }) => Promise<{
22
+ partialMatchPools: CetusPoolObject[];
23
+ exactMatchPools: CetusPoolObject[];
24
+ }>;
22
25
  tradeCoinAToCoinBTx: (inputs: {
23
26
  tx: TransactionBlock;
24
27
  poolObjectId: ObjectId;
@@ -136,6 +139,46 @@ export declare class CetusApiHelpers {
136
139
  index: number;
137
140
  resultIndex: number;
138
141
  })[];
142
+ flashTradeTx: (inputs: {
143
+ tx: TransactionBlock;
144
+ poolObjectId: ObjectId;
145
+ coinInType: CoinType;
146
+ coinOutType: CoinType;
147
+ coinTypeA: CoinType;
148
+ coinTypeB: CoinType;
149
+ } & ({
150
+ coinInAmount: Balance;
151
+ } | {
152
+ coinOutAmount: Balance;
153
+ })) => ({
154
+ kind: "Input";
155
+ index: number;
156
+ type?: "object" | "pure" | undefined;
157
+ value?: any;
158
+ } | {
159
+ kind: "GasCoin";
160
+ } | {
161
+ kind: "Result";
162
+ index: number;
163
+ } | {
164
+ kind: "NestedResult";
165
+ index: number;
166
+ resultIndex: number;
167
+ }) & ({
168
+ kind: "Input";
169
+ index: number;
170
+ type?: "object" | "pure" | undefined;
171
+ value?: any;
172
+ } | {
173
+ kind: "GasCoin";
174
+ } | {
175
+ kind: "Result";
176
+ index: number;
177
+ } | {
178
+ kind: "NestedResult";
179
+ index: number;
180
+ resultIndex: number;
181
+ })[];
139
182
  calcTradeResultTx: (inputs: {
140
183
  tx: TransactionBlock;
141
184
  poolObjectId: ObjectId;
@@ -190,8 +233,15 @@ export declare class CetusApiHelpers {
190
233
  coinOutType: CoinType;
191
234
  coinInAmount: Balance;
192
235
  }) => Promise<CetusCalcTradeResult>;
236
+ static otherCoinInPool: (inputs: {
237
+ coinType: CoinType;
238
+ pool: CetusPoolObject;
239
+ }) => string;
240
+ private fetchPoolForCoinTypes;
241
+ private fetchPoolsForCoinType;
193
242
  private static poolFromSuiObjectResponse;
194
243
  private static isPoolForCoinTypes;
244
+ private static isPoolForCoinType;
195
245
  private static isCoinA;
196
246
  }
197
247
  //# sourceMappingURL=cetusApiHelpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cetusApiHelpers.d.ts","sourceRoot":"","sources":["../../../../src/packages/external/cetus/cetusApiHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,QAAQ,EACR,UAAU,EAEV,mBAAmB,EACnB,gBAAgB,EAEhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EACN,aAAa,EACb,OAAO,EACP,cAAc,EACd,QAAQ,EACR,cAAc,EACd,sBAAsB,EACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAMrE,qBAAa,eAAe;aA8BC,QAAQ,EAAE,YAAY;IAzBlD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAK/B;IAMF,SAAgB,SAAS,EAAE;QAC1B,KAAK,EAAE,cAAc,CAAC;QACtB,KAAK,EAAE,cAAc,CAAC;QACtB,aAAa,EAAE,sBAAsB,CAAC;KACtC,CAAC;IAEF,SAAgB,WAAW,EAAE;QAC5B,IAAI,EAAE,aAAa,CAAC;KACpB,CAAC;gBAM0B,QAAQ,EAAE,YAAY;IA8B3C,aAAa,mCAalB;IAEK,qBAAqB,WAAkB;QAC7C,SAAS,EAAE,QAAQ,CAAC;QACpB,SAAS,EAAE,QAAQ,CAAC;KACpB,8BAeC;IAMK,mBAAmB,WACjB;QACP,EAAE,EAAE,gBAAgB,CAAC;QACrB,YAAY,EAAE,QAAQ,CAAC;QACvB,QAAQ,EAAE,QAAQ,GAAG,mBAAmB,CAAC;QACzC,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;KACtB,GAAG,CACD;QACA,YAAY,EAAE,OAAO,CAAC;KACrB,GACD;QACA,aAAa,EAAE,OAAO,CAAC;KACtB,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAuCA;IAEK,mBAAmB,WACjB;QACP,EAAE,EAAE,gBAAgB,CAAC;QACrB,YAAY,EAAE,QAAQ,CAAC;QACvB,QAAQ,EAAE,QAAQ,GAAG,mBAAmB,CAAC;QACzC,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;KACtB,GAAG,CACD;QACA,YAAY,EAAE,OAAO,CAAC;KACrB,GACD;QACA,aAAa,EAAE,OAAO,CAAC;KACtB,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAuCA;IAEK,OAAO,WACL;QACP,EAAE,EAAE,gBAAgB,CAAC;QACrB,IAAI,EAAE,eAAe,CAAC;QACtB,QAAQ,EAAE,QAAQ,GAAG,mBAAmB,CAAC;QACzC,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;KACtB,GAAG,CACD;QACA,YAAY,EAAE,OAAO,CAAC;KACrB,GACD;QACA,aAAa,EAAE,OAAO,CAAC;KACtB,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAaA;IAMK,iBAAiB,WACf;QACP,EAAE,EAAE,gBAAgB,CAAC;QACrB,YAAY,EAAE,QAAQ,CAAC;QACvB,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;QACtB,SAAS,EAAE,QAAQ,CAAC;QACpB,SAAS,EAAE,QAAQ,CAAC;KACpB,GAAG,CACD;QACA,YAAY,EAAE,OAAO,CAAC;KACrB,GACD;QACA,aAAa,EAAE,OAAO,CAAC;KACtB,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAmDC;IAMI,iBAAiB,WAAkB;QACzC,aAAa,EAAE,UAAU,CAAC;QAC1B,IAAI,EAAE,eAAe,CAAC;QACtB,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;KACtB,KAAG,QAAQ,gBAAgB,CAAC,CAqB3B;IAMK,oBAAoB,WAAkB;QAC5C,aAAa,EAAE,UAAU,CAAC;QAC1B,IAAI,EAAE,eAAe,CAAC;QACtB,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;KACtB,KAAG,QAAQ,oBAAoB,CAAC,CA6C/B;IAUF,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAkBtC;IAMF,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAa/B;IAEF,OAAO,CAAC,MAAM,CAAC,OAAO,CACmC;CACzD"}
1
+ {"version":3,"file":"cetusApiHelpers.d.ts","sourceRoot":"","sources":["../../../../src/packages/external/cetus/cetusApiHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,QAAQ,EACR,UAAU,EAEV,mBAAmB,EACnB,gBAAgB,EAGhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EACN,aAAa,EACb,OAAO,EAEP,cAAc,EACd,QAAQ,EACR,cAAc,EACd,sBAAsB,EACtB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAMrE,qBAAa,eAAe;aAmCC,QAAQ,EAAE,YAAY;IA9BlD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAU/B;IAMF,SAAgB,SAAS,EAAE;QAC1B,KAAK,EAAE,cAAc,CAAC;QACtB,KAAK,EAAE,cAAc,CAAC;QACtB,aAAa,EAAE,sBAAsB,CAAC;KACtC,CAAC;IAEF,SAAgB,WAAW,EAAE;QAC5B,IAAI,EAAE,aAAa,CAAC;KACpB,CAAC;gBAM0B,QAAQ,EAAE,YAAY;IA8B3C,aAAa,mCAqClB;IAEK,kBAAkB,WAAkB;QAC1C,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;KACtB;2BACmB,eAAe,EAAE;yBACnB,eAAe,EAAE;OAoBjC;IAMK,mBAAmB,WACjB;QACP,EAAE,EAAE,gBAAgB,CAAC;QACrB,YAAY,EAAE,QAAQ,CAAC;QACvB,QAAQ,EAAE,QAAQ,GAAG,mBAAmB,CAAC;QACzC,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;KACtB,GAAG,CACD;QACA,YAAY,EAAE,OAAO,CAAC;KACrB,GACD;QACA,aAAa,EAAE,OAAO,CAAC;KACtB,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAgCA;IAEK,mBAAmB,WACjB;QACP,EAAE,EAAE,gBAAgB,CAAC;QACrB,YAAY,EAAE,QAAQ,CAAC;QACvB,QAAQ,EAAE,QAAQ,GAAG,mBAAmB,CAAC;QACzC,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;KACtB,GAAG,CACD;QACA,YAAY,EAAE,OAAO,CAAC;KACrB,GACD;QACA,aAAa,EAAE,OAAO,CAAC;KACtB,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAgCA;IAEK,OAAO,WACL;QACP,EAAE,EAAE,gBAAgB,CAAC;QACrB,IAAI,EAAE,eAAe,CAAC;QACtB,QAAQ,EAAE,QAAQ,GAAG,mBAAmB,CAAC;QACzC,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;KACtB,GAAG,CACD;QACA,YAAY,EAAE,OAAO,CAAC;KACrB,GACD;QACA,aAAa,EAAE,OAAO,CAAC;KACtB,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAaA;IAEK,YAAY,WACV;QACP,EAAE,EAAE,gBAAgB,CAAC;QACrB,YAAY,EAAE,QAAQ,CAAC;QACvB,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;QACtB,SAAS,EAAE,QAAQ,CAAC;QACpB,SAAS,EAAE,QAAQ,CAAC;KACpB,GAAG,CACD;QACA,YAAY,EAAE,OAAO,CAAC;KACrB,GACD;QACA,aAAa,EAAE,OAAO,CAAC;KACtB,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA6BA;IAMK,iBAAiB,WACf;QACP,EAAE,EAAE,gBAAgB,CAAC;QACrB,YAAY,EAAE,QAAQ,CAAC;QACvB,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;QACtB,SAAS,EAAE,QAAQ,CAAC;QACpB,SAAS,EAAE,QAAQ,CAAC;KACpB,GAAG,CACD;QACA,YAAY,EAAE,OAAO,CAAC;KACrB,GACD;QACA,aAAa,EAAE,OAAO,CAAC;KACtB,CACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA6CC;IAMI,iBAAiB,WAAkB;QACzC,aAAa,EAAE,UAAU,CAAC;QAC1B,IAAI,EAAE,eAAe,CAAC;QACtB,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;KACtB,KAAG,QAAQ,gBAAgB,CAAC,CAqB3B;IAMK,oBAAoB,WAAkB;QAC5C,aAAa,EAAE,UAAU,CAAC;QAC1B,IAAI,EAAE,eAAe,CAAC;QACtB,UAAU,EAAE,QAAQ,CAAC;QACrB,WAAW,EAAE,QAAQ,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;KACtB,KAAG,QAAQ,oBAAoB,CAAC,CA6C/B;IAUF,OAAc,eAAe,WAAY;QACxC,QAAQ,EAAE,QAAQ,CAAC;QACnB,IAAI,EAAE,eAAe,CAAC;KACtB,YAIC;IAUF,OAAO,CAAC,qBAAqB,CAkB3B;IAEF,OAAO,CAAC,qBAAqB,CAW3B;IAUF,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAkBtC;IAMF,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAa/B;IAEF,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAU9B;IAEF,OAAO,CAAC,MAAM,CAAC,OAAO,CAMpB;CACF"}
@@ -8,6 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var _a;
11
12
  Object.defineProperty(exports, "__esModule", { value: true });
12
13
  exports.CetusApiHelpers = void 0;
13
14
  const sui_js_1 = require("@mysten/sui.js");
@@ -19,7 +20,7 @@ class CetusApiHelpers {
19
20
  //// Constructor
20
21
  /////////////////////////////////////////////////////////////////////
21
22
  constructor(Provider) {
22
- var _a;
23
+ var _b;
23
24
  this.Provider = Provider;
24
25
  /////////////////////////////////////////////////////////////////////
25
26
  //// Public Methods
@@ -29,84 +30,109 @@ class CetusApiHelpers {
29
30
  /////////////////////////////////////////////////////////////////////
30
31
  this.fetchAllPools = () => __awaiter(this, void 0, void 0, function* () {
31
32
  const poolsSimpleInfo = yield this.Provider.DynamicFields().fetchCastAllDynamicFieldsOfType(this.addresses.cetus.objects.poolsTable, (objectIds) => this.Provider.Objects().fetchCastObjectBatch(objectIds, CetusApiHelpers.poolFromSuiObjectResponse), () => true);
32
- return poolsSimpleInfo;
33
+ const poolsMoreInfo = yield this.Provider.Objects().fetchCastObjectBatch(poolsSimpleInfo.map((poolInfo) => poolInfo.id), (data) => {
34
+ const fields = (0, sui_js_1.getObjectFields)(data);
35
+ if (!fields)
36
+ throw new Error("no fields found on cetus pool object");
37
+ const liquidity = BigInt(fields.liquidity);
38
+ const isPaused = fields.is_pause;
39
+ return {
40
+ liquidity,
41
+ isPaused,
42
+ };
43
+ });
44
+ const usablePools = poolsSimpleInfo.filter((_, index) => !poolsMoreInfo[index].isPaused &&
45
+ poolsMoreInfo[index].liquidity > BigInt(0));
46
+ return usablePools;
33
47
  });
34
- this.fetchPoolForCoinTypes = (inputs) => __awaiter(this, void 0, void 0, function* () {
35
- const allPools = yield this.fetchAllPools();
36
- // NOTE: will there ever be more than 1 valid pool (is this unsafe ?)
37
- const foundPool = allPools.find((pool) => CetusApiHelpers.isPoolForCoinTypes(Object.assign({ pool }, inputs)));
38
- if (!foundPool)
39
- throw new Error("no cetus pools found for given coin types");
40
- return foundPool;
48
+ this.fetchPoolsForTrade = (inputs) => __awaiter(this, void 0, void 0, function* () {
49
+ const possiblePools = yield this.fetchPoolsForCoinType({
50
+ coinType: inputs.coinOutType,
51
+ });
52
+ const [exactMatchPools, partialMatchPools] = utils_1.Helpers.bifilter(possiblePools, (pool) => CetusApiHelpers.isPoolForCoinTypes({
53
+ pool,
54
+ coinType1: inputs.coinInType,
55
+ coinType2: inputs.coinOutType,
56
+ }));
57
+ return {
58
+ exactMatchPools,
59
+ partialMatchPools,
60
+ };
41
61
  });
42
62
  /////////////////////////////////////////////////////////////////////
43
63
  //// Transaction Commands
44
64
  /////////////////////////////////////////////////////////////////////
45
65
  this.tradeCoinAToCoinBTx = (inputs) => {
46
66
  const { tx, coinInId } = inputs;
67
+ const isGivenAmountIn = "coinInAmount" in inputs;
47
68
  return tx.moveCall({
48
- target: utils_1.Helpers.transactions.createTransactionTarget(this.addresses.cetus.packages.scripts, CetusApiHelpers.constants.moduleNames.poolScript, "swap_a2b"),
69
+ target: utils_1.Helpers.transactions.createTransactionTarget(this.addresses.cetus.packages.wrapper, CetusApiHelpers.constants.moduleNames.wrapper, isGivenAmountIn ? "swap_a_to_b_by_a" : "swap_a_to_b_by_b"),
49
70
  typeArguments: [inputs.coinInType, inputs.coinOutType],
50
71
  arguments: [
51
72
  tx.object(this.addresses.cetus.objects.globalConfig),
52
73
  tx.object(inputs.poolObjectId),
53
- tx.makeMoveVec({
54
- objects: [
55
- typeof coinInId === "string"
56
- ? tx.object(coinInId)
57
- : coinInId,
58
- ],
59
- }),
60
- tx.pure("coinInAmount" in inputs, "bool"),
61
- tx.pure("coinInAmount" in inputs
62
- ? inputs.coinInAmount
63
- : inputs.coinOutAmount, "u64"),
64
- tx.pure(
65
- // "coinInAmount" in inputs
66
- // ? inputs.coinInAmount
67
- // : inputs.coinOutAmount,
68
- "0", "u64"),
69
- tx.pure(BigInt("4295048016"), "u128"),
74
+ typeof coinInId === "string" ? tx.object(coinInId) : coinInId,
75
+ ...(isGivenAmountIn
76
+ ? []
77
+ : [tx.pure(inputs.coinOutAmount, "u64")]),
78
+ tx.pure(CetusApiHelpers.constants.inputs.minSqrtPriceLimit, "u128"),
70
79
  tx.object(sui_1.Sui.constants.addresses.suiClockId),
80
+ tx.object(this.addresses.pools.objects.protocolFeeVault),
81
+ tx.object(this.addresses.pools.objects.treasury),
82
+ tx.object(this.addresses.pools.objects.insuranceFund),
83
+ tx.object(this.addresses.referralVault.objects.referralVault),
71
84
  ],
72
85
  });
73
86
  };
74
87
  this.tradeCoinBToCoinATx = (inputs) => {
75
88
  const { tx, coinInId } = inputs;
89
+ const isGivenAmountIn = "coinInAmount" in inputs;
76
90
  return tx.moveCall({
77
- target: utils_1.Helpers.transactions.createTransactionTarget(this.addresses.cetus.packages.scripts, CetusApiHelpers.constants.moduleNames.poolScript, "swap_b2a"),
91
+ target: utils_1.Helpers.transactions.createTransactionTarget(this.addresses.cetus.packages.wrapper, CetusApiHelpers.constants.moduleNames.wrapper, isGivenAmountIn ? "swap_b_to_a_by_b" : "swap_b_to_a_by_a"),
78
92
  typeArguments: [inputs.coinOutType, inputs.coinInType],
79
93
  arguments: [
80
94
  tx.object(this.addresses.cetus.objects.globalConfig),
81
95
  tx.object(inputs.poolObjectId),
82
- tx.makeMoveVec({
83
- objects: [
84
- typeof coinInId === "string"
85
- ? tx.object(coinInId)
86
- : coinInId,
87
- ],
88
- }),
89
- tx.pure("coinInAmount" in inputs, "bool"),
90
- tx.pure("coinInAmount" in inputs
91
- ? inputs.coinInAmount
92
- : inputs.coinOutAmount, "u64"),
93
- tx.pure(
94
- // "coinInAmount" in inputs
95
- // ? inputs.coinInAmount
96
- // : inputs.coinOutAmount,
97
- "0", "u64"),
98
- tx.pure(BigInt("79226673515401279992447579055"), "u128"),
96
+ typeof coinInId === "string" ? tx.object(coinInId) : coinInId,
97
+ ...(isGivenAmountIn
98
+ ? []
99
+ : [tx.pure(inputs.coinOutAmount, "u64")]),
100
+ tx.pure(CetusApiHelpers.constants.inputs.maxSqrtPriceLimit, "u128"),
99
101
  tx.object(sui_1.Sui.constants.addresses.suiClockId),
102
+ tx.object(this.addresses.pools.objects.protocolFeeVault),
103
+ tx.object(this.addresses.pools.objects.treasury),
104
+ tx.object(this.addresses.pools.objects.insuranceFund),
105
+ tx.object(this.addresses.referralVault.objects.referralVault),
100
106
  ],
101
107
  });
102
108
  };
103
109
  this.tradeTx = (inputs) => {
104
110
  const { coinInType, pool } = inputs;
105
111
  const commandInputs = Object.assign(Object.assign({}, inputs), { poolObjectId: pool.id });
106
- if (CetusApiHelpers.isCoinA(coinInType, pool))
112
+ if (CetusApiHelpers.isCoinA({ pool, coinType: coinInType }))
107
113
  return this.tradeCoinAToCoinBTx(commandInputs);
108
114
  return this.tradeCoinBToCoinATx(commandInputs);
109
115
  };
116
+ this.flashTradeTx = (inputs) => {
117
+ const { tx } = inputs;
118
+ const isCoinAToCoinB = inputs.coinInType === inputs.coinTypeA;
119
+ const sqrtPriceLimit = isCoinAToCoinB
120
+ ? CetusApiHelpers.constants.inputs.minSqrtPriceLimit
121
+ : CetusApiHelpers.constants.inputs.maxSqrtPriceLimit;
122
+ return tx.moveCall({
123
+ target: utils_1.Helpers.transactions.createTransactionTarget(this.addresses.cetus.packages.clmm, CetusApiHelpers.constants.moduleNames.pool, "flash_swap"),
124
+ typeArguments: [inputs.coinTypeA, inputs.coinTypeB],
125
+ arguments: [
126
+ tx.object(inputs.poolObjectId),
127
+ tx.pure(isCoinAToCoinB, "bool"),
128
+ tx.pure("coinInAmount" in inputs, "bool"),
129
+ tx.pure("coinInAmount" in inputs
130
+ ? inputs.coinInAmount
131
+ : inputs.coinOutAmount, "u64"),
132
+ tx.pure(sqrtPriceLimit, "u128"), // sqrt_price_limit
133
+ ],
134
+ });
135
+ };
110
136
  /////////////////////////////////////////////////////////////////////
111
137
  //// Transaction Inspection Commands
112
138
  /////////////////////////////////////////////////////////////////////
@@ -175,7 +201,26 @@ class CetusApiHelpers {
175
201
  feeRate: BigInt(data.fee_rate),
176
202
  };
177
203
  });
178
- const cetus = (_a = this.Provider.addresses.externalRouter) === null || _a === void 0 ? void 0 : _a.cetus;
204
+ /////////////////////////////////////////////////////////////////////
205
+ //// Private Methods
206
+ /////////////////////////////////////////////////////////////////////
207
+ /////////////////////////////////////////////////////////////////////
208
+ //// Objects
209
+ /////////////////////////////////////////////////////////////////////
210
+ this.fetchPoolForCoinTypes = (inputs) => __awaiter(this, void 0, void 0, function* () {
211
+ const allPools = yield this.fetchAllPools();
212
+ // NOTE: will there ever be more than 1 valid pool (is this unsafe ?)
213
+ const foundPool = allPools.find((pool) => CetusApiHelpers.isPoolForCoinTypes(Object.assign({ pool }, inputs)));
214
+ if (!foundPool)
215
+ throw new Error("no cetus pools found for given coin types");
216
+ return foundPool;
217
+ });
218
+ this.fetchPoolsForCoinType = (inputs) => __awaiter(this, void 0, void 0, function* () {
219
+ const allPools = yield this.fetchAllPools();
220
+ const foundPools = allPools.filter((pool) => CetusApiHelpers.isPoolForCoinType(Object.assign({ pool }, inputs)));
221
+ return foundPools;
222
+ });
223
+ const cetus = (_b = this.Provider.addresses.externalRouter) === null || _b === void 0 ? void 0 : _b.cetus;
179
224
  const pools = this.Provider.addresses.pools;
180
225
  const referralVault = this.Provider.addresses.referralVault;
181
226
  if (!cetus || !pools || !referralVault)
@@ -192,6 +237,7 @@ class CetusApiHelpers {
192
237
  }
193
238
  }
194
239
  exports.CetusApiHelpers = CetusApiHelpers;
240
+ _a = CetusApiHelpers;
195
241
  /////////////////////////////////////////////////////////////////////
196
242
  //// Constants
197
243
  /////////////////////////////////////////////////////////////////////
@@ -199,17 +245,33 @@ CetusApiHelpers.constants = {
199
245
  moduleNames: {
200
246
  poolScript: "pool_script",
201
247
  pool: "pool",
248
+ wrapper: "cetus",
249
+ },
250
+ inputs: {
251
+ minSqrtPriceLimit: BigInt("4295048016"),
252
+ maxSqrtPriceLimit: BigInt("79226673515401279992447579055"),
202
253
  },
203
254
  };
204
255
  /////////////////////////////////////////////////////////////////////
256
+ //// Public Static Methods
257
+ /////////////////////////////////////////////////////////////////////
258
+ /////////////////////////////////////////////////////////////////////
259
+ //// Helpers
260
+ /////////////////////////////////////////////////////////////////////
261
+ CetusApiHelpers.otherCoinInPool = (inputs) => {
262
+ return _a.isCoinA(inputs)
263
+ ? inputs.pool.coinTypeB
264
+ : inputs.pool.coinTypeA;
265
+ };
266
+ /////////////////////////////////////////////////////////////////////
205
267
  //// Private Static Methods
206
268
  /////////////////////////////////////////////////////////////////////
207
269
  /////////////////////////////////////////////////////////////////////
208
270
  //// Casting
209
271
  /////////////////////////////////////////////////////////////////////
210
272
  CetusApiHelpers.poolFromSuiObjectResponse = (data) => {
211
- var _a;
212
- const content = (_a = data.data) === null || _a === void 0 ? void 0 : _a.content;
273
+ var _b;
274
+ const content = (_b = data.data) === null || _b === void 0 ? void 0 : _b.content;
213
275
  if ((content === null || content === void 0 ? void 0 : content.dataType) !== "moveObject")
214
276
  throw new Error("sui object response is not an object");
215
277
  const fields = content.fields.value.fields.value.fields;
@@ -229,4 +291,12 @@ CetusApiHelpers.isPoolForCoinTypes = (inputs) => {
229
291
  (pool.coinTypeA === utils_1.Helpers.addLeadingZeroesToType(coinType2) &&
230
292
  pool.coinTypeB === utils_1.Helpers.addLeadingZeroesToType(coinType1)));
231
293
  };
232
- CetusApiHelpers.isCoinA = (coin, pool) => utils_1.Helpers.addLeadingZeroesToType(coin) === pool.coinTypeA;
294
+ CetusApiHelpers.isPoolForCoinType = (inputs) => {
295
+ const { pool, coinType } = inputs;
296
+ return (pool.coinTypeA === utils_1.Helpers.addLeadingZeroesToType(coinType) ||
297
+ pool.coinTypeB === utils_1.Helpers.addLeadingZeroesToType(coinType));
298
+ };
299
+ CetusApiHelpers.isCoinA = (inputs) => {
300
+ const { coinType, pool } = inputs;
301
+ return utils_1.Helpers.addLeadingZeroesToType(coinType) === pool.coinTypeA;
302
+ };