@7kprotocol/sdk-ts 3.4.2-beta.5 → 3.4.2-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -178,7 +178,7 @@ const quotes = await metaAg.quote({
178
178
 
179
179
  // Find the best quote
180
180
  const bestQuote = quotes.reduce((best, current) =>
181
- Number(current.amountOut) > Number(best.amountOut) ? current : best
181
+ Number(current.amountOut) > Number(best.amountOut) ? current : best,
182
182
  );
183
183
  ```
184
184
 
@@ -256,7 +256,7 @@ const coinIn = coinWithBalance({
256
256
  import { getTokenPrice, getTokenPrices, getSuiPrice } from "@7kprotocol/sdk-ts";
257
257
 
258
258
  const tokenPrice = await getTokenPrice(
259
- "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC"
259
+ "0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC",
260
260
  );
261
261
 
262
262
  const tokenPrices = await getTokenPrices([
@@ -70,23 +70,20 @@ class MetaAg {
70
70
  const p = this.providers[provider];
71
71
  if (p)
72
72
  return p;
73
+ const providerOptions = this.options.providers[provider];
74
+ (0, condition_1.assert)(!!providerOptions, `Provider not found: ${provider}`);
75
+ // eslint-disable-next-line no-case-declarations
73
76
  switch (provider) {
74
77
  case metaAg_1.EProvider.BLUEFIN7K:
75
- const bluefinOptions = this.options.providers[provider];
76
- (0, condition_1.assert)(!!bluefinOptions, `Provider not found: ${provider}`);
77
- this.providers[metaAg_1.EProvider.BLUEFIN7K] = new bluefin_1.BluefinProvider(bluefinOptions, this.options, this.client);
78
+ this.providers[metaAg_1.EProvider.BLUEFIN7K] = new bluefin_1.BluefinProvider(providerOptions, this.options, this.client);
78
79
  break;
79
80
  case metaAg_1.EProvider.FLOWX:
80
- const flowxOptions = this.options.providers[provider];
81
- (0, condition_1.assert)(!!flowxOptions, `Provider not found: ${provider}`);
82
81
  const { FlowxProvider } = await Promise.resolve().then(() => __importStar(require("./providers/flowx"))).catch(catchImportError(metaAg_1.EProvider.FLOWX));
83
- this.providers[metaAg_1.EProvider.FLOWX] = new FlowxProvider(flowxOptions, this.options, this.client);
82
+ this.providers[metaAg_1.EProvider.FLOWX] = new FlowxProvider(providerOptions, this.options, this.client);
84
83
  break;
85
84
  case metaAg_1.EProvider.CETUS:
86
- const cetusOptions = this.options.providers[provider];
87
- (0, condition_1.assert)(!!cetusOptions, `Provider not found: ${provider}`);
88
85
  const { CetusProvider } = await Promise.resolve().then(() => __importStar(require("./providers/cetus"))).catch(catchImportError(metaAg_1.EProvider.CETUS));
89
- this.providers[metaAg_1.EProvider.CETUS] = new CetusProvider(cetusOptions, this.options, this.client);
86
+ this.providers[metaAg_1.EProvider.CETUS] = new CetusProvider(providerOptions, this.options, this.client);
90
87
  break;
91
88
  default:
92
89
  throw new Error(`Provider not supported: ${provider}`);
@@ -129,7 +126,9 @@ class MetaAg {
129
126
  if (simulation) {
130
127
  if (simulation.onSimulated) {
131
128
  this._simulate(provider, quote, simulation).then((payload) => {
132
- payload && simulation.onSimulated?.(payload);
129
+ if (payload) {
130
+ simulation.onSimulated?.(payload);
131
+ }
133
132
  });
134
133
  }
135
134
  else {
@@ -168,8 +167,40 @@ class MetaAg {
168
167
  (0, condition_1.assert)(!!provider, `Provider not found: ${options.quote.provider}`);
169
168
  const coinOut = await provider.swap(options);
170
169
  options.tx.add(metaSettle(options.quote, coinOut, slippageBps ?? this.options.slippageBps ?? 100, this.options.tipBps, this.options.partner, this.options.partnerCommissionBps));
170
+ options.tx.setSenderIfNotSet(options.signer);
171
171
  return coinOut;
172
172
  }
173
+ /**
174
+ * Update meta aggregator options
175
+ * @param options - update options payload
176
+ */
177
+ updateMetaAgOptions(options) {
178
+ if (Object.keys(options).length === 0)
179
+ return;
180
+ this.options.slippageBps = options.slippageBps ?? this.options.slippageBps;
181
+ this.options.partner = options.partner ?? this.options.partner;
182
+ this.options.partnerCommissionBps =
183
+ options.partnerCommissionBps ?? this.options.partnerCommissionBps;
184
+ this.options.tipBps = options.tipBps ?? this.options.tipBps;
185
+ if (options.fullnodeUrl &&
186
+ options.fullnodeUrl !== this.options.fullnodeUrl) {
187
+ this.client = new client_1.SuiClient({ url: options.fullnodeUrl });
188
+ this.inspector = new SuiClientUtils_1.SuiClientUtils(this.client);
189
+ this.options.fullnodeUrl = options.fullnodeUrl;
190
+ }
191
+ if (options.hermesApi && options.hermesApi !== this.options.hermesApi) {
192
+ this.providers = {};
193
+ this.options.hermesApi = options.hermesApi;
194
+ }
195
+ // if update provider's options, we need to re-initialize the provider
196
+ for (const [provider, opt] of Object.entries(options.providers || {})) {
197
+ this.options.providers[provider] = {
198
+ ...opt,
199
+ ...this.options.providers[provider],
200
+ };
201
+ delete this.providers[provider];
202
+ }
203
+ }
173
204
  }
174
205
  exports.MetaAg = MetaAg;
175
206
  /**
@@ -20,7 +20,8 @@ class BluefinProvider {
20
20
  this.kind = metaAg_1.EProvider.BLUEFIN7K;
21
21
  const pythClient = new pyth_sui_js_1.SuiPythClient(client, PYTH_STATE_ID, WORMHOLE_STATE_ID);
22
22
  const pythConnection = new pyth_sui_js_1.SuiPriceServiceConnection(this.metaOptions.hermesApi);
23
- options.apiKey && config_1.Config.setApiKey(options.apiKey);
23
+ if (options.apiKey)
24
+ config_1.Config.setApiKey(options.apiKey);
24
25
  config_1.Config.setSuiClient(client);
25
26
  config_1.Config.setPythClient(pythClient);
26
27
  config_1.Config.setPythConnection(pythConnection);
@@ -25,13 +25,13 @@ class FlowxProvider {
25
25
  maxHops: this.options.maxHops,
26
26
  splitDistributionPercent: this.options.splitDistributionPercent,
27
27
  });
28
- const { expectedAmount } = (0, buildTx_1.getExpectedReturn)(quote.amountOut.toString(), 0, this.metaOptions.partnerCommissionBps ?? 0, this.metaOptions.tipBps ?? 0);
28
+ const { expectedAmount } = (0, buildTx_1.getExpectedReturn)(quote.amountOut?.toString() ?? "0", 0, this.metaOptions.partnerCommissionBps ?? 0, this.metaOptions.tipBps ?? 0);
29
29
  return {
30
30
  id: (0, uuid_1.v4)(),
31
31
  provider: metaAg_1.EProvider.FLOWX,
32
32
  quote: quote,
33
- amountIn: quote.amountIn.toString(),
34
- rawAmountOut: quote.amountOut.toString(),
33
+ amountIn: quote.amountIn?.toString() ?? "0",
34
+ rawAmountOut: quote.amountOut?.toString() ?? "0",
35
35
  amountOut: expectedAmount,
36
36
  coinTypeIn: quoteOptions.coinInType,
37
37
  coinTypeOut: quoteOptions.coinOutType,
@@ -24,5 +24,10 @@ export declare class MetaAg {
24
24
  * @returns coin out object, you must consume it by transferObjects, or other sub sequence commands
25
25
  */
26
26
  swap(options: MetaSwapOptions, slippageBps?: number): Promise<TransactionObjectArgument>;
27
+ /**
28
+ * Update meta aggregator options
29
+ * @param options - update options payload
30
+ */
31
+ updateMetaAgOptions(options: MetaAgOptions): void;
27
32
  }
28
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/metaAg/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAY,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAGL,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EAGL,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAa5B,qBAAa,MAAM;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,OAAO,CAA0B;gBAC7B,OAAO,CAAC,EAAE,aAAa;YAkBrB,YAAY;YA4CZ,SAAS;YAiDT,MAAM;IAwBpB;;;;;OAKG;IACG,KAAK,CACT,OAAO,EAAE,gBAAgB,EACzB,UAAU,CAAC,EAAE,qBAAqB,GACjC,OAAO,CAAC,SAAS,EAAE,CAAC;IAgBvB;;;;;OAKG;IACG,IAAI,CACR,OAAO,EAAE,eAAe,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,yBAAyB,CAAC;CAgBtC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/metaAg/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAY,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAGL,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EAML,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAa5B,qBAAa,MAAM;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,OAAO,CAA0B;gBAC7B,OAAO,CAAC,EAAE,aAAa;YAkBrB,YAAY;YAyCZ,SAAS;YAiDT,MAAM;IA0BpB;;;;;OAKG;IACG,KAAK,CACT,OAAO,EAAE,gBAAgB,EACzB,UAAU,CAAC,EAAE,qBAAqB,GACjC,OAAO,CAAC,SAAS,EAAE,CAAC;IAgBvB;;;;;OAKG;IACG,IAAI,CACR,OAAO,EAAE,eAAe,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,yBAAyB,CAAC;IAkBrC;;;OAGG;IACH,mBAAmB,CAAC,OAAO,EAAE,aAAa;CA4B3C"}
@@ -37,23 +37,20 @@ export class MetaAg {
37
37
  const p = this.providers[provider];
38
38
  if (p)
39
39
  return p;
40
+ const providerOptions = this.options.providers[provider];
41
+ assert(!!providerOptions, `Provider not found: ${provider}`);
42
+ // eslint-disable-next-line no-case-declarations
40
43
  switch (provider) {
41
44
  case EProvider.BLUEFIN7K:
42
- const bluefinOptions = this.options.providers[provider];
43
- assert(!!bluefinOptions, `Provider not found: ${provider}`);
44
- this.providers[EProvider.BLUEFIN7K] = new BluefinProvider(bluefinOptions, this.options, this.client);
45
+ this.providers[EProvider.BLUEFIN7K] = new BluefinProvider(providerOptions, this.options, this.client);
45
46
  break;
46
47
  case EProvider.FLOWX:
47
- const flowxOptions = this.options.providers[provider];
48
- assert(!!flowxOptions, `Provider not found: ${provider}`);
49
48
  const { FlowxProvider } = await import("./providers/flowx").catch(catchImportError(EProvider.FLOWX));
50
- this.providers[EProvider.FLOWX] = new FlowxProvider(flowxOptions, this.options, this.client);
49
+ this.providers[EProvider.FLOWX] = new FlowxProvider(providerOptions, this.options, this.client);
51
50
  break;
52
51
  case EProvider.CETUS:
53
- const cetusOptions = this.options.providers[provider];
54
- assert(!!cetusOptions, `Provider not found: ${provider}`);
55
52
  const { CetusProvider } = await import("./providers/cetus").catch(catchImportError(EProvider.CETUS));
56
- this.providers[EProvider.CETUS] = new CetusProvider(cetusOptions, this.options, this.client);
53
+ this.providers[EProvider.CETUS] = new CetusProvider(providerOptions, this.options, this.client);
57
54
  break;
58
55
  default:
59
56
  throw new Error(`Provider not supported: ${provider}`);
@@ -96,7 +93,9 @@ export class MetaAg {
96
93
  if (simulation) {
97
94
  if (simulation.onSimulated) {
98
95
  this._simulate(provider, quote, simulation).then((payload) => {
99
- payload && simulation.onSimulated?.(payload);
96
+ if (payload) {
97
+ simulation.onSimulated?.(payload);
98
+ }
100
99
  });
101
100
  }
102
101
  else {
@@ -135,8 +134,40 @@ export class MetaAg {
135
134
  assert(!!provider, `Provider not found: ${options.quote.provider}`);
136
135
  const coinOut = await provider.swap(options);
137
136
  options.tx.add(metaSettle(options.quote, coinOut, slippageBps ?? this.options.slippageBps ?? 100, this.options.tipBps, this.options.partner, this.options.partnerCommissionBps));
137
+ options.tx.setSenderIfNotSet(options.signer);
138
138
  return coinOut;
139
139
  }
140
+ /**
141
+ * Update meta aggregator options
142
+ * @param options - update options payload
143
+ */
144
+ updateMetaAgOptions(options) {
145
+ if (Object.keys(options).length === 0)
146
+ return;
147
+ this.options.slippageBps = options.slippageBps ?? this.options.slippageBps;
148
+ this.options.partner = options.partner ?? this.options.partner;
149
+ this.options.partnerCommissionBps =
150
+ options.partnerCommissionBps ?? this.options.partnerCommissionBps;
151
+ this.options.tipBps = options.tipBps ?? this.options.tipBps;
152
+ if (options.fullnodeUrl &&
153
+ options.fullnodeUrl !== this.options.fullnodeUrl) {
154
+ this.client = new SuiClient({ url: options.fullnodeUrl });
155
+ this.inspector = new SuiClientUtils(this.client);
156
+ this.options.fullnodeUrl = options.fullnodeUrl;
157
+ }
158
+ if (options.hermesApi && options.hermesApi !== this.options.hermesApi) {
159
+ this.providers = {};
160
+ this.options.hermesApi = options.hermesApi;
161
+ }
162
+ // if update provider's options, we need to re-initialize the provider
163
+ for (const [provider, opt] of Object.entries(options.providers || {})) {
164
+ this.options.providers[provider] = {
165
+ ...opt,
166
+ ...this.options.providers[provider],
167
+ };
168
+ delete this.providers[provider];
169
+ }
170
+ }
140
171
  }
141
172
  /**
142
173
  * this settlement does not charge commission fee for partner, since all integrated aggregators already charge commission fee for partner
@@ -19,7 +19,8 @@ export class BluefinProvider {
19
19
  this.metaOptions = metaOptions;
20
20
  const pythClient = new SuiPythClient(client, PYTH_STATE_ID, WORMHOLE_STATE_ID);
21
21
  const pythConnection = new SuiPriceServiceConnection(this.metaOptions.hermesApi);
22
- options.apiKey && Config.setApiKey(options.apiKey);
22
+ if (options.apiKey)
23
+ Config.setApiKey(options.apiKey);
23
24
  Config.setSuiClient(client);
24
25
  Config.setPythClient(pythClient);
25
26
  Config.setPythConnection(pythConnection);
@@ -26,13 +26,13 @@ export class FlowxProvider {
26
26
  maxHops: this.options.maxHops,
27
27
  splitDistributionPercent: this.options.splitDistributionPercent,
28
28
  });
29
- const { expectedAmount } = getExpectedReturn(quote.amountOut.toString(), 0, this.metaOptions.partnerCommissionBps ?? 0, this.metaOptions.tipBps ?? 0);
29
+ const { expectedAmount } = getExpectedReturn(quote.amountOut?.toString() ?? "0", 0, this.metaOptions.partnerCommissionBps ?? 0, this.metaOptions.tipBps ?? 0);
30
30
  return {
31
31
  id: v4(),
32
32
  provider: EProvider.FLOWX,
33
33
  quote: quote,
34
- amountIn: quote.amountIn.toString(),
35
- rawAmountOut: quote.amountOut.toString(),
34
+ amountIn: quote.amountIn?.toString() ?? "0",
35
+ rawAmountOut: quote.amountOut?.toString() ?? "0",
36
36
  amountOut: expectedAmount,
37
37
  coinTypeIn: quoteOptions.coinInType,
38
38
  coinTypeOut: quoteOptions.coinOutType,
@@ -24,5 +24,10 @@ export declare class MetaAg {
24
24
  * @returns coin out object, you must consume it by transferObjects, or other sub sequence commands
25
25
  */
26
26
  swap(options: MetaSwapOptions, slippageBps?: number): Promise<TransactionObjectArgument>;
27
+ /**
28
+ * Update meta aggregator options
29
+ * @param options - update options payload
30
+ */
31
+ updateMetaAgOptions(options: MetaAgOptions): void;
27
32
  }
28
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/metaAg/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAY,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAGL,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EAGL,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAa5B,qBAAa,MAAM;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,OAAO,CAA0B;gBAC7B,OAAO,CAAC,EAAE,aAAa;YAkBrB,YAAY;YA4CZ,SAAS;YAiDT,MAAM;IAwBpB;;;;;OAKG;IACG,KAAK,CACT,OAAO,EAAE,gBAAgB,EACzB,UAAU,CAAC,EAAE,qBAAqB,GACjC,OAAO,CAAC,SAAS,EAAE,CAAC;IAgBvB;;;;;OAKG;IACG,IAAI,CACR,OAAO,EAAE,eAAe,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,yBAAyB,CAAC;CAgBtC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/metaAg/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAY,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAGL,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;AAQlC,OAAO,EAML,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAa5B,qBAAa,MAAM;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,OAAO,CAA0B;gBAC7B,OAAO,CAAC,EAAE,aAAa;YAkBrB,YAAY;YAyCZ,SAAS;YAiDT,MAAM;IA0BpB;;;;;OAKG;IACG,KAAK,CACT,OAAO,EAAE,gBAAgB,EACzB,UAAU,CAAC,EAAE,qBAAqB,GACjC,OAAO,CAAC,SAAS,EAAE,CAAC;IAgBvB;;;;;OAKG;IACG,IAAI,CACR,OAAO,EAAE,eAAe,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,yBAAyB,CAAC;IAkBrC;;;OAGG;IACH,mBAAmB,CAAC,OAAO,EAAE,aAAa;CA4B3C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@7kprotocol/sdk-ts",
3
- "version": "3.4.2-beta.5",
3
+ "version": "3.4.2-beta.7",
4
4
  "description": "",
5
5
  "exports": {
6
6
  ".": {