@defisaver/automation-sdk 1.2.28 → 1.2.30

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.
@@ -130,3 +130,19 @@ export declare const sparkQuotePriceTrigger: {
130
130
  ratioState: RatioState;
131
131
  };
132
132
  };
133
+ export declare const curveUsdBorrowRateTrigger: {
134
+ encode(market: EthereumAddress, targetRate: string, rateState: RatioState): string[];
135
+ decode(triggerData: string[]): {
136
+ market: EthereumAddress;
137
+ targetRate: string;
138
+ rateState: RatioState;
139
+ };
140
+ };
141
+ export declare const curveUsdSoftLiquidationTrigger: {
142
+ encode(market: EthereumAddress, owner: EthereumAddress, percentage: string): string[];
143
+ decode(triggerData: string[]): {
144
+ market: EthereumAddress;
145
+ owner: EthereumAddress;
146
+ percentage: string;
147
+ };
148
+ };
@@ -222,3 +222,41 @@ export const sparkQuotePriceTrigger = {
222
222
  };
223
223
  },
224
224
  };
225
+ export const curveUsdBorrowRateTrigger = {
226
+ encode(market, targetRate, rateState) {
227
+ // the form is x = (e**(rate*365*86400))-1 where x*100 is number in %
228
+ // we reverse engineer that so we can calculate rate = ln(y/100 + 1) / 365*86400 where y is input in %
229
+ const rate = new Dec(new Dec(new Dec(targetRate).div(100)).plus(1)).ln().div(365).div(86400)
230
+ .toString();
231
+ const rateWei = new Dec(rate).mul(Math.pow(10, 18)).floor().toString(); // 18 decimals
232
+ return [mockedWeb3.eth.abi.encodeParameters(['address', 'uint256', 'uint8'], [market, rateWei, rateState])];
233
+ },
234
+ decode(triggerData) {
235
+ const decodedData = mockedWeb3.eth.abi.decodeParameters(['address', 'uint256', 'uint8'], triggerData[0]);
236
+ const rateEth = mockedWeb3.utils.fromWei(decodedData[1]);
237
+ // the form is x = (e**(rate*365*86400))-1 where x*100 is number in %
238
+ const exponentRate = new Dec(rateEth).mul(365).mul(86400);
239
+ const targetRate = new Dec(new Dec(2.718281828459).pow(exponentRate).minus(1)).mul(100)
240
+ .toString();
241
+ return {
242
+ market: decodedData[0],
243
+ targetRate,
244
+ rateState: +decodedData[2],
245
+ };
246
+ },
247
+ };
248
+ export const curveUsdSoftLiquidationTrigger = {
249
+ encode(market, owner, percentage) {
250
+ // 100% = 1e18 => 0.01 = 1e16
251
+ const _percentage = new Dec(percentage).mul(Math.pow(10, 18)).floor().toString();
252
+ return [mockedWeb3.eth.abi.encodeParameters(['address', 'address', 'uint256'], [market, owner, _percentage])];
253
+ },
254
+ decode(triggerData) {
255
+ const decodedData = mockedWeb3.eth.abi.decodeParameters(['address', 'address', 'uint256'], triggerData[0]);
256
+ return {
257
+ market: decodedData[0],
258
+ owner: decodedData[1],
259
+ percentage: mockedWeb3.utils.fromWei(decodedData[2]),
260
+ };
261
+ },
262
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defisaver/automation-sdk",
3
- "version": "1.2.28",
3
+ "version": "1.2.30",
4
4
  "description": "",
5
5
  "main": "./umd/index.js",
6
6
  "module": "./esm/index.js",
@@ -278,3 +278,58 @@ export const sparkQuotePriceTrigger = {
278
278
  };
279
279
  },
280
280
  };
281
+
282
+ export const curveUsdBorrowRateTrigger = {
283
+ encode(
284
+ market: EthereumAddress,
285
+ targetRate: string,
286
+ rateState: RatioState,
287
+ ) {
288
+ // the form is x = (e**(rate*365*86400))-1 where x*100 is number in %
289
+ // we reverse engineer that so we can calculate rate = ln(y/100 + 1) / 365*86400 where y is input in %
290
+ const rate = new Dec(new Dec(new Dec(targetRate).div(100)).plus(1)).ln().div(365).div(86400)
291
+ .toString();
292
+ const rateWei = new Dec(rate).mul(10 ** 18).floor().toString(); // 18 decimals
293
+
294
+ return [mockedWeb3.eth.abi.encodeParameters(['address', 'uint256', 'uint8'], [market, rateWei, rateState])];
295
+ },
296
+ decode(
297
+ triggerData: TriggerData,
298
+ ): { market: EthereumAddress, targetRate: string, rateState: RatioState } {
299
+ const decodedData = mockedWeb3.eth.abi.decodeParameters(['address', 'uint256', 'uint8'], triggerData[0]) as Array<string>;
300
+ const rateEth = mockedWeb3.utils.fromWei(decodedData[1]);
301
+
302
+ // the form is x = (e**(rate*365*86400))-1 where x*100 is number in %
303
+ const exponentRate = new Dec(rateEth).mul(365).mul(86400);
304
+ const targetRate = new Dec(new Dec(2.718281828459).pow(exponentRate).minus(1)).mul(100)
305
+ .toString();
306
+ return {
307
+ market: decodedData[0],
308
+ targetRate,
309
+ rateState: +decodedData[2],
310
+ };
311
+ },
312
+ };
313
+
314
+ export const curveUsdSoftLiquidationTrigger = {
315
+ encode(
316
+ market: EthereumAddress,
317
+ owner: EthereumAddress,
318
+ percentage: string,
319
+ ) {
320
+ // 100% = 1e18 => 0.01 = 1e16
321
+ const _percentage = new Dec(percentage).mul(10 ** 18).floor().toString();
322
+ return [mockedWeb3.eth.abi.encodeParameters(['address', 'address', 'uint256'], [market, owner, _percentage])];
323
+ },
324
+ decode(
325
+ triggerData: TriggerData,
326
+ ): { market: EthereumAddress, owner: EthereumAddress, percentage: string } {
327
+ const decodedData = mockedWeb3.eth.abi.decodeParameters(['address', 'address', 'uint256'], triggerData[0]) as Array<string>;
328
+
329
+ return {
330
+ market: decodedData[0],
331
+ owner: decodedData[1],
332
+ percentage: mockedWeb3.utils.fromWei(decodedData[2]),
333
+ };
334
+ },
335
+ };