@indigo-labs/indigo-sdk 0.1.13 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1625,6 +1625,15 @@ var StabilityPoolContract = class {
1625
1625
  action: request
1626
1626
  }
1627
1627
  };
1628
+ let value = {
1629
+ lovelace: BigInt(
1630
+ params.stabilityPoolParams.requestCollateralLovelaces + params.stabilityPoolParams.accountAdjustmentFeeLovelaces
1631
+ ),
1632
+ [params.stabilityPoolParams.accountToken[0].unCurrencySymbol + (0, import_lucid17.fromText)(params.stabilityPoolParams.accountToken[1].unTokenName)]: 1n
1633
+ };
1634
+ if (amount > 0n) {
1635
+ value[params.stabilityPoolParams.assetSymbol.unCurrencySymbol + (0, import_lucid17.fromText)(asset)] = amount;
1636
+ }
1628
1637
  return lucid.newTx().readFrom([stabilityPoolScriptRef]).collectFrom([accountUtxo], serialiseStabilityPoolRedeemer(redeemer)).pay.ToContract(
1629
1638
  (0, import_lucid17.credentialToAddress)(lucid.config().network, {
1630
1639
  hash: (0, import_lucid17.validatorToScriptHash)(
@@ -1640,13 +1649,7 @@ var StabilityPoolContract = class {
1640
1649
  }
1641
1650
  })
1642
1651
  },
1643
- {
1644
- lovelace: BigInt(
1645
- params.stabilityPoolParams.requestCollateralLovelaces + params.stabilityPoolParams.accountAdjustmentFeeLovelaces
1646
- ),
1647
- [params.stabilityPoolParams.accountToken[0].unCurrencySymbol + (0, import_lucid17.fromText)(params.stabilityPoolParams.accountToken[1].unTokenName)]: 1n,
1648
- [params.stabilityPoolParams.assetSymbol.unCurrencySymbol + (0, import_lucid17.fromText)(asset)]: amount
1649
- }
1652
+ value
1650
1653
  ).addSignerKey(pkh.hash);
1651
1654
  }
1652
1655
  static async closeAccount(accountUtxo, params, lucid) {
@@ -1830,7 +1833,7 @@ var StabilityPoolContract = class {
1830
1833
  );
1831
1834
  const isDepositOrRewardWithdrawal = amount > 0n;
1832
1835
  const bigIntMax = (...args) => args.reduce((m, e) => e > m ? e : m);
1833
- const balanceChange = isDepositOrRewardWithdrawal ? amount : bigIntMax(amount, fromSPInteger(accountDatum.snapshot.depositVal));
1836
+ const balanceChange = isDepositOrRewardWithdrawal ? amount : bigIntMax(amount, fromSPInteger(updatedAccountSnapshot.depositVal));
1834
1837
  const newAccountSnapshot = {
1835
1838
  ...updatedAccountSnapshot,
1836
1839
  depositVal: spAdd(
package/dist/index.mjs CHANGED
@@ -1504,6 +1504,15 @@ var StabilityPoolContract = class {
1504
1504
  action: request
1505
1505
  }
1506
1506
  };
1507
+ let value = {
1508
+ lovelace: BigInt(
1509
+ params.stabilityPoolParams.requestCollateralLovelaces + params.stabilityPoolParams.accountAdjustmentFeeLovelaces
1510
+ ),
1511
+ [params.stabilityPoolParams.accountToken[0].unCurrencySymbol + fromText6(params.stabilityPoolParams.accountToken[1].unTokenName)]: 1n
1512
+ };
1513
+ if (amount > 0n) {
1514
+ value[params.stabilityPoolParams.assetSymbol.unCurrencySymbol + fromText6(asset)] = amount;
1515
+ }
1507
1516
  return lucid.newTx().readFrom([stabilityPoolScriptRef]).collectFrom([accountUtxo], serialiseStabilityPoolRedeemer(redeemer)).pay.ToContract(
1508
1517
  credentialToAddress4(lucid.config().network, {
1509
1518
  hash: validatorToScriptHash4(
@@ -1519,13 +1528,7 @@ var StabilityPoolContract = class {
1519
1528
  }
1520
1529
  })
1521
1530
  },
1522
- {
1523
- lovelace: BigInt(
1524
- params.stabilityPoolParams.requestCollateralLovelaces + params.stabilityPoolParams.accountAdjustmentFeeLovelaces
1525
- ),
1526
- [params.stabilityPoolParams.accountToken[0].unCurrencySymbol + fromText6(params.stabilityPoolParams.accountToken[1].unTokenName)]: 1n,
1527
- [params.stabilityPoolParams.assetSymbol.unCurrencySymbol + fromText6(asset)]: amount
1528
- }
1531
+ value
1529
1532
  ).addSignerKey(pkh.hash);
1530
1533
  }
1531
1534
  static async closeAccount(accountUtxo, params, lucid) {
@@ -1709,7 +1712,7 @@ var StabilityPoolContract = class {
1709
1712
  );
1710
1713
  const isDepositOrRewardWithdrawal = amount > 0n;
1711
1714
  const bigIntMax = (...args) => args.reduce((m, e) => e > m ? e : m);
1712
- const balanceChange = isDepositOrRewardWithdrawal ? amount : bigIntMax(amount, fromSPInteger(accountDatum.snapshot.depositVal));
1715
+ const balanceChange = isDepositOrRewardWithdrawal ? amount : bigIntMax(amount, fromSPInteger(updatedAccountSnapshot.depositVal));
1713
1716
  const newAccountSnapshot = {
1714
1717
  ...updatedAccountSnapshot,
1715
1718
  depositVal: spAdd(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@indigo-labs/indigo-sdk",
3
- "version": "0.1.13",
3
+ "version": "0.1.14",
4
4
  "description": "Indigo SDK for interacting with Indigo endpoints via lucid-evolution",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -51,7 +51,7 @@ export class StabilityPoolContract {
51
51
  const [pkh, _skh] = await addrDetails(lucid);
52
52
  const minLovelaces = BigInt(
53
53
  params.stabilityPoolParams.accountCreateFeeLovelaces +
54
- params.stabilityPoolParams.requestCollateralLovelaces,
54
+ params.stabilityPoolParams.requestCollateralLovelaces,
55
55
  );
56
56
  const datum: StabilityPoolDatum = {
57
57
  Account: {
@@ -83,7 +83,7 @@ export class StabilityPoolContract {
83
83
  {
84
84
  lovelace: minLovelaces,
85
85
  [params.stabilityPoolParams.assetSymbol.unCurrencySymbol +
86
- fromText(asset)]: amount,
86
+ fromText(asset)]: amount,
87
87
  },
88
88
  )
89
89
  .addSignerKey(pkh.hash);
@@ -124,6 +124,19 @@ export class StabilityPoolContract {
124
124
  },
125
125
  };
126
126
 
127
+ let value = {
128
+ lovelace: BigInt(
129
+ params.stabilityPoolParams.requestCollateralLovelaces +
130
+ params.stabilityPoolParams.accountAdjustmentFeeLovelaces,
131
+ ),
132
+ [params.stabilityPoolParams.accountToken[0].unCurrencySymbol +
133
+ fromText(params.stabilityPoolParams.accountToken[1].unTokenName)]: 1n,
134
+ };
135
+
136
+ if (amount > 0n) {
137
+ value[params.stabilityPoolParams.assetSymbol.unCurrencySymbol + fromText(asset)] = amount;
138
+ }
139
+
127
140
  return lucid
128
141
  .newTx()
129
142
  .readFrom([stabilityPoolScriptRef])
@@ -143,16 +156,7 @@ export class StabilityPoolContract {
143
156
  },
144
157
  }),
145
158
  },
146
- {
147
- lovelace: BigInt(
148
- params.stabilityPoolParams.requestCollateralLovelaces +
149
- params.stabilityPoolParams.accountAdjustmentFeeLovelaces,
150
- ),
151
- [params.stabilityPoolParams.accountToken[0].unCurrencySymbol +
152
- fromText(params.stabilityPoolParams.accountToken[1].unTokenName)]: 1n,
153
- [params.stabilityPoolParams.assetSymbol.unCurrencySymbol +
154
- fromText(asset)]: amount,
155
- },
159
+ value
156
160
  )
157
161
  .addSignerKey(pkh.hash);
158
162
  }
@@ -211,10 +215,10 @@ export class StabilityPoolContract {
211
215
  {
212
216
  lovelace: BigInt(
213
217
  params.stabilityPoolParams.requestCollateralLovelaces +
214
- params.stabilityPoolParams.accountAdjustmentFeeLovelaces,
218
+ params.stabilityPoolParams.accountAdjustmentFeeLovelaces,
215
219
  ),
216
220
  [params.stabilityPoolParams.accountToken[0].unCurrencySymbol +
217
- fromText(params.stabilityPoolParams.accountToken[1].unTokenName)]: 1n,
221
+ fromText(params.stabilityPoolParams.accountToken[1].unTokenName)]: 1n,
218
222
  },
219
223
  )
220
224
  .addSignerKey(pkh.hash);
@@ -316,16 +320,16 @@ export class StabilityPoolContract {
316
320
  stabilityPoolUtxo.assets.lovelace +
317
321
  BigInt(params.stabilityPoolParams.accountCreateFeeLovelaces),
318
322
  [params.stabilityPoolParams.stabilityPoolToken[0].unCurrencySymbol +
319
- fromText(params.stabilityPoolParams.stabilityPoolToken[1].unTokenName)]:
323
+ fromText(params.stabilityPoolParams.stabilityPoolToken[1].unTokenName)]:
320
324
  1n,
321
325
  [params.stabilityPoolParams.assetSymbol.unCurrencySymbol +
322
- fromText(asset)]: stabilityPoolAssetToken + reqAmount,
326
+ fromText(asset)]: stabilityPoolAssetToken + reqAmount,
323
327
  };
324
328
 
325
329
  tx.mintAssets(
326
330
  {
327
331
  [params.stabilityPoolParams.accountToken[0].unCurrencySymbol +
328
- fromText(params.stabilityPoolParams.accountToken[1].unTokenName)]: 1n,
332
+ fromText(params.stabilityPoolParams.accountToken[1].unTokenName)]: 1n,
329
333
  },
330
334
  Data.to(new Constr(0, [])),
331
335
  );
@@ -366,7 +370,7 @@ export class StabilityPoolContract {
366
370
  accountUtxo.assets.lovelace -
367
371
  BigInt(params.stabilityPoolParams.accountCreateFeeLovelaces),
368
372
  [params.stabilityPoolParams.accountToken[0].unCurrencySymbol +
369
- fromText(params.stabilityPoolParams.accountToken[1].unTokenName)]: 1n,
373
+ fromText(params.stabilityPoolParams.accountToken[1].unTokenName)]: 1n,
370
374
  },
371
375
  );
372
376
  } else if ('Adjust' in accountDatum.request) {
@@ -394,9 +398,10 @@ export class StabilityPoolContract {
394
398
  const isDepositOrRewardWithdrawal: boolean = amount > 0n;
395
399
  const bigIntMax = (...args: bigint[]): bigint =>
396
400
  args.reduce((m, e) => (e > m ? e : m));
401
+
397
402
  const balanceChange: bigint = isDepositOrRewardWithdrawal
398
403
  ? amount
399
- : bigIntMax(amount, fromSPInteger(accountDatum.snapshot.depositVal));
404
+ : bigIntMax(amount, fromSPInteger(updatedAccountSnapshot.depositVal));
400
405
  const newAccountSnapshot: StabilityPoolSnapshot = {
401
406
  ...updatedAccountSnapshot,
402
407
  depositVal: spAdd(
@@ -418,9 +423,9 @@ export class StabilityPoolContract {
418
423
  isDepositOrRewardWithdrawal || newPoolDepositExcludingFee.value === 0n
419
424
  ? 0n
420
425
  : calculateFeeFromPercentage(
421
- iassetDatum.stabilityPoolWithdrawalFeePercentage,
422
- -balanceChange,
423
- );
426
+ iassetDatum.stabilityPoolWithdrawalFeePercentage,
427
+ -balanceChange,
428
+ );
424
429
  const newPoolDeposit = spAdd(
425
430
  newPoolDepositExcludingFee,
426
431
  mkSPInteger(withdrawalFee),
@@ -429,12 +434,12 @@ export class StabilityPoolContract {
429
434
  withdrawalFee === 0n
430
435
  ? stabilityPoolDatum.snapshot.productVal
431
436
  : spMul(
432
- stabilityPoolDatum.snapshot.productVal,
433
- spAdd(
434
- mkSPInteger(1n),
435
- spDiv(mkSPInteger(withdrawalFee), newPoolDepositExcludingFee),
436
- ),
437
- );
437
+ stabilityPoolDatum.snapshot.productVal,
438
+ spAdd(
439
+ mkSPInteger(1n),
440
+ spDiv(mkSPInteger(withdrawalFee), newPoolDepositExcludingFee),
441
+ ),
442
+ );
438
443
  const newPoolSum = spAdd(
439
444
  stabilityPoolDatum.snapshot.sumVal,
440
445
  spDiv(
@@ -463,7 +468,6 @@ export class StabilityPoolContract {
463
468
  await CollectorContract.feeTx(rewardLovelacesFee, lucid, params, tx);
464
469
 
465
470
  tx.readFrom([govUtxo, iAssetUtxo, ...refInputs]);
466
-
467
471
  tx.pay.ToContract(
468
472
  stabilityPoolUtxo.address,
469
473
  {
@@ -484,14 +488,14 @@ export class StabilityPoolContract {
484
488
  BigInt(params.stabilityPoolParams.accountAdjustmentFeeLovelaces) -
485
489
  reward,
486
490
  [params.stabilityPoolParams.stabilityPoolToken[0].unCurrencySymbol +
487
- fromText(
488
- params.stabilityPoolParams.stabilityPoolToken[1].unTokenName,
489
- )]: 1n,
491
+ fromText(
492
+ params.stabilityPoolParams.stabilityPoolToken[1].unTokenName,
493
+ )]: 1n,
490
494
  [params.stabilityPoolParams.assetSymbol.unCurrencySymbol +
491
- fromText(asset)]:
495
+ fromText(asset)]:
492
496
  stabilityPoolUtxo.assets[
493
- params.stabilityPoolParams.assetSymbol.unCurrencySymbol +
494
- fromText(asset)
497
+ params.stabilityPoolParams.assetSymbol.unCurrencySymbol +
498
+ fromText(asset)
495
499
  ] +
496
500
  balanceChange +
497
501
  withdrawalFee,
@@ -518,7 +522,7 @@ export class StabilityPoolContract {
518
522
  BigInt(params.stabilityPoolParams.accountAdjustmentFeeLovelaces) -
519
523
  2_000_000n,
520
524
  [params.stabilityPoolParams.accountToken[0].unCurrencySymbol +
521
- fromText(params.stabilityPoolParams.accountToken[1].unTokenName)]: 1n,
525
+ fromText(params.stabilityPoolParams.accountToken[1].unTokenName)]: 1n,
522
526
  },
523
527
  );
524
528
 
@@ -543,9 +547,9 @@ export class StabilityPoolContract {
543
547
  lovelace: reward - rewardLovelacesFee + 2_000_000n,
544
548
  ...(amount < 0n
545
549
  ? {
546
- [params.stabilityPoolParams.assetSymbol.unCurrencySymbol +
550
+ [params.stabilityPoolParams.assetSymbol.unCurrencySymbol +
547
551
  fromText(asset)]: -(amount - withdrawalFee),
548
- }
552
+ }
549
553
  : {}),
550
554
  },
551
555
  );
@@ -584,9 +588,9 @@ export class StabilityPoolContract {
584
588
  newPoolDepositExcludingFee.value === 0n
585
589
  ? 0n
586
590
  : calculateFeeFromPercentage(
587
- iassetDatum.stabilityPoolWithdrawalFeePercentage,
588
- withdrawnAmt.value,
589
- );
591
+ iassetDatum.stabilityPoolWithdrawalFeePercentage,
592
+ withdrawnAmt.value,
593
+ );
590
594
 
591
595
  const [newPoolDeposit, newPoolProduct] = updatePoolSnapshotWithdrawalFee(
592
596
  mkSPInteger(withdrawalFeeAmount),
@@ -611,7 +615,7 @@ export class StabilityPoolContract {
611
615
  tx.mintAssets(
612
616
  {
613
617
  [params.stabilityPoolParams.accountToken[0].unCurrencySymbol +
614
- fromText(params.stabilityPoolParams.accountToken[1].unTokenName)]:
618
+ fromText(params.stabilityPoolParams.accountToken[1].unTokenName)]:
615
619
  -1n,
616
620
  },
617
621
  Data.to(new Constr(0, [])),
@@ -619,8 +623,8 @@ export class StabilityPoolContract {
619
623
 
620
624
  const assetOutputAmountForSP =
621
625
  stabilityPoolUtxo.assets[
622
- params.stabilityPoolParams.assetSymbol.unCurrencySymbol +
623
- fromText(asset)
626
+ params.stabilityPoolParams.assetSymbol.unCurrencySymbol +
627
+ fromText(asset)
624
628
  ] -
625
629
  fromSPInteger(withdrawnAmt) -
626
630
  withdrawalFeeAmount;
@@ -641,14 +645,14 @@ export class StabilityPoolContract {
641
645
  {
642
646
  lovelace: stabilityPoolUtxo.assets.lovelace - reward,
643
647
  [params.stabilityPoolParams.stabilityPoolToken[0].unCurrencySymbol +
644
- fromText(
645
- params.stabilityPoolParams.stabilityPoolToken[1].unTokenName,
646
- )]: 1n,
648
+ fromText(
649
+ params.stabilityPoolParams.stabilityPoolToken[1].unTokenName,
650
+ )]: 1n,
647
651
  ...(assetOutputAmountForSP > 0n
648
652
  ? {
649
- [params.stabilityPoolParams.assetSymbol.unCurrencySymbol +
653
+ [params.stabilityPoolParams.assetSymbol.unCurrencySymbol +
650
654
  fromText(asset)]: assetOutputAmountForSP,
651
- }
655
+ }
652
656
  : {}),
653
657
  },
654
658
  );
@@ -673,7 +677,7 @@ export class StabilityPoolContract {
673
677
  {
674
678
  lovelace: accountUtxo.assets.lovelace + reward - rewardLovelacesFee,
675
679
  [params.stabilityPoolParams.assetSymbol.unCurrencySymbol +
676
- fromText(asset)]: fromSPInteger(withdrawnAmt) - withdrawalFeeAmount,
680
+ fromText(asset)]: fromSPInteger(withdrawnAmt) - withdrawalFeeAmount,
677
681
  },
678
682
  );
679
683
  }
@@ -253,6 +253,62 @@ test<LucidContext>('Stability Pool - Adjust Account', async ({
253
253
  lucid,
254
254
  ),
255
255
  );
256
+
257
+ // Withdraw 10n iUSD from the stability pool account.
258
+ lucid.selectWallet.fromSeed(users.user.seedPhrase);
259
+
260
+ stabilityPoolUtxo = await findStabilityPool(
261
+ lucid,
262
+ systemParams.validatorHashes.stabilityPoolHash,
263
+ {
264
+ currencySymbol:
265
+ systemParams.stabilityPoolParams.stabilityPoolToken[0].unCurrencySymbol,
266
+ tokenName: fromText(
267
+ systemParams.stabilityPoolParams.stabilityPoolToken[1].unTokenName,
268
+ ),
269
+ },
270
+ 'iUSD',
271
+ );
272
+
273
+ accountUtxo = await findStabilityPoolAccount(
274
+ lucid,
275
+ systemParams.validatorHashes.stabilityPoolHash,
276
+ pkh.hash,
277
+ 'iUSD',
278
+ );
279
+
280
+ await runAndAwaitTx(
281
+ lucid,
282
+ StabilityPoolContract.adjustAccount(
283
+ 'iUSD',
284
+ -10n,
285
+ accountUtxo,
286
+ systemParams,
287
+ lucid,
288
+ ),
289
+ );
290
+ lucid.selectWallet.fromSeed(users.admin.seedPhrase);
291
+
292
+ accountUtxo = await findStabilityPoolAccount(
293
+ lucid,
294
+ systemParams.validatorHashes.stabilityPoolHash,
295
+ pkh.hash,
296
+ 'iUSD',
297
+ );
298
+
299
+ await runAndAwaitTx(
300
+ lucid,
301
+ StabilityPoolContract.processRequest(
302
+ 'iUSD',
303
+ stabilityPoolUtxo,
304
+ accountUtxo,
305
+ govUtxo,
306
+ assetUtxo,
307
+ undefined,
308
+ systemParams,
309
+ lucid,
310
+ ),
311
+ );
256
312
  });
257
313
 
258
314
  test<LucidContext>('Stability Pool - Close Account', async ({