@indigo-labs/indigo-sdk 0.3.27 → 0.4.0

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.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _lucid_evolution_lucid from '@lucid-evolution/lucid';
2
- import { Data, UTxO, Credential, OutRef, LucidEvolution, TxBuilder, Network, WithdrawalValidator, SpendingValidator, Assets, MintingPolicy, Address, PolicyId, ScriptHash, ProtocolParameters, OutputDatum, Script, Datum } from '@lucid-evolution/lucid';
2
+ import { Data, UTxO, Credential, OutRef, LucidEvolution, TxBuilder, Assets, Network, WithdrawalValidator, SpendingValidator, MintingPolicy, Address, PolicyId, ScriptHash, ProtocolParameters, OutputDatum, Script, Datum } from '@lucid-evolution/lucid';
3
3
  import { AssetClass } from '@3rd-eye-labs/cardano-offchain-common';
4
4
  import * as Core from '@evolution-sdk/evolution';
5
5
  import { TSchema, Schema, Data as Data$1 } from '@evolution-sdk/evolution';
@@ -822,10 +822,7 @@ declare function rationalToFloat(a: Rational): number;
822
822
  * Amount of iasset equal in value to the given number of collateral amount.
823
823
  */
824
824
  declare function iassetValueOfCollateral(collateralAmt: bigint, oraclePrice: Rational): bigint;
825
- /**
826
- * This is mostly for debugging purposes.
827
- */
828
- declare function cdpCollateralRatioPercentage(currentSlot: number, iassetPrice: Rational, cdpUtxo: UTxO, cdpContent: CDPContent, interestOracleDatum: InterestOracleDatum, network: Network): number;
825
+ declare function cdpCollateralRatioPercentage(currentSlot: number, iassetPrice: Rational, cdpUtxoAssets: Assets, cdpContent: CDPContent, interestOracleDatum: InterestOracleDatum, network: Network): number;
829
826
  /**
830
827
  * The amount of iassets to redeem to reach the RMR.
831
828
  */
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _lucid_evolution_lucid from '@lucid-evolution/lucid';
2
- import { Data, UTxO, Credential, OutRef, LucidEvolution, TxBuilder, Network, WithdrawalValidator, SpendingValidator, Assets, MintingPolicy, Address, PolicyId, ScriptHash, ProtocolParameters, OutputDatum, Script, Datum } from '@lucid-evolution/lucid';
2
+ import { Data, UTxO, Credential, OutRef, LucidEvolution, TxBuilder, Assets, Network, WithdrawalValidator, SpendingValidator, MintingPolicy, Address, PolicyId, ScriptHash, ProtocolParameters, OutputDatum, Script, Datum } from '@lucid-evolution/lucid';
3
3
  import { AssetClass } from '@3rd-eye-labs/cardano-offchain-common';
4
4
  import * as Core from '@evolution-sdk/evolution';
5
5
  import { TSchema, Schema, Data as Data$1 } from '@evolution-sdk/evolution';
@@ -822,10 +822,7 @@ declare function rationalToFloat(a: Rational): number;
822
822
  * Amount of iasset equal in value to the given number of collateral amount.
823
823
  */
824
824
  declare function iassetValueOfCollateral(collateralAmt: bigint, oraclePrice: Rational): bigint;
825
- /**
826
- * This is mostly for debugging purposes.
827
- */
828
- declare function cdpCollateralRatioPercentage(currentSlot: number, iassetPrice: Rational, cdpUtxo: UTxO, cdpContent: CDPContent, interestOracleDatum: InterestOracleDatum, network: Network): number;
825
+ declare function cdpCollateralRatioPercentage(currentSlot: number, iassetPrice: Rational, cdpUtxoAssets: Assets, cdpContent: CDPContent, interestOracleDatum: InterestOracleDatum, network: Network): number;
829
826
  /**
830
827
  * The amount of iassets to redeem to reach the RMR.
831
828
  */
package/dist/index.js CHANGED
@@ -836,7 +836,7 @@ function iassetValueOfCollateral(collateralAmt, oraclePrice) {
836
836
  rationalDiv(rationalFromInt(collateralAmt), oraclePrice)
837
837
  );
838
838
  }
839
- function cdpCollateralRatioPercentage(currentSlot, iassetPrice, cdpUtxo, cdpContent, interestOracleDatum, network) {
839
+ function cdpCollateralRatioPercentage(currentSlot, iassetPrice, cdpUtxoAssets, cdpContent, interestOracleDatum, network) {
840
840
  const currentTime = BigInt((0, import_lucid4.slotToUnixTime)(network, currentSlot));
841
841
  return (0, import_ts_pattern5.match)(cdpContent.cdpFees).with({ ActiveCDPInterestTracking: import_ts_pattern5.P.select() }, (interest) => {
842
842
  const interestAmt = calculateAccruedInterest(
@@ -847,7 +847,7 @@ function cdpCollateralRatioPercentage(currentSlot, iassetPrice, cdpUtxo, cdpCont
847
847
  interestOracleDatum
848
848
  );
849
849
  const collateral = (0, import_cardano_offchain_common.assetClassValueOf)(
850
- cdpUtxo.assets,
850
+ cdpUtxoAssets,
851
851
  cdpContent.collateralAsset
852
852
  );
853
853
  const ratio = rationalDiv(
@@ -857,7 +857,7 @@ function cdpCollateralRatioPercentage(currentSlot, iassetPrice, cdpUtxo, cdpCont
857
857
  iassetPrice
858
858
  )
859
859
  );
860
- return Number(ratio.numerator * 100n / ratio.denominator);
860
+ return Number(ratio.numerator) * 100 / Number(ratio.denominator);
861
861
  }).with({ FrozenCDPAccumulatedFees: import_ts_pattern5.P.any }, () => 0).exhaustive();
862
862
  }
863
863
  function calculateIAssetRedemptionAmt(collateralAmt, mintedAmt, price, rmr) {
@@ -10504,15 +10504,22 @@ async function initPythConfig(lucid, initialAssets, pythStateAsset) {
10504
10504
  lucid,
10505
10505
  pythFeedValidator
10506
10506
  );
10507
- await runAndAwaitTxBuilder(
10508
- lucid,
10509
- lucid.newTx().register.Stake(
10510
- (0, import_lucid65.credentialToRewardAddress)(lucid.config().network, {
10511
- hash: (0, import_lucid65.validatorToScriptHash)(pythFeedValidator),
10512
- type: "Script"
10513
- })
10514
- )
10515
- );
10507
+ try {
10508
+ await runAndAwaitTxBuilder(
10509
+ lucid,
10510
+ lucid.newTx().register.Stake(
10511
+ (0, import_lucid65.credentialToRewardAddress)(lucid.config().network, {
10512
+ hash: (0, import_lucid65.validatorToScriptHash)(pythFeedValidator),
10513
+ type: "Script"
10514
+ })
10515
+ )
10516
+ );
10517
+ } catch (error) {
10518
+ const message = error instanceof Error ? error.message : String(error);
10519
+ if (!message.includes("StakeKeyRegisteredDELEG") && !message.includes("Trying to re-register some already known credentials.")) {
10520
+ throw error;
10521
+ }
10522
+ }
10516
10523
  const key = `${asset.name}/${(0, import_lucid65.toHex)(collateral.collateralAsset.currencySymbol)}.${(0, import_lucid65.toHex)(collateral.collateralAsset.tokenName)}`;
10517
10524
  return {
10518
10525
  [key]: {
@@ -10702,7 +10709,14 @@ async function init(lucid, defaultInitialAssets, currentSlot, mkPythBasedAssets
10702
10709
  lucid.config().network,
10703
10710
  (0, import_lucid65.scriptHashToCredential)(cdpRedeemValHash)
10704
10711
  );
10705
- await submitTx(lucid, lucid.newTx().register.Stake(cdpRedeemRewardAddr));
10712
+ try {
10713
+ await runAndAwaitTxBuilder(lucid, lucid.newTx().register.Stake(cdpRedeemRewardAddr));
10714
+ } catch (error) {
10715
+ const message = error instanceof Error ? error.message : String(error);
10716
+ if (!message.includes("StakeKeyRegisteredDELEG") && !message.includes("Trying to re-register some already known credentials.")) {
10717
+ throw error;
10718
+ }
10719
+ }
10706
10720
  const cdpParams = {
10707
10721
  cdpAuthToken: toSystemParamsAsset(cdpToken),
10708
10722
  cdpAssetSymbol: { unCurrencySymbol: assetSymbol },
@@ -10886,7 +10900,7 @@ async function init(lucid, defaultInitialAssets, currentSlot, mkPythBasedAssets
10886
10900
  lucid,
10887
10901
  govParams,
10888
10902
  govNftAsset,
10889
- defaultInitialAssets,
10903
+ initialAssets,
10890
10904
  protocolParams
10891
10905
  );
10892
10906
  const robParams = {
package/dist/index.mjs CHANGED
@@ -471,7 +471,7 @@ function iassetValueOfCollateral(collateralAmt, oraclePrice) {
471
471
  rationalDiv(rationalFromInt(collateralAmt), oraclePrice)
472
472
  );
473
473
  }
474
- function cdpCollateralRatioPercentage(currentSlot, iassetPrice, cdpUtxo, cdpContent, interestOracleDatum, network) {
474
+ function cdpCollateralRatioPercentage(currentSlot, iassetPrice, cdpUtxoAssets, cdpContent, interestOracleDatum, network) {
475
475
  const currentTime = BigInt(slotToUnixTime2(network, currentSlot));
476
476
  return match4(cdpContent.cdpFees).with({ ActiveCDPInterestTracking: P4.select() }, (interest) => {
477
477
  const interestAmt = calculateAccruedInterest(
@@ -482,7 +482,7 @@ function cdpCollateralRatioPercentage(currentSlot, iassetPrice, cdpUtxo, cdpCont
482
482
  interestOracleDatum
483
483
  );
484
484
  const collateral = assetClassValueOf(
485
- cdpUtxo.assets,
485
+ cdpUtxoAssets,
486
486
  cdpContent.collateralAsset
487
487
  );
488
488
  const ratio = rationalDiv(
@@ -492,7 +492,7 @@ function cdpCollateralRatioPercentage(currentSlot, iassetPrice, cdpUtxo, cdpCont
492
492
  iassetPrice
493
493
  )
494
494
  );
495
- return Number(ratio.numerator * 100n / ratio.denominator);
495
+ return Number(ratio.numerator) * 100 / Number(ratio.denominator);
496
496
  }).with({ FrozenCDPAccumulatedFees: P4.any }, () => 0).exhaustive();
497
497
  }
498
498
  function calculateIAssetRedemptionAmt(collateralAmt, mintedAmt, price, rmr) {
@@ -10401,15 +10401,22 @@ async function initPythConfig(lucid, initialAssets, pythStateAsset) {
10401
10401
  lucid,
10402
10402
  pythFeedValidator
10403
10403
  );
10404
- await runAndAwaitTxBuilder(
10405
- lucid,
10406
- lucid.newTx().register.Stake(
10407
- credentialToRewardAddress4(lucid.config().network, {
10408
- hash: validatorToScriptHash5(pythFeedValidator),
10409
- type: "Script"
10410
- })
10411
- )
10412
- );
10404
+ try {
10405
+ await runAndAwaitTxBuilder(
10406
+ lucid,
10407
+ lucid.newTx().register.Stake(
10408
+ credentialToRewardAddress4(lucid.config().network, {
10409
+ hash: validatorToScriptHash5(pythFeedValidator),
10410
+ type: "Script"
10411
+ })
10412
+ )
10413
+ );
10414
+ } catch (error) {
10415
+ const message = error instanceof Error ? error.message : String(error);
10416
+ if (!message.includes("StakeKeyRegisteredDELEG") && !message.includes("Trying to re-register some already known credentials.")) {
10417
+ throw error;
10418
+ }
10419
+ }
10413
10420
  const key = `${asset.name}/${toHex16(collateral.collateralAsset.currencySymbol)}.${toHex16(collateral.collateralAsset.tokenName)}`;
10414
10421
  return {
10415
10422
  [key]: {
@@ -10599,7 +10606,14 @@ async function init(lucid, defaultInitialAssets, currentSlot, mkPythBasedAssets
10599
10606
  lucid.config().network,
10600
10607
  scriptHashToCredential4(cdpRedeemValHash)
10601
10608
  );
10602
- await submitTx(lucid, lucid.newTx().register.Stake(cdpRedeemRewardAddr));
10609
+ try {
10610
+ await runAndAwaitTxBuilder(lucid, lucid.newTx().register.Stake(cdpRedeemRewardAddr));
10611
+ } catch (error) {
10612
+ const message = error instanceof Error ? error.message : String(error);
10613
+ if (!message.includes("StakeKeyRegisteredDELEG") && !message.includes("Trying to re-register some already known credentials.")) {
10614
+ throw error;
10615
+ }
10616
+ }
10603
10617
  const cdpParams = {
10604
10618
  cdpAuthToken: toSystemParamsAsset(cdpToken),
10605
10619
  cdpAssetSymbol: { unCurrencySymbol: assetSymbol },
@@ -10783,7 +10797,7 @@ async function init(lucid, defaultInitialAssets, currentSlot, mkPythBasedAssets
10783
10797
  lucid,
10784
10798
  govParams,
10785
10799
  govNftAsset,
10786
- defaultInitialAssets,
10800
+ initialAssets,
10787
10801
  protocolParams
10788
10802
  );
10789
10803
  const robParams = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@indigo-labs/indigo-sdk",
3
- "version": "0.3.27",
3
+ "version": "0.4.0",
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",
@@ -41,10 +41,10 @@
41
41
  "license": "MIT",
42
42
  "packageManager": "pnpm@10.33.4",
43
43
  "dependencies": {
44
- "@3rd-eye-labs/cardano-offchain-common": "1.2.0",
44
+ "@3rd-eye-labs/cardano-offchain-common": "1.4.7",
45
45
  "@evolution-sdk/evolution": "^0.3.22",
46
46
  "@harmoniclabs/crypto": "^0.3.0",
47
- "@lucid-evolution/lucid": "^0.4.29",
47
+ "@lucid-evolution/lucid": "0.5.5",
48
48
  "@noble/ed25519": "^3.0.0",
49
49
  "@pythnetwork/pyth-lazer-sdk": "^6.0.0",
50
50
  "decimal.js": "^10.6.0",
@@ -1,4 +1,4 @@
1
- import { Network, slotToUnixTime, UTxO } from '@lucid-evolution/lucid';
1
+ import { Assets, Network, slotToUnixTime } from '@lucid-evolution/lucid';
2
2
  import { calculateAccruedInterest } from '../interest-oracle/helpers';
3
3
  import { match, P } from 'ts-pattern';
4
4
  import { calculateFeeFromRatio } from '../../utils/indigo-helpers';
@@ -29,13 +29,10 @@ export function iassetValueOfCollateral(
29
29
  );
30
30
  }
31
31
 
32
- /**
33
- * This is mostly for debugging purposes.
34
- */
35
32
  export function cdpCollateralRatioPercentage(
36
33
  currentSlot: number,
37
34
  iassetPrice: Rational,
38
- cdpUtxo: UTxO,
35
+ cdpUtxoAssets: Assets,
39
36
  cdpContent: CDPContent,
40
37
  interestOracleDatum: InterestOracleDatum,
41
38
  network: Network,
@@ -53,7 +50,7 @@ export function cdpCollateralRatioPercentage(
53
50
  );
54
51
 
55
52
  const collateral = assetClassValueOf(
56
- cdpUtxo.assets,
53
+ cdpUtxoAssets,
57
54
  cdpContent.collateralAsset,
58
55
  );
59
56
 
@@ -65,7 +62,7 @@ export function cdpCollateralRatioPercentage(
65
62
  ),
66
63
  );
67
64
 
68
- return Number((ratio.numerator * 100n) / ratio.denominator);
65
+ return (Number(ratio.numerator) * 100) / Number(ratio.denominator);
69
66
  })
70
67
  .with({ FrozenCDPAccumulatedFees: P.any }, () => 0)
71
68
  .exhaustive();
@@ -69,7 +69,6 @@ import { mkStabilityPoolValidatorFromSP } from '../stability-pool/scripts';
69
69
  import { mkTreasuryValidatorFromSP } from '../treasury/scripts';
70
70
  import { mkCDPCreatorValidatorFromSP } from '../cdp-creator/scripts';
71
71
  import { mkGovValidatorFromSP } from '../gov/scripts';
72
- import { submitTx } from '../../utils/lucid-utils';
73
72
  import {
74
73
  deriveAuthToken,
75
74
  initScriptRef,
@@ -121,17 +120,26 @@ export async function initPythConfig(
121
120
  pythFeedValidator,
122
121
  );
123
122
 
124
- // Register the stake key for pyth feed validator.
125
- await runAndAwaitTxBuilder(
126
- lucid,
127
- lucid.newTx().register.Stake(
128
- credentialToRewardAddress(lucid.config().network!, {
129
- hash: validatorToScriptHash(pythFeedValidator),
130
- type: 'Script',
131
- }),
132
- ),
133
- );
134
-
123
+ try {
124
+ // Register the stake key for pyth feed validator.
125
+ await runAndAwaitTxBuilder(
126
+ lucid,
127
+ lucid.newTx().register.Stake(
128
+ credentialToRewardAddress(lucid.config().network!, {
129
+ hash: validatorToScriptHash(pythFeedValidator),
130
+ type: 'Script',
131
+ }),
132
+ ),
133
+ );
134
+
135
+ } catch (error) {
136
+ const message = error instanceof Error ? error.message : String(error);
137
+ if (
138
+ !message.includes('StakeKeyRegisteredDELEG') && !message.includes('Trying to re-register some already known credentials.')
139
+ ) {
140
+ throw error;
141
+ }
142
+ }
135
143
  const key = `${asset.name}/${toHex(collateral.collateralAsset.currencySymbol)}.${toHex(collateral.collateralAsset.tokenName)}`;
136
144
 
137
145
  return {
@@ -368,8 +376,16 @@ export async function init(
368
376
  scriptHashToCredential(cdpRedeemValHash),
369
377
  );
370
378
 
371
- await submitTx(lucid, lucid.newTx().register.Stake(cdpRedeemRewardAddr));
372
-
379
+ try {
380
+ await runAndAwaitTxBuilder(lucid, lucid.newTx().register.Stake(cdpRedeemRewardAddr));
381
+ } catch (error) {
382
+ const message = error instanceof Error ? error.message : String(error);
383
+ if (
384
+ !message.includes('StakeKeyRegisteredDELEG') && !message.includes('Trying to re-register some already known credentials.')
385
+ ) {
386
+ throw error;
387
+ }
388
+ }
373
389
  const cdpParams: CdpParamsSP = {
374
390
  cdpAuthToken: toSystemParamsAsset(cdpToken),
375
391
  cdpAssetSymbol: { unCurrencySymbol: assetSymbol },
@@ -578,7 +594,7 @@ export async function init(
578
594
  lucid,
579
595
  govParams,
580
596
  govNftAsset,
581
- defaultInitialAssets,
597
+ initialAssets,
582
598
  protocolParams,
583
599
  );
584
600
 
@@ -427,7 +427,7 @@ export async function findCdpCR(
427
427
  return cdpCollateralRatioPercentage(
428
428
  slot,
429
429
  adjustedPrice,
430
- cdp.utxo,
430
+ cdp.utxo.assets,
431
431
  cdp.datum,
432
432
  await findInterestDatum(
433
433
  lucid,
@@ -1412,7 +1412,7 @@ describe('LRP leverage', () => {
1412
1412
  cdpCollateralRatioPercentage(
1413
1413
  context.emulator.slot,
1414
1414
  parsePriceOracleDatum(getInlineDatumOrThrow(priceOracleUtxo)).price,
1415
- res.utxo,
1415
+ res.utxo.assets,
1416
1416
  res.datum,
1417
1417
  parseInterestOracleDatum(
1418
1418
  getInlineDatumOrThrow(orefs.interestOracleUtxo),
@@ -1555,7 +1555,7 @@ describe('LRP leverage', () => {
1555
1555
  cdpCollateralRatioPercentage(
1556
1556
  context.emulator.slot,
1557
1557
  price,
1558
- res.utxo,
1558
+ res.utxo.assets,
1559
1559
  res.datum,
1560
1560
  parseInterestOracleDatum(
1561
1561
  getInlineDatumOrThrow(orefs.interestOracleUtxo),
@@ -1667,7 +1667,7 @@ describe('LRP leverage', () => {
1667
1667
  cdpCollateralRatioPercentage(
1668
1668
  context.emulator.slot,
1669
1669
  parsePriceOracleDatum(getInlineDatumOrThrow(priceOracleUtxo)).price,
1670
- res.utxo,
1670
+ res.utxo.assets,
1671
1671
  res.datum,
1672
1672
  parseInterestOracleDatum(
1673
1673
  getInlineDatumOrThrow(orefs.interestOracleUtxo),
@@ -1790,7 +1790,7 @@ describe('LRP leverage', () => {
1790
1790
  cdpCollateralRatioPercentage(
1791
1791
  context.emulator.slot,
1792
1792
  parsePriceOracleDatum(getInlineDatumOrThrow(priceOracleUtxo)).price,
1793
- res.utxo,
1793
+ res.utxo.assets,
1794
1794
  res.datum,
1795
1795
  parseInterestOracleDatum(
1796
1796
  getInlineDatumOrThrow(orefs.interestOracleUtxo),
@@ -1913,7 +1913,7 @@ describe('LRP leverage', () => {
1913
1913
  cdpCollateralRatioPercentage(
1914
1914
  context.emulator.slot,
1915
1915
  parsePriceOracleDatum(getInlineDatumOrThrow(priceOracleUtxo)).price,
1916
- res.utxo,
1916
+ res.utxo.assets,
1917
1917
  res.datum,
1918
1918
  parseInterestOracleDatum(
1919
1919
  getInlineDatumOrThrow(orefs.interestOracleUtxo),
@@ -2036,7 +2036,7 @@ describe('LRP leverage', () => {
2036
2036
  cdpCollateralRatioPercentage(
2037
2037
  context.emulator.slot,
2038
2038
  parsePriceOracleDatum(getInlineDatumOrThrow(priceOracleUtxo)).price,
2039
- res.utxo,
2039
+ res.utxo.assets,
2040
2040
  res.datum,
2041
2041
  parseInterestOracleDatum(
2042
2042
  getInlineDatumOrThrow(orefs.interestOracleUtxo),
@@ -2159,7 +2159,7 @@ describe('LRP leverage', () => {
2159
2159
  cdpCollateralRatioPercentage(
2160
2160
  context.emulator.slot,
2161
2161
  parsePriceOracleDatum(getInlineDatumOrThrow(priceOracleUtxo)).price,
2162
- res.utxo,
2162
+ res.utxo.assets,
2163
2163
  res.datum,
2164
2164
  parseInterestOracleDatum(
2165
2165
  getInlineDatumOrThrow(orefs.interestOracleUtxo),
@@ -2298,7 +2298,7 @@ describe('LRP leverage', () => {
2298
2298
  cdpCollateralRatioPercentage(
2299
2299
  context.emulator.slot,
2300
2300
  parsePriceOracleDatum(getInlineDatumOrThrow(priceOracleUtxo)).price,
2301
- res.utxo,
2301
+ res.utxo.assets,
2302
2302
  res.datum,
2303
2303
  parseInterestOracleDatum(
2304
2304
  getInlineDatumOrThrow(orefs.interestOracleUtxo),
@@ -2444,7 +2444,7 @@ describe('LRP leverage', () => {
2444
2444
  cdpCollateralRatioPercentage(
2445
2445
  context.emulator.slot,
2446
2446
  parsePriceOracleDatum(getInlineDatumOrThrow(priceOracleUtxo)).price,
2447
- res.utxo,
2447
+ res.utxo.assets,
2448
2448
  res.datum,
2449
2449
  parseInterestOracleDatum(
2450
2450
  getInlineDatumOrThrow(orefs.interestOracleUtxo),
@@ -2581,7 +2581,7 @@ describe('LRP leverage', () => {
2581
2581
  cdpCollateralRatioPercentage(
2582
2582
  context.emulator.slot,
2583
2583
  parsePriceOracleDatum(getInlineDatumOrThrow(priceOracleUtxo)).price,
2584
- res.utxo,
2584
+ res.utxo.assets,
2585
2585
  res.datum,
2586
2586
  parseInterestOracleDatum(
2587
2587
  getInlineDatumOrThrow(orefs.interestOracleUtxo),