@indigo-labs/indigo-sdk 0.4.3 → 0.4.4

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.mjs CHANGED
@@ -5985,6 +5985,7 @@ function voteHelper(stakingPosLockedAmt, pollShard, voteOption, currentTime, ind
5985
5985
  async function vote(voteOption, pollShardOref, stakingPositionOref, sysParams, lucid, currentSlot) {
5986
5986
  const network = lucid.config().network;
5987
5987
  const currentTime = BigInt(slotToUnixTime6(network, currentSlot));
5988
+ const ownAddr = await lucid.wallet().address();
5988
5989
  const pollShardRefScriptUtxo = matchSingle(
5989
5990
  await lucid.utxosByOutRef([
5990
5991
  fromSystemParamsScriptRef(
@@ -6055,7 +6056,7 @@ async function vote(voteOption, pollShardOref, stakingPositionOref, sysParams, l
6055
6056
  })
6056
6057
  },
6057
6058
  stakingPosUtxo.assets
6058
- ).addSignerKey(toHex8(stakingPosDatum.owner));
6059
+ ).addSigner(ownAddr);
6059
6060
  }
6060
6061
  async function mergeShards(pollManagerOref, shardsOutRefs, sysParams, lucid, currentSlot) {
6061
6062
  const network = lucid.config().network;
@@ -6991,1567 +6992,1655 @@ var mkGovValidatorFromSP = (params) => {
6991
6992
  };
6992
6993
  };
6993
6994
 
6994
- // src/contracts/stability-pool/transactions.ts
6995
+ // src/contracts/staking/transactions.ts
6995
6996
  import {
6996
- fromText as fromText5,
6997
+ addAssets as addAssets9,
6997
6998
  Data as Data32,
6998
6999
  fromHex as fromHex9,
6999
- toHex as toHex9,
7000
- addAssets as addAssets9,
7000
+ fromText as fromText5,
7001
7001
  slotToUnixTime as slotToUnixTime7,
7002
- credentialToAddress as credentialToAddress3
7002
+ toHex as toHex9
7003
7003
  } from "@lucid-evolution/lucid";
7004
7004
  import {
7005
- adaAssetClass as adaAssetClass4,
7006
- addressFromBech32 as addressFromBech322,
7007
- addressToBech32 as addressToBech322,
7008
7005
  assetClassValueOf as assetClassValueOf5,
7009
- estimateUtxoMinLovelace as estimateUtxoMinLovelace3,
7010
- lovelacesAmt as lovelacesAmt2,
7011
- matchSingle as matchSingle3,
7006
+ getInlineDatumOrThrow as getInlineDatumOrThrow5,
7012
7007
  mkAssetsOf as mkAssetsOf7,
7013
- mkLovelacesOf as mkLovelacesOf4,
7014
- negateAssets as negateAssets4
7008
+ mkLovelacesOf as mkLovelacesOf4
7015
7009
  } from "@3rd-eye-labs/cardano-offchain-common";
7016
- import { match as match17, P as P17 } from "ts-pattern";
7017
- async function requestSpAccountCreation(assetAscii, amount, sysParams, lucid) {
7018
- const [pkh, _skh] = await addrDetails(lucid);
7019
- const iasset = fromHex9(fromText5(assetAscii));
7020
- const iassetAssetClass = {
7021
- currencySymbol: fromHex9(
7022
- sysParams.stabilityPoolParams.assetSymbol.unCurrencySymbol
7023
- ),
7024
- tokenName: iasset
7010
+ async function openStakingPosition(amount, params, lucid, stakingManagerRef) {
7011
+ const [pkh, _] = await addrDetails(lucid);
7012
+ const stakingManagerOut = stakingManagerRef ? await findStakingManagerByOutRef(stakingManagerRef, lucid) : await findStakingManager(params, lucid);
7013
+ const stakingRefScriptUtxo = matchSingle(
7014
+ await lucid.utxosByOutRef([
7015
+ fromSystemParamsScriptRef(params.scriptReferences.stakingValidatorRef)
7016
+ ]),
7017
+ (_2) => new Error("Expected a single staking Ref Script UTXO")
7018
+ );
7019
+ const stakingTokenPolicyRefScriptUtxo = matchSingle(
7020
+ await lucid.utxosByOutRef([
7021
+ fromSystemParamsScriptRef(
7022
+ params.scriptReferences.authTokenPolicies.stakingTokenRef
7023
+ )
7024
+ ]),
7025
+ (_2) => new Error("Expected a single staking token policy Ref Script UTXO")
7026
+ );
7027
+ const newStakingManagerDatum = {
7028
+ totalStake: stakingManagerOut.datum.totalStake + amount,
7029
+ managerSnapshot: {
7030
+ snapshotAda: stakingManagerOut.datum.managerSnapshot.snapshotAda
7031
+ }
7025
7032
  };
7026
- const datum = {
7033
+ const stakingPositionDatum = {
7027
7034
  owner: fromHex9(pkh.hash),
7028
- iasset,
7029
- state: { ...initSpState, depositVal: mkSPInteger(amount) },
7030
- assetSums: [],
7031
- request: "Create",
7032
- lastRequestProcessingTime: 0n
7035
+ lockedAmount: [],
7036
+ positionSnapshot: {
7037
+ snapshotAda: stakingManagerOut.datum.managerSnapshot.snapshotAda
7038
+ }
7033
7039
  };
7034
- return lucid.newTx().pay.ToContract(
7035
- credentialToAddress3(
7036
- lucid.config().network,
7037
- {
7038
- hash: sysParams.validatorHashes.stabilityPoolHash,
7039
- type: "Script"
7040
- },
7041
- sysParams.stabilityPoolParams.stakeCredential != null ? fromSysParamsCredential(
7042
- sysParams.stabilityPoolParams.stakeCredential
7043
- ) : void 0
7044
- ),
7040
+ const stakingToken = params.stakingParams.stakingToken[0].unCurrencySymbol + fromText5(params.stakingParams.stakingToken[1].unTokenName);
7041
+ const indyToken = params.stakingParams.indyToken[0].unCurrencySymbol + fromText5(params.stakingParams.indyToken[1].unTokenName);
7042
+ return lucid.newTx().collectFrom(
7043
+ [stakingManagerOut.utxo],
7044
+ serialiseStakingRedeemer({
7045
+ CreateStakingPosition: { creatorPkh: fromHex9(pkh.hash) }
7046
+ })
7047
+ ).readFrom([stakingRefScriptUtxo]).pay.ToContract(
7048
+ stakingManagerOut.utxo.address,
7045
7049
  {
7046
7050
  kind: "inline",
7047
- value: serialiseStabilityPoolDatum({ Account: datum })
7051
+ value: serialiseStakingDatum(newStakingManagerDatum)
7048
7052
  },
7049
- addAssets9(
7050
- mkAssetsOf7(iassetAssetClass, amount),
7051
- mkLovelacesOf4(
7052
- // TODO: Calculate a more accurate amount to just cover costs.
7053
- // This should cover the account creation fee,
7054
- // the minimum ADA for the account UTxO and the transaction fee.
7055
- BigInt(sysParams.stabilityPoolParams.accountCreateFeeLovelaces) + 3000000n
7056
- )
7057
- )
7053
+ stakingManagerOut.utxo.assets
7054
+ ).readFrom([stakingTokenPolicyRefScriptUtxo]).mintAssets(
7055
+ {
7056
+ [stakingToken]: 1n
7057
+ },
7058
+ Data32.void()
7059
+ ).pay.ToContract(
7060
+ stakingManagerOut.utxo.address,
7061
+ {
7062
+ kind: "inline",
7063
+ value: serialiseStakingDatum(stakingPositionDatum)
7064
+ },
7065
+ {
7066
+ [stakingToken]: 1n,
7067
+ [indyToken]: amount
7068
+ }
7058
7069
  ).addSignerKey(pkh.hash);
7059
7070
  }
7060
- async function requestSpAccountAdjustment(amount, accountUtxo, sysParams, lucid) {
7061
- const myAddress = await lucid.wallet().address();
7062
- const stabilityPoolScriptRef = matchSingle3(
7071
+ async function adjustStakingPosition(stakingPositionRef, amount, params, lucid, currentSlot, stakingManagerRef) {
7072
+ const network = lucid.config().network;
7073
+ const now = BigInt(slotToUnixTime7(network, currentSlot));
7074
+ const stakingPositionOut = await findStakingPositionByOutRef(
7075
+ stakingPositionRef,
7076
+ lucid
7077
+ );
7078
+ const stakingManagerOut = stakingManagerRef ? await findStakingManagerByOutRef(stakingManagerRef, lucid) : await findStakingManager(params, lucid);
7079
+ const stakingRefScriptUtxo = matchSingle(
7063
7080
  await lucid.utxosByOutRef([
7064
- fromSystemParamsScriptRef(
7065
- sysParams.scriptReferences.stabilityPoolValidatorRef
7066
- )
7081
+ fromSystemParamsScriptRef(params.scriptReferences.stakingValidatorRef)
7067
7082
  ]),
7068
- (_) => new Error("Expected a single stability pool Ref Script UTXO")
7083
+ (_) => new Error("Expected a single staking Ref Script UTXO")
7069
7084
  );
7070
- const oldAccountDatum = parseAccountDatumOrThrow(
7071
- getInlineDatumOrThrow(accountUtxo)
7085
+ const indyToken = fromSystemParamsAsset(params.stakingParams.indyToken);
7086
+ const adaReward = calculateAdaReward(
7087
+ stakingManagerOut.datum.managerSnapshot.snapshotAda,
7088
+ stakingPositionOut.datum.positionSnapshot.snapshotAda,
7089
+ assetClassValueOf5(stakingPositionOut.utxo.assets, indyToken)
7072
7090
  );
7073
- const newAccountDatum = {
7074
- ...oldAccountDatum,
7075
- request: {
7076
- Adjust: {
7077
- amount,
7078
- outputAddress: addressFromBech322(myAddress)
7079
- }
7080
- }
7081
- };
7082
- return lucid.newTx().readFrom([stabilityPoolScriptRef]).collectFrom(
7083
- [accountUtxo],
7084
- serialiseStabilityPoolRedeemer({
7085
- RequestAction: {
7086
- Adjust: {
7087
- amount,
7088
- outputAddress: addressFromBech322(myAddress)
7089
- }
7090
- }
7091
+ const newLockedAmount = updateStakingLockedAmount(
7092
+ stakingPositionOut.datum.lockedAmount,
7093
+ BigInt(now)
7094
+ );
7095
+ return lucid.newTx().validFrom(Number(now)).readFrom([stakingRefScriptUtxo]).collectFrom(
7096
+ [stakingPositionOut.utxo],
7097
+ serialiseStakingRedeemer({
7098
+ AdjustStakedAmount: { adjustAmount: amount }
7091
7099
  })
7100
+ ).collectFrom(
7101
+ [stakingManagerOut.utxo],
7102
+ serialiseStakingRedeemer("UpdateTotalStake")
7092
7103
  ).pay.ToContract(
7093
- accountUtxo.address,
7104
+ stakingManagerOut.utxo.address,
7094
7105
  {
7095
7106
  kind: "inline",
7096
- value: serialiseStabilityPoolDatum({
7097
- Account: newAccountDatum
7107
+ value: serialiseStakingDatum({
7108
+ ...stakingManagerOut.datum,
7109
+ totalStake: stakingManagerOut.datum.totalStake + amount
7098
7110
  })
7099
7111
  },
7100
- addAssets9(
7101
- mkLovelacesOf4(
7102
- // TODO: Calculate a more accurate amount to just cover costs.
7103
- // This should cover the minimum ADA for 2 UTxOs (account and
7104
- // rewards withdrawal) and the transaction fee.
7105
- 5000000n
7106
- ),
7107
- mkAssetsOf7(
7108
- fromSystemParamsAsset(sysParams.stabilityPoolParams.accountToken),
7109
- 1n
7110
- ),
7111
- amount > 0n ? mkAssetsOf7(
7112
- {
7113
- currencySymbol: fromHex9(
7114
- sysParams.stabilityPoolParams.assetSymbol.unCurrencySymbol
7115
- ),
7116
- tokenName: oldAccountDatum.iasset
7112
+ addAssets9(stakingManagerOut.utxo.assets, mkLovelacesOf4(-adaReward))
7113
+ ).pay.ToContract(
7114
+ stakingPositionOut.utxo.address,
7115
+ {
7116
+ kind: "inline",
7117
+ value: serialiseStakingDatum({
7118
+ ...stakingPositionOut.datum,
7119
+ positionSnapshot: {
7120
+ snapshotAda: stakingManagerOut.datum.managerSnapshot.snapshotAda
7117
7121
  },
7118
- amount
7119
- ) : {}
7120
- )
7121
- ).addSignerKey(toHex9(oldAccountDatum.owner));
7122
+ lockedAmount: newLockedAmount
7123
+ })
7124
+ },
7125
+ addAssets9(stakingPositionOut.utxo.assets, mkAssetsOf7(indyToken, amount))
7126
+ ).addSignerKey(toHex9(stakingPositionOut.datum.owner));
7122
7127
  }
7123
- async function requestSpAccountClosure(accountUtxo, sysParams, lucid, maxTxFee = BASE_MAX_TX_FEE) {
7124
- const myAddress = await lucid.wallet().address();
7125
- const stabilityPoolScriptRef = matchSingle3(
7128
+ async function closeStakingPosition(stakingPositionRef, params, lucid, currentSlot, stakingManagerRef) {
7129
+ const network = lucid.config().network;
7130
+ const now = BigInt(slotToUnixTime7(network, currentSlot));
7131
+ const stakingPositionOut = await findStakingPositionByOutRef(
7132
+ stakingPositionRef,
7133
+ lucid
7134
+ );
7135
+ const stakingManagerOut = stakingManagerRef ? await findStakingManagerByOutRef(stakingManagerRef, lucid) : await findStakingManager(params, lucid);
7136
+ const stakingRefScriptUtxo = matchSingle(
7137
+ await lucid.utxosByOutRef([
7138
+ fromSystemParamsScriptRef(params.scriptReferences.stakingValidatorRef)
7139
+ ]),
7140
+ (_) => new Error("Expected a single staking Ref Script UTXO")
7141
+ );
7142
+ const stakingTokenPolicyRefScriptUtxo = matchSingle(
7126
7143
  await lucid.utxosByOutRef([
7127
7144
  fromSystemParamsScriptRef(
7128
- sysParams.scriptReferences.stabilityPoolValidatorRef
7145
+ params.scriptReferences.authTokenPolicies.stakingTokenRef
7129
7146
  )
7130
7147
  ]),
7131
- (_) => new Error("Expected a single stability pool Ref Script UTXO")
7148
+ (_) => new Error("Expected a single staking token policy Ref Script UTXO")
7132
7149
  );
7133
- const request = {
7134
- Close: {
7135
- outputAddress: addressFromBech322(myAddress),
7136
- maxTxFee
7137
- }
7138
- };
7139
- const oldAccountDatum = parseAccountDatumOrThrow(
7140
- getInlineDatumOrThrow(accountUtxo)
7150
+ const indyToken = fromSystemParamsAsset(params.stakingParams.indyToken);
7151
+ const existingIndyAmount = assetClassValueOf5(
7152
+ stakingPositionOut.utxo.assets,
7153
+ indyToken
7141
7154
  );
7142
- const newAccountDatum = {
7143
- ...oldAccountDatum,
7144
- request
7145
- };
7146
- return lucid.newTx().readFrom([stabilityPoolScriptRef]).collectFrom(
7147
- [accountUtxo],
7148
- serialiseStabilityPoolRedeemer({ RequestAction: request })
7155
+ const adaReward = calculateAdaReward(
7156
+ stakingManagerOut.datum.managerSnapshot.snapshotAda,
7157
+ stakingPositionOut.datum.positionSnapshot.snapshotAda,
7158
+ assetClassValueOf5(stakingPositionOut.utxo.assets, indyToken)
7159
+ );
7160
+ return lucid.newTx().validFrom(Number(now)).readFrom([stakingRefScriptUtxo, stakingTokenPolicyRefScriptUtxo]).collectFrom([stakingPositionOut.utxo], serialiseStakingRedeemer("Unstake")).collectFrom(
7161
+ [stakingManagerOut.utxo],
7162
+ serialiseStakingRedeemer("UpdateTotalStake")
7149
7163
  ).pay.ToContract(
7150
- accountUtxo.address,
7164
+ stakingManagerOut.utxo.address,
7151
7165
  {
7152
7166
  kind: "inline",
7153
- value: serialiseStabilityPoolDatum({ Account: newAccountDatum })
7167
+ value: serialiseStakingDatum({
7168
+ ...stakingManagerOut.datum,
7169
+ totalStake: stakingManagerOut.datum.totalStake - existingIndyAmount
7170
+ })
7154
7171
  },
7155
- addAssets9(
7156
- mkLovelacesOf4(
7157
- // TODO: Calculate a more accurate amount to just cover costs.
7158
- // This should cover the minimum ADA for the rewards UTxO and the transaction fee.
7159
- 3000000n
7160
- ),
7161
- mkAssetsOf7(
7162
- fromSystemParamsAsset(sysParams.stabilityPoolParams.accountToken),
7163
- 1n
7164
- )
7165
- )
7166
- ).addSignerKey(toHex9(oldAccountDatum.owner));
7172
+ addAssets9(stakingManagerOut.utxo.assets, mkLovelacesOf4(-adaReward))
7173
+ ).mintAssets(
7174
+ mkAssetsOf7(fromSystemParamsAsset(params.stakingParams.stakingToken), -1n),
7175
+ Data32.void()
7176
+ ).addSignerKey(toHex9(stakingPositionOut.datum.owner));
7167
7177
  }
7168
- async function processSpRequestAuxiliary(stabilityPoolUtxo, accountUtxo, iAssetUtxo, allE2s2sSnapshotOrefs, sysParams, lucid, currentSlot, txFee) {
7169
- const network = lucid.config().network;
7170
- const currentTime = BigInt(slotToUnixTime7(network, currentSlot));
7171
- const stabilityPoolScriptRef = matchSingle3(
7172
- await lucid.utxosByOutRef([
7173
- fromSystemParamsScriptRef(
7174
- sysParams.scriptReferences.stabilityPoolValidatorRef
7175
- )
7176
- ]),
7177
- (_) => new Error("Expected a single stability pool Ref Script UTXO")
7178
+ var MIN_UTXO_AMOUNT = 2000000n;
7179
+ async function distributeAda(stakingManagerRef, collectorRefs, params, lucid) {
7180
+ const [stakingManagerUtxo] = await lucid.utxosByOutRef([stakingManagerRef]);
7181
+ const stakingManagerDatum = parseStakingManagerDatum(
7182
+ getInlineDatumOrThrow5(stakingManagerUtxo)
7178
7183
  );
7179
- const accountDatum = parseAccountDatumOrThrow(
7180
- getInlineDatumOrThrow(accountUtxo)
7184
+ const collectorUtxos = (await lucid.utxosByOutRef(collectorRefs)).filter((utxo) => utxo.datum && utxo.datum === Data32.void()).filter((utxo) => utxo.assets["lovelace"] > MIN_UTXO_AMOUNT);
7185
+ if (collectorUtxos.length === 0) {
7186
+ throw new Error("No available collectors found");
7187
+ }
7188
+ const adaRewardCollected = collectorUtxos.reduce(
7189
+ (acc, utxo) => acc + utxo.assets["lovelace"] - MIN_UTXO_AMOUNT,
7190
+ 0n
7181
7191
  );
7182
- const stabilityPoolDatum = parseStabilityPoolDatumOrThrow(
7183
- getInlineDatumOrThrow(stabilityPoolUtxo)
7192
+ const newSnapshot = distributeReward(
7193
+ stakingManagerDatum.managerSnapshot.snapshotAda,
7194
+ adaRewardCollected,
7195
+ stakingManagerDatum.totalStake
7184
7196
  );
7185
- const baseRefInputs = [iAssetUtxo, stabilityPoolScriptRef];
7186
- const validFrom = slotToUnixTime7(network, currentSlot - 1);
7187
- const tx = lucid.newTx().validFrom(validFrom).validTo(validFrom + sysParams.stabilityPoolParams.accountProcessingBiasMs).readFrom(baseRefInputs).collectFrom([stabilityPoolUtxo], {
7188
- kind: "selected",
7189
- inputs: [stabilityPoolUtxo, accountUtxo],
7190
- makeRedeemer: (indices) => serialiseStabilityPoolRedeemer({
7191
- ProcessRequestPool: {
7192
- poolInputIdx: indices[0],
7193
- accountInputIdx: indices[1]
7194
- }
7197
+ const stakingRefScriptUtxo = matchSingle(
7198
+ await lucid.utxosByOutRef([
7199
+ fromSystemParamsScriptRef(params.scriptReferences.stakingValidatorRef)
7200
+ ]),
7201
+ (_) => new Error("Expected a single staking Ref Script UTXO")
7202
+ );
7203
+ const collectorRefScriptUtxo = matchSingle(
7204
+ await lucid.utxosByOutRef([
7205
+ fromSystemParamsScriptRef(params.scriptReferences.collectorValidatorRef)
7206
+ ]),
7207
+ (_) => new Error("Expected a single staking Ref Script UTXO")
7208
+ );
7209
+ const tx = lucid.newTx().readFrom([stakingRefScriptUtxo, collectorRefScriptUtxo]).collectFrom([stakingManagerUtxo], serialiseStakingRedeemer("Distribute")).collectFrom(
7210
+ collectorUtxos,
7211
+ serialiseCollectorRedeemer("DistributeToStakers")
7212
+ ).pay.ToContract(
7213
+ stakingManagerUtxo.address,
7214
+ {
7215
+ kind: "inline",
7216
+ value: serialiseStakingDatum({
7217
+ ...stakingManagerDatum,
7218
+ managerSnapshot: { snapshotAda: newSnapshot }
7219
+ })
7220
+ },
7221
+ addAssets9(stakingManagerUtxo.assets, mkLovelacesOf4(adaRewardCollected))
7222
+ );
7223
+ for (const collectorUtxo of collectorUtxos) {
7224
+ tx.pay.ToContract(
7225
+ collectorUtxo.address,
7226
+ { kind: "inline", value: Data32.void() },
7227
+ mkLovelacesOf4(MIN_UTXO_AMOUNT)
7228
+ );
7229
+ }
7230
+ return tx;
7231
+ }
7232
+
7233
+ // src/contracts/staking/types.ts
7234
+ import { Data as Data33 } from "@lucid-evolution/lucid";
7235
+ var StakingParamsSchema = Data33.Object({
7236
+ stakingManagerNft: AssetClassSchema2,
7237
+ stakingToken: AssetClassSchema2,
7238
+ indyToken: AssetClassSchema2,
7239
+ pollToken: AssetClassSchema2,
7240
+ versionRecordToken: AssetClassSchema2,
7241
+ collectorValHash: Data33.Bytes()
7242
+ });
7243
+ var StakingParams = StakingParamsSchema;
7244
+ function castStakingParams(params) {
7245
+ return Data33.castTo(params, StakingParams);
7246
+ }
7247
+
7248
+ // src/contracts/interest-oracle/transactions.ts
7249
+ import {
7250
+ fromHex as fromHex10,
7251
+ fromText as fromText6,
7252
+ slotToUnixTime as slotToUnixTime8,
7253
+ toUnit as toUnit2,
7254
+ validatorToAddress
7255
+ } from "@lucid-evolution/lucid";
7256
+
7257
+ // src/contracts/one-shot/transactions.ts
7258
+ import {
7259
+ addAssets as addAssets10,
7260
+ Data as Data35,
7261
+ mintingPolicyToId,
7262
+ toUnit
7263
+ } from "@lucid-evolution/lucid";
7264
+
7265
+ // src/contracts/one-shot/scripts.ts
7266
+ import { applyParamsToScript as applyParamsToScript7 } from "@lucid-evolution/lucid";
7267
+
7268
+ // src/contracts/one-shot/types.ts
7269
+ import { Data as Data34 } from "@lucid-evolution/lucid";
7270
+ var OneShotParamsSchema = Data34.Object({
7271
+ referenceOutRef: Data34.Object({
7272
+ txHash: Data34.Bytes(),
7273
+ outputIdx: Data34.Integer()
7274
+ }),
7275
+ mintAmounts: Data34.Array(
7276
+ Data34.Object({
7277
+ /// Use hex encoded string
7278
+ tokenName: Data34.Bytes(),
7279
+ amount: Data34.Integer()
7195
7280
  })
7196
- });
7197
- if (!accountDatum.request) throw new Error("Account Request is null");
7198
- const iassetAssetClass = {
7199
- currencySymbol: fromHex9(
7200
- sysParams.stabilityPoolParams.assetSymbol.unCurrencySymbol
7201
- ),
7202
- tokenName: stabilityPoolDatum.iasset
7281
+ )
7282
+ });
7283
+ var OneShotParams = OneShotParamsSchema;
7284
+ function castOneShotParams(params) {
7285
+ return Data34.castTo(params, OneShotParams);
7286
+ }
7287
+
7288
+ // src/validators/one-shot-policy.ts
7289
+ var _oneShotPolicy = {
7290
+ type: "PlutusScriptV3",
7291
+ description: "Generated by Aiken",
7292
+ cborHex: "590379590376010100229800aba4aba2aba1aba0aab9faab9eaab9dab9a4888888896600264653001300800198041804800cdc3a400130080024888966002600460106ea800e26644b30013004300a37546466446600400400244b30010018a60103d87a80008992cc004cdd7980918079baa001004899ba548000cc0440052f5c11330030033013002403460220028078dd6180798061baa004300e300b375402515980099912cc004006294226530013259800980418071baa00189bad300f301237566024601e6ea800629000201a30110019baf301130120019bab0024889660020031598009801002c4c02800e294100f44c96600266ebd300101400030110018acc004cdc38021bad301230153756602400313003374c602c00514a080822b3001300b0048980180345282020404060280028090653001001801c88cc048008cc048dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044c8cc896600266e452201000028acc004cdc7a4410000289980219ba548000cc054c04c00d2f5c00031330044c103d87a80000054045198008034006446600c0046602e00a00280310111bae301000130150033013002404514a114a114a08090dd59807180798079807980798059baa003374c646530010019bac3002300d37540294bd6f7b630200222259800801440063300100398098014c8cc8966002601600310048991919800800803112cc00400626602e66ec0dd48061ba60034bd6f7b63044c8cc896600266e4403c00a2b30013371e01e0051325980099baf4c101a000374c003100289980d99bb037520206e9800400901719198008009bab30190042259800800c4cc070cdd81ba900a375001297adef6c6089919912cc004cdc8806801456600266e3c03400a264b30013370e00266e05200000d880144cc080cdd81ba900e375066e0000403400901c1bad301d00389980f99bb0375201a6ea003001101b44cc07c00ccc01401400501b1bae301a001301f002301d001406d13301a337606ea403cdd3003002202c89980d00199802802800a02c375c602a0026034004603000280b0cc050cdd81ba9002375000297adef6c6040406eb8c04cc040dd50009bad30053010375400260240048019010118079808000c528c590094590091bae300c30093754006b300130023008375400915980098049baa0048a4d16402916401d16401c300800130033754013149a26cac8009"
7293
+ };
7294
+
7295
+ // src/contracts/one-shot/scripts.ts
7296
+ function mkOneShotPolicy(params) {
7297
+ return {
7298
+ type: "PlutusV3",
7299
+ script: applyParamsToScript7(_oneShotPolicy.cborHex, [
7300
+ castOneShotParams(params)
7301
+ ])
7203
7302
  };
7204
- await match17(accountDatum.request).with("Create", async (_) => {
7205
- const accountTokenScriptRef = matchSingle3(
7206
- await lucid.utxosByOutRef([
7207
- fromSystemParamsScriptRef(
7208
- sysParams.scriptReferences.authTokenPolicies.accountTokenRef
7209
- )
7210
- ]),
7211
- (_2) => new Error("Expected a single cdp auth token policy Ref Script UTXO")
7212
- );
7213
- const requestDepositAmt = assetClassValueOf5(
7214
- accountUtxo.assets,
7215
- iassetAssetClass
7216
- );
7217
- const poolAddr = credentialToAddress3(
7218
- lucid.config().network,
7303
+ }
7304
+
7305
+ // src/contracts/one-shot/transactions.ts
7306
+ import { reduce } from "fp-ts/lib/Array";
7307
+ async function oneShotMintTx(lucid, params) {
7308
+ const oneShotPolicy = mkOneShotPolicy(params);
7309
+ const policyId = mintingPolicyToId(oneShotPolicy);
7310
+ const refUtxo = matchSingle(
7311
+ await lucid.utxosByOutRef([
7219
7312
  {
7220
- hash: sysParams.validatorHashes.stabilityPoolHash,
7221
- type: "Script"
7222
- },
7223
- sysParams.stabilityPoolParams.stakeCredential != null ? fromSysParamsCredential(
7224
- sysParams.stabilityPoolParams.stakeCredential
7225
- ) : void 0
7226
- );
7227
- const accountOutputAdaAmt = lovelacesAmt2(accountUtxo.assets) - BigInt(sysParams.stabilityPoolParams.accountCreateFeeLovelaces) - txFee;
7228
- const accountTokenVal = mkAssetsOf7(
7229
- fromSystemParamsAsset(sysParams.stabilityPoolParams.accountToken),
7230
- 1n
7231
- );
7232
- const accountOutputDatum = serialiseStabilityPoolDatum({
7233
- Account: {
7234
- owner: accountDatum.owner,
7235
- iasset: stabilityPoolDatum.iasset,
7236
- state: {
7237
- ...stabilityPoolDatum.state,
7238
- depositVal: mkSPInteger(requestDepositAmt)
7239
- },
7240
- assetSums: stabilityPoolDatum.assetStates.map(([key, val]) => [
7241
- key,
7242
- val.currentSumVal
7243
- ]),
7244
- request: null,
7245
- lastRequestProcessingTime: currentTime
7313
+ txHash: params.referenceOutRef.txHash,
7314
+ outputIndex: Number(params.referenceOutRef.outputIdx)
7246
7315
  }
7247
- });
7248
- const accountOutMinUtxoLovelace = estimateUtxoMinLovelace3(
7249
- lucid.config().protocolParameters,
7250
- poolAddr,
7251
- accountTokenVal,
7252
- { InlineDatum: { datum: accountOutputDatum } }
7253
- );
7254
- if (accountOutputAdaAmt < accountOutMinUtxoLovelace) {
7255
- throw new Error("Request doesn't have enough ADA to be processed.");
7316
+ ]),
7317
+ (_) => {
7318
+ throw new Error("Cannot find the reference UTXO for one-shot.");
7256
7319
  }
7257
- tx.readFrom([accountTokenScriptRef]).collectFrom([accountUtxo], {
7258
- kind: "selected",
7259
- inputs: [stabilityPoolUtxo, accountUtxo],
7260
- makeRedeemer: (indices) => serialiseStabilityPoolRedeemer({
7261
- ProcessRequestAccount: {
7262
- poolInputIdx: indices[0],
7263
- accountInputIdx: indices[1],
7264
- e2s2sIdxs: [],
7265
- currentTime
7266
- }
7267
- })
7268
- }).mintAssets(accountTokenVal, Data32.void()).pay.ToContract(
7269
- poolAddr,
7270
- {
7271
- kind: "inline",
7272
- value: serialiseStabilityPoolDatum({
7273
- StabilityPool: liquidationHelper(
7274
- {
7275
- ...stabilityPoolDatum,
7276
- state: {
7277
- ...stabilityPoolDatum.state,
7278
- depositVal: spAdd(
7279
- stabilityPoolDatum.state.depositVal,
7280
- mkSPInteger(requestDepositAmt)
7281
- )
7282
- }
7283
- },
7284
- adaAssetClass4,
7285
- 0n,
7286
- BigInt(sysParams.stabilityPoolParams.accountCreateFeeLovelaces)
7287
- )
7320
+ );
7321
+ return [
7322
+ lucid.newTx().collectFrom([refUtxo]).mintAssets(
7323
+ reduce(
7324
+ {},
7325
+ (acc, entry) => addAssets10(acc, {
7326
+ [toUnit(policyId, entry.tokenName)]: entry.amount
7288
7327
  })
7289
- },
7290
- addAssets9(
7291
- stabilityPoolUtxo.assets,
7292
- mkAssetsOf7(iassetAssetClass, requestDepositAmt),
7293
- mkLovelacesOf4(
7294
- BigInt(sysParams.stabilityPoolParams.accountCreateFeeLovelaces)
7295
- )
7296
- )
7297
- ).pay.ToContract(
7298
- poolAddr,
7299
- {
7300
- kind: "inline",
7301
- value: accountOutputDatum
7302
- },
7303
- addAssets9(accountTokenVal, mkLovelacesOf4(accountOutputAdaAmt))
7304
- ).setMinFee(txFee);
7305
- }).with({ Adjust: P17.select() }, async (adjustContent) => {
7306
- const iassetDatum = parseIAssetDatumOrThrow(
7307
- getInlineDatumOrThrow(iAssetUtxo)
7308
- );
7309
- const accountDepositChange = adjustContent.amount;
7310
- const outputAddress = addressToBech322(
7311
- adjustContent.outputAddress,
7312
- lucid.config().network
7313
- );
7314
- const e2s2sIdxs = await findRelevantE2s2sIdxs(
7315
- lucid,
7316
- stabilityPoolDatum,
7317
- accountDatum.state,
7318
- allE2s2sSnapshotOrefs
7319
- );
7320
- const { updatedAccountContent, reward } = updateAccount(
7321
- stabilityPoolDatum,
7322
- accountDatum,
7323
- e2s2sIdxs
7324
- );
7325
- const isDepositOrRewardWithdrawal = accountDepositChange >= 0;
7326
- const accountBalanceChange = isDepositOrRewardWithdrawal ? accountDepositChange : bigintMax(
7327
- accountDepositChange,
7328
- -fromSPInteger(updatedAccountContent.state.depositVal)
7329
- );
7330
- const newPoolDepositExcludingFee = spZeroNegatives(
7331
- spAdd(
7332
- stabilityPoolDatum.state.depositVal,
7333
- mkSPInteger(accountBalanceChange)
7334
- )
7335
- );
7336
- const withdrawalFeeAmt = isDepositOrRewardWithdrawal || newPoolDepositExcludingFee.value === 0n ? 0n : calculateFeeFromRatio(
7337
- iassetDatum.stabilityPoolWithdrawalFeeRatio,
7338
- -accountBalanceChange
7339
- );
7340
- const newPoolState = updatePoolStateWhenWithdrawalFee(withdrawalFeeAmt, {
7341
- ...stabilityPoolDatum.state,
7342
- depositVal: newPoolDepositExcludingFee
7343
- });
7344
- const { e2s2sRefInputs, mkProcessRequestAccountRedeemerContent } = createProcessRequestAccountRedeemer(
7345
- e2s2sIdxs,
7346
- baseRefInputs,
7347
- currentTime
7348
- );
7349
- if (e2s2sRefInputs.length > 0) {
7350
- tx.readFrom(e2s2sRefInputs);
7351
- }
7352
- tx.collectFrom([accountUtxo], {
7353
- kind: "selected",
7354
- inputs: [stabilityPoolUtxo, accountUtxo],
7355
- makeRedeemer: (indices) => {
7356
- return serialiseStabilityPoolRedeemer({
7357
- ProcessRequestAccount: mkProcessRequestAccountRedeemerContent(
7358
- indices[0],
7359
- indices[1]
7360
- )
7361
- });
7362
- }
7363
- }).pay.ToContract(
7364
- stabilityPoolUtxo.address,
7328
+ )(params.mintAmounts),
7329
+ Data35.void()
7330
+ ).attach.MintingPolicy(oneShotPolicy),
7331
+ policyId
7332
+ ];
7333
+ }
7334
+ async function runOneShotMintTx(lucid, params) {
7335
+ const [tx, policyId] = await oneShotMintTx(lucid, params);
7336
+ const txHash = await tx.complete().then((tx2) => tx2.sign.withWallet().complete()).then((tx2) => tx2.submit());
7337
+ await lucid.awaitTx(txHash);
7338
+ return policyId;
7339
+ }
7340
+
7341
+ // src/contracts/interest-oracle/scripts.ts
7342
+ import { applyParamsToScript as applyParamsToScript8 } from "@lucid-evolution/lucid";
7343
+
7344
+ // src/contracts/interest-oracle/types.ts
7345
+ import { Data as Data36 } from "@lucid-evolution/lucid";
7346
+ var InterestOracleParamsSchema = Data36.Object({
7347
+ /** Milliseconds */
7348
+ biasTime: Data36.Integer(),
7349
+ owner: Data36.Bytes()
7350
+ });
7351
+ var InterestOracleParams = InterestOracleParamsSchema;
7352
+ function castInterestOracleParams(params) {
7353
+ return Data36.castTo(params, InterestOracleParams);
7354
+ }
7355
+
7356
+ // src/validators/interest-oracle-validator.ts
7357
+ var _interestOracleValidator = {
7358
+ type: "PlutusScriptV3",
7359
+ description: "Generated by Aiken",
7360
+ cborHex: "5907e05907dd010100229800aba2aba1aba0aab9faab9eaab9dab9cab9a4888888896600264653001300900198049805000cdc3a400530090024888966002600460126ea800e2653001300e00198071807800cdc3a40009112cc004c004c034dd500444c8c8c966002602a00513259800980298089baa001899192cc004c06000a2b300130073013375401119800980b980a1baa008980a1baa00b9180c180c800c896600200310018a9980a0010800a02648888c966002660049201205458206973206e6f74207369676e6564206279206f7261636c65206f776e6572003232330010013758603c603e603e603e603e603e603e603e603e60366ea8048896600200314a115980099b8f375c603e00200714a31330020023020001406480e8dd71801980c9baa01f899912cc004cc011240115496e636f72726563742074782076616c6964697479003322980091192cc004c04c0062b30013013301f375400514c103d87a80008a6103d879800040751598009802000c5660026008603e6ea800a2980103d87a80008a6103d87b800040751332259800980d000c4c96600266e2000c0062980103d87980008acc004cdc4000801c530103d87b80008a6103d87a800040808100dd6981298111baa0048acc004c054006298103d87b80008a6103d8798000407c80f8dd6981198101baa003301f375400480e901d180f1baa002980118101810981098109810981098109810980e9baa014980118019980f98019980f98021980f9ba8337026eb4c01cc074dd500b9bad3020301d375404697ae03301f9800a51a60103d87a8000a60103d8798000406897ae03301f30033301f30043301f375066e00dd69803980e9baa017375a6040603a6ea808d2f5c06603f30014a34c103d87a8000a60103d8798000406897ae04bd702444b300132598009802800c528c566002603200314a314a080f101e180f9baa33003302330203754004604660406ea8006264b300130140018a518acc004c0640062946294101e203c301f375466006601460406ea8008c028c080dd5000c528203a118011980f192cc004c054c070dd5000c4c966002602c603a6ea8c020c078dd51810980f1baa00389802998101ba80014bd7044c014cc080dd419b80001480092f5c080d8dd69810180e9baa0018800a034301f301c3754603e60386ea8004cc078c966002602a60386ea8006264b30013016301d37546010603c6ea8c020c078dd5001c4c014cc080dd4000a5eb822600a660406ea0cdc0000a400297ae0406c6eb4c080c074dd5000c400501a180f980e1baa3006301c375400297ae0370e900244c9660026600a92012643757272656e742074696d652068617320746f206265203e3d206c6173745f736574746c656400337126eb4c004c070dd50041bad3006301c375402d15980099802a492b496e74657265737420726174652068617320746f20626520696e2072616e6765205b30252c20313030255d005980099b8948000dd6980f980e1baa301f301c375402d1337126eb4c07cc070dd5180f980e1baa0164820225ea294101944cc015240120496e746572657374206f7261636c65206f757470757420696e636f72726563740098009bac301f3020302000798019980f18011980f180f980e1baa301f301c37540086603c98103d87a80004bd7025eb8266e9520043301e30023301e375066e00dd6980f980e1baa008325980099b88375a6004603a6ea8024006266e0ccdc199b823370466e04004dd69801180e9baa009375a6040603a6ea8c01cc074dd5004a41010141ede959b7c03690405844fdf500a410112f5153301b4901015a001640686eb4c018c070dd500b1980f180f980e1baa0163301e3006301c375402c97ae04bd704dd59803180e1baa00448888c8c8cc004004018896600200314a1159800992cc004c0100062b30013375e601260486ea800401a2b300133229800992cc004c068c098dd5000c4dd6981398151bab302a302737540031480010241814800cdd58014dd798149815000c89660026040604e6ea930103d87a8000899b890010028acc004cdc480080144cdc480119b80001482026fb80a2941025204a4888966002007159800980100344cc00401120008a50409d1325980099baf4c1014000302a0018acc004cc008014dd6981598171bab302b001898019ba6302f0048a5040a115980099801002a4001130030078a5040a08140c0b400d02b0dd3002994c0040066eacc03cc094dd5001488cc0a4008cc0a4dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044c8cc896600266e452201000028acc004cdc7a441000028998021808198161815001a5eb80006266008980103d87a8000005409d198008034006446600c0046605c00a00280310271bae3027001302c003302a00240a113375e604e60506050605060486ea800530103d87a80008a50408514a0810a29410211813000c528c4cc008008c09c0050202048598009809980f9baa003891919baf302530223754604a60446ea8008004c090c084dd5002448c8cdd7981298111baa00200130243021375400880e914a080ca29410191180f98101810000c5282030374a90011ba548002294101619198008009bac301c0042259800800c5a264b30013375e603c60366ea80040422600a60366ea8006266006006603e00480c0c07400501b22c808a2c80a8dd6980b00098091baa0018b201e30140038b2024375a60260026026002601c6ea80222c805860146ea800e2c8038601200260086ea802629344d95900101"
7361
+ };
7362
+
7363
+ // src/contracts/interest-oracle/scripts.ts
7364
+ function mkInterestOracleValidator(params) {
7365
+ return {
7366
+ type: "PlutusV3",
7367
+ script: applyParamsToScript8(_interestOracleValidator.cborHex, [
7368
+ castInterestOracleParams(params)
7369
+ ])
7370
+ };
7371
+ }
7372
+
7373
+ // tests/queries/interest-oracle-queries.ts
7374
+ import {
7375
+ assetClassToUnit as assetClassToUnit2
7376
+ } from "@3rd-eye-labs/cardano-offchain-common";
7377
+ async function findInterestOracle(lucid, interestNft) {
7378
+ return lucid.utxoByUnit(assetClassToUnit2(interestNft));
7379
+ }
7380
+
7381
+ // src/contracts/interest-oracle/transactions.ts
7382
+ async function startInterestOracle(initialUnitaryInterest, initialInterestRate, initialLastInterestUpdate, oracleParams, lucid, interestTokenName, withScriptRef = false, refOutRef) {
7383
+ const network = lucid.config().network;
7384
+ const tokenName = interestTokenName ?? "INTEREST_ORACLE";
7385
+ if (!refOutRef) {
7386
+ refOutRef = (await lucid.wallet().getUtxos())[0];
7387
+ }
7388
+ const [tx, policyId] = await oneShotMintTx(lucid, {
7389
+ referenceOutRef: {
7390
+ txHash: refOutRef.txHash,
7391
+ outputIdx: BigInt(refOutRef.outputIndex)
7392
+ },
7393
+ mintAmounts: [
7365
7394
  {
7366
- kind: "inline",
7367
- value: serialiseStabilityPoolDatum({
7368
- StabilityPool: {
7369
- ...stabilityPoolDatum,
7370
- state: newPoolState
7371
- }
7372
- })
7373
- },
7374
- addAssets9(
7375
- stabilityPoolUtxo.assets,
7376
- negateAssets4(reward),
7377
- mkAssetsOf7(iassetAssetClass, accountBalanceChange + withdrawalFeeAmt)
7378
- )
7379
- );
7380
- const theoreticalOwnerOutputVal = addAssets9(
7381
- reward,
7382
- isDepositOrRewardWithdrawal ? {} : mkAssetsOf7(
7383
- iassetAssetClass,
7384
- -accountBalanceChange - withdrawalFeeAmt
7385
- )
7386
- );
7387
- const ownerOutputDat = serialiseActionReturnDatum({
7388
- IndigoStabilityPoolAccountAdjustment: {
7389
- txHash: fromHex9(accountUtxo.txHash),
7390
- outputIndex: BigInt(accountUtxo.outputIndex)
7395
+ tokenName: fromText6(tokenName),
7396
+ amount: 1n
7391
7397
  }
7392
- });
7393
- const ownerOutputMinUtxoLovelace = estimateUtxoMinLovelace3(
7394
- lucid.config().protocolParameters,
7395
- outputAddress,
7396
- theoreticalOwnerOutputVal,
7397
- { InlineDatum: { datum: ownerOutputDat } }
7398
- );
7399
- const extraOwnerOutputLovelacesAmt = lovelacesAmt2(theoreticalOwnerOutputVal) >= ownerOutputMinUtxoLovelace ? 0n : ownerOutputMinUtxoLovelace - lovelacesAmt2(theoreticalOwnerOutputVal);
7400
- const actualOwnerOutputVal = addAssets9(
7401
- theoreticalOwnerOutputVal,
7402
- mkLovelacesOf4(extraOwnerOutputLovelacesAmt)
7403
- );
7404
- const accountOutputDat = serialiseStabilityPoolDatum({
7405
- Account: {
7406
- ...updatedAccountContent,
7407
- state: {
7408
- ...updatedAccountContent.state,
7409
- depositVal: spAdd(
7410
- updatedAccountContent.state.depositVal,
7411
- mkSPInteger(accountBalanceChange)
7412
- )
7398
+ ]
7399
+ });
7400
+ const validator = mkInterestOracleValidator(oracleParams);
7401
+ tx.pay.ToContract(
7402
+ validatorToAddress(network, validator),
7403
+ {
7404
+ kind: "inline",
7405
+ value: serialiseInterestOracleDatum({
7406
+ unitaryInterest: initialUnitaryInterest,
7407
+ interestRate: {
7408
+ getOnChainInt: initialInterestRate
7413
7409
  },
7414
- request: null,
7415
- lastRequestProcessingTime: currentTime
7416
- }
7417
- });
7418
- const accountOutputValWithoutAda = mkAssetsOf7(
7419
- fromSystemParamsAsset(sysParams.stabilityPoolParams.accountToken),
7420
- 1n
7421
- );
7422
- const accountOutMinUtxoLovelace = estimateUtxoMinLovelace3(
7423
- lucid.config().protocolParameters,
7424
- stabilityPoolUtxo.address,
7425
- accountOutputValWithoutAda,
7426
- { InlineDatum: { datum: accountOutputDat } }
7427
- );
7428
- const accountOutputAdaAmt = lovelacesAmt2(accountUtxo.assets) - extraOwnerOutputLovelacesAmt - txFee;
7429
- if (accountOutputAdaAmt < accountOutMinUtxoLovelace) {
7430
- throw new Error("Account doesn't have enough ADA to be processed.");
7431
- }
7432
- tx.pay.ToContract(
7433
- stabilityPoolUtxo.address,
7434
- {
7435
- kind: "inline",
7436
- value: accountOutputDat
7437
- },
7438
- addAssets9(
7439
- accountOutputValWithoutAda,
7440
- mkLovelacesOf4(accountOutputAdaAmt)
7441
- )
7442
- ).pay.ToAddressWithData(
7443
- outputAddress,
7444
- {
7445
- kind: "inline",
7446
- value: ownerOutputDat
7447
- },
7448
- actualOwnerOutputVal
7449
- ).setMinFee(txFee);
7450
- }).with({ Close: P17.select() }, async (closeContent) => {
7451
- if (txFee > closeContent.maxTxFee) {
7452
- throw new Error("Account doesn't allow current transaction fee.");
7410
+ lastUpdated: initialLastInterestUpdate
7411
+ })
7412
+ },
7413
+ {
7414
+ lovelace: 2500000n,
7415
+ [toUnit2(policyId, fromText6(tokenName))]: 1n
7453
7416
  }
7454
- const accountTokenScriptRef = matchSingle3(
7455
- await lucid.utxosByOutRef([
7456
- fromSystemParamsScriptRef(
7457
- sysParams.scriptReferences.authTokenPolicies.accountTokenRef
7458
- )
7459
- ]),
7460
- (_) => new Error("Expected a single cdp auth token policy Ref Script UTXO")
7461
- );
7462
- const iassetDatum = parseIAssetDatumOrThrow(
7463
- getInlineDatumOrThrow(iAssetUtxo)
7464
- );
7465
- const outputAddress = addressToBech322(
7466
- closeContent.outputAddress,
7467
- lucid.config().network
7468
- );
7469
- const e2s2sIdxs = await findRelevantE2s2sIdxs(
7470
- lucid,
7471
- stabilityPoolDatum,
7472
- accountDatum.state,
7473
- allE2s2sSnapshotOrefs
7474
- );
7475
- const { updatedAccountContent, reward } = updateAccount(
7476
- stabilityPoolDatum,
7477
- accountDatum,
7478
- e2s2sIdxs
7479
- );
7480
- const newPoolDepositExcludingFee = spZeroNegatives(
7481
- spSub(
7482
- stabilityPoolDatum.state.depositVal,
7483
- updatedAccountContent.state.depositVal
7484
- )
7485
- );
7486
- const withdrawnAmt = zeroNegatives(
7487
- fromSPInteger(updatedAccountContent.state.depositVal)
7488
- );
7489
- const withdrawalFeeAmt = newPoolDepositExcludingFee.value === 0n ? 0n : calculateFeeFromRatio(
7490
- iassetDatum.stabilityPoolWithdrawalFeeRatio,
7491
- withdrawnAmt
7492
- );
7493
- const newPoolState = updatePoolStateWhenWithdrawalFee(withdrawalFeeAmt, {
7494
- ...stabilityPoolDatum.state,
7495
- depositVal: newPoolDepositExcludingFee
7496
- });
7497
- const { e2s2sRefInputs, mkProcessRequestAccountRedeemerContent } = createProcessRequestAccountRedeemer(
7498
- e2s2sIdxs,
7499
- [...baseRefInputs, accountTokenScriptRef],
7500
- currentTime
7417
+ );
7418
+ if (withScriptRef) {
7419
+ tx.pay.ToAddressWithData(
7420
+ validatorToAddress(network, validator),
7421
+ void 0,
7422
+ void 0,
7423
+ validator
7501
7424
  );
7502
- if (e2s2sRefInputs.length > 0) {
7503
- tx.readFrom(e2s2sRefInputs);
7425
+ }
7426
+ return [
7427
+ tx,
7428
+ {
7429
+ currencySymbol: fromHex10(policyId),
7430
+ tokenName: fromHex10(fromText6(tokenName))
7504
7431
  }
7505
- tx.readFrom([accountTokenScriptRef]).collectFrom([accountUtxo], {
7506
- kind: "selected",
7507
- inputs: [stabilityPoolUtxo, accountUtxo],
7508
- makeRedeemer: (indices) => {
7509
- return serialiseStabilityPoolRedeemer({
7510
- ProcessRequestAccount: mkProcessRequestAccountRedeemerContent(
7511
- indices[0],
7512
- indices[1]
7513
- )
7514
- });
7515
- }
7516
- }).mintAssets(
7517
- mkAssetsOf7(
7518
- fromSystemParamsAsset(sysParams.stabilityPoolParams.accountToken),
7519
- -1n
7520
- ),
7521
- Data32.void()
7522
- ).pay.ToContract(
7523
- stabilityPoolUtxo.address,
7524
- {
7525
- kind: "inline",
7526
- value: serialiseStabilityPoolDatum({
7527
- StabilityPool: {
7528
- ...stabilityPoolDatum,
7529
- state: newPoolState
7530
- }
7531
- })
7532
- },
7533
- addAssets9(
7534
- stabilityPoolUtxo.assets,
7535
- negateAssets4(reward),
7536
- mkAssetsOf7(iassetAssetClass, -withdrawnAmt + withdrawalFeeAmt)
7537
- )
7538
- ).pay.ToAddressWithData(
7539
- outputAddress,
7540
- {
7541
- kind: "inline",
7542
- value: serialiseActionReturnDatum({
7543
- IndigoStabilityPoolAccountClosure: {
7544
- txHash: fromHex9(accountUtxo.txHash),
7545
- outputIndex: BigInt(accountUtxo.outputIndex)
7546
- }
7547
- })
7548
- },
7549
- addAssets9(
7550
- mkLovelacesOf4(lovelacesAmt2(accountUtxo.assets) - txFee),
7551
- reward,
7552
- mkAssetsOf7(iassetAssetClass, withdrawnAmt - withdrawalFeeAmt)
7553
- )
7554
- ).setMinFee(txFee);
7555
- }).exhaustive();
7556
- return tx;
7557
- }
7558
- async function processSpRequest(stabilityPoolUtxo, accountUtxo, iAssetUtxo, allE2s2sSnapshotOrefs, sysParams, lucid, currentSlot) {
7559
- const draftTx = processSpRequestAuxiliary(
7560
- stabilityPoolUtxo,
7561
- accountUtxo,
7562
- iAssetUtxo,
7563
- allE2s2sSnapshotOrefs,
7564
- sysParams,
7565
- lucid,
7566
- currentSlot,
7567
- // Placeholder transation fee
7568
- 1n
7569
- );
7570
- const fee = (await (await draftTx).complete()).toTransaction().body().fee();
7571
- return processSpRequestAuxiliary(
7572
- stabilityPoolUtxo,
7573
- accountUtxo,
7574
- iAssetUtxo,
7575
- allE2s2sSnapshotOrefs,
7576
- sysParams,
7577
- lucid,
7578
- currentSlot,
7579
- fee
7580
- );
7432
+ ];
7581
7433
  }
7582
- async function createE2s2sSnapshots(stabilityPoolOref, sysParams, lucid) {
7583
- const stabilityPoolRefScriptUtxo = matchSingle3(
7584
- await lucid.utxosByOutRef([
7585
- fromSystemParamsScriptRef(
7586
- sysParams.scriptReferences.stabilityPoolValidatorRef
7587
- )
7588
- ]),
7589
- (_) => new Error("Expected a single stability pool Ref Script UTXO")
7590
- );
7591
- const snapshotE2s2sPolicyRefScriptUtxo = matchSingle3(
7592
- await lucid.utxosByOutRef([
7593
- fromSystemParamsScriptRef(
7594
- sysParams.scriptReferences.authTokenPolicies.snapshotEpochToScaleToSumTokenRef
7595
- )
7596
- ]),
7597
- (_) => new Error("Expected a single snapshot e2s2s policy Ref Script UTXO")
7598
- );
7599
- const spUtxo = matchSingle3(
7600
- await lucid.utxosByOutRef([stabilityPoolOref]),
7601
- (_) => new Error("Expected a single stability pool UTXO")
7602
- );
7603
- const spDatum = parseStabilityPoolDatumOrThrow(getInlineDatumOrThrow(spUtxo));
7604
- const [newSnapshotDatums, newAssetStates] = partitionEpochToScaleToSums(spDatum);
7605
- if (newSnapshotDatums.length === 0) {
7606
- throw new Error("There has to be a snapshot being created.");
7434
+ async function feedInterestOracle(params, newInterestRate, lucid, currentSlot, assetClass, utxo, scriptRef2) {
7435
+ if (!assetClass && !utxo)
7436
+ throw new Error("Either interest oracle nft or utxo must be provided");
7437
+ if (assetClass && !utxo) {
7438
+ utxo = await findInterestOracle(lucid, assetClass);
7607
7439
  }
7608
- const snapshotAc = fromSystemParamsAsset(
7609
- sysParams.stabilityPoolParams.snapshotEpochToScaleToSumToken
7440
+ const network = lucid.config().network;
7441
+ const now = BigInt(slotToUnixTime8(network, currentSlot));
7442
+ const tx = lucid.newTx();
7443
+ const datum = parseInterestOracleDatum(getInlineDatumOrThrow(utxo));
7444
+ if (scriptRef2) {
7445
+ tx.readFrom([scriptRef2]);
7446
+ } else {
7447
+ tx.attach.Script(mkInterestOracleValidator(params));
7448
+ }
7449
+ tx.collectFrom(
7450
+ [utxo],
7451
+ serialiseFeedInterestOracleRedeemer({
7452
+ newInterestRate: {
7453
+ getOnChainInt: newInterestRate
7454
+ },
7455
+ currentTime: now
7456
+ })
7610
7457
  );
7611
- const tx = lucid.newTx().readFrom([stabilityPoolRefScriptUtxo, snapshotE2s2sPolicyRefScriptUtxo]).collectFrom(
7612
- [spUtxo],
7613
- serialiseStabilityPoolRedeemer("RecordEpochToScaleToSum")
7614
- ).mintAssets(
7615
- mkAssetsOf7(snapshotAc, BigInt(newSnapshotDatums.length)),
7616
- Data32.void()
7617
- ).pay.ToContract(
7618
- spUtxo.address,
7458
+ tx.pay.ToContract(
7459
+ utxo.address,
7619
7460
  {
7620
7461
  kind: "inline",
7621
- value: serialiseStabilityPoolDatum({
7622
- StabilityPool: { ...spDatum, assetStates: newAssetStates }
7462
+ value: serialiseInterestOracleDatum({
7463
+ unitaryInterest: datum.unitaryInterest + calculateUnitaryInterestSinceOracleLastUpdated(now, datum),
7464
+ interestRate: {
7465
+ getOnChainInt: newInterestRate
7466
+ },
7467
+ lastUpdated: now
7623
7468
  })
7624
7469
  },
7625
- spUtxo.assets
7470
+ utxo.assets
7626
7471
  );
7627
- for (const newDatum of newSnapshotDatums) {
7628
- tx.pay.ToContract(
7629
- spUtxo.address,
7630
- {
7631
- kind: "inline",
7632
- value: serialiseStabilityPoolDatum({
7633
- SnapshotEpochToScaleToSum: newDatum
7634
- })
7635
- },
7636
- mkAssetsOf7(snapshotAc, 1n)
7637
- );
7638
- }
7472
+ tx.validFrom(Number(now) - ONE_SECOND);
7473
+ tx.validTo(Number(now + params.biasTime) - ONE_SECOND);
7474
+ tx.addSignerKey(params.owner);
7639
7475
  return tx;
7640
7476
  }
7641
- async function annulRequest(accountUtxo, params, lucid) {
7642
- const stabilityPoolRefScriptUtxo = matchSingle3(
7643
- await lucid.utxosByOutRef([
7644
- fromSystemParamsScriptRef(
7645
- params.scriptReferences.stabilityPoolValidatorRef
7646
- )
7647
- ]),
7648
- (_) => new Error("Expected a single stability pool Ref Script UTXO")
7649
- );
7650
- const oldAccountDatum = parseAccountDatumOrThrow(
7651
- getInlineDatumOrThrow(accountUtxo)
7652
- );
7653
- const tx = lucid.newTx().readFrom([stabilityPoolRefScriptUtxo]).collectFrom([accountUtxo], serialiseStabilityPoolRedeemer("AnnulRequest")).addSignerKey(toHex9(oldAccountDatum.owner));
7654
- if (oldAccountDatum.request !== "Create") {
7655
- tx.pay.ToContract(
7656
- accountUtxo.address,
7657
- {
7658
- kind: "inline",
7659
- value: serialiseStabilityPoolDatum({
7660
- Account: {
7661
- ...oldAccountDatum,
7662
- request: null
7663
- }
7664
- })
7665
- },
7666
- mkAssetsOf7(
7667
- fromSystemParamsAsset(params.stabilityPoolParams.accountToken),
7668
- 1n
7669
- )
7670
- );
7477
+
7478
+ // src/contracts/interest-collection/helpers.ts
7479
+ import { toHex as toHex10 } from "@lucid-evolution/lucid";
7480
+ function signersAllOf(multisig) {
7481
+ if ("Signature" in multisig) {
7482
+ return [toHex10(multisig.Signature.keyHash)];
7483
+ } else {
7484
+ return multisig.AtLeast.authSignatories.map((signatory) => {
7485
+ try {
7486
+ return signersAllOf(fromDataMultisig(signatory));
7487
+ } catch {
7488
+ return [];
7489
+ }
7490
+ }).flat();
7671
7491
  }
7672
- return tx;
7673
7492
  }
7674
7493
 
7675
- // src/contracts/staking/transactions.ts
7676
- import {
7677
- addAssets as addAssets10,
7678
- Data as Data33,
7679
- fromHex as fromHex10,
7680
- fromText as fromText6,
7681
- slotToUnixTime as slotToUnixTime8,
7682
- toHex as toHex10
7683
- } from "@lucid-evolution/lucid";
7494
+ // src/contracts/interest-collection/types.ts
7495
+ import { Data as Data37 } from "@lucid-evolution/lucid";
7496
+ var InterestCollectionParamsSchema = Data37.Object({
7497
+ versionRecordNft: AssetClassSchema2,
7498
+ multisigUtxoNft: AssetClassSchema2,
7499
+ cdpAuthTk: AssetClassSchema2,
7500
+ collateralAssetAuthTk: AssetClassSchema2,
7501
+ govAuthTk: AssetClassSchema2,
7502
+ cdpAssetSymbol: Data37.Bytes(),
7503
+ cdpBiasTime: Data37.Integer(),
7504
+ interestSettlementCooldown: Data37.Integer()
7505
+ });
7506
+ var InterestCollectionParams = InterestCollectionParamsSchema;
7507
+ function castInterestCollectionParams(params) {
7508
+ return Data37.castTo(params, InterestCollectionParams);
7509
+ }
7510
+
7511
+ // src/contracts/interest-collection/scripts.ts
7512
+ import { applyParamsToScript as applyParamsToScript9 } from "@lucid-evolution/lucid";
7513
+
7514
+ // src/validators/interest-collection-validator.ts
7515
+ var _interestCollectionValidator = {
7516
+ type: "PlutusScriptV3",
7517
+ description: "Generated by Aiken",
7518
+ cborHex: "59202059201d010100229800aba2aba1aba0aab9faab9eaab9dab9cab9a488888888cc896600264653001300b00198059806000cdc3a4005300b0024888966002600460166ea800e33001300c3754007370e90034dc3a4001370e90024c02cdd5002244444646644b300130060048acc004c050dd5006400a2c80aa2b3001300a0048991919194c004dd6980d800cdd6980d8024dd6980d801cdd6980d80124444b3001302000580545901d0c06c004c068004c064004c050dd50064566002600a009159800980a1baa00c8014590154566002600e009159800980a1baa00c801459015456600266e1d20080048acc004c050dd5006400a2c80aa2c8089011202240448088660024602c602e003259800980218091baa0018980b18099baa0018b20209180b180b980b980b980b800c888c8cc88cc0080080048966002003003899192cc004cdc8803000c56600266e3c01800626eb4c06800a00a80ba266008008603c00680b8dd7180c000980d800a0323232330010010062259800800c00e26464b30013372201000315980099b8f00800189bab301b002802a030899802002180f801a030375c6032002603800280d052f5bded8c029000488c8cc00400400c896600200314bd7044cc8966002600a00513301a00233004004001899802002000a02a3019001301a001405d3710900048c058c05cc05c00644646600200200644660060026004005301137540152259800800c40062a660240042002808a4602c602e602e602e602e602e602e602e602e602e003374a90012444444444444653001222323300d00423002301230243754002b300130143021375400312330053756602260466ea800400e24601930013756602260466ea80066eb8c098c08cdd5001cdd7180898119baa003403880fa4466016004466ebcc094c088dd5181298111baa3010302237540020052232330010010032259800800c5a264b30013375e604e60486ea80040122602460486ea800626600600660500048108c0980050242444b300130140088cc00488c966002602e0031323259800981580140122c8140dd6981480098129baa0038acc004c06c00626464b3001302b0028024590281bad302900130253754007159800980b000c566002604a6ea800e005164099164088811102218119baa002980518111baa028980818111baa028998009bac30253022375402e0229111192cc0040060451598009815800c4c9660020030248992cc004c0b400a2646644b3001301e00189919194c004dd69819000cc0cc0066eb4c0c800e6eb4c0c8009222259800981b801c4cc044c0d800c0262c81a06064002606200260586ea800e2b30013022001899192cc004c0c800a0091640bc6eb4c0c0004c0b0dd5001c566002603a00315980098161baa00380145902d4566002603e0031323322598009819800c4cc034c0c80040162c8180dd69818000981880098161baa0038acc004cdc3a401000315980098161baa00380145902d456600266e1d200a0018992cc004c0c4006264b30013020302d375400313232332259800981b001c0222c8198dd698198009bae30330023033001302e37540031640ac60600031640b860586ea800e2b30013370e9006000c56600260586ea800e0051640b515980099b874803800626464b3001303200280245902f1bad3030001302c375400715980099b874804000626464b3001303200280245902f1bad3030001302c375400715980099b87480480062b3001302c37540070028b205a8b205240a48149029205240a48149029205240a42b30013300f4901205370656e74205554784f2063616e6e6f7420686176652061646d696e204e4654009800998061bab3018302a375400a00d4a14a2813a26601e9212b43445020696e70757420646f6573206e6f74206861766520616e20616c6c6f7765642072656465656d6572003259800980e800c528c566002604200314a3159800980e000c528c56600266e1d200c0018a518a5040a0814102820503029375400314a08138c0a4dd50009919198008009bab300f302b37540404464b30013375e00860580031302d00189980180198188012054302f001300c3302b302c3029375400297ae0812a054302b00140a5300137586054604e6ea80720094c103d87a8000402102240a08140cc018dd6181498131baa01b3029302637546052604c6ea80051980092cc004c054c088dd5000c48c8cdd7981418129baa302830253754004002604e60486ea800a246466ebcc0a0c094dd5001000981398121baa0024081374a900048c098c09cc09cc09c0064464b30013017001899192cc004c0ac00a0091640a06eb8c0a4004c094dd5001c566002603600315980098129baa0038014590264590222044302337540053700900124444464b3001301e00e8cc004c0a0dd501048966002603860526ea800a264646644b30013032003802c5902f1bae302f001375c605e004605e00260546ea800a2c813a44b3001301c30293754005132323322598009819001c0162c8178dd698178009bad302f002302f001302a375400516409d223259800980e800c566002603a60546ea800a2980103d87a80008a6103d879800040a1159800980e000c566002603860546ea800a2980103d87a80008a6103d87b800040a113322598009811800c4c96600266e2000c0062980103d87980008acc004cdc4000801c530103d87b80008a6103d87a800040ac8158dd6981818169baa0048acc004c07c006298103d87b80008a6103d879800040a88150dd6981718159baa003302a3754004814102818149baa0029180319815992cc004c080c0a4dd5000c4c966002604260546ea8c064c0acdd5181718159baa00389807198169ba80014bd7044c038cc0b4dd41802800a5eb810281bad302d302a37540031001409c605860526ea8c0b0c0a4dd500099815992cc004c080c0a4dd5000c4c966002604260546ea8c064c0acdd5180c98159baa00389807198169ba80014bd7044c038cc0b4dd419b80001480052f5c08140dd6981698151baa0018800a04e302c30293754602e60526ea80052f5c1223302c337606ea4008dd4000a5eb7bdb182444b3001337129002000c66002007302f302f00299b800014800d003456600266e2520020018cc00400e605e005337000029000a0068acc004c0740062605c0051533029491146578706563745f61743a206e6f7420666f756e64001640a0814102848c0b0c0b4c0b4c0b4c0b4c0b4c0b4c0b400644444b30013300b0040058acc004cdd7980a98169baa0050038acc00660026eacc06cc0b4dd5002c00a0028032266ebcc024c0b4dd5002a60103d87a80008a5040a914a08152294102a48c0b0c0b4c0b4c0b4c0b4c0b4c0b400646058605a605a605a605a605a00291111111111194c004c0e00066eb4c0dc006600c00c9114c004dd6981d001cdd6981d181d801ccc004dd6181d181b9baa02c0029bad303a00f488896600266ebcc0f8c0ecdd5001015466002607c60766ea8c0f8c0ecdd51814981d9baa002981f1bac3023303b3754061330053758605260766ea80c001122259800998101bab302c303e37546058607c6ea8004c068c0f8dd502244c966002606a607c6ea8006264b30013044001899192cc004c0d0c104dd500144c8c8c8c8c8c8c8c8c8c8ca600260a0003375c60a0017375a60a001330500089828003cc14001a60a000b30500049bad3050003992cc004c1380062b30013371290021826800c5a26088609a002825a2c8278dd5182800124444444444b3001305b00b899817182d00a099912cc004c12c006264b3001305e001899818182e800801c5905b182c9baa0098acc004c13c006264b3001305e001899818982e800801c5905b182c9baa0098acc004c12800626464b3001305f00280245905c1bae305d0013059375401316415882b10560998170030998168028998168020998168018992cc004c128006264b3001305d001899818182e00080c45905a182c1baa00b8acc004c1380062b3001305837540170178b20b28b20aa415460ac6ea8028c158dd5003c590580c140004c13c004c138004c134004c130004c12c004c128004c124004c120004c11c004c108dd500145903f0992cc004cc090dd5981818211baa303030423754002605c60846ea800a264b300130353042375400313232323322598009826001c4c966002607660906ea800626464b3001304f00289919192cc004cc0cd2410f4261642074782076616c696469747900332259800992cc004c10800629462b300130470018a518a5041388270c13cdd519812982998281baa002305330503754003132598009821800c528c566002608e00314a314a0827104e18279baa33025303e30503754004607c60a06ea8006294104d1811180f98271baa0433022302b33050302b33050303133050375060066eb4c074c138dd502a25eb80cc142600294698103d87a8000a60103d8798000412c97ae033050302b33050303133050375066e00050dd6980e98271baa0544bd70198284c00528d300103d87a8000a60103d8798000412c97ae04bd704566002660669201274d757374206f6e6c79206d696e742074686520616363756d756c6174656420696e746572657374003375e6074609c6ea810cdd32cc004c100006297adef6c6089982819bb0301c304e37540a86e98cc084dd7182898271baa00e0014bd6f7b63020968acc004cc0cd241205370656e74205554784f2063616e6e6f7420686176652061646d696e204e4654009800998181bab303c304e37546078609c6ea8054c0f0c138dd502a528528a096899819a48146436f6e74696e75696e67206f7574707574206d7573742068617665206e6f20646174756d20616e6420686f6c642074686520616363756d756c6174656420696e7465726573740098008094c0c4cc140c0accc14004ccc141300103d87a80004bd7025eb8298107d87b9fd87980ff00cc004dd5981e18271baa303c304e375402b375c6038609c6ea81526eb8c144c138dd50072444b300130430048801c4c8c8cc0040040148966002003133056337606ea4014dd3001a5eb7bdb1822646644b30013372201000515980099b8f0080028992cc004cdd7a6101a000374c003100289982d19bb037520126e9800400905519198008009bab30580042259800800c4cc16ccdd81ba9009375001897adef6c6089919912cc004cdc8806001456600266e3c03000a264b30013370e00266e052000010880144cc17ccdd81ba900d375066e0000404000905a1bad305c00389982f19bb037520186ea003c01105944cc17800ccc0140140050591bae3059001305e002305c0014169133059337606ea4020dd300300220a889982c80199802802800a0a8375c60a800260b200460ae00282a8cc09000401104e2980103d87a8000407914a0825a294104b45282096375a60a06530010019bac3051304e375408737566064609c6ea810e660a098101000033050374e60a46eb0c0d8c138dd5021998284c005285300103d87a8000a60103d8798000412c97ae040044444b30010038800c4cc8966002609260a46ea8c158c14cdd5182b18299baa3041305337540051329800803c00a6eacc15cc160006653001375860b0003304b3054375460b060b2003375a60b000b30580024888966002660766eacc11cc164dd51823982c9baa0083041305937540bf15980099b8748038c160dd5000c4c96600260bc00313322598009827182d9baa0018992cc004c184006264b30013050305d37540031323232323298009833000cdd718330024c19800e6eb4c1980092222598009835802c4c8cc10c0044cc0fc00c4cc896600260b8003132323322598009839001c01a2c8378dd698378009bad306f002306f001306a375400f1598009830000c4c8c8cc896600260e40070068b20de375a60de0026eb4c1bc008c1bc004c1a8dd5003c5906720ce159800982d18339baa005899192cc0056600266e3c018dd7183698351baa02a899baf0053058306a375405514a0833a2b30013371066e00004dd6981d98351baa0700308992cc004c1500062b30019800983700b4c138cc1b4c1b8c1acdd5182c98359baa01a4bd704cdd2a4008660da6090660da6090660da008660da6ea401ccc1b4018cc1b4dd419b800050013306d30483306d3750062660da6ea007d2f5c097ae04bd7025eb826eacc164c1acdd5182c98359baa01aa60103d879800040ed13306d375066e00050004cc1b4dd3983780b19836cc00405698103d87a8000a60103d879800041a097ae08a99834a481333c65787065637465643e20457870656374206120636f727265637479207570646174656420636f6e74696e75696e6720434450001641a115330694912a3c65787065637465643e20546865726520697320736f6d65206163637275656420696e7465726573742e001641a064b3001337120026eb4c1b8c1acdd5014c56600266e20dd6982998359baa029031899b803370666e08cdc09bad306e306b375405200200a904040507b7a566df00d99b833370666e08cdc118101bad3053306b37540526eb4c1b8c1acdd5182c98359baa02900548202c227efa8052080897a8a99834a4810155001641a115980099b88002031899b833370666e08cdc118100011bad306e306b375460b260d66ea80a40152080b089fbea014820225ea2a660d292010156001641a08340dd698369837001454cc1a124012d3c65787065637465643e20497420697320746f6f20736f6f6e20746f20736574746c6520696e7465726573742e0016419d1533068491413c65787065637465643e20416c6c20434450732061726520666f72207468652073616d652069417373657420616e6420636f6c6c61746572616c2061737365742e0016419c6eb4c1b0004c1a0dd5002c5906518339baa005306a0098b20d01833000983280098320009831800982f1baa0018b20b630600018b20bc305c37540031641646eb4c174004c11cc108c168dd51824182d1baa0098b20b63059375400316415915980099baf305c3059375460b860b26ea8c11cc164dd500400f45660033001003a50a51415913305b3750004660b66e9c010cc16e600294698103d87a8000a60103d8798000415897ae08a9982ba4812845787065637420612073696e676c6520696e74657265737420636f6c6c6563746f7220696e7075740016415913305b3750004660b66e9c010cc16e60020074c103d87a8000a60103d8798000415897ae0415882b060b00088038c8cc0040040148966002003168994c004c15400660ac003305a00248896600266ebc00cc0f0cc16cc170c164dd500425eb822660b6004660b66e980052f5c113300600600141583058001415919800803400600900340188280c15000cc15400d05219b80375a609e60986ea80296600266e20dd6981a18261baa00a012899b833370666e08cdc118009bad3034304c37540146eb4c13cc130dd5181d18261baa00a482020283dbd2b36f806d2080b089fbea014820225ea2a66094921015a001641246e040462c8260dd6982680098249baa0018b208c304b0048b2092375a60920026eb4c12400cc124004c120004c10cdd5000c590401817981518211baa30303042375400315330404914c3c65787065637465643e205468652070726f7669646564207265662e20696e70757420696e64657820636f72726573706f6e647320746f2074686520696e746572657374206f7261636c652e001640fc660166eb0c0bcc104dd501b0049821800c59041181f9baa0018b2078302b3026303e37546058607c6ea80062a6607892014d3c65787065637465643e205468652070726f7669646564207265662e20696e70757420696e64657820636f72726573706f6e647320746f2074686520636f6c6c61746572616c2061737365742e001640ec8a9981ca49413c65787065637465643e205468652070726f766964656420696e70757420696e64657820636f72726573706f6e647320746f20746865206f776e20696e7075742e001640e0181b805a2646530012259800980f18159baa0028992cc004c0c400626600860600020051640b860586ea800a2c814a4605c605e605e605e605e605e605e605e605e0032232330010010032259800981018169baa0018991919800800802912cc00400629422b30013371e6eb8c0d000400e2946266004004606a00281710321bae3031302e3754003132337126eb4c0c8004c8cc004004dd61819981a001112cc0040062900044cc89660026600e00e0051300d0018800a060303400133002002303500140c8605c6ea800502b2444b3001301e013899912cc004c0cc006264646600e0022b3001330164901235265666572656e636564205554784f206d75737420686176652061646d696e204e465400330133756603e60626ea8c07cc0c4dd500100244cc0592412041646d696e206d756c7469736967206d7573742062652073617469736669656400330053034303137540026eb0c018c0c4dd50134528205c301d301830303754603c60606ea8004c0c80062c8180c06cc0b4dd5019998069bac301b302d37540446060605a6ea8c0c0c0b4dd5198061bac3030302d37540440391598009810009c6600244b30010018a40011300933002002303300140c1301b302d37540673019302d37540673300c37586060605a6ea80880712222323233223300b00113259800981d000c4c966002605a606c6ea8c04cc0dcdd5000c4cc88cc03c0044c9660026603e9211e5370656e74205554784f206d75737420686176652061646d696e204e4654003301c3756605060746ea80280322b30013301f490125466f756e646174696f6e206d756c7469736967206d75737420626520736174697366696564003300e303d303e303e303e303e303e303e303e303e303e303e303e303a3754605060746ea800cdd61807981d1baa02f8acc004cc07d2401234e65772061646d696e67206d756c74697369672063616e6e6f7420626520656d7074790030070018acc004cc07d241244e65772061646d696e206d756c7469736967206d75737420626520736174697366696564003300e0013758601e60746ea80be2b30013301f490121436f6e74696e75696e672076616c7565206d757374206265207468652073616d650098009bab3028303a37540093756605060746ea802a980103d87a8000404d13301f4901244f6c6420616e64206e657720646174756d73206d75737420626520646966666572656e7400980099baf006002a50a5140dd14a081ba29410374528206e8a5040dd14a081b8c0f0c0e4dd5000992cc004c0f0006264b3001302b303837540031323232323298009bad30410019bad30410059bad30410039bad30410024888966002608c00b13259800981a98211baa00189919191919191919191919194c004c1480066eb4c1480326eb4c14802e6eb4c14802a6eb4c1480266eb4c1480226eb4c14801e6eb4c14801a6eb4c1480166eb4c1480126eb4c1480092222222222259800982f00644cc0d4c1740384cc0c402c408a2c82d860a400260a200260a0002609e002609c002609a0026098002609600260940026092002609000260866ea80062c8200c1140222c821860820026080002607e002607c00260726ea80062c81b0c094c080c0e0dd51813181c1baa303b0018b207298009bac302530373754059008a60103d879800040606048603e606e6ea80062c81a0c0e40062c81b8cc07cdd6180e981a9baa02a301330183303730383035375400a97ae030010013020301b3033375400644b300130263033375400314a31323322598009810001456600266e24008c0180062646600200200444b30010018a518acc004cc01c01cc0f0006266004004607a00314a081b103a452820688a5040d06eb4c0e0004dd6181c181c800981a1baa00140c4600800889919912cc004c098c0bcdd5000c4cc8966002606c00313259800981298191baa00189919912cc004c0e800626603a6eb0c0e40048966002005132598009815981c1baa0018991925159800991980080098069bab3027303b375406044b30013371e6eb8c0fc00400e2946266004004608000281ca2934590371bae303c303937540031640d864660020026eb0c09cc0e4dd5003912cc004006298103d87a80008992cc006600266ebc00530103d87a8000a50a5140e11001899801801981f8012070325980099b8f375c607c002017130183303d303e303f0014bd7045300103d87a800040e06eb0c0f400503b44c8c8cc896600260800071300530400068b207a375c607a0026eb8c0f4008c0f4004dd6181d80120728b206e375a606e002607000260666ea80062c8180c07cc068c0c8dd5181018191baa30350018b2066375c606660606ea800660026eb0c078c0c0dd5012cc0ccc0c0dd501b530103d879800040451640b460020026062605c6ea8c0c4c0b8dd5198069bac3031302e375404603a44b30010018a5eb82266062605c6064002660040046066002818102a20541800800911192cc004c07800626464b3001303200280245902f1bae3030001302c37540071598009811000c4c8cc896600260660031330163758606400244b3001002803c66002013303400289800981a801201240c91640c06eb4c0c0004c0c4004c0b0dd5001c590292052302a37540048128888cc8a600264b3001301f302c37540031375a605a60606eacc0c0c0b4dd5000c5200040a8605e0033756005375e605e60600032259800981218169baa005899b890010028acc004cdc480080144cdc480119b80001482026fb80a294102b20564888966002007159800980100344cc00401120008a5040b51325980099baf4c0101400030300018acc004cc008014dd69818981a1bab3031001898019ba630350048a5040b915980099801002a4001130030078a5040b88170c0cc00d0310dd3001194c004006009223302f0023302f374c00297ae04004444b3001002899800a6103d87a80004bd6f7b63044c8cc896600266e452201000028acc004cdc7a441000028998021806998191818001a5eb80006266008980103d87a800000540b5198008034006446600c0046606800a002803102d1bae302d0013032003303000240b8407c22301698008014dd7181198101baa0019bae300e302037540028058602a602c00c602800a8b2012180580098031baa00b8a4d13656400c2a660049212f3c65787065637465643e2053696e676c652043445020696e70757420696e20746865207472616e73616374696f6e2e001615330024913f3c65787065637465643e2053696e676c6520696e74657265737420636f6c6c656374696f6e20696e70757420696e20746865207472616e73616374696f6e2e001601"
7519
+ };
7520
+
7521
+ // src/contracts/interest-collection/scripts.ts
7522
+ function mkInterestCollectionValidator(params) {
7523
+ return {
7524
+ type: "PlutusV3",
7525
+ script: applyParamsToScript9(_interestCollectionValidator.cborHex, [
7526
+ castInterestCollectionParams(params)
7527
+ ])
7528
+ };
7529
+ }
7530
+ var mkInterestCollectionValidatorFromSP = (params) => {
7531
+ return {
7532
+ type: "PlutusV3",
7533
+ script: applyParamsToScript9(_interestCollectionValidator.cborHex, [
7534
+ castInterestCollectionParams({
7535
+ versionRecordNft: fromSystemParamsAssetLucid(params.versionRecordNft),
7536
+ multisigUtxoNft: fromSystemParamsAssetLucid(params.multisigUtxoNft),
7537
+ cdpAuthTk: fromSystemParamsAssetLucid(params.cdpAuthTk),
7538
+ collateralAssetAuthTk: fromSystemParamsAssetLucid(
7539
+ params.collateralAssetAuthTk
7540
+ ),
7541
+ govAuthTk: fromSystemParamsAssetLucid(params.govAuthTk),
7542
+ cdpAssetSymbol: params.cdpAssetSymbol.unCurrencySymbol,
7543
+ cdpBiasTime: BigInt(params.cdpBiasTime),
7544
+ interestSettlementCooldown: BigInt(params.interestSettlementCooldown)
7545
+ })
7546
+ ])
7547
+ };
7548
+ };
7549
+
7550
+ // src/contracts/interest-collection/queries.ts
7551
+ import { option as O14, function as F17 } from "fp-ts";
7684
7552
  import {
7553
+ assetClassToUnit as assetClassToUnit3,
7685
7554
  assetClassValueOf as assetClassValueOf6,
7686
- getInlineDatumOrThrow as getInlineDatumOrThrow5,
7687
- mkAssetsOf as mkAssetsOf8,
7688
- mkLovelacesOf as mkLovelacesOf5
7555
+ getRandomElement as getRandomElement2,
7556
+ matchSingle as matchSingle3
7689
7557
  } from "@3rd-eye-labs/cardano-offchain-common";
7690
- async function openStakingPosition(amount, params, lucid, stakingManagerRef) {
7691
- const [pkh, _] = await addrDetails(lucid);
7692
- const stakingManagerOut = stakingManagerRef ? await findStakingManagerByOutRef(stakingManagerRef, lucid) : await findStakingManager(params, lucid);
7693
- const stakingRefScriptUtxo = matchSingle(
7694
- await lucid.utxosByOutRef([
7695
- fromSystemParamsScriptRef(params.scriptReferences.stakingValidatorRef)
7696
- ]),
7697
- (_2) => new Error("Expected a single staking Ref Script UTXO")
7558
+ async function findAllInterestCollectors(lucid, sysParams) {
7559
+ return lucid.utxosAt(
7560
+ createScriptAddress(
7561
+ lucid.config().network,
7562
+ sysParams.validatorHashes.interestCollectionHash
7563
+ )
7698
7564
  );
7699
- const stakingTokenPolicyRefScriptUtxo = matchSingle(
7700
- await lucid.utxosByOutRef([
7701
- fromSystemParamsScriptRef(
7702
- params.scriptReferences.authTokenPolicies.stakingTokenRef
7703
- )
7704
- ]),
7705
- (_2) => new Error("Expected a single staking token policy Ref Script UTXO")
7706
- );
7707
- const newStakingManagerDatum = {
7708
- totalStake: stakingManagerOut.datum.totalStake + amount,
7709
- managerSnapshot: {
7710
- snapshotAda: stakingManagerOut.datum.managerSnapshot.snapshotAda
7711
- }
7712
- };
7713
- const stakingPositionDatum = {
7714
- owner: fromHex10(pkh.hash),
7715
- lockedAmount: [],
7716
- positionSnapshot: {
7717
- snapshotAda: stakingManagerOut.datum.managerSnapshot.snapshotAda
7718
- }
7719
- };
7720
- const stakingToken = params.stakingParams.stakingToken[0].unCurrencySymbol + fromText6(params.stakingParams.stakingToken[1].unTokenName);
7721
- const indyToken = params.stakingParams.indyToken[0].unCurrencySymbol + fromText6(params.stakingParams.indyToken[1].unTokenName);
7722
- return lucid.newTx().collectFrom(
7723
- [stakingManagerOut.utxo],
7724
- serialiseStakingRedeemer({
7725
- CreateStakingPosition: { creatorPkh: fromHex10(pkh.hash) }
7726
- })
7727
- ).readFrom([stakingRefScriptUtxo]).pay.ToContract(
7728
- stakingManagerOut.utxo.address,
7729
- {
7730
- kind: "inline",
7731
- value: serialiseStakingDatum(newStakingManagerDatum)
7732
- },
7733
- stakingManagerOut.utxo.assets
7734
- ).readFrom([stakingTokenPolicyRefScriptUtxo]).mintAssets(
7735
- {
7736
- [stakingToken]: 1n
7737
- },
7738
- Data33.void()
7739
- ).pay.ToContract(
7740
- stakingManagerOut.utxo.address,
7741
- {
7742
- kind: "inline",
7743
- value: serialiseStakingDatum(stakingPositionDatum)
7744
- },
7745
- {
7746
- [stakingToken]: 1n,
7747
- [indyToken]: amount
7748
- }
7749
- ).addSignerKey(pkh.hash);
7750
- }
7751
- async function adjustStakingPosition(stakingPositionRef, amount, params, lucid, currentSlot, stakingManagerRef) {
7752
- const network = lucid.config().network;
7753
- const now = BigInt(slotToUnixTime8(network, currentSlot));
7754
- const stakingPositionOut = await findStakingPositionByOutRef(
7755
- stakingPositionRef,
7756
- lucid
7757
- );
7758
- const stakingManagerOut = stakingManagerRef ? await findStakingManagerByOutRef(stakingManagerRef, lucid) : await findStakingManager(params, lucid);
7759
- const stakingRefScriptUtxo = matchSingle(
7760
- await lucid.utxosByOutRef([
7761
- fromSystemParamsScriptRef(params.scriptReferences.stakingValidatorRef)
7762
- ]),
7763
- (_) => new Error("Expected a single staking Ref Script UTXO")
7764
- );
7765
- const indyToken = fromSystemParamsAsset(params.stakingParams.indyToken);
7766
- const adaReward = calculateAdaReward(
7767
- stakingManagerOut.datum.managerSnapshot.snapshotAda,
7768
- stakingPositionOut.datum.positionSnapshot.snapshotAda,
7769
- assetClassValueOf6(stakingPositionOut.utxo.assets, indyToken)
7770
- );
7771
- const newLockedAmount = updateStakingLockedAmount(
7772
- stakingPositionOut.datum.lockedAmount,
7773
- BigInt(now)
7774
- );
7775
- return lucid.newTx().validFrom(Number(now)).readFrom([stakingRefScriptUtxo]).collectFrom(
7776
- [stakingPositionOut.utxo],
7777
- serialiseStakingRedeemer({
7778
- AdjustStakedAmount: { adjustAmount: amount }
7779
- })
7780
- ).collectFrom(
7781
- [stakingManagerOut.utxo],
7782
- serialiseStakingRedeemer("UpdateTotalStake")
7783
- ).pay.ToContract(
7784
- stakingManagerOut.utxo.address,
7785
- {
7786
- kind: "inline",
7787
- value: serialiseStakingDatum({
7788
- ...stakingManagerOut.datum,
7789
- totalStake: stakingManagerOut.datum.totalStake + amount
7790
- })
7791
- },
7792
- addAssets10(stakingManagerOut.utxo.assets, mkLovelacesOf5(-adaReward))
7793
- ).pay.ToContract(
7794
- stakingPositionOut.utxo.address,
7795
- {
7796
- kind: "inline",
7797
- value: serialiseStakingDatum({
7798
- ...stakingPositionOut.datum,
7799
- positionSnapshot: {
7800
- snapshotAda: stakingManagerOut.datum.managerSnapshot.snapshotAda
7801
- },
7802
- lockedAmount: newLockedAmount
7803
- })
7804
- },
7805
- addAssets10(stakingPositionOut.utxo.assets, mkAssetsOf8(indyToken, amount))
7806
- ).addSignerKey(toHex10(stakingPositionOut.datum.owner));
7807
7565
  }
7808
- async function closeStakingPosition(stakingPositionRef, params, lucid, currentSlot, stakingManagerRef) {
7809
- const network = lucid.config().network;
7810
- const now = BigInt(slotToUnixTime8(network, currentSlot));
7811
- const stakingPositionOut = await findStakingPositionByOutRef(
7812
- stakingPositionRef,
7813
- lucid
7814
- );
7815
- const stakingManagerOut = stakingManagerRef ? await findStakingManagerByOutRef(stakingManagerRef, lucid) : await findStakingManager(params, lucid);
7816
- const stakingRefScriptUtxo = matchSingle(
7817
- await lucid.utxosByOutRef([
7818
- fromSystemParamsScriptRef(params.scriptReferences.stakingValidatorRef)
7819
- ]),
7820
- (_) => new Error("Expected a single staking Ref Script UTXO")
7821
- );
7822
- const stakingTokenPolicyRefScriptUtxo = matchSingle(
7823
- await lucid.utxosByOutRef([
7824
- fromSystemParamsScriptRef(
7825
- params.scriptReferences.authTokenPolicies.stakingTokenRef
7566
+ async function findAdminInterestCollectors(lucid, sysParams) {
7567
+ return matchSingle3(
7568
+ await lucid.utxosAtWithUnit(
7569
+ createScriptAddress(
7570
+ lucid.config().network,
7571
+ sysParams.validatorHashes.interestCollectionHash
7572
+ ),
7573
+ assetClassToUnit3(
7574
+ fromSystemParamsAsset(
7575
+ sysParams.interestCollectionParams.multisigUtxoNft
7576
+ )
7826
7577
  )
7827
- ]),
7828
- (_) => new Error("Expected a single staking token policy Ref Script UTXO")
7829
- );
7830
- const indyToken = fromSystemParamsAsset(params.stakingParams.indyToken);
7831
- const existingIndyAmount = assetClassValueOf6(
7832
- stakingPositionOut.utxo.assets,
7833
- indyToken
7834
- );
7835
- const adaReward = calculateAdaReward(
7836
- stakingManagerOut.datum.managerSnapshot.snapshotAda,
7837
- stakingPositionOut.datum.positionSnapshot.snapshotAda,
7838
- assetClassValueOf6(stakingPositionOut.utxo.assets, indyToken)
7578
+ ),
7579
+ (_) => new Error("Expected a single admin interest collector UTXO")
7839
7580
  );
7840
- return lucid.newTx().validFrom(Number(now)).readFrom([stakingRefScriptUtxo, stakingTokenPolicyRefScriptUtxo]).collectFrom([stakingPositionOut.utxo], serialiseStakingRedeemer("Unstake")).collectFrom(
7841
- [stakingManagerOut.utxo],
7842
- serialiseStakingRedeemer("UpdateTotalStake")
7843
- ).pay.ToContract(
7844
- stakingManagerOut.utxo.address,
7845
- {
7846
- kind: "inline",
7847
- value: serialiseStakingDatum({
7848
- ...stakingManagerOut.datum,
7849
- totalStake: stakingManagerOut.datum.totalStake - existingIndyAmount
7850
- })
7851
- },
7852
- addAssets10(stakingManagerOut.utxo.assets, mkLovelacesOf5(-adaReward))
7853
- ).mintAssets(
7854
- mkAssetsOf8(fromSystemParamsAsset(params.stakingParams.stakingToken), -1n),
7855
- Data33.void()
7856
- ).addSignerKey(toHex10(stakingPositionOut.datum.owner));
7857
7581
  }
7858
- var MIN_UTXO_AMOUNT = 2000000n;
7859
- async function distributeAda(stakingManagerRef, collectorRefs, params, lucid) {
7860
- const [stakingManagerUtxo] = await lucid.utxosByOutRef([stakingManagerRef]);
7861
- const stakingManagerDatum = parseStakingManagerDatum(
7862
- getInlineDatumOrThrow5(stakingManagerUtxo)
7863
- );
7864
- const collectorUtxos = (await lucid.utxosByOutRef(collectorRefs)).filter((utxo) => utxo.datum && utxo.datum === Data33.void()).filter((utxo) => utxo.assets["lovelace"] > MIN_UTXO_AMOUNT);
7865
- if (collectorUtxos.length === 0) {
7866
- throw new Error("No available collectors found");
7867
- }
7868
- const adaRewardCollected = collectorUtxos.reduce(
7869
- (acc, utxo) => acc + utxo.assets["lovelace"] - MIN_UTXO_AMOUNT,
7870
- 0n
7871
- );
7872
- const newSnapshot = distributeReward(
7873
- stakingManagerDatum.managerSnapshot.snapshotAda,
7874
- adaRewardCollected,
7875
- stakingManagerDatum.totalStake
7876
- );
7877
- const stakingRefScriptUtxo = matchSingle(
7878
- await lucid.utxosByOutRef([
7879
- fromSystemParamsScriptRef(params.scriptReferences.stakingValidatorRef)
7880
- ]),
7881
- (_) => new Error("Expected a single staking Ref Script UTXO")
7882
- );
7883
- const collectorRefScriptUtxo = matchSingle(
7884
- await lucid.utxosByOutRef([
7885
- fromSystemParamsScriptRef(params.scriptReferences.collectorValidatorRef)
7886
- ]),
7887
- (_) => new Error("Expected a single staking Ref Script UTXO")
7582
+ async function findRandomNonAdminInterestCollector(lucid, sysParams) {
7583
+ const allCollectors = (await findAllInterestCollectors(lucid, sysParams)).filter(
7584
+ (utxo) => !assetClassValueOf6(
7585
+ utxo.assets,
7586
+ fromSystemParamsAsset(
7587
+ sysParams.interestCollectionParams.multisigUtxoNft
7588
+ )
7589
+ )
7888
7590
  );
7889
- const tx = lucid.newTx().readFrom([stakingRefScriptUtxo, collectorRefScriptUtxo]).collectFrom([stakingManagerUtxo], serialiseStakingRedeemer("Distribute")).collectFrom(
7890
- collectorUtxos,
7891
- serialiseCollectorRedeemer("DistributeToStakers")
7892
- ).pay.ToContract(
7893
- stakingManagerUtxo.address,
7894
- {
7895
- kind: "inline",
7896
- value: serialiseStakingDatum({
7897
- ...stakingManagerDatum,
7898
- managerSnapshot: { snapshotAda: newSnapshot }
7899
- })
7900
- },
7901
- addAssets10(stakingManagerUtxo.assets, mkLovelacesOf5(adaRewardCollected))
7591
+ return F17.pipe(
7592
+ O14.fromNullable(getRandomElement2(allCollectors)),
7593
+ O14.match(() => {
7594
+ throw new Error("Expected some non-admin interest collector UTXOs.");
7595
+ }, F17.identity)
7902
7596
  );
7903
- for (const collectorUtxo of collectorUtxos) {
7904
- tx.pay.ToContract(
7905
- collectorUtxo.address,
7906
- { kind: "inline", value: Data33.void() },
7907
- mkLovelacesOf5(MIN_UTXO_AMOUNT)
7908
- );
7909
- }
7910
- return tx;
7911
7597
  }
7912
7598
 
7913
- // src/contracts/staking/types.ts
7914
- import { Data as Data34 } from "@lucid-evolution/lucid";
7915
- var StakingParamsSchema = Data34.Object({
7916
- stakingManagerNft: AssetClassSchema2,
7917
- stakingToken: AssetClassSchema2,
7918
- indyToken: AssetClassSchema2,
7919
- pollToken: AssetClassSchema2,
7920
- versionRecordToken: AssetClassSchema2,
7921
- collectorValHash: Data34.Bytes()
7599
+ // src/contracts/version-registry/types.ts
7600
+ import { Data as Data38 } from "@lucid-evolution/lucid";
7601
+ var VersionRecordTokenParamsSchema = Data38.Object({
7602
+ upgradeToken: AssetClassSchema2
7922
7603
  });
7923
- var StakingParams = StakingParamsSchema;
7924
- function castStakingParams(params) {
7925
- return Data34.castTo(params, StakingParams);
7604
+ var VersionRecordTokenParams = VersionRecordTokenParamsSchema;
7605
+ function castVersionRecordTokenParams(params) {
7606
+ return Data38.castTo(params, VersionRecordTokenParams);
7926
7607
  }
7927
7608
 
7928
- // src/contracts/interest-oracle/transactions.ts
7929
- import {
7930
- fromHex as fromHex11,
7931
- fromText as fromText7,
7932
- slotToUnixTime as slotToUnixTime9,
7933
- toUnit as toUnit2,
7934
- validatorToAddress
7935
- } from "@lucid-evolution/lucid";
7936
-
7937
- // src/contracts/one-shot/transactions.ts
7609
+ // src/contracts/version-registry/scripts.ts
7938
7610
  import {
7939
- addAssets as addAssets11,
7940
- Data as Data36,
7941
- mintingPolicyToId,
7942
- toUnit
7611
+ applyParamsToScript as applyParamsToScript10
7943
7612
  } from "@lucid-evolution/lucid";
7944
7613
 
7945
- // src/contracts/one-shot/scripts.ts
7946
- import { applyParamsToScript as applyParamsToScript7 } from "@lucid-evolution/lucid";
7947
-
7948
- // src/contracts/one-shot/types.ts
7949
- import { Data as Data35 } from "@lucid-evolution/lucid";
7950
- var OneShotParamsSchema = Data35.Object({
7951
- referenceOutRef: Data35.Object({
7952
- txHash: Data35.Bytes(),
7953
- outputIdx: Data35.Integer()
7954
- }),
7955
- mintAmounts: Data35.Array(
7956
- Data35.Object({
7957
- /// Use hex encoded string
7958
- tokenName: Data35.Bytes(),
7959
- amount: Data35.Integer()
7960
- })
7961
- )
7962
- });
7963
- var OneShotParams = OneShotParamsSchema;
7964
- function castOneShotParams(params) {
7965
- return Data35.castTo(params, OneShotParams);
7966
- }
7967
-
7968
- // src/validators/one-shot-policy.ts
7969
- var _oneShotPolicy = {
7614
+ // src/validators/version-record-policy.ts
7615
+ var _versionRecordTokenPolicy = {
7970
7616
  type: "PlutusScriptV3",
7971
7617
  description: "Generated by Aiken",
7972
- cborHex: "590379590376010100229800aba4aba2aba1aba0aab9faab9eaab9dab9a4888888896600264653001300800198041804800cdc3a400130080024888966002600460106ea800e26644b30013004300a37546466446600400400244b30010018a60103d87a80008992cc004cdd7980918079baa001004899ba548000cc0440052f5c11330030033013002403460220028078dd6180798061baa004300e300b375402515980099912cc004006294226530013259800980418071baa00189bad300f301237566024601e6ea800629000201a30110019baf301130120019bab0024889660020031598009801002c4c02800e294100f44c96600266ebd300101400030110018acc004cdc38021bad301230153756602400313003374c602c00514a080822b3001300b0048980180345282020404060280028090653001001801c88cc048008cc048dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044c8cc896600266e452201000028acc004cdc7a4410000289980219ba548000cc054c04c00d2f5c00031330044c103d87a80000054045198008034006446600c0046602e00a00280310111bae301000130150033013002404514a114a114a08090dd59807180798079807980798059baa003374c646530010019bac3002300d37540294bd6f7b630200222259800801440063300100398098014c8cc8966002601600310048991919800800803112cc00400626602e66ec0dd48061ba60034bd6f7b63044c8cc896600266e4403c00a2b30013371e01e0051325980099baf4c101a000374c003100289980d99bb037520206e9800400901719198008009bab30190042259800800c4cc070cdd81ba900a375001297adef6c6089919912cc004cdc8806801456600266e3c03400a264b30013370e00266e05200000d880144cc080cdd81ba900e375066e0000403400901c1bad301d00389980f99bb0375201a6ea003001101b44cc07c00ccc01401400501b1bae301a001301f002301d001406d13301a337606ea403cdd3003002202c89980d00199802802800a02c375c602a0026034004603000280b0cc050cdd81ba9002375000297adef6c6040406eb8c04cc040dd50009bad30053010375400260240048019010118079808000c528c590094590091bae300c30093754006b300130023008375400915980098049baa0048a4d16402916401d16401c300800130033754013149a26cac8009"
7618
+ cborHex: "5901a159019e010100229800aba2aba1aba0aab9faab9eaab9dab9a488888896600264646644b30013370e900018031baa0018992cc004c032600246018601a003222323322330020020012259800800c00e26464b30013372200c00315980099b8f00600189bad3010002802a01c899802002180a001a01c375c601c00260220028078c8c8cc0040040188966002003003899192cc004cdc8804000c56600266e3c02000626eacc04400a00a807a266008008602a0068078dd718078009809000a02014bd6f7b6300a40013758601660106ea8c02c016601660106ea803922223232330010010042259800800c52f5c113322598009802980498089baa00289980980119802002000c4cc01001000500f18090009809800a0205980099b8748000c02cdd5260103d87980008919b8798009bab3005300d3754003375c6020601a6ea800a6eb8c014c034dd500120084800a2466e21200098009bab3005300d3754003375c6020601a6ea800a6eb8c014c034dd5001200840288a518b2012375c6014600e6ea80062c8028c020004c020c024004c020004c00cdd5004452689b2b200201"
7973
7619
  };
7974
7620
 
7975
- // src/contracts/one-shot/scripts.ts
7976
- function mkOneShotPolicy(params) {
7977
- return {
7978
- type: "PlutusV3",
7979
- script: applyParamsToScript7(_oneShotPolicy.cborHex, [
7980
- castOneShotParams(params)
7981
- ])
7982
- };
7983
- }
7984
-
7985
- // src/contracts/one-shot/transactions.ts
7986
- import { reduce } from "fp-ts/lib/Array";
7987
- async function oneShotMintTx(lucid, params) {
7988
- const oneShotPolicy = mkOneShotPolicy(params);
7989
- const policyId = mintingPolicyToId(oneShotPolicy);
7990
- const refUtxo = matchSingle(
7991
- await lucid.utxosByOutRef([
7992
- {
7993
- txHash: params.referenceOutRef.txHash,
7994
- outputIndex: Number(params.referenceOutRef.outputIdx)
7995
- }
7996
- ]),
7997
- (_) => {
7998
- throw new Error("Cannot find the reference UTXO for one-shot.");
7999
- }
8000
- );
8001
- return [
8002
- lucid.newTx().collectFrom([refUtxo]).mintAssets(
8003
- reduce(
8004
- {},
8005
- (acc, entry) => addAssets11(acc, {
8006
- [toUnit(policyId, entry.tokenName)]: entry.amount
8007
- })
8008
- )(params.mintAmounts),
8009
- Data36.void()
8010
- ).attach.MintingPolicy(oneShotPolicy),
8011
- policyId
8012
- ];
8013
- }
8014
- async function runOneShotMintTx(lucid, params) {
8015
- const [tx, policyId] = await oneShotMintTx(lucid, params);
8016
- const txHash = await tx.complete().then((tx2) => tx2.sign.withWallet().complete()).then((tx2) => tx2.submit());
8017
- await lucid.awaitTx(txHash);
8018
- return policyId;
8019
- }
8020
-
8021
- // src/contracts/interest-oracle/scripts.ts
8022
- import { applyParamsToScript as applyParamsToScript8 } from "@lucid-evolution/lucid";
8023
-
8024
- // src/contracts/interest-oracle/types.ts
8025
- import { Data as Data37 } from "@lucid-evolution/lucid";
8026
- var InterestOracleParamsSchema = Data37.Object({
8027
- /** Milliseconds */
8028
- biasTime: Data37.Integer(),
8029
- owner: Data37.Bytes()
8030
- });
8031
- var InterestOracleParams = InterestOracleParamsSchema;
8032
- function castInterestOracleParams(params) {
8033
- return Data37.castTo(params, InterestOracleParams);
8034
- }
8035
-
8036
- // src/validators/interest-oracle-validator.ts
8037
- var _interestOracleValidator = {
7621
+ // src/validators/version-registry-validator.ts
7622
+ var _versionRegistryValidator = {
8038
7623
  type: "PlutusScriptV3",
8039
7624
  description: "Generated by Aiken",
8040
- cborHex: "5907e05907dd010100229800aba2aba1aba0aab9faab9eaab9dab9cab9a4888888896600264653001300900198049805000cdc3a400530090024888966002600460126ea800e2653001300e00198071807800cdc3a40009112cc004c004c034dd500444c8c8c966002602a00513259800980298089baa001899192cc004c06000a2b300130073013375401119800980b980a1baa008980a1baa00b9180c180c800c896600200310018a9980a0010800a02648888c966002660049201205458206973206e6f74207369676e6564206279206f7261636c65206f776e6572003232330010013758603c603e603e603e603e603e603e603e603e60366ea8048896600200314a115980099b8f375c603e00200714a31330020023020001406480e8dd71801980c9baa01f899912cc004cc011240115496e636f72726563742074782076616c6964697479003322980091192cc004c04c0062b30013013301f375400514c103d87a80008a6103d879800040751598009802000c5660026008603e6ea800a2980103d87a80008a6103d87b800040751332259800980d000c4c96600266e2000c0062980103d87980008acc004cdc4000801c530103d87b80008a6103d87a800040808100dd6981298111baa0048acc004c054006298103d87b80008a6103d8798000407c80f8dd6981198101baa003301f375400480e901d180f1baa002980118101810981098109810981098109810980e9baa014980118019980f98019980f98021980f9ba8337026eb4c01cc074dd500b9bad3020301d375404697ae03301f9800a51a60103d87a8000a60103d8798000406897ae03301f30033301f30043301f375066e00dd69803980e9baa017375a6040603a6ea808d2f5c06603f30014a34c103d87a8000a60103d8798000406897ae04bd702444b300132598009802800c528c566002603200314a314a080f101e180f9baa33003302330203754004604660406ea8006264b300130140018a518acc004c0640062946294101e203c301f375466006601460406ea8008c028c080dd5000c528203a118011980f192cc004c054c070dd5000c4c966002602c603a6ea8c020c078dd51810980f1baa00389802998101ba80014bd7044c014cc080dd419b80001480092f5c080d8dd69810180e9baa0018800a034301f301c3754603e60386ea8004cc078c966002602a60386ea8006264b30013016301d37546010603c6ea8c020c078dd5001c4c014cc080dd4000a5eb822600a660406ea0cdc0000a400297ae0406c6eb4c080c074dd5000c400501a180f980e1baa3006301c375400297ae0370e900244c9660026600a92012643757272656e742074696d652068617320746f206265203e3d206c6173745f736574746c656400337126eb4c004c070dd50041bad3006301c375402d15980099802a492b496e74657265737420726174652068617320746f20626520696e2072616e6765205b30252c20313030255d005980099b8948000dd6980f980e1baa301f301c375402d1337126eb4c07cc070dd5180f980e1baa0164820225ea294101944cc015240120496e746572657374206f7261636c65206f757470757420696e636f72726563740098009bac301f3020302000798019980f18011980f180f980e1baa301f301c37540086603c98103d87a80004bd7025eb8266e9520043301e30023301e375066e00dd6980f980e1baa008325980099b88375a6004603a6ea8024006266e0ccdc199b823370466e04004dd69801180e9baa009375a6040603a6ea8c01cc074dd5004a41010141ede959b7c03690405844fdf500a410112f5153301b4901015a001640686eb4c018c070dd500b1980f180f980e1baa0163301e3006301c375402c97ae04bd704dd59803180e1baa00448888c8c8cc004004018896600200314a1159800992cc004c0100062b30013375e601260486ea800401a2b300133229800992cc004c068c098dd5000c4dd6981398151bab302a302737540031480010241814800cdd58014dd798149815000c89660026040604e6ea930103d87a8000899b890010028acc004cdc480080144cdc480119b80001482026fb80a2941025204a4888966002007159800980100344cc00401120008a50409d1325980099baf4c1014000302a0018acc004cc008014dd6981598171bab302b001898019ba6302f0048a5040a115980099801002a4001130030078a5040a08140c0b400d02b0dd3002994c0040066eacc03cc094dd5001488cc0a4008cc0a4dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044c8cc896600266e452201000028acc004cdc7a441000028998021808198161815001a5eb80006266008980103d87a8000005409d198008034006446600c0046605c00a00280310271bae3027001302c003302a00240a113375e604e60506050605060486ea800530103d87a80008a50408514a0810a29410211813000c528c4cc008008c09c0050202048598009809980f9baa003891919baf302530223754604a60446ea8008004c090c084dd5002448c8cdd7981298111baa00200130243021375400880e914a080ca29410191180f98101810000c5282030374a90011ba548002294101619198008009bac301c0042259800800c5a264b30013375e603c60366ea80040422600a60366ea8006266006006603e00480c0c07400501b22c808a2c80a8dd6980b00098091baa0018b201e30140038b2024375a60260026026002601c6ea80222c805860146ea800e2c8038601200260086ea802629344d95900101"
7625
+ cborHex: "585e585c01010029800aba2aba1aab9eaab9dab9a4888896600264653001300600198031803800cc0180092225980099b8748008c01cdd500144c8cc892818050009805180580098041baa0028b200c180300098019baa0068a4d13656400401"
8041
7626
  };
8042
7627
 
8043
- // src/contracts/interest-oracle/scripts.ts
8044
- function mkInterestOracleValidator(params) {
7628
+ // src/contracts/version-registry/scripts.ts
7629
+ function mkVersionRecordTokenPolicy(params) {
8045
7630
  return {
8046
7631
  type: "PlutusV3",
8047
- script: applyParamsToScript8(_interestOracleValidator.cborHex, [
8048
- castInterestOracleParams(params)
7632
+ script: applyParamsToScript10(_versionRecordTokenPolicy.cborHex, [
7633
+ castVersionRecordTokenParams(params)
8049
7634
  ])
8050
7635
  };
8051
7636
  }
7637
+ var mkVersionRegistryValidator = () => {
7638
+ return {
7639
+ type: "PlutusV3",
7640
+ script: _versionRegistryValidator.cborHex
7641
+ };
7642
+ };
8052
7643
 
8053
- // tests/queries/interest-oracle-queries.ts
8054
- import {
8055
- assetClassToUnit as assetClassToUnit2
8056
- } from "@3rd-eye-labs/cardano-offchain-common";
8057
- async function findInterestOracle(lucid, interestNft) {
8058
- return lucid.utxoByUnit(assetClassToUnit2(interestNft));
8059
- }
8060
-
8061
- // src/contracts/interest-oracle/transactions.ts
8062
- async function startInterestOracle(initialUnitaryInterest, initialInterestRate, initialLastInterestUpdate, oracleParams, lucid, interestTokenName, withScriptRef = false, refOutRef) {
8063
- const network = lucid.config().network;
8064
- const tokenName = interestTokenName ?? "INTEREST_ORACLE";
8065
- if (!refOutRef) {
8066
- refOutRef = (await lucid.wallet().getUtxos())[0];
8067
- }
8068
- const [tx, policyId] = await oneShotMintTx(lucid, {
8069
- referenceOutRef: {
8070
- txHash: refOutRef.txHash,
8071
- outputIdx: BigInt(refOutRef.outputIndex)
8072
- },
8073
- mintAmounts: [
8074
- {
8075
- tokenName: fromText7(tokenName),
8076
- amount: 1n
8077
- }
8078
- ]
8079
- });
8080
- const validator = mkInterestOracleValidator(oracleParams);
8081
- tx.pay.ToContract(
8082
- validatorToAddress(network, validator),
8083
- {
8084
- kind: "inline",
8085
- value: serialiseInterestOracleDatum({
8086
- unitaryInterest: initialUnitaryInterest,
8087
- interestRate: {
8088
- getOnChainInt: initialInterestRate
8089
- },
8090
- lastUpdated: initialLastInterestUpdate
8091
- })
8092
- },
8093
- {
8094
- lovelace: 2500000n,
8095
- [toUnit2(policyId, fromText7(tokenName))]: 1n
8096
- }
8097
- );
8098
- if (withScriptRef) {
8099
- tx.pay.ToAddressWithData(
8100
- validatorToAddress(network, validator),
8101
- void 0,
8102
- void 0,
8103
- validator
8104
- );
8105
- }
8106
- return [
8107
- tx,
8108
- {
8109
- currencySymbol: fromHex11(policyId),
8110
- tokenName: fromHex11(fromText7(tokenName))
8111
- }
8112
- ];
8113
- }
8114
- async function feedInterestOracle(params, newInterestRate, lucid, currentSlot, assetClass, utxo, scriptRef2) {
8115
- if (!assetClass && !utxo)
8116
- throw new Error("Either interest oracle nft or utxo must be provided");
8117
- if (assetClass && !utxo) {
8118
- utxo = await findInterestOracle(lucid, assetClass);
8119
- }
8120
- const network = lucid.config().network;
8121
- const now = BigInt(slotToUnixTime9(network, currentSlot));
8122
- const tx = lucid.newTx();
8123
- const datum = parseInterestOracleDatum(getInlineDatumOrThrow(utxo));
8124
- if (scriptRef2) {
8125
- tx.readFrom([scriptRef2]);
8126
- } else {
8127
- tx.attach.Script(mkInterestOracleValidator(params));
8128
- }
8129
- tx.collectFrom(
8130
- [utxo],
8131
- serialiseFeedInterestOracleRedeemer({
8132
- newInterestRate: {
8133
- getOnChainInt: newInterestRate
8134
- },
8135
- currentTime: now
8136
- })
8137
- );
8138
- tx.pay.ToContract(
8139
- utxo.address,
8140
- {
8141
- kind: "inline",
8142
- value: serialiseInterestOracleDatum({
8143
- unitaryInterest: datum.unitaryInterest + calculateUnitaryInterestSinceOracleLastUpdated(now, datum),
8144
- interestRate: {
8145
- getOnChainInt: newInterestRate
8146
- },
8147
- lastUpdated: now
8148
- })
8149
- },
8150
- utxo.assets
8151
- );
8152
- tx.validFrom(Number(now) - ONE_SECOND);
8153
- tx.validTo(Number(now + params.biasTime) - ONE_SECOND);
8154
- tx.addSignerKey(params.owner);
8155
- return tx;
8156
- }
8157
-
8158
- // src/contracts/interest-collection/helpers.ts
8159
- import { toHex as toHex11 } from "@lucid-evolution/lucid";
8160
- function signersAllOf(multisig) {
8161
- if ("Signature" in multisig) {
8162
- return [toHex11(multisig.Signature.keyHash)];
8163
- } else {
8164
- return multisig.AtLeast.authSignatories.map((signatory) => {
8165
- try {
8166
- return signersAllOf(fromDataMultisig(signatory));
8167
- } catch {
8168
- return [];
8169
- }
8170
- }).flat();
8171
- }
8172
- }
8173
-
8174
- // src/contracts/interest-collection/types.ts
8175
- import { Data as Data38 } from "@lucid-evolution/lucid";
8176
- var InterestCollectionParamsSchema = Data38.Object({
8177
- versionRecordNft: AssetClassSchema2,
8178
- multisigUtxoNft: AssetClassSchema2,
8179
- cdpAuthTk: AssetClassSchema2,
8180
- collateralAssetAuthTk: AssetClassSchema2,
8181
- govAuthTk: AssetClassSchema2,
8182
- cdpAssetSymbol: Data38.Bytes(),
8183
- cdpBiasTime: Data38.Integer(),
8184
- interestSettlementCooldown: Data38.Integer()
8185
- });
8186
- var InterestCollectionParams = InterestCollectionParamsSchema;
8187
- function castInterestCollectionParams(params) {
8188
- return Data38.castTo(params, InterestCollectionParams);
8189
- }
8190
-
8191
- // src/contracts/interest-collection/scripts.ts
8192
- import { applyParamsToScript as applyParamsToScript9 } from "@lucid-evolution/lucid";
7644
+ // src/contracts/treasury/scripts.ts
7645
+ import { applyParamsToScript as applyParamsToScript11 } from "@lucid-evolution/lucid";
8193
7646
 
8194
- // src/validators/interest-collection-validator.ts
8195
- var _interestCollectionValidator = {
7647
+ // src/validators/treasury-validator.ts
7648
+ var _treasuryValidator = {
8196
7649
  type: "PlutusScriptV3",
8197
7650
  description: "Generated by Aiken",
8198
- cborHex: "59202059201d010100229800aba2aba1aba0aab9faab9eaab9dab9cab9a488888888cc896600264653001300b00198059806000cdc3a4005300b0024888966002600460166ea800e33001300c3754007370e90034dc3a4001370e90024c02cdd5002244444646644b300130060048acc004c050dd5006400a2c80aa2b3001300a0048991919194c004dd6980d800cdd6980d8024dd6980d801cdd6980d80124444b3001302000580545901d0c06c004c068004c064004c050dd50064566002600a009159800980a1baa00c8014590154566002600e009159800980a1baa00c801459015456600266e1d20080048acc004c050dd5006400a2c80aa2c8089011202240448088660024602c602e003259800980218091baa0018980b18099baa0018b20209180b180b980b980b980b800c888c8cc88cc0080080048966002003003899192cc004cdc8803000c56600266e3c01800626eb4c06800a00a80ba266008008603c00680b8dd7180c000980d800a0323232330010010062259800800c00e26464b30013372201000315980099b8f00800189bab301b002802a030899802002180f801a030375c6032002603800280d052f5bded8c029000488c8cc00400400c896600200314bd7044cc8966002600a00513301a00233004004001899802002000a02a3019001301a001405d3710900048c058c05cc05c00644646600200200644660060026004005301137540152259800800c40062a660240042002808a4602c602e602e602e602e602e602e602e602e602e003374a90012444444444444653001222323300d00423002301230243754002b300130143021375400312330053756602260466ea800400e24601930013756602260466ea80066eb8c098c08cdd5001cdd7180898119baa003403880fa4466016004466ebcc094c088dd5181298111baa3010302237540020052232330010010032259800800c5a264b30013375e604e60486ea80040122602460486ea800626600600660500048108c0980050242444b300130140088cc00488c966002602e0031323259800981580140122c8140dd6981480098129baa0038acc004c06c00626464b3001302b0028024590281bad302900130253754007159800980b000c566002604a6ea800e005164099164088811102218119baa002980518111baa028980818111baa028998009bac30253022375402e0229111192cc0040060451598009815800c4c9660020030248992cc004c0b400a2646644b3001301e00189919194c004dd69819000cc0cc0066eb4c0c800e6eb4c0c8009222259800981b801c4cc044c0d800c0262c81a06064002606200260586ea800e2b30013022001899192cc004c0c800a0091640bc6eb4c0c0004c0b0dd5001c566002603a00315980098161baa00380145902d4566002603e0031323322598009819800c4cc034c0c80040162c8180dd69818000981880098161baa0038acc004cdc3a401000315980098161baa00380145902d456600266e1d200a0018992cc004c0c4006264b30013020302d375400313232332259800981b001c0222c8198dd698198009bae30330023033001302e37540031640ac60600031640b860586ea800e2b30013370e9006000c56600260586ea800e0051640b515980099b874803800626464b3001303200280245902f1bad3030001302c375400715980099b874804000626464b3001303200280245902f1bad3030001302c375400715980099b87480480062b3001302c37540070028b205a8b205240a48149029205240a48149029205240a42b30013300f4901205370656e74205554784f2063616e6e6f7420686176652061646d696e204e4654009800998061bab3018302a375400a00d4a14a2813a26601e9212b43445020696e70757420646f6573206e6f74206861766520616e20616c6c6f7765642072656465656d6572003259800980e800c528c566002604200314a3159800980e000c528c56600266e1d200c0018a518a5040a0814102820503029375400314a08138c0a4dd50009919198008009bab300f302b37540404464b30013375e00860580031302d00189980180198188012054302f001300c3302b302c3029375400297ae0812a054302b00140a5300137586054604e6ea80720094c103d87a8000402102240a08140cc018dd6181498131baa01b3029302637546052604c6ea80051980092cc004c054c088dd5000c48c8cdd7981418129baa302830253754004002604e60486ea800a246466ebcc0a0c094dd5001000981398121baa0024081374a900048c098c09cc09cc09c0064464b30013017001899192cc004c0ac00a0091640a06eb8c0a4004c094dd5001c566002603600315980098129baa0038014590264590222044302337540053700900124444464b3001301e00e8cc004c0a0dd501048966002603860526ea800a264646644b30013032003802c5902f1bae302f001375c605e004605e00260546ea800a2c813a44b3001301c30293754005132323322598009819001c0162c8178dd698178009bad302f002302f001302a375400516409d223259800980e800c566002603a60546ea800a2980103d87a80008a6103d879800040a1159800980e000c566002603860546ea800a2980103d87a80008a6103d87b800040a113322598009811800c4c96600266e2000c0062980103d87980008acc004cdc4000801c530103d87b80008a6103d87a800040ac8158dd6981818169baa0048acc004c07c006298103d87b80008a6103d879800040a88150dd6981718159baa003302a3754004814102818149baa0029180319815992cc004c080c0a4dd5000c4c966002604260546ea8c064c0acdd5181718159baa00389807198169ba80014bd7044c038cc0b4dd41802800a5eb810281bad302d302a37540031001409c605860526ea8c0b0c0a4dd500099815992cc004c080c0a4dd5000c4c966002604260546ea8c064c0acdd5180c98159baa00389807198169ba80014bd7044c038cc0b4dd419b80001480052f5c08140dd6981698151baa0018800a04e302c30293754602e60526ea80052f5c1223302c337606ea4008dd4000a5eb7bdb182444b3001337129002000c66002007302f302f00299b800014800d003456600266e2520020018cc00400e605e005337000029000a0068acc004c0740062605c0051533029491146578706563745f61743a206e6f7420666f756e64001640a0814102848c0b0c0b4c0b4c0b4c0b4c0b4c0b4c0b400644444b30013300b0040058acc004cdd7980a98169baa0050038acc00660026eacc06cc0b4dd5002c00a0028032266ebcc024c0b4dd5002a60103d87a80008a5040a914a08152294102a48c0b0c0b4c0b4c0b4c0b4c0b4c0b400646058605a605a605a605a605a00291111111111194c004c0e00066eb4c0dc006600c00c9114c004dd6981d001cdd6981d181d801ccc004dd6181d181b9baa02c0029bad303a00f488896600266ebcc0f8c0ecdd5001015466002607c60766ea8c0f8c0ecdd51814981d9baa002981f1bac3023303b3754061330053758605260766ea80c001122259800998101bab302c303e37546058607c6ea8004c068c0f8dd502244c966002606a607c6ea8006264b30013044001899192cc004c0d0c104dd500144c8c8c8c8c8c8c8c8c8c8ca600260a0003375c60a0017375a60a001330500089828003cc14001a60a000b30500049bad3050003992cc004c1380062b30013371290021826800c5a26088609a002825a2c8278dd5182800124444444444b3001305b00b899817182d00a099912cc004c12c006264b3001305e001899818182e800801c5905b182c9baa0098acc004c13c006264b3001305e001899818982e800801c5905b182c9baa0098acc004c12800626464b3001305f00280245905c1bae305d0013059375401316415882b10560998170030998168028998168020998168018992cc004c128006264b3001305d001899818182e00080c45905a182c1baa00b8acc004c1380062b3001305837540170178b20b28b20aa415460ac6ea8028c158dd5003c590580c140004c13c004c138004c134004c130004c12c004c128004c124004c120004c11c004c108dd500145903f0992cc004cc090dd5981818211baa303030423754002605c60846ea800a264b300130353042375400313232323322598009826001c4c966002607660906ea800626464b3001304f00289919192cc004cc0cd2410f4261642074782076616c696469747900332259800992cc004c10800629462b300130470018a518a5041388270c13cdd519812982998281baa002305330503754003132598009821800c528c566002608e00314a314a0827104e18279baa33025303e30503754004607c60a06ea8006294104d1811180f98271baa0433022302b33050302b33050303133050375060066eb4c074c138dd502a25eb80cc142600294698103d87a8000a60103d8798000412c97ae033050302b33050303133050375066e00050dd6980e98271baa0544bd70198284c00528d300103d87a8000a60103d8798000412c97ae04bd704566002660669201274d757374206f6e6c79206d696e742074686520616363756d756c6174656420696e746572657374003375e6074609c6ea810cdd32cc004c100006297adef6c6089982819bb0301c304e37540a86e98cc084dd7182898271baa00e0014bd6f7b63020968acc004cc0cd241205370656e74205554784f2063616e6e6f7420686176652061646d696e204e4654009800998181bab303c304e37546078609c6ea8054c0f0c138dd502a528528a096899819a48146436f6e74696e75696e67206f7574707574206d7573742068617665206e6f20646174756d20616e6420686f6c642074686520616363756d756c6174656420696e7465726573740098008094c0c4cc140c0accc14004ccc141300103d87a80004bd7025eb8298107d87b9fd87980ff00cc004dd5981e18271baa303c304e375402b375c6038609c6ea81526eb8c144c138dd50072444b300130430048801c4c8c8cc0040040148966002003133056337606ea4014dd3001a5eb7bdb1822646644b30013372201000515980099b8f0080028992cc004cdd7a6101a000374c003100289982d19bb037520126e9800400905519198008009bab30580042259800800c4cc16ccdd81ba9009375001897adef6c6089919912cc004cdc8806001456600266e3c03000a264b30013370e00266e052000010880144cc17ccdd81ba900d375066e0000404000905a1bad305c00389982f19bb037520186ea003c01105944cc17800ccc0140140050591bae3059001305e002305c0014169133059337606ea4020dd300300220a889982c80199802802800a0a8375c60a800260b200460ae00282a8cc09000401104e2980103d87a8000407914a0825a294104b45282096375a60a06530010019bac3051304e375408737566064609c6ea810e660a098101000033050374e60a46eb0c0d8c138dd5021998284c005285300103d87a8000a60103d8798000412c97ae040044444b30010038800c4cc8966002609260a46ea8c158c14cdd5182b18299baa3041305337540051329800803c00a6eacc15cc160006653001375860b0003304b3054375460b060b2003375a60b000b30580024888966002660766eacc11cc164dd51823982c9baa0083041305937540bf15980099b8748038c160dd5000c4c96600260bc00313322598009827182d9baa0018992cc004c184006264b30013050305d37540031323232323298009833000cdd718330024c19800e6eb4c1980092222598009835802c4c8cc10c0044cc0fc00c4cc896600260b8003132323322598009839001c01a2c8378dd698378009bad306f002306f001306a375400f1598009830000c4c8c8cc896600260e40070068b20de375a60de0026eb4c1bc008c1bc004c1a8dd5003c5906720ce159800982d18339baa005899192cc0056600266e3c018dd7183698351baa02a899baf0053058306a375405514a0833a2b30013371066e00004dd6981d98351baa0700308992cc004c1500062b30019800983700b4c138cc1b4c1b8c1acdd5182c98359baa01a4bd704cdd2a4008660da6090660da6090660da008660da6ea401ccc1b4018cc1b4dd419b800050013306d30483306d3750062660da6ea007d2f5c097ae04bd7025eb826eacc164c1acdd5182c98359baa01aa60103d879800040ed13306d375066e00050004cc1b4dd3983780b19836cc00405698103d87a8000a60103d879800041a097ae08a99834a481333c65787065637465643e20457870656374206120636f727265637479207570646174656420636f6e74696e75696e6720434450001641a115330694912a3c65787065637465643e20546865726520697320736f6d65206163637275656420696e7465726573742e001641a064b3001337120026eb4c1b8c1acdd5014c56600266e20dd6982998359baa029031899b803370666e08cdc09bad306e306b375405200200a904040507b7a566df00d99b833370666e08cdc118101bad3053306b37540526eb4c1b8c1acdd5182c98359baa02900548202c227efa8052080897a8a99834a4810155001641a115980099b88002031899b833370666e08cdc118100011bad306e306b375460b260d66ea80a40152080b089fbea014820225ea2a660d292010156001641a08340dd698369837001454cc1a124012d3c65787065637465643e20497420697320746f6f20736f6f6e20746f20736574746c6520696e7465726573742e0016419d1533068491413c65787065637465643e20416c6c20434450732061726520666f72207468652073616d652069417373657420616e6420636f6c6c61746572616c2061737365742e0016419c6eb4c1b0004c1a0dd5002c5906518339baa005306a0098b20d01833000983280098320009831800982f1baa0018b20b630600018b20bc305c37540031641646eb4c174004c11cc108c168dd51824182d1baa0098b20b63059375400316415915980099baf305c3059375460b860b26ea8c11cc164dd500400f45660033001003a50a51415913305b3750004660b66e9c010cc16e600294698103d87a8000a60103d8798000415897ae08a9982ba4812845787065637420612073696e676c6520696e74657265737420636f6c6c6563746f7220696e7075740016415913305b3750004660b66e9c010cc16e60020074c103d87a8000a60103d8798000415897ae0415882b060b00088038c8cc0040040148966002003168994c004c15400660ac003305a00248896600266ebc00cc0f0cc16cc170c164dd500425eb822660b6004660b66e980052f5c113300600600141583058001415919800803400600900340188280c15000cc15400d05219b80375a609e60986ea80296600266e20dd6981a18261baa00a012899b833370666e08cdc118009bad3034304c37540146eb4c13cc130dd5181d18261baa00a482020283dbd2b36f806d2080b089fbea014820225ea2a66094921015a001641246e040462c8260dd6982680098249baa0018b208c304b0048b2092375a60920026eb4c12400cc124004c120004c10cdd5000c590401817981518211baa30303042375400315330404914c3c65787065637465643e205468652070726f7669646564207265662e20696e70757420696e64657820636f72726573706f6e647320746f2074686520696e746572657374206f7261636c652e001640fc660166eb0c0bcc104dd501b0049821800c59041181f9baa0018b2078302b3026303e37546058607c6ea80062a6607892014d3c65787065637465643e205468652070726f7669646564207265662e20696e70757420696e64657820636f72726573706f6e647320746f2074686520636f6c6c61746572616c2061737365742e001640ec8a9981ca49413c65787065637465643e205468652070726f766964656420696e70757420696e64657820636f72726573706f6e647320746f20746865206f776e20696e7075742e001640e0181b805a2646530012259800980f18159baa0028992cc004c0c400626600860600020051640b860586ea800a2c814a4605c605e605e605e605e605e605e605e605e0032232330010010032259800981018169baa0018991919800800802912cc00400629422b30013371e6eb8c0d000400e2946266004004606a00281710321bae3031302e3754003132337126eb4c0c8004c8cc004004dd61819981a001112cc0040062900044cc89660026600e00e0051300d0018800a060303400133002002303500140c8605c6ea800502b2444b3001301e013899912cc004c0cc006264646600e0022b3001330164901235265666572656e636564205554784f206d75737420686176652061646d696e204e465400330133756603e60626ea8c07cc0c4dd500100244cc0592412041646d696e206d756c7469736967206d7573742062652073617469736669656400330053034303137540026eb0c018c0c4dd50134528205c301d301830303754603c60606ea8004c0c80062c8180c06cc0b4dd5019998069bac301b302d37540446060605a6ea8c0c0c0b4dd5198061bac3030302d37540440391598009810009c6600244b30010018a40011300933002002303300140c1301b302d37540673019302d37540673300c37586060605a6ea80880712222323233223300b00113259800981d000c4c966002605a606c6ea8c04cc0dcdd5000c4cc88cc03c0044c9660026603e9211e5370656e74205554784f206d75737420686176652061646d696e204e4654003301c3756605060746ea80280322b30013301f490125466f756e646174696f6e206d756c7469736967206d75737420626520736174697366696564003300e303d303e303e303e303e303e303e303e303e303e303e303e303a3754605060746ea800cdd61807981d1baa02f8acc004cc07d2401234e65772061646d696e67206d756c74697369672063616e6e6f7420626520656d7074790030070018acc004cc07d241244e65772061646d696e206d756c7469736967206d75737420626520736174697366696564003300e0013758601e60746ea80be2b30013301f490121436f6e74696e75696e672076616c7565206d757374206265207468652073616d650098009bab3028303a37540093756605060746ea802a980103d87a8000404d13301f4901244f6c6420616e64206e657720646174756d73206d75737420626520646966666572656e7400980099baf006002a50a5140dd14a081ba29410374528206e8a5040dd14a081b8c0f0c0e4dd5000992cc004c0f0006264b3001302b303837540031323232323298009bad30410019bad30410059bad30410039bad30410024888966002608c00b13259800981a98211baa00189919191919191919191919194c004c1480066eb4c1480326eb4c14802e6eb4c14802a6eb4c1480266eb4c1480226eb4c14801e6eb4c14801a6eb4c1480166eb4c1480126eb4c1480092222222222259800982f00644cc0d4c1740384cc0c402c408a2c82d860a400260a200260a0002609e002609c002609a0026098002609600260940026092002609000260866ea80062c8200c1140222c821860820026080002607e002607c00260726ea80062c81b0c094c080c0e0dd51813181c1baa303b0018b207298009bac302530373754059008a60103d879800040606048603e606e6ea80062c81a0c0e40062c81b8cc07cdd6180e981a9baa02a301330183303730383035375400a97ae030010013020301b3033375400644b300130263033375400314a31323322598009810001456600266e24008c0180062646600200200444b30010018a518acc004cc01c01cc0f0006266004004607a00314a081b103a452820688a5040d06eb4c0e0004dd6181c181c800981a1baa00140c4600800889919912cc004c098c0bcdd5000c4cc8966002606c00313259800981298191baa00189919912cc004c0e800626603a6eb0c0e40048966002005132598009815981c1baa0018991925159800991980080098069bab3027303b375406044b30013371e6eb8c0fc00400e2946266004004608000281ca2934590371bae303c303937540031640d864660020026eb0c09cc0e4dd5003912cc004006298103d87a80008992cc006600266ebc00530103d87a8000a50a5140e11001899801801981f8012070325980099b8f375c607c002017130183303d303e303f0014bd7045300103d87a800040e06eb0c0f400503b44c8c8cc896600260800071300530400068b207a375c607a0026eb8c0f4008c0f4004dd6181d80120728b206e375a606e002607000260666ea80062c8180c07cc068c0c8dd5181018191baa30350018b2066375c606660606ea800660026eb0c078c0c0dd5012cc0ccc0c0dd501b530103d879800040451640b460020026062605c6ea8c0c4c0b8dd5198069bac3031302e375404603a44b30010018a5eb82266062605c6064002660040046066002818102a20541800800911192cc004c07800626464b3001303200280245902f1bae3030001302c37540071598009811000c4c8cc896600260660031330163758606400244b3001002803c66002013303400289800981a801201240c91640c06eb4c0c0004c0c4004c0b0dd5001c590292052302a37540048128888cc8a600264b3001301f302c37540031375a605a60606eacc0c0c0b4dd5000c5200040a8605e0033756005375e605e60600032259800981218169baa005899b890010028acc004cdc480080144cdc480119b80001482026fb80a294102b20564888966002007159800980100344cc00401120008a5040b51325980099baf4c0101400030300018acc004cc008014dd69818981a1bab3031001898019ba630350048a5040b915980099801002a4001130030078a5040b88170c0cc00d0310dd3001194c004006009223302f0023302f374c00297ae04004444b3001002899800a6103d87a80004bd6f7b63044c8cc896600266e452201000028acc004cdc7a441000028998021806998191818001a5eb80006266008980103d87a800000540b5198008034006446600c0046606800a002803102d1bae302d0013032003303000240b8407c22301698008014dd7181198101baa0019bae300e302037540028058602a602c00c602800a8b2012180580098031baa00b8a4d13656400c2a660049212f3c65787065637465643e2053696e676c652043445020696e70757420696e20746865207472616e73616374696f6e2e001615330024913f3c65787065637465643e2053696e676c6520696e74657265737420636f6c6c656374696f6e20696e70757420696e20746865207472616e73616374696f6e2e001601"
7651
+ cborHex: "59225f59225c010100229800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049201293c65787065637465643e2045787065637473206f6e6c792073696e676c65206f776e206f757470757400168a998012493b3c65787065637465643e20416c6c20747265617375727920696e70757473206d75737420757365207468652072696768742072656465656d65722e00168a99801249303c65787065637465643e2048617320746f207265666572656e63652073696e676c65206578656375746520696e70757400168a99801249333c65787065637465643e20457870656374732073696e676c65206f757470757420746f207769746864726177616c206164647200168a998012492d3c65787065637465643e20457870656374732073696e676c6520696e7075742066726f6d20747265617375727900164888896600264653001300e00198071807800cdc3a4005300e00248889660026004601c6ea800e33001300f3754007370e90004dc3a4009370e90034dc3a401091111194c00488c9660026010003159800980c1baa00380145901945660026016003159800980c1baa0038014590194566002600e003159800980c1baa0038014590194566002600c003159800980c1baa0038014590194566002600a0031323232329800980f800cdd6980f801cdd6980f8012444b3001302300489980598110038acc004c03cc078dd5001c4c8c8cc8966002604e00700d8b2048375a60480026eb8c090008c090004c07cdd5001c5901c4590200c07c004c078004c074004c060dd5001c56600266e1d200a0018acc004c060dd5001c00a2c80ca2c80a9015202a405480a9015180b1baa002980c180c8034c0600192223300300d198009180e180e800c888c8cc88cc0080080048966002003003899192cc004cdc8803000c56600266e3c01800626eb4c08000a00a80ea266008008604800680e8dd7180f0009810800a03e3232330010010062259800800c00e26464b30013372201000315980099b8f00800189bab3021002802a03c8998020021812801a03c375c603e0026044002810052f5bded8c029000488c8cc00400400c896600200314bd7044cc8966002600a00513302000233004004001899802002000a036301f00130200014075371090004966002601060306ea80062603860326ea80062c80b246038603a603a00322323300100100322330030013002002980b9baa00d912cc004006200315330180021001405d2598009804980c1baa001891919baf301e301b3754603c60366ea8008004c074c068dd5001448c8cdd7980f180d9baa002001301d301a375400480b26e9520009180e180e980e980e800cdd7a6103d87a800091111919800800802912cc00400626604066ec0dd48029ba60044bd6f7b63044c8cc896600266e4402000a2b30013371e010005198008044dd59810801c01e46604866ec0dd48049ba60010028800a00c89981199bb037520106e9801c01101e44cc08c00ccc01401400501e1bae301e00130230023021001407d222232330010010052259800800c4cc080cdd81ba9005375000897adef6c6089919912cc004cdc8804001456600266e3c02000a330010089bad3021003803c8cc090cdd81ba9009375000200510014019133023337606ea4020dd4003802203c89981180199802802800a03c375c603c0026046004604200280fa244444b30013370e00866e052000003800c4c008cdc0002001a0349baf4c0101a0009111919800800802112cc004006200913298009bae301d0019bab301e00199801801981100120083020001407922232330010010042259800800c40122653001375c603a003375a603c0033300300330220024010604000280f244b3001300a30193754005132323322598009811001c0162c80f8dd6980f8009bad301f002301f001301a375400516405d2232598009805800c4c8c96600260420050048b203c375c603e00260366ea800e2b3001300e0018acc004c06cdd5001c00a2c80e22c80c1018180c9baa00291192cc004c02c00626464b3001302100280245901e1bae301f001301b37540071598009807000c4c8c96600260420050048b203c375c603e00260366ea800e2c80c1018180c9baa002911980e19bb037520046ea00052f5bded8c122232330010010042259800800c4012266006604000266004004604200280f26e9520024888888888888888888888888a600244646600200200644b30010018b44c96600266ebcc0e4c0d8dd500080244c078c0d8dd5000c4cc00c00cc0e8009033181c000a06c911191980d80211801180f181b1baa00159800981218199baa0018918144c004dd5980e981a9baa0019bae303830353754007375c603a606a6ea800d01c448c06a60026eacc074c0d4dd5000cdd7181c181a9baa0039bae301d3035375400680e10314888cc8a600264b30013027303637540031375a606e60746eacc0e8c0dcdd5000c5200040d060720033756005375e6072607400322598009815981b9baa005899b890010028acc004cdc480080144cdc480119b80001482026fb80a2941035206a4888966002007159800980100344cc00401120008a5040dd1325980099baf4c01014000303a0018acc004cc008014dd6981d981f1bab303b001898019ba6303f0048a5040e115980099801002a4001130030078a5040e081c0c0f400d03b0dd3001194c004006009223303900233039374c00297ae04004444b3001002899800a6103d87a80004bd6f7b63044c8cc896600266e452201000028acc004cdc7a44100002899802180c1981e181d001a5eb80006266008980103d87a800000540dd198008034006446600c0046607c00a00280310371bae3037001303c003303a00240e1223301900223375e606e60686ea8c0dcc0d0dd5180e181a1baa00100291194c0040060070024004444b30010028800c4ca6002009303b003cc00400a6eb8c0d80066eacc0dc0064444464b30013015374c00300289801800a07432329800800c01a00a80088896600200510018994c004012608a00798008014dd71820000cdd69820800c01501b200830430024104a02a8091004181c801206e911980c8011809000ca60020034bd70488a60020050019111981d1ba73303a375200c660746ea400ccc0e8dd400125eb8000500b201291192cc004c090006264b30013039001899805181c000801c59036181a1baa0038acc004c09c006264b30013039001899810981c000801c59036181a1baa0038acc004c08c00626464b3001303a0028024590371bae3038001303437540071640c4818903118191baa002911192cc004c09400626464b3001303b0028024590381bae3039001303537540071598009814000c4c8cc8966002607800313301a3758607600244b3001002803c66002013303d00289800981f001201240ed1640e46eb4c0e4004c0e8004c0d4dd5001c590322064303337540052232598009812000c4c9660026072003132598009813181a9baa00189919192cc004c0f400a26644b3001302b303a3754005132323259800982100144cc044c10400c4c966002605e003132598009822000c4c8c9660026064003132598009823800c4cc058c1180040262c8220c108dd50014566002606a003132323298009bad30480019bad30480039bad3048002488966002609800900e8b20921824000982380098211baa0028b207e40fc60806ea8004c10c0062c8208c0fcdd500145660026064003159800981f9baa002802c5904045903c2078303d37540031640fc6080002608000260766ea800a2c81c0c0f000c4cc06c00489660020050098992cc004c0b0c0ecdd5000c4c8c8ca60026eb4c1080066eb8c10800e6eb8c10800922259800982300244c020c1180262c82186084002608200260786ea80062c81c8c0f800903c45903a1bac303b001303b001303637540031640cc60700031640d860686ea800e2b300130270018acc004c0d0dd5001c00a2c81aa2c818903118191baa00291112cc004c094006200919800802400e6600e00400322222325980098099ba600180144c00c0050384c00401200f006a809a0284040819122222222222980091111191919800800803912cc00400629422b300132598009802000c56600266ebcc0a0c114dd5000803c56600330013756605a608a6ea800600d00540491302130223045375400314a0821229410424528208430470018a518998010011824000a08241146040009222225980099810002002c56600266ebcc090c104dd5002801c56600330013756605260826ea801600500140391301d301e3041375400b14a081f2294103e4528207c9801801ca60020034bd6f7b630488c8ca6002007375c6088005375c6088003375a6088608a0028030c110004c0fcdd5001201c48888c9660026062045132323259800800c0f22b300130480018992cc004c12400626464b3001303730463754003132323232323298009828000cdd698280024dd69828001cdd6982800124444b3001305500589919809182a80509980c0028acc004c108c144dd5002c4c8cc896600200304e8992cc004c16800a2b300133036491205769746864726177616c2076616c75652063616e6e6f7420626520656d70747900980098171ba6003a50a51414d1598009981b2481245472656173757279207769746864726177616c206f757470757420696e636f7272656374009800800cc098cc160c164c158dd500225eb8266e95200433058374e660b098011a5818496e6469676f54726561737572795769746864726177616c003305830593056375402297ae04bd70400e980103d87a800040651325980098179ba60018a518acc004c8cc004004c084008896600200314a115980099b88375a60b860ba60ba6eb0c17000520008a51899801001182e800a0ac416915330554901224e6f7420656e6f7567682066756e647320696e20747265617375727920696e707574001689981ba4811c5472656173757279206f757470757420697320696e636f72726563740098009bac303a3057375409330273305930353305901533059303a305737540bc97ae04bd70530107d87b9fd87980ff00800d300103d87a8000406c82a1054198109bab303e3056375402a646600200200844b30010018a5eb7bdb182264660b666ec0c160004dd319198008009bab305a0022259800800c52f5bded8c11323305e3376060b60026ea0cdc0a40006eb4c170004cc00c00cc180008c17800505c19801801982e801182d800a0b28a50414d14a0829a09e82b8c160005056180a1bac303b305337540026603a6eb0c0d8c14cdd502298119982a982b18299baa0014bd70182a98291baa0058b209e375a60a80151641483050001304f001304e001304d001304c0013047375400316411060546052608c6ea8c0b8c118dd50009824000c590464c004dd6182398221baa036982398221baa04ba60103d8798000404903c41148228cc03cdd6182318219baa035001304530423754608a60846ea8004cc040dd6182218209baa03302a8cc004dc0240052304530463046304630463046304630463046304600194c00400691100a4410040a5371090012444464b3001303902789919912cc00400608713259800982700144c966002607660946ea80062646464646465300130540019bad30540049bad30540039bad3054002488896600260b200b13233016305900a13301c005132598009823982b1baa006899192cc004ca6002003375860ba60b46ea81326eacc060c168dd5026528a002222259800801c400626644b30013052305e375460c460be6ea8c188c17cdd51823982f9baa0028994c00401e005375660c660c8003325980099baf30643061375460c860c26ea8c124c184dd500200dc566002003159800982a18301baa0018acc004c184dd5000c40160b883120b882f20b905c82e41710664401505e1831800a00e32330010010052259800800c5a265300130610019831000cc1980092225980099baf00330353306730683065375401097ae0899833801198339ba60014bd7044cc0180180050620c19000506246600200d001802400d00620b83060003306100341791598009981ca493d43616e6e6f742062652075736564207768656e207769746864726177616c2076616c7565206861732073696e676c65206173736574206f72206e6f6e650030150018acc004cc0e52412e43616e6e6f742062652075736564207769746820617373657473206e6f7420746f2062652077697468647261776e003370e6028006b3001303e30160028800c4c0600050564566002660729201374f6e65206f75747075742068617320746f2068617665207468652076616c7565206f662074726561737572795f7769746864726177616c0098009bac303c3059375409730293305b0124bd70530107d87b9fd87980ff008015300103d87a80004075133039490123416c6c207370656e742076616c75652068617320746f2062652070616964206261636b009800cc004dd6181e182c9baa04ba5eb7bdb18244b30013375e60bc60b66ea8c178c16cdd500100ac56600266ebcc0f8c16cdd500126107d87b9fd87980ff008998130009bab3043305b375400515330594912f3c65787065637465643e20416c6c206f776e206f757470757473206d757374206861766520766f696420646174756d001641611001416081520074c103d87a8000409914a082b22941056452820ac8a504158602600260306eb0c0fcc15cdd5182d182b9baa0068b20a898009bac3059305637540914bd6f7b6304896600266ebcc16cc160dd5182d982c1baa3040305837540040251330230013756608060b06ea8c100c160dd500144005055204e375a60b001516415830540013053001305200130510013050001304b3754003164120605c605a60946ea8c0c8c128dd5000c11104b1826000a09430253304900133049302a3047375409c97ae098009bac302f30473754073304a3047375409d4c0103d879800040546092608c6ea8c124c118dd51980a9bac30493046375407005f1323259800981b814c4c8ca600260506609800266098605a60946ea81452f5c1232330010010022259800800c52f5bded8c113233225980099b91489000028acc004cdc7a441000028800c401104d44cc14800ccc01401400504d1bae304d0013052002305000141393756606460946ea80092225980098289980c9bac3050304d375407e009132325980099817a495d416c6c20696e70757473206d7573742068617665206d6f7265207468616e2031206e6f6e2d414441206173736574206f722031206e6f6e2d41444120617373657420616e64206d6f7265207468616e20327820414441206275666665720032598009806000c528c566002608600313371090405b6e0298068024528209a41346014600800715980099817a492f416c6c207468652076616c7565206e6565647320746f2062652073656e74206261636b20746f207472656173757279009800800c00e98103d87a8000407113302f49012354686572652063616e2062652031206f75747075742077697468206f6e6c7920414441003371266e04c020008dd698294c004c010006660a2981010000330513032304f375408297ae09114c00400a0032223259800cc004c164006604c660b001897ae0a60107d87b9fd87980ff00acc004c11800e297adef6c6089982c19bb0375200e6e98cc0a001000d2f5bded8c0829a98103d879800040651330583750602a6eb4c164008cc160dd3982d000a5eb822a660a8921593c65787065637465643e2045616368206e6f6e204144412061737365742069732073657061726174656420696e746f20697473206f776e20636f6e74696e75696e67206f7574707574207769746820766f696420646174756d0016414c6eb0c160c164005028204c4800a294104c452820989800800d2f5bded8c1223301b0013756607060a06ea800901f1980b9bac3030304d375407e603a6609e00697ae08b209c182618249baa304c304937540026602e6eb0c12cc120dd501d018c566002606c05313233229800cc00400697adef6c60911980c0009bab3035304d3754606a609a6ea800901c4cc054dd6181718259baa03d301b3304d0024bd70488c8cc00400400c896600200314a315980098019829000c4cc008008c14c006294104c20a048896600200504a8992cc004c14c00e2b30013302f4912d416c6c206f776e20696e70757473206861766520746f20757365207468652072696768742072656465656d657200330020052323303c00113375e002980103d87c80003232330010013756602060a46ea811088c96600266ebc010c14c006260a80031330030033058002414460ac0026040660a460a660a06ea80052f5c115980099817a4812554686572652068617320746f206265206174206c656173742032206f776e20696e7075747300300b30080058acc004cc0bd2411c5472656173757279206f757470757420697320696e636f7272656374009800800cc07ccc1440192f5c14c107d87b9fd87980ff008025300103d87a8000404913302f490132416c6c20696e70757473206861766520746f20636f6e7461696e207468652073616d65206d657267696e6720617373657473003233003006232330010010032259800800c528c56600264607330013756607860a86ea8c0f0c150dd50024dd7182b800cdd7182b982c000a076375860ac00313300200230570018a50414082a0c060012294104c452820988a50413104b414060a20048278604e6609600266096605860926ea81412f5c06602a6eb0c130c124dd501d800982598241baa304b304837546602e6eb0c12cc120dd501d018c566002606a053132323298009bad304e00198271827800ccc068dd6182718259baa03d0349827001cdd698270012444446644b30013303249116546f6f206d616e7920617373657420636c61737365730033712601a004900245660026606492011c436f6c6c656374656420616d6f756e7420697320706f7369746976650059800981b801c4cdc4a400000f14a0827a26606492011c5472656173757279206f757470757420697320696e636f72726563740098009bac30353052375408930223305430303305430553052375460aa60a46ea8014cc150c0d4c148dd502ca5eb812f5c13374a90021982a18181982a18181982a01da5eb80cc1500192f5c097ae0801530103d87a8000405914a0827a294104f4c00660026eacc0e0c140dd5001cdd7182998281baa0029bae303830503754005001405548900a44100802a02a3233001001375860a860a26ea810c896600266ebcc154c148dd5182a8008034526899801001182b000a09e1827000982680098241baa03d89919912cc004c0f8c128dd5000c4cc896600260a200313259800981f18269baa00189919912cc004c1540062660666eb0c150004896600200513259800982218299baa0018991925159800991980080098069bab3059305a305a305a305a3056375409044b30013371e6eb8c16800400e294626600400460b600282a22934590521bae30573054375400316414464660020026eb0c0f0c150dd5003912cc0040062980103d87a80008992cc006600260640034a14a2829a2003133003003305a002414c64b30013371e6eb8c16400402e26068660b060b260b400297ae08a6103d87a8000414c6eb0c16000505644c8c8cc896600260b600713005305b0068b20b0375c60b00026eb8c160008c160004dd6182b00120a88b20a4375a60a400260a6002609c6ea80062c8258c0c4c0c0c134dd5181a98269baa30500018b209c375c609c60966ea800660026eb0c0ccc12cdd501ecc0ccc12cdd5029530103d879800040651641206002002609860926ea8c130c124dd51980c1bac304c3049375407606444b30010018a5eb822660986092609a00266004004609c0028259045208a4114600200244b30010018a40011300733002002304c001412482188c8cc0040040088966002003148002266453001375c6092005375660940052259800800c400e2646644601c6600a00a60a60086eb8c130004dd698268009827800a09a4888cc0040040086096002660040046098002824881f088c9660026066003132598009824000c4c966002606a60886ea800626464646464653001304e0019bae304e00698270024c13800e609c004911112cc004c15001a26604a60a601426604a00626604a00426604a00226604a00a01f164144304e001304d001304c001304b001304a00130453754003164108608e00316411460866ea800e2b300130360018992cc004c120006264b3001303530443754003132323232323298009827000cdd718270034c138012609c007304e0024888896600260a800d133025305300a13302500313302500213302500113302500500f8b20a21827000982680098260009825800982500098229baa0018b208430470018b208a304337540071598009819000c4c966002609000313259800981a98221baa00189919191919191919194c004dd69828800cdd71828804cdd69828803cc14401a60a200b30510049828801cc1440092222222259800982d004c4cc108c1640404cc0780144cc1080104cc0ac00c4cc0ac0084cc0ac0040562c82b860a200260a0002609e002609c002609a002609800260960026094002608a6ea80062c8210c11c0062c8228c10cdd5001c5660026062003132598009824000c4c966002606a60886ea800626464646464646464653001375a60a2003375c60a2013375a60a200f30510069828802cc14401260a200730510024888888896600260b4013133042305901013301e00513304200413302b00313302b00213302b0010158b20ae1828800982800098278009827000982680098260009825800982500098229baa0018b208430470018b208a304337540071598009818000c4c966002609000313259800981a98221baa00189919191919191919194c004dd71828800cdd71828804cc14401e60a200d305100598288024dd69828801cdd69828801244444444b3001305a009899821182c80809981580309981580289981580209981500180ac590570c144004c140004c13c004c138004c134004c130004c12c004c128004c114dd5000c590421823800c5904518219baa0038acc004cdc3a4014003132598009824000c4c966002606a60886ea8006264646464646464646464653001375c60a6003375c60a6017305300998298044c14c01e64b300130510018acc004cdc4a400860a000316898221828000a09c8b20a4375460a600d32598009828800c56600266e25200430500018b44c110c14000504e4590521baa305300598298024dd69829801cdd6982980124444444444b3001305e00b899823182e80a09981780409981780389981780309981700180cc5905b0c14c004c148004c144004c140004c13c004c138004c134004c130004c12c004c128004c114dd5000c590421823800c5904518219baa0038acc004cdc3a4018003132598009824000c4c966002606a60886ea80062646464646464646464646465300130540019bad305400c9bad305400b9bad305400a9bad30540099bad30540089bad30540079bad30540069bad30540059bad30540049bad30540024888888888896600260c0019133030305f00e13301e00b01b8b20ba182a000982980098290009828800982800098278009827000982680098260009825800982500098229baa0018b208430470018b208a3043375400715980099b8748038006264b300130480018992cc004c0d4c110dd5000c4c8cc8966002609800313302a3758609600244b3001002804c4c8cc896600260a200313259800981f18269baa001899192cc004c15000a2600e60a80111641446eb8c148004c138dd5000c5904b1828000c5904e1bae304e001304f0013758609a004825a2c8248dd69824800982500098229baa0018b208430470018b208a3043375400715980099b874804000626464b300130490028024590461bae30470013043375400716410082010402080410082010402080410060826ea800808966002600c602a6ea800a264646644b3001301e003802c5901b1bae301b001375c60360046036002602c6ea800a2c8099164030300e0013009375401f149a26cac80301"
8199
7652
  };
8200
7653
 
8201
- // src/contracts/interest-collection/scripts.ts
8202
- function mkInterestCollectionValidator(params) {
8203
- return {
8204
- type: "PlutusV3",
8205
- script: applyParamsToScript9(_interestCollectionValidator.cborHex, [
8206
- castInterestCollectionParams(params)
8207
- ])
8208
- };
7654
+ // src/contracts/treasury/types.ts
7655
+ import { Data as Data39 } from "@lucid-evolution/lucid";
7656
+ var TreasuryParamsSchema = Data39.Object({
7657
+ upgradeToken: AssetClassSchema2,
7658
+ versionRecordToken: AssetClassSchema2,
7659
+ treasuryUtxosStakeCredential: Data39.Nullable(StakeCredentialSchema)
7660
+ });
7661
+ var TreasuryParams = TreasuryParamsSchema;
7662
+ function castTreasuryParams(params) {
7663
+ return Data39.castTo(params, TreasuryParams);
8209
7664
  }
8210
- var mkInterestCollectionValidatorFromSP = (params) => {
7665
+
7666
+ // src/contracts/treasury/scripts.ts
7667
+ var mkTreasuryValidatorFromSP = (params) => {
8211
7668
  return {
8212
7669
  type: "PlutusV3",
8213
- script: applyParamsToScript9(_interestCollectionValidator.cborHex, [
8214
- castInterestCollectionParams({
8215
- versionRecordNft: fromSystemParamsAssetLucid(params.versionRecordNft),
8216
- multisigUtxoNft: fromSystemParamsAssetLucid(params.multisigUtxoNft),
8217
- cdpAuthTk: fromSystemParamsAssetLucid(params.cdpAuthTk),
8218
- collateralAssetAuthTk: fromSystemParamsAssetLucid(
8219
- params.collateralAssetAuthTk
7670
+ script: applyParamsToScript11(_treasuryValidator.cborHex, [
7671
+ castTreasuryParams({
7672
+ upgradeToken: fromSystemParamsAssetLucid(params.upgradeToken),
7673
+ versionRecordToken: fromSystemParamsAssetLucid(
7674
+ params.versionRecordToken
8220
7675
  ),
8221
- govAuthTk: fromSystemParamsAssetLucid(params.govAuthTk),
8222
- cdpAssetSymbol: params.cdpAssetSymbol.unCurrencySymbol,
8223
- cdpBiasTime: BigInt(params.cdpBiasTime),
8224
- interestSettlementCooldown: BigInt(params.interestSettlementCooldown)
7676
+ treasuryUtxosStakeCredential: params.treasuryUtxosStakeCredential ? fromSysParamsStakeCredential(params.treasuryUtxosStakeCredential) : null
8225
7677
  })
8226
7678
  ])
8227
7679
  };
8228
7680
  };
8229
7681
 
8230
- // src/contracts/interest-collection/queries.ts
8231
- import { option as O14, function as F17 } from "fp-ts";
7682
+ // src/contracts/treasury/queries.ts
7683
+ import { option as O15, function as F18 } from "fp-ts";
8232
7684
  import {
8233
- assetClassToUnit as assetClassToUnit3,
7685
+ assetClassToUnit as assetClassToUnit4,
8234
7686
  assetClassValueOf as assetClassValueOf7,
8235
- getRandomElement as getRandomElement2,
8236
- matchSingle as matchSingle4
7687
+ getRandomElement as getRandomElement3
8237
7688
  } from "@3rd-eye-labs/cardano-offchain-common";
8238
- async function findAllInterestCollectors(lucid, sysParams) {
8239
- return lucid.utxosAt(
8240
- createScriptAddress(
8241
- lucid.config().network,
8242
- sysParams.validatorHashes.interestCollectionHash
8243
- )
7689
+ async function findAllTreasuryUtxos(lucid, sysParams) {
7690
+ return lucid.utxosAt({
7691
+ type: "Script",
7692
+ hash: sysParams.validatorHashes.treasuryHash
7693
+ });
7694
+ }
7695
+ async function findRandomTreasuryUtxo(lucid, sysParams) {
7696
+ const treasuryUtxos = await findAllTreasuryUtxos(lucid, sysParams);
7697
+ return F18.pipe(
7698
+ O15.fromNullable(getRandomElement3(treasuryUtxos)),
7699
+ O15.match(() => {
7700
+ throw new Error("Expected some treasury UTXOs.");
7701
+ }, F18.identity)
8244
7702
  );
8245
7703
  }
8246
- async function findAdminInterestCollectors(lucid, sysParams) {
8247
- return matchSingle4(
8248
- await lucid.utxosAtWithUnit(
8249
- createScriptAddress(
8250
- lucid.config().network,
8251
- sysParams.validatorHashes.interestCollectionHash
8252
- ),
8253
- assetClassToUnit3(
8254
- fromSystemParamsAsset(
8255
- sysParams.interestCollectionParams.multisigUtxoNft
8256
- )
8257
- )
8258
- ),
8259
- (_) => new Error("Expected a single admin interest collector UTXO")
7704
+ async function findRandomTreasuryUtxoWithOnlyAda(lucid, sysParams) {
7705
+ const treasuryUtxos = await findAllTreasuryUtxos(lucid, sysParams);
7706
+ const adaOnlyTreasuryUtxos = treasuryUtxos.filter(
7707
+ (utxo) => Object.keys(utxo.assets).length == 1
7708
+ );
7709
+ return F18.pipe(
7710
+ O15.fromNullable(getRandomElement3(adaOnlyTreasuryUtxos)),
7711
+ O15.match(() => {
7712
+ throw new Error("Expected some treasury UTXOs.");
7713
+ }, F18.identity)
8260
7714
  );
8261
7715
  }
8262
- async function findRandomNonAdminInterestCollector(lucid, sysParams) {
8263
- const allCollectors = (await findAllInterestCollectors(lucid, sysParams)).filter(
8264
- (utxo) => !assetClassValueOf7(
8265
- utxo.assets,
8266
- fromSystemParamsAsset(
8267
- sysParams.interestCollectionParams.multisigUtxoNft
8268
- )
8269
- )
7716
+ async function findRandomTreasuryUtxoWithAsset(lucid, sysParams, asset, max_number_of_assets = 2n) {
7717
+ const treasuryUtxos = await lucid.utxosAtWithUnit(
7718
+ { hash: sysParams.validatorHashes.treasuryHash, type: "Script" },
7719
+ assetClassToUnit4(asset)
8270
7720
  );
8271
- return F17.pipe(
8272
- O14.fromNullable(getRandomElement2(allCollectors)),
8273
- O14.match(() => {
8274
- throw new Error("Expected some non-admin interest collector UTXOs.");
8275
- }, F17.identity)
7721
+ const validTreasuryUtxos = treasuryUtxos.filter(
7722
+ (utxo) => Object.keys(utxo.assets).length <= max_number_of_assets
7723
+ );
7724
+ return F18.pipe(
7725
+ O15.fromNullable(getRandomElement3(validTreasuryUtxos)),
7726
+ O15.match(() => {
7727
+ throw new Error("Expected some treasury UTXOs.");
7728
+ }, F18.identity)
8276
7729
  );
8277
7730
  }
8278
-
8279
- // src/contracts/version-registry/types.ts
8280
- import { Data as Data39 } from "@lucid-evolution/lucid";
8281
- var VersionRecordTokenParamsSchema = Data39.Object({
8282
- upgradeToken: AssetClassSchema2
8283
- });
8284
- var VersionRecordTokenParams = VersionRecordTokenParamsSchema;
8285
- function castVersionRecordTokenParams(params) {
8286
- return Data39.castTo(params, VersionRecordTokenParams);
7731
+ async function findAllTreasuryUtxosWithNonAdaAsset(lucid, sysParams, includeDaoToken = true) {
7732
+ const treasuryUtxos = await findAllTreasuryUtxos(lucid, sysParams);
7733
+ const treasuryUtxosWithNonAdaAsset = treasuryUtxos.filter(
7734
+ (utxo) => Object.keys(utxo.assets).length !== 1 && (includeDaoToken ? true : assetClassValueOf7(
7735
+ utxo.assets,
7736
+ fromSystemParamsAsset(sysParams.govParams.daoIdentityToken)
7737
+ ) === 0n)
7738
+ );
7739
+ return treasuryUtxosWithNonAdaAsset;
8287
7740
  }
8288
7741
 
8289
- // src/contracts/version-registry/scripts.ts
7742
+ // src/contracts/collector/scripts.ts
8290
7743
  import {
8291
- applyParamsToScript as applyParamsToScript10
7744
+ applyParamsToScript as applyParamsToScript12,
7745
+ Constr as Constr2,
7746
+ fromText as fromText7
8292
7747
  } from "@lucid-evolution/lucid";
8293
7748
 
8294
- // src/validators/version-record-policy.ts
8295
- var _versionRecordTokenPolicy = {
8296
- type: "PlutusScriptV3",
8297
- description: "Generated by Aiken",
8298
- cborHex: "5901a159019e010100229800aba2aba1aba0aab9faab9eaab9dab9a488888896600264646644b30013370e900018031baa0018992cc004c032600246018601a003222323322330020020012259800800c00e26464b30013372200c00315980099b8f00600189bad3010002802a01c899802002180a001a01c375c601c00260220028078c8c8cc0040040188966002003003899192cc004cdc8804000c56600266e3c02000626eacc04400a00a807a266008008602a0068078dd718078009809000a02014bd6f7b6300a40013758601660106ea8c02c016601660106ea803922223232330010010042259800800c52f5c113322598009802980498089baa00289980980119802002000c4cc01001000500f18090009809800a0205980099b8748000c02cdd5260103d87980008919b8798009bab3005300d3754003375c6020601a6ea800a6eb8c014c034dd500120084800a2466e21200098009bab3005300d3754003375c6020601a6ea800a6eb8c014c034dd5001200840288a518b2012375c6014600e6ea80062c8028c020004c020c024004c020004c00cdd5004452689b2b200201"
8299
- };
8300
-
8301
- // src/validators/version-registry-validator.ts
8302
- var _versionRegistryValidator = {
7749
+ // src/validators/collector-validator.ts
7750
+ var _collectorValidator = {
8303
7751
  type: "PlutusScriptV3",
8304
7752
  description: "Generated by Aiken",
8305
- cborHex: "585e585c01010029800aba2aba1aab9eaab9dab9a4888896600264653001300600198031803800cc0180092225980099b8748008c01cdd500144c8cc892818050009805180580098041baa0028b200c180300098019baa0068a4d13656400401"
7753
+ cborHex: "590a2a590a27010100229800aba2aba1aba0aab9faab9eaab9dab9cab9a488888888cc896600264653001300b00198059806000cdc3a4005300b0024888966002600460166ea800e33001300c3754007370e90024dc3a4001300b375400891111919912cc004c0140122b3001301337540170028b20288acc004c0240122b3001301337540170028b20288acc004c0180122b3001301337540170028b20288b202040408080660024602a602c0032259800800c52f5c11330153012301600133002002301700140512301530163016001911919800800801912cc004006297ae0899912cc004c01400a2660320046600800800313300400400140506030002603200280b24446466446600400400244b3001001801c4c8c96600266e440180062b30013371e00c0031375a60320050054059133004004301d00340586eb8c05c004c068005018191919800800803112cc004006007132325980099b910080018acc004cdc7804000c4dd5980d001401501744cc010010c07800d0171bae3018001301b0014064297adef6c6014800260206ea802644b30010018800c54cc04400840050104dd2a400091111111194c0048c00800644602530010029bae301f301c3754003375c601660386ea8005007488c8cc00400400c8966002003168992cc004cdd79811180f9baa00100489807180f9baa001899801801981180120383021001407c9112cc004c03c01e2646464b300100180dc4c966002604a00513259800800c07a2b30013026001899805a49364d7573742070726f6475636520636f6c6c6563746f72206f7574707574207769746820696e63726561736564204144412076616c75650098009b914881009b8f4881009bac300f3022375402f3374a90011981218051981200219812260103d87a80004bd7025eb812222332232330010010052259800800c528456600264b300130040018acc004cdd7980c18159baa0014c107d87b9fd87980ff008acc004cc8a600264b30013020302d37540031375a605c60626eacc0c4c0b8dd5000c5200040ac60600033756005375e606060620032259800981298171baa4c0103d87a8000899b890010028acc004cdc480080144cdc480119b80001482026fb80a294102c20584888966002007159800980100344cc00401120008a5040b91325980099baf4c101400030310018acc004cc008014dd69819181a9bab3032001898019ba630360048a5040bd15980099801002a4001130030078a5040bc8178c0d000d0320dd3002994c0040066eacc06cc0b0dd5001488cc0c0008cc0c0dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044c8cc8966002601e005159800980700144cc010c064cc0ccc0c400d2f5c00031330044c0103d87a800000540b9198008034006446600c0046606a00a002803102e1bae302e0013033003303100240bd13375e605c605e605e605e60566ea800530103d87a80008a5040a114a0814229410281816800c528c4cc008008c0b800502720563259800a508800c4c8c8cc00400400c896600200313302c337609801014000374c00697adef6c6089919912cc004c02c00a2b3001300a0028992cc004cdd7a6101a000374c003100289981819bb04c01014000374c0020048158c8cc004004dd59817002112cc00400626606266ec130010140004c010101004bd6f7b63044c8cc89660026020005159800980780144c96600266e1c0052001880144cc0d4cdd8261014000375066e00005200200240c06eb4c0c800e26606866ec13010140004c0101010000440bd1330340033300500500140bc6eb8c0bc004c0d0008c0c800503044cc0bccdd82601014000374c00c008815226605e0066600a00a0028150dd7181500098178011816800a056330293376098010140004c010101004bd6f7b63020483756602a604c6ea8025660026030604a6ea8006246466ebcc0acc0a0dd5181598141baa002001302a3027375400512323375e605660506ea8008004c0a8c09cdd500120464079023204630073756602060426ea8c040c084dd5000c0710221811800a0423300b37586044603e6ea80508cdd7981198101baa302330203754601e60406ea8004008c084c078dd51810980f1baa0013300137586040603a6ea80480362b3001301300789919803a49334d757374207370656e64207374616b696e67206d616e61676572207769746820446973747269627574652072656465656d657200332259800800c00a2b3001302400189919912cc004c05400626464b300130290028024590261bae302700130233754007159800980c800c56600260466ea800e005164091159800980b000c56600260466ea800e00516409115980099b874801800626464b300130290028024590261bad30270013023375400715980099b87480200062b3001302337540070028b20488acc004cdc3a401400315980098119baa003801459024456600266e1d200c0018acc004c08cdd5001c00a2c81222c8101020204040808101020204013375e00298103d87b8000302037540026464660020026eacc094c098c098c098c098c098c098c098c098c098c088dd500b91192cc004cdd78021811800c4c09000626600600660500048108c098004cdd2a400466044604660406ea8c08c0052f5c100240848108528198051bac3021301e37540264660086eacc038c07cdd51807180f9baa0010023020301d37540471332259800980a980f1baa001899912cc004c094006264b30013014302137540031323322598009814800c4c8cc004004dd61814801112cc004006264b3001301a30273754003132324a2b3001323300100130103756605a605c605c605c605c60546ea807c896600266e3cdd71817000801c528c4cc008008c0bc00502845268b204c375c605660506ea80062c8128c8cc004004dd6180b98141baa0072259800800c5300103d87a80008992cc006600266ebc00530103d87a8000a50a51409d10018998018019817001204e325980099b8f375c605a002017130123302c302d302e0014bd7045300103d87a8000409c6eb0c0b000502a44c8c8cc8966002605e007133006006302f0058b2058375c60580026eb8c0b0008c0b0004dd61815000a0508b204c375a604c002604e00260446ea80062c80f8c966002602a60426ea80062604a60446ea80062c80f8c038c084dd5180818109baa30240018b2044375c6044603e6ea8004c8cc030dd6180798101baa01523002301030213754002b30013011301e375498103d879800089198029bab300f30203754002007123371090004c004dd5980798101baa0019bae302330203754007375c601e60406ea800d00b20388b2038300a301d37540466040603a6ea8c080c074dd5198009bac3020301d375402401a80d101a0c01c01c6028602a00a60260088b2012180580098031baa00b8a4d13656400c2a660049201353c65787065637465643e20436f6c6c6563746f7220696e7075742063616e6e6f742068617665206e6f6e2d41444120617373657473001615330024912c3c65787065637465643e204d757374207370656e642073696e676c6520636f6c6c6563746f7220696e707574001601"
8306
7754
  };
8307
7755
 
8308
- // src/contracts/version-registry/scripts.ts
8309
- function mkVersionRecordTokenPolicy(params) {
7756
+ // src/contracts/collector/scripts.ts
7757
+ var mkCollectorValidatorFromSP = (params) => {
8310
7758
  return {
8311
7759
  type: "PlutusV3",
8312
- script: applyParamsToScript10(_versionRecordTokenPolicy.cborHex, [
8313
- castVersionRecordTokenParams(params)
7760
+ script: applyParamsToScript12(_collectorValidator.cborHex, [
7761
+ new Constr2(0, [
7762
+ new Constr2(0, [
7763
+ params.stakingManagerNFT[0].unCurrencySymbol,
7764
+ fromText7(params.stakingManagerNFT[1].unTokenName)
7765
+ ]),
7766
+ new Constr2(0, [
7767
+ params.stakingToken[0].unCurrencySymbol,
7768
+ fromText7(params.stakingToken[1].unTokenName)
7769
+ ]),
7770
+ new Constr2(0, [
7771
+ params.versionRecordToken[0].unCurrencySymbol,
7772
+ fromText7(params.versionRecordToken[1].unTokenName)
7773
+ ])
7774
+ ])
8314
7775
  ])
8315
7776
  };
8316
- }
8317
- var mkVersionRegistryValidator = () => {
8318
- return {
8319
- type: "PlutusV3",
8320
- script: _versionRegistryValidator.cborHex
8321
- };
8322
- };
8323
-
8324
- // src/contracts/treasury/scripts.ts
8325
- import { applyParamsToScript as applyParamsToScript11 } from "@lucid-evolution/lucid";
8326
-
8327
- // src/validators/treasury-validator.ts
8328
- var _treasuryValidator = {
8329
- type: "PlutusScriptV3",
8330
- description: "Generated by Aiken",
8331
- cborHex: "59225f59225c010100229800aba4aba2aba1aba0aab9faab9eaab9dab9cab9a488888888a60022a660049201293c65787065637465643e2045787065637473206f6e6c792073696e676c65206f776e206f757470757400168a998012493b3c65787065637465643e20416c6c20747265617375727920696e70757473206d75737420757365207468652072696768742072656465656d65722e00168a99801249303c65787065637465643e2048617320746f207265666572656e63652073696e676c65206578656375746520696e70757400168a99801249333c65787065637465643e20457870656374732073696e676c65206f757470757420746f207769746864726177616c206164647200168a998012492d3c65787065637465643e20457870656374732073696e676c6520696e7075742066726f6d20747265617375727900164888896600264653001300e00198071807800cdc3a4005300e00248889660026004601c6ea800e33001300f3754007370e90004dc3a4009370e90034dc3a401091111194c00488c9660026010003159800980c1baa00380145901945660026016003159800980c1baa0038014590194566002600e003159800980c1baa0038014590194566002600c003159800980c1baa0038014590194566002600a0031323232329800980f800cdd6980f801cdd6980f8012444b3001302300489980598110038acc004c03cc078dd5001c4c8c8cc8966002604e00700d8b2048375a60480026eb8c090008c090004c07cdd5001c5901c4590200c07c004c078004c074004c060dd5001c56600266e1d200a0018acc004c060dd5001c00a2c80ca2c80a9015202a405480a9015180b1baa002980c180c8034c0600192223300300d198009180e180e800c888c8cc88cc0080080048966002003003899192cc004cdc8803000c56600266e3c01800626eb4c08000a00a80ea266008008604800680e8dd7180f0009810800a03e3232330010010062259800800c00e26464b30013372201000315980099b8f00800189bab3021002802a03c8998020021812801a03c375c603e0026044002810052f5bded8c029000488c8cc00400400c896600200314bd7044cc8966002600a00513302000233004004001899802002000a036301f00130200014075371090004966002601060306ea80062603860326ea80062c80b246038603a603a00322323300100100322330030013002002980b9baa00d912cc004006200315330180021001405d2598009804980c1baa001891919baf301e301b3754603c60366ea8008004c074c068dd5001448c8cdd7980f180d9baa002001301d301a375400480b26e9520009180e180e980e980e800cdd7a6103d87a800091111919800800802912cc00400626604066ec0dd48029ba60044bd6f7b63044c8cc896600266e4402000a2b30013371e010005198008044dd59810801c01e46604866ec0dd48049ba60010028800a00c89981199bb037520106e9801c01101e44cc08c00ccc01401400501e1bae301e00130230023021001407d222232330010010052259800800c4cc080cdd81ba9005375000897adef6c6089919912cc004cdc8804001456600266e3c02000a330010089bad3021003803c8cc090cdd81ba9009375000200510014019133023337606ea4020dd4003802203c89981180199802802800a03c375c603c0026046004604200280fa244444b30013370e00866e052000003800c4c008cdc0002001a0349baf4c0101a0009111919800800802112cc004006200913298009bae301d0019bab301e00199801801981100120083020001407922232330010010042259800800c40122653001375c603a003375a603c0033300300330220024010604000280f244b3001300a30193754005132323322598009811001c0162c80f8dd6980f8009bad301f002301f001301a375400516405d2232598009805800c4c8c96600260420050048b203c375c603e00260366ea800e2b3001300e0018acc004c06cdd5001c00a2c80e22c80c1018180c9baa00291192cc004c02c00626464b3001302100280245901e1bae301f001301b37540071598009807000c4c8c96600260420050048b203c375c603e00260366ea800e2c80c1018180c9baa002911980e19bb037520046ea00052f5bded8c122232330010010042259800800c4012266006604000266004004604200280f26e9520024888888888888888888888888a600244646600200200644b30010018b44c96600266ebcc0e4c0d8dd500080244c078c0d8dd5000c4cc00c00cc0e8009033181c000a06c911191980d80211801180f181b1baa00159800981218199baa0018918144c004dd5980e981a9baa0019bae303830353754007375c603a606a6ea800d01c448c06a60026eacc074c0d4dd5000cdd7181c181a9baa0039bae301d3035375400680e10314888cc8a600264b30013027303637540031375a606e60746eacc0e8c0dcdd5000c5200040d060720033756005375e6072607400322598009815981b9baa005899b890010028acc004cdc480080144cdc480119b80001482026fb80a2941035206a4888966002007159800980100344cc00401120008a5040dd1325980099baf4c01014000303a0018acc004cc008014dd6981d981f1bab303b001898019ba6303f0048a5040e115980099801002a4001130030078a5040e081c0c0f400d03b0dd3001194c004006009223303900233039374c00297ae04004444b3001002899800a6103d87a80004bd6f7b63044c8cc896600266e452201000028acc004cdc7a44100002899802180c1981e181d001a5eb80006266008980103d87a800000540dd198008034006446600c0046607c00a00280310371bae3037001303c003303a00240e1223301900223375e606e60686ea8c0dcc0d0dd5180e181a1baa00100291194c0040060070024004444b30010028800c4ca6002009303b003cc00400a6eb8c0d80066eacc0dc0064444464b30013015374c00300289801800a07432329800800c01a00a80088896600200510018994c004012608a00798008014dd71820000cdd69820800c01501b200830430024104a02a8091004181c801206e911980c8011809000ca60020034bd70488a60020050019111981d1ba73303a375200c660746ea400ccc0e8dd400125eb8000500b201291192cc004c090006264b30013039001899805181c000801c59036181a1baa0038acc004c09c006264b30013039001899810981c000801c59036181a1baa0038acc004c08c00626464b3001303a0028024590371bae3038001303437540071640c4818903118191baa002911192cc004c09400626464b3001303b0028024590381bae3039001303537540071598009814000c4c8cc8966002607800313301a3758607600244b3001002803c66002013303d00289800981f001201240ed1640e46eb4c0e4004c0e8004c0d4dd5001c590322064303337540052232598009812000c4c9660026072003132598009813181a9baa00189919192cc004c0f400a26644b3001302b303a3754005132323259800982100144cc044c10400c4c966002605e003132598009822000c4c8c9660026064003132598009823800c4cc058c1180040262c8220c108dd50014566002606a003132323298009bad30480019bad30480039bad3048002488966002609800900e8b20921824000982380098211baa0028b207e40fc60806ea8004c10c0062c8208c0fcdd500145660026064003159800981f9baa002802c5904045903c2078303d37540031640fc6080002608000260766ea800a2c81c0c0f000c4cc06c00489660020050098992cc004c0b0c0ecdd5000c4c8c8ca60026eb4c1080066eb8c10800e6eb8c10800922259800982300244c020c1180262c82186084002608200260786ea80062c81c8c0f800903c45903a1bac303b001303b001303637540031640cc60700031640d860686ea800e2b300130270018acc004c0d0dd5001c00a2c81aa2c818903118191baa00291112cc004c094006200919800802400e6600e00400322222325980098099ba600180144c00c0050384c00401200f006a809a0284040819122222222222980091111191919800800803912cc00400629422b300132598009802000c56600266ebcc0a0c114dd5000803c56600330013756605a608a6ea800600d00540491302130223045375400314a0821229410424528208430470018a518998010011824000a08241146040009222225980099810002002c56600266ebcc090c104dd5002801c56600330013756605260826ea801600500140391301d301e3041375400b14a081f2294103e4528207c9801801ca60020034bd6f7b630488c8ca6002007375c6088005375c6088003375a6088608a0028030c110004c0fcdd5001201c48888c9660026062045132323259800800c0f22b300130480018992cc004c12400626464b3001303730463754003132323232323298009828000cdd698280024dd69828001cdd6982800124444b3001305500589919809182a80509980c0028acc004c108c144dd5002c4c8cc896600200304e8992cc004c16800a2b300133036491205769746864726177616c2076616c75652063616e6e6f7420626520656d70747900980098171ba6003a50a51414d1598009981b2481245472656173757279207769746864726177616c206f757470757420696e636f7272656374009800800cc098cc160c164c158dd500225eb8266e95200433058374e660b098011a5818496e6469676f54726561737572795769746864726177616c003305830593056375402297ae04bd70400e980103d87a800040651325980098179ba60018a518acc004c8cc004004c084008896600200314a115980099b88375a60b860ba60ba6eb0c17000520008a51899801001182e800a0ac416915330554901224e6f7420656e6f7567682066756e647320696e20747265617375727920696e707574001689981ba4811c5472656173757279206f757470757420697320696e636f72726563740098009bac303a3057375409330273305930353305901533059303a305737540bc97ae04bd70530107d87b9fd87980ff00800d300103d87a8000406c82a1054198109bab303e3056375402a646600200200844b30010018a5eb7bdb182264660b666ec0c160004dd319198008009bab305a0022259800800c52f5bded8c11323305e3376060b60026ea0cdc0a40006eb4c170004cc00c00cc180008c17800505c19801801982e801182d800a0b28a50414d14a0829a09e82b8c160005056180a1bac303b305337540026603a6eb0c0d8c14cdd502298119982a982b18299baa0014bd70182a98291baa0058b209e375a60a80151641483050001304f001304e001304d001304c0013047375400316411060546052608c6ea8c0b8c118dd50009824000c590464c004dd6182398221baa036982398221baa04ba60103d8798000404903c41148228cc03cdd6182318219baa035001304530423754608a60846ea8004cc040dd6182218209baa03302a8cc004dc0240052304530463046304630463046304630463046304600194c00400691100a4410040a5371090012444464b3001303902789919912cc00400608713259800982700144c966002607660946ea80062646464646465300130540019bad30540049bad30540039bad3054002488896600260b200b13233016305900a13301c005132598009823982b1baa006899192cc004ca6002003375860ba60b46ea81326eacc060c168dd5026528a002222259800801c400626644b30013052305e375460c460be6ea8c188c17cdd51823982f9baa0028994c00401e005375660c660c8003325980099baf30643061375460c860c26ea8c124c184dd500200dc566002003159800982a18301baa0018acc004c184dd5000c40160b883120b882f20b905c82e41710664401505e1831800a00e32330010010052259800800c5a265300130610019831000cc1980092225980099baf00330353306730683065375401097ae0899833801198339ba60014bd7044cc0180180050620c19000506246600200d001802400d00620b83060003306100341791598009981ca493d43616e6e6f742062652075736564207768656e207769746864726177616c2076616c7565206861732073696e676c65206173736574206f72206e6f6e650030150018acc004cc0e52412e43616e6e6f742062652075736564207769746820617373657473206e6f7420746f2062652077697468647261776e003370e6028006b3001303e30160028800c4c0600050564566002660729201374f6e65206f75747075742068617320746f2068617665207468652076616c7565206f662074726561737572795f7769746864726177616c0098009bac303c3059375409730293305b0124bd70530107d87b9fd87980ff008015300103d87a80004075133039490123416c6c207370656e742076616c75652068617320746f2062652070616964206261636b009800cc004dd6181e182c9baa04ba5eb7bdb18244b30013375e60bc60b66ea8c178c16cdd500100ac56600266ebcc0f8c16cdd500126107d87b9fd87980ff008998130009bab3043305b375400515330594912f3c65787065637465643e20416c6c206f776e206f757470757473206d757374206861766520766f696420646174756d001641611001416081520074c103d87a8000409914a082b22941056452820ac8a504158602600260306eb0c0fcc15cdd5182d182b9baa0068b20a898009bac3059305637540914bd6f7b6304896600266ebcc16cc160dd5182d982c1baa3040305837540040251330230013756608060b06ea8c100c160dd500144005055204e375a60b001516415830540013053001305200130510013050001304b3754003164120605c605a60946ea8c0c8c128dd5000c11104b1826000a09430253304900133049302a3047375409c97ae098009bac302f30473754073304a3047375409d4c0103d879800040546092608c6ea8c124c118dd51980a9bac30493046375407005f1323259800981b814c4c8ca600260506609800266098605a60946ea81452f5c1232330010010022259800800c52f5bded8c113233225980099b91489000028acc004cdc7a441000028800c401104d44cc14800ccc01401400504d1bae304d0013052002305000141393756606460946ea80092225980098289980c9bac3050304d375407e009132325980099817a495d416c6c20696e70757473206d7573742068617665206d6f7265207468616e2031206e6f6e2d414441206173736574206f722031206e6f6e2d41444120617373657420616e64206d6f7265207468616e20327820414441206275666665720032598009806000c528c566002608600313371090405b6e0298068024528209a41346014600800715980099817a492f416c6c207468652076616c7565206e6565647320746f2062652073656e74206261636b20746f207472656173757279009800800c00e98103d87a8000407113302f49012354686572652063616e2062652031206f75747075742077697468206f6e6c7920414441003371266e04c020008dd698294c004c010006660a2981010000330513032304f375408297ae09114c00400a0032223259800cc004c164006604c660b001897ae0a60107d87b9fd87980ff00acc004c11800e297adef6c6089982c19bb0375200e6e98cc0a001000d2f5bded8c0829a98103d879800040651330583750602a6eb4c164008cc160dd3982d000a5eb822a660a8921593c65787065637465643e2045616368206e6f6e204144412061737365742069732073657061726174656420696e746f20697473206f776e20636f6e74696e75696e67206f7574707574207769746820766f696420646174756d0016414c6eb0c160c164005028204c4800a294104c452820989800800d2f5bded8c1223301b0013756607060a06ea800901f1980b9bac3030304d375407e603a6609e00697ae08b209c182618249baa304c304937540026602e6eb0c12cc120dd501d018c566002606c05313233229800cc00400697adef6c60911980c0009bab3035304d3754606a609a6ea800901c4cc054dd6181718259baa03d301b3304d0024bd70488c8cc00400400c896600200314a315980098019829000c4cc008008c14c006294104c20a048896600200504a8992cc004c14c00e2b30013302f4912d416c6c206f776e20696e70757473206861766520746f20757365207468652072696768742072656465656d657200330020052323303c00113375e002980103d87c80003232330010013756602060a46ea811088c96600266ebc010c14c006260a80031330030033058002414460ac0026040660a460a660a06ea80052f5c115980099817a4812554686572652068617320746f206265206174206c656173742032206f776e20696e7075747300300b30080058acc004cc0bd2411c5472656173757279206f757470757420697320696e636f7272656374009800800cc07ccc1440192f5c14c107d87b9fd87980ff008025300103d87a8000404913302f490132416c6c20696e70757473206861766520746f20636f6e7461696e207468652073616d65206d657267696e6720617373657473003233003006232330010010032259800800c528c56600264607330013756607860a86ea8c0f0c150dd50024dd7182b800cdd7182b982c000a076375860ac00313300200230570018a50414082a0c060012294104c452820988a50413104b414060a20048278604e6609600266096605860926ea81412f5c06602a6eb0c130c124dd501d800982598241baa304b304837546602e6eb0c12cc120dd501d018c566002606a053132323298009bad304e00198271827800ccc068dd6182718259baa03d0349827001cdd698270012444446644b30013303249116546f6f206d616e7920617373657420636c61737365730033712601a004900245660026606492011c436f6c6c656374656420616d6f756e7420697320706f7369746976650059800981b801c4cdc4a400000f14a0827a26606492011c5472656173757279206f757470757420697320696e636f72726563740098009bac30353052375408930223305430303305430553052375460aa60a46ea8014cc150c0d4c148dd502ca5eb812f5c13374a90021982a18181982a18181982a01da5eb80cc1500192f5c097ae0801530103d87a8000405914a0827a294104f4c00660026eacc0e0c140dd5001cdd7182998281baa0029bae303830503754005001405548900a44100802a02a3233001001375860a860a26ea810c896600266ebcc154c148dd5182a8008034526899801001182b000a09e1827000982680098241baa03d89919912cc004c0f8c128dd5000c4cc896600260a200313259800981f18269baa00189919912cc004c1540062660666eb0c150004896600200513259800982218299baa0018991925159800991980080098069bab3059305a305a305a305a3056375409044b30013371e6eb8c16800400e294626600400460b600282a22934590521bae30573054375400316414464660020026eb0c0f0c150dd5003912cc0040062980103d87a80008992cc006600260640034a14a2829a2003133003003305a002414c64b30013371e6eb8c16400402e26068660b060b260b400297ae08a6103d87a8000414c6eb0c16000505644c8c8cc896600260b600713005305b0068b20b0375c60b00026eb8c160008c160004dd6182b00120a88b20a4375a60a400260a6002609c6ea80062c8258c0c4c0c0c134dd5181a98269baa30500018b209c375c609c60966ea800660026eb0c0ccc12cdd501ecc0ccc12cdd5029530103d879800040651641206002002609860926ea8c130c124dd51980c1bac304c3049375407606444b30010018a5eb822660986092609a00266004004609c0028259045208a4114600200244b30010018a40011300733002002304c001412482188c8cc0040040088966002003148002266453001375c6092005375660940052259800800c400e2646644601c6600a00a60a60086eb8c130004dd698268009827800a09a4888cc0040040086096002660040046098002824881f088c9660026066003132598009824000c4c966002606a60886ea800626464646464653001304e0019bae304e00698270024c13800e609c004911112cc004c15001a26604a60a601426604a00626604a00426604a00226604a00a01f164144304e001304d001304c001304b001304a00130453754003164108608e00316411460866ea800e2b300130360018992cc004c120006264b3001303530443754003132323232323298009827000cdd718270034c138012609c007304e0024888896600260a800d133025305300a13302500313302500213302500113302500500f8b20a21827000982680098260009825800982500098229baa0018b208430470018b208a304337540071598009819000c4c966002609000313259800981a98221baa00189919191919191919194c004dd69828800cdd71828804cdd69828803cc14401a60a200b30510049828801cc1440092222222259800982d004c4cc108c1640404cc0780144cc1080104cc0ac00c4cc0ac0084cc0ac0040562c82b860a200260a0002609e002609c002609a002609800260960026094002608a6ea80062c8210c11c0062c8228c10cdd5001c5660026062003132598009824000c4c966002606a60886ea800626464646464646464653001375a60a2003375c60a2013375a60a200f30510069828802cc14401260a200730510024888888896600260b4013133042305901013301e00513304200413302b00313302b00213302b0010158b20ae1828800982800098278009827000982680098260009825800982500098229baa0018b208430470018b208a304337540071598009818000c4c966002609000313259800981a98221baa00189919191919191919194c004dd71828800cdd71828804cc14401e60a200d305100598288024dd69828801cdd69828801244444444b3001305a009899821182c80809981580309981580289981580209981500180ac590570c144004c140004c13c004c138004c134004c130004c12c004c128004c114dd5000c590421823800c5904518219baa0038acc004cdc3a4014003132598009824000c4c966002606a60886ea8006264646464646464646464653001375c60a6003375c60a6017305300998298044c14c01e64b300130510018acc004cdc4a400860a000316898221828000a09c8b20a4375460a600d32598009828800c56600266e25200430500018b44c110c14000504e4590521baa305300598298024dd69829801cdd6982980124444444444b3001305e00b899823182e80a09981780409981780389981780309981700180cc5905b0c14c004c148004c144004c140004c13c004c138004c134004c130004c12c004c128004c114dd5000c590421823800c5904518219baa0038acc004cdc3a4018003132598009824000c4c966002606a60886ea80062646464646464646464646465300130540019bad305400c9bad305400b9bad305400a9bad30540099bad30540089bad30540079bad30540069bad30540059bad30540049bad30540024888888888896600260c0019133030305f00e13301e00b01b8b20ba182a000982980098290009828800982800098278009827000982680098260009825800982500098229baa0018b208430470018b208a3043375400715980099b8748038006264b300130480018992cc004c0d4c110dd5000c4c8cc8966002609800313302a3758609600244b3001002804c4c8cc896600260a200313259800981f18269baa001899192cc004c15000a2600e60a80111641446eb8c148004c138dd5000c5904b1828000c5904e1bae304e001304f0013758609a004825a2c8248dd69824800982500098229baa0018b208430470018b208a3043375400715980099b874804000626464b300130490028024590461bae30470013043375400716410082010402080410082010402080410060826ea800808966002600c602a6ea800a264646644b3001301e003802c5901b1bae301b001375c60360046036002602c6ea800a2c8099164030300e0013009375401f149a26cac80301"
8332
7777
  };
8333
7778
 
8334
- // src/contracts/treasury/types.ts
7779
+ // src/contracts/execute/types.ts
8335
7780
  import { Data as Data40 } from "@lucid-evolution/lucid";
8336
- var TreasuryParamsSchema = Data40.Object({
7781
+ var ExecuteParamsSchema = Data40.Object({
7782
+ govNFT: AssetClassSchema2,
8337
7783
  upgradeToken: AssetClassSchema2,
7784
+ iAssetToken: AssetClassSchema2,
7785
+ collateralAssetToken: AssetClassSchema2,
7786
+ stabilityPoolToken: AssetClassSchema2,
7787
+ cdpCreatorToken: AssetClassSchema2,
7788
+ cdpToken: AssetClassSchema2,
8338
7789
  versionRecordToken: AssetClassSchema2,
8339
- treasuryUtxosStakeCredential: Data40.Nullable(StakeCredentialSchema)
7790
+ iassetValHash: Data40.Bytes(),
7791
+ cdpValHash: Data40.Bytes(),
7792
+ sPoolValHash: Data40.Bytes(),
7793
+ versionRegistryValHash: Data40.Bytes(),
7794
+ treasuryValHash: Data40.Bytes()
8340
7795
  });
8341
- var TreasuryParams = TreasuryParamsSchema;
8342
- function castTreasuryParams(params) {
8343
- return Data40.castTo(params, TreasuryParams);
7796
+ var ExecuteParams = ExecuteParamsSchema;
7797
+ function castExecuteParams(params) {
7798
+ return Data40.castTo(params, ExecuteParams);
8344
7799
  }
8345
7800
 
8346
- // src/contracts/treasury/scripts.ts
8347
- var mkTreasuryValidatorFromSP = (params) => {
7801
+ // src/contracts/execute/scripts.ts
7802
+ import {
7803
+ applyParamsToScript as applyParamsToScript13,
7804
+ applySingleCborEncoding
7805
+ } from "@lucid-evolution/lucid";
7806
+
7807
+ // src/validators/execute-validator.ts
7808
+ var _executeValidator = {
7809
+ type: "PlutusScriptV3",
7810
+ description: "Generated by Aiken",
7811
+ cborHex: "5931ec5931e9010100229800aba2aba1aba0aab9faab9eaab9dab9cab9a48888888a60022a66004921203c65787065637465643e20694173736574206e6f74207265666572656e63656400168a99801249283c65787065637465643e2053696e676c6520636f6c6c61746572616c20617373657420696e70757400168a998012491e3c65787065637465643e2053696e676c652069617373657420696e70757400168a99801249193c65787065637465643e204d697865642076657273696f6e7300168a99801249523c65787065637465643e205768656e2066756e64732066726f6d207472656173757279207265717565737465642069742068617320746f207370656e642061207574786f2066726f6d20747265617375727900168a99801249243c65787065637465643e204f6e6c792073696e676c65206578656375746520696e707574001648888896600264653001300f00198079808000cdc3a4005300f00248889660026004601e6ea800e2664530013015002980a980b001566002600260226ea801a2b30013012375400d149a2c809a2c8079222598009802180a1baa0028cc004c060c054dd50014c054dd500348c064c06800644646600200200644b30010018a5eb8226644b3001300500289980e80119802002000c4cc010010005018180e000980e800a03448888c8cc88cc89660020050158acc004c08800a26464b3001330013756601260406ea8018c024c080dd5013466002444646601800846004601c604a6ea800566002602460446ea8006246600a6eacc034c090dd5000801c48cdc42400130013756601a60486ea80066eb8c09cc090dd5001cdd7180698121baa003401881026e1d20049181218129812800c88c8cc00400400c88cc00c004c00800a4464b30013012001899192cc004c0a400a0091640986eb8c09c004c08cdd5001c566002602a00315980098119baa0038014590244590202040302137540049111119914c004c0a800a6002003259800980398139baa0018981598141baa0018b204a488a60026002601060546ea8c04cc0a8dd5001c8966002603660566ea800a26464646464646464646464653001303b0019bad303b00c9bad303b00b9bad303b00a9bad303b0099bad303b0089bad303b0079bad303b0069bad303b0059bad303b0049bad303b00248888888888966002608e01913301f304600e13301b00b0188b2088181d800981d000981c800981c000981b800981b000981a800981a00098198009819000981880098161baa0028b2052980e18149baa302d302e005488966002603860586ea800e264646464653001375a606a003375a606a00b375a606a007375a606a00491112cc004c0e80162660166072010330012303a303b303b303b303b303b303b303b0019181d181d981d981d800cdd2a40052259800800c40062a6606c004200281aa44b3001302730373754005132323322598009820001c0162c81e8dd6981e8009bad303d002303d001303837540051640d522598009813981b9baa0028991919912cc004c10000e00b1640f46eb8c0f4004dd7181e801181e800981c1baa0028b206a9b874801a6e1d20089b874802a6e1d200e9b87480326e2520044888888888888cc89660026601692125476f7620696e707574206d75737420757365207468652072696768742072656465656d6572005980080c44ca6002266ebc00530103d87b800098221baa00191192cc004c0dc00626464b3001304e00280245904b1bae304c00130483754007159800981d000c4c8c966002609c0050048b2096375c609800260906ea800e2c822904518231baa002488966002606e00513232323298009827800cdd698278024dd71827801a444b3001305300489919912cc004c10400a264b300130570018992cc004c10cc14cdd5000c4c8c8c8c8c8ca600260ba003375c60ba00d305d004982e801cc1740092222259800983180344cc094c1880284cc09400c4cc0940084cc0940044cc09401403a2c830060ba00260b800260b600260b400260b200260a86ea80062c8288c1580062c82a0c148dd5001c566002608800513259800982b800c4c966002608660a66ea800626464646464653001305d0019bae305d006982e8024c17400e60ba004911112cc004c18c01a26604a60c401426604a00626604a00426604a00226604a00a01d164180305d001305c001305b001305a00130590013054375400316414460ac00316415060a46ea800e2b300130310028992cc004c15c006264b3001304330533754003132323232323232323298009bad30600019bae30600099bad306000798300034c18001660c000930600039830001244444444b30013069009899815183400809981100289981500209981580189981580109981580080a4590660c180004c17c004c178004c174004c170004c16c004c168004c164004c150dd5000c59051182b000c5905418291baa0038acc004c05800a264b300130570018992cc004c10cc14cdd5000c4c8c8c8c8c8c8c8c8ca60026eb4c1800066eb8c1800266eb4c18001e60c000d306000598300024c18000e60c0004911111112cc004c1a402626605460d002026604400a2660540082660560062660560042660560020291641983060001305f001305e001305d001305c001305b001305a00130590013054375400316414460ac00316415060a46ea800e2b300130150028992cc004c15c006264b3001304330533754003132323232323232323298009bae30600019bae30600099830003cc18001a60c000b30600049bad30600039bad30600024888888896600260d201313302a306801013302b00613302b00513302b0041330410030148b20cc1830000982f800982f000982e800982e000982d800982d000982c800982a1baa0018b20a230560018b20a830523754007159800980a00144c96600260ae00313259800982198299baa001899191919191919191919194c004dd71831000cdd71831005cc18802660c40113062007992cc004c1800062b3001301f305f0018b44c148c17c00505d4590611baa3062006992cc004c1800062b3001301f305f0018b44c148c17c00505d4590611baa306200598310024dd69831001cdd6983100124444444444b3001306d00b899817183600a09981780409981780389981780309982280180c45906a0c188004c184004c180004c17c004c178004c174004c170004c16c004c168004c164004c150dd5000c59051182b000c5905418291baa0038acc004c04800a264b30013057001899814182b00080145905418291baa0038acc004c04c00a264b300130570018992cc004c10cc14cdd5000c4c8cc896600260b6003133034375860b400244b300100280444c8cc896600260c0003132598009826182e1baa001899192cc004c18c00a2600e60c60111641806eb8c184004c174dd5000c5905a182f800c5905d1bae305d001305e001375860b800482d22c82c0dd6982c000982c800982a1baa0018b20a230560018b20a83052375400715980099b874804000a26464b30013058002801c590551bae30560013052375400716413c827904f209e413c827904f209e413c609e6ea80044c966002608000313259800982b000c4c966002608460a46ea80062646464b3001305a002899912cc004c11cc15cdd500144c8c8c96600260be005133014305e003132598009825800c4c96600260c200313232598009827000c4c96600260c800313301930630010098b20c2305f37540051598009828800c4c8c8ca60026eb4c1940066eb4c19400e6eb4c194009222598009834802403a2c833060ca00260c800260be6ea800a2c82e105c182e9baa00130600018b20bc305c37540051598009827000c56600260b86ea800a00b16417516416482c8c168dd5000c5905c182e800982e800982c1baa0028b20aa30590031330330012259800801404e264b3001304830583754003132323298009bad305f0019bae305f0039bae305f00248896600260c60091300830630098b20c0182f800982f000982c9baa0018b20ac305b002416516415c6eb0c160004c160004c14cdd5000c59050182a800c5905318289baa0058acc004c10c0062b30013051375400b00c8b20a48b209c4138609e6ea8010c1480162c8280609e002609c002609a00260906ea80122b3001303a002899192cc004c13800a00b16412c6eb4c130004c120dd50024566002604e00515980098241baa004801c590494566002601800515980098241baa004801c59049459045208a4114822866004608e60886ea807409e294504144c96600266018921174d697865642070726f746f636f6c2076657273696f6e73003370e6eb4c08cc114dd500d9bad30013045375406115980099806249224d7573742065786563757465206166746572206566666563746976652064656c6179003259800981c18229baa001899b88337006eb4c090c118dd50189bad302430463754605e608c6ea8070dd6982498231baa0018a50410c6090608a6ea8c120c114dd5180798229baa0368acc004cc03124011143616e6e6f742062652065787069726564003259800981c18229baa001899b89375a6092608c6ea8004cdc01bad300f304637540626eb4c03cc118dd5181798231baa01c8a50410c6090608a6ea8c0b8c114dd5180798229baa0368cc0048c124c128c128c128c128c12800646092609460946094609460946094609460946094003375e980103d879800048896600264b3001303830483754600860926ea80d22b3001001820c4c966002609c005132332259800981e000c566002609a6ea800e005164139159800981f800c566002609a6ea800e0051641391598009816000c566002609a6ea800e0051641391598009808800c566002609a6ea800e0051641391598009808000c4c8c8c8ca600260a8003375a60a8007375a60a80049112cc004c16001226603260ae00e2b300130433053375400713232332259800982e001c0362c82c8dd6982c8009bae3059002305900130543754007164145164154305400130530013052001304d37540071598009807800c566002609a6ea800e005164139164128825104a2094412882504c010004c128dd500099804182698251baa0013756600860946ea80ee0848258c13000504a44cc0412414b5768656e206e6f207472656173757279207769746864726177616c207265717565737465642069742063616e2774207370656e6420616e79207574786f2066726f6d207472656173757279003375e6e9c005300101800041186605a6eb0c12cc120dd501c980819825182598261826182618261826182618261826182618261826182618241baa04e4bd704660026e952000911982619bb037520046ea00052f5bded8c1370090014dd2a4008911119912cc004cc88cc05d24012c54686520646174756d206f6620676f7665726e616e6365206d757374207570646174652070726f7065726c79003232598009820800c6600200900398039982a19191918069982b982c0019982b982c0011982b982c0009982b9ba8300b375a603c60aa6ea80acc164c164004c160004c15c004c148dd501425eb82600a60aa60a46ea816298103d87a800040191598009809000c6600200900398039982a1918059982a982b0009982a982b18299baa003305730570013052375405097ae09802982a98291baa058a60103d87a800040191598009809800c6600200900398039982a191918061982b182b8011982b182b8009982b1ba8300a375a606460a86ea80a8c160c160004c15c004c148dd501425eb82600a60aa60a46ea816298103d87a8000401919800813528528a09e413c827904f18281baa0013039305037540766eb0c144c148c148c138dd501f980b19828180319828182898271baa3051304e3754606e609c6ea809ccc14130103d87a80004bd7025eb82264b300133016490122546865207472616e73616374696f6e206d757374206d696e742070726f7065726c79003375e6016609e6ea8100dd34c0048c8cc004004008896600200314bd6f7b63044c8cc154cdd818290009ba63233001001375660a800444b30010018a5eb7bdb182264660b066ec0c154004dd419b8148000dd6982b00099801801982d001182c000a0ac3300300330570023055001414d304e37546070609e6ea80ea4446644b300130430038802c4c8c8cc00400401c8966002003133059337606ea4014dd3001a5eb7bdb1822646644b30013372201000515980099b8f0080028992cc004cdd7a60101a000374c003100289982e99bb037520126e9800400905819198008009bab305b0042259800800c4cc178cdd81ba9009375001697adef6c6089919912cc004cdc8806001456600266e3c03000a264b30013370e00266e05200000f880144cc188cdd81ba900d375066e0000403c00905d1bad305f00389983099bb037520186ea003801105c44cc18400ccc01401400505c1bae305c0013061002305f001417513305c337606ea4020dd300300220ae89982e00199802802800a0ae375c60ae00260b800460b400282c0cc02c00400d0511bae3055305237540046eb8c0ecc148dd50012444b300130410028cc00660026006600a607660a46ea8162601c60a46ea816290012002981818291baa058a4004800a2b300130310028cc004c00cc014c0ecc148dd502c4c06cc148dd502c520024005159800980a8014660026006600a607660a46ea8162600860a46ea8162900120028acc004c04c00a3300130033005303b305237540b1301c305237540b14800900144c00cc014c0ecc148dd502c209e413c827904f226602c921104661696c656420657865637574696f6e009800981c18279baa03a91829982a182a182a182a182a182a182a182a000c8c14cc150c150c150c150c150c150c150c150c150c15000644b300130403050375400513232323232323232329800982e800cdd7182e804cdd6982e8044c17401a60ba00b305d004982e801cc96600260b6003159800980d182d000c5a2609a60b400282c22c82e0dd5182e801244444444b30013066009899814183280789981400289981400209981400189981400109981f0040094590630c174004c170004c16c004c168004c164004c160004c15c004c158004c144dd500145904e4896600266e40008006298103d87980008acc004cdc7801000c530103d87a80008a6103d87b8000413882712222232598009822000c4ca6002601c660b0002660b0980103d87a80004bd704dd6182c982d182d182b1baa047982c982b1baa0074888c966002660429212153746162696c697479506f6f6c206f757470757420697320696e636f7272656374009800801cc088cc170c048cc170c088cc170c024c168dd503025eb80cc171300103d87a80004bd7025eb82601e660b86024660b86024660b860ba60b46ea8008cc171300118d8799fd8799f1b0de0b6b3a7640000ffd8799f00ff0000ff003305c4c10180004bd7025eb812f5c1300d3016305a37540c14c103d87a8000403915980098249bad3023305a37540611330214912370726f706f73656420694173736574206f757470757420697320696e636f727265637400330014a2980103d87a8000899810a48125496e636f72726563746c7920636f6e73756d6564207265666572656e636520696173736574003259800982f800c4c96600266ebc01cc17cc170dd5182f982e1baa3045305c3754003132598009826182e1baa0018992cc004c1880062646601a002264b3001304f0018acc004c148c17cdd5181518301baa0028acc004cc09d2412370726f706f73656420694173736574206f757470757420697320696e636f727265637400330074a26030660c460c660c06ea80092f5c113302749123636f6e73756d656420694173736574206f757470757420697320696e636f7272656374009800804cc0a0cc1880292f5c130153306230183306232323232323232301f33069306a00733069306a00633069306a00533069306a00433069306a00333069306a00233069306a001330699800a50a6103d87a8000a60103d8798000419060d660d600260d400260d200260d000260ce00260cc00260ca00260c06ea80092f5c097ae09809981f18301baa066a6103d87a8000405114a082ea294105d4566002607e003159800992cc004c140c180dd5000c4c068cc038dd7183218309baa009375c60c860c26ea8006294505e180818301baa0028acc004cc09d2412370726f706f73656420694173736574206f757470757420697320696e636f727265637400330074a0602060c06ea800a26604e92123636f6e73756d656420694173736574206f757470757420697320696e636f7272656374009800804cc0a0cc1880292f5c130153306230183306232323232323232301f33069306a00733069306a00633069306a00533069306a00433069306a00333069306a00233069306a00133069306a306b00133069301f33069306a3067375401e97ae04bd7018350009834800983400098338009833000983280098301baa0024bd7025eb826026607c60c06ea819a98103d87a8000405114a082ea294105d454cc1792411a537563682069617373657420616c7265616479206578697374730016417482e8c178dd5198061bae3062305f375400e6eb8c188c17cdd50009830800c5905f182e9baa0018b20b43033303a305c3754608a60b86ea80060aa82c8c1780062c82e260026eb0c174c168dd5025cc0e0c168dd50305300103d879800040e882ba2941057114c0040126046660ba00a97ae098081982e98099982e98099982e982f182d9baa0033305d4c10100003305d3044305b3754006660ba607260b66ea800ccc174c090c16cdd50019982e980b982d9baa0033305d3016305b3754006660bb3001002a6103d87a8000a60103d87980004160660ba00297ae04bd7025eb82601c607260b66ea818698103d87a8000403c301d330573005305537540b697ae08acc004c11c0062653001375860b260b460b400398009bac3059001981a182b1baa05ca6103d879800040d9301e330583006305637540b897ae0982c982b1baa007488896600260bc0071325980099baf003305e305b375460bc60b66ea8c110c16cdd5000c4c966002609660b66ea8006264b30013061001899198060008acc004cdc79bae3061305e37540026eb8c184c178dd5002c5660033001008981319830180b198300031983026103d87a80004bd7025eb826026660c0602c660c064646030660c460c6004660c460c6002660c4609260c06ea801ccc188c0f8c180dd500399831181498301baa00733062301c3060375400e660c4603660c06ea801cc190c190c190c190c190c190004c18c004c178dd5000a5eb812f5c13011303c305e37540c94c0103d87a8000404914a3153305c491253c65787065637465643e20694173736574206f757470757420697320696e636f72726563740016416d153305c4911e3c65787065637465643e204e6f742072656c6576616e74206961737365740016416c60c000316417860b86ea80062c82c8c0c8c0e4c16cdd51822182d9baa0018a9982ca49283c65787065637465643e204d6f64696679696e67206e6f6e2d7570677261646564204941737365740016416060ba00716416c3055375408d13259800981a80146600260b260ac6ea801e4464b3001304b30583754003133006375c608460b26ea800cdd71821182c9baa0028800a0ac33005375c60b660b06ea8008dd7182d982c1baa001980f1982c1803182b1baa05c4bd704c158dd5023a4445300130123305c0023305c4c103d87a80004bd704dd6182e982f182f000e60026eb0c174006607060b46ea818298103d879800040e89112cc0040060af132598009831001456600266ebc018c184c178dd51830982f1baa3047305e3754003132598009827182f1baa0018992cc004c1900062646601e0022b30013371e6eb8c190c184dd50009bae306430613754017159800cc00401a6052660c600e97ae0980b19831980c9983199180d198321832800998321ba83018375a609660c46ea8008c198c198004c184dd5000a5eb812f5c13014303f306137540cf4c103d87a80004055132324a2b30013051375a609660c46ea800a2b300198009bac3065306237540a7302b306237540d14c0103d8798000410915980099800a514c0103d87a80008a4d1533060491223c65787065637465643e2057726f6e6720636f6c6c61746572616c206f75747075740016417d1533060491243c65787065637465643e204e6f20636f6c6c61746572616c20617373657420696e7075740016418d13259800800c17a264b300130680028acc004cdd7806183398321baa306730643754609a60c86ea8006264b3001305730643754003132598009835000c4c8cc04800456600266e3cdd7183518339baa001375c60d460ce6ea80462b3001337106eb4c140c19cdd5003acc0056600266ebd6600260b260cc6ea8c084c19cdd5000c4c140c19cdd5000c4c96600260d800313259800982d98341baa0018992cc004c1b80062646602c0022b3001305d306a3754604a60d66ea8006260a860d66ea80062a660d2921253c65787065637465643e204e6f742074686520666972737420696e2074686520636861696e001641a060da0031641ac60d26ea80062c8330c0fcc118c1a0dd5182898341baa306b0018b20d298009bac3050306737540b13030306737540db4c0103d8798000411c8321300106d8799f4040ff008a51899baf30503067375402298106d8799f4040ff00419114804a2900820c88acc004c96600260ae003159800982d18339baa30223068375400515980099817a4812a70726f706f73656420636f6c6c61746572616c206173736574206f757470757420696e636f727265637400330074a26040660d460a260d06ea80092f5c113302f4912a636f6e73756d656420636f6c6c61746572616c206173736574206f757470757420696e636f7272656374009800806cc0c0cc1a80392f5c1301d3306a30303306a3232323232323232323029330733074009330733074008330733074007330733074006330733074005330733074004330733074003330733074002330733074001330739800a50a6103d87a8000a60103d879800041b860ea60ea00260e800260e600260e400260e200260e000260de00260dc00260da00260d06ea80092f5c097ae0980d981898341baa06ea6103d87a8000407114a0832a29410654566002608e003159800992cc004c160c1a0dd5000c4c088cc048c148c1a4dd5009983618349baa0018a514198602e60d06ea800a2b30013302f4912a70726f706f73656420636f6c6c61746572616c206173736574206f757470757420696e636f727265637400330074a0602e60d06ea800a26605e9212a636f6e73756d656420636f6c6c61746572616c206173736574206f757470757420696e636f7272656374009800806cc0c0cc1a80392f5c1301d3306a30303306a3232323232323232323029330733074009330733074008330733074007330733074006330733074005330733074004330733074003330733074002330733074001330733074307500133073302933073305a3071375403697ae04bd70183a000983980098390009838800983800098378009837000983680098341baa0024bd7025eb826036606260d06ea81ba98103d87a8000407114a0832a2941065454cc199241245375636820636f6c6c61746572616c20617373657420616c726561647920657869737473001641948328c198dd519808182818339baa011305030673754003149a2c83222a660ca921283c65787065637465643e204d617820636f6c6c61746572616c206173736574732072656163686564001641911533065491283c65787065637465643e204e6f742072656c6576616e7420636f6c6c61746572616c2061737365740016419060d200316419c60ca6ea80062c8310c0ecc108c190dd5182698321baa00182ea0c282fa0ca306600141913001375860ca60c46ea814e605660c46ea81a298103d8798000410882f88a6002011302b330650094bd704c060cc194c0accc194c06ccc194c198c18cdd500199832982618319baa00d3306530413063375401a660ca605860c66ea8034cc194c07cc18cdd500699832980f18319baa00d3306530153063375401a660ca605a60c66ea8034cc194c04cc18cdd500699832cc00400a98103d87a8000a60103d87980004180660ca00297ae04bd7025eb82602c605860c66ea81a698103d87a8000405d153305f4911e3c65787065637465643e2057726f6e6720696173736574206f757470757400164179153305f491173c65787065637465643e2057726f6e67206961737365740016417860c600316418460be6ea80062c82e0c0d4c0f0c178dd51823982f1baa00182ba0b682c20be3060001417845660026034005132980098079982c8009982ca6103d87a80004bd70660026eb0c168c15cdd50244c080c15cdd502ed300103d879800040dd305a305737540109112cc004c17800a264b30013375e00a60bc60b66ea8c178c16cdd51822182d9baa0018992cc004c138c16cdd5000c4c96600260c200313233009001159800acc004cdc79bae3061305e37540026eb8c184c178dd5002c4cdd79823982f1baa0013047305e375400b14a082da2b300198009bac303c305e375409f3026330600074bd704c04ccc180c098cc180c8c8c8c064cc18cc19000ccc18cc190008cc18cc190004cc18cc0a8c184dd500419831980e98309baa00833063301c30613754010660c6602660c26ea8020cc18cc0acc184dd500419831980898309baa008306530653065306530653065306500130640013063001305e375400297ae04bd704c044c09cc178dd5032530103d87a8000404914a3153305c4912c3c65787065637465643e20436f6c6c61746572616c206173736574206f757470757420696e636f72726563740016416d153305c491263c65787065637465643e20697272656c6576616e7420636f6c6c61746572616c2061737365740016416c60c000316417860b86ea80062c82c8c0c8c0e4c16cdd51822182d9baa00182a20b0305d0028b20b6180f1982c1803182b1baa05c4bd70456600260320051332259800982e000c4c966002609660b06ea80062b30013059375400313259800800c15a264b3001305f0028992cc004c12cc16cdd5000c4c96600260c20031323300c00115980099812a4810c57726f6e6720694173736574003371e6eb8c184c178dd50009bae3061305e3754011133025490117434450206f757470757420697320696e636f72726563740098009bac303c305e375409f3026330603016330603026330603018305e37540c897ae0330604c103d87a80004bd7025eb826026660c0604c660c0602c660c060c260bc6ea8020cc180c11cc178dd500419830181e182f1baa008330603027305e3754010660c0603460bc6ea8020cc1826002946980103d87a8000a60103d8798000416c660c130014a34c0103d87a8000a60103d8798000416c660c0603260bc6ea8020cc180c040c178dd5004198301814182f1baa00833060300e305e375401097ae04bd7025eb826022602060bc6ea8192980103d87a8000404914a082d8c1800062c82f0c170dd5000c590591819181c982d9baa3044305b3754003057417060ba00282da60026eb0c108c164dd50254c0dcc164dd502fd300103d879800040e51641691641586602c60b660b06ea8c16c004dd59809182c1baa0498b20b230593056375400f3001375860b260ac6ea811e602260ac6ea817298103d879800040d9159800980c00144cc896600260b80031325980099baf305c3059375460b860b26ea8c108c164dd500098109982d9809982c9baa05f4bd7044c96600266e1d20103059375400313259800982f800c4cc8966002609e60b86ea8006264b300130620018992cc004c138c178dd5000c4c8c8c8c8c8c8c8c8c8c8ca60026eb8c1b40066eb8c1b402e60da013306d0089836803cc96600260d600315980098151835000c5a260ba60d400283422c8360dd518368034c96600260d600315980098151835000c5a260ba60d400283422c8360dd51836802cc1b40126eb4c1b400e6eb4c1b4009222222222259800983c005c4cc0e4c1dc0504cc0e80204cc0e801c4cc0e80184cc14000c566002660769211643445020696e70757420697320696e636f7272656374005980099b8f375c60ee60e86ea8058dd7183b983a1baa01e899baf305d3074375402c60ba60e86ea807a294107144cc0ed24117434450206f757470757420697320696e636f72726563740098009bac3052307437540cb303c33076302c33076303c33076302e307437540f497ae0330764c103d87a80004bd7025eb826052660ec6078660ec64605a660ee60f0002660ee60f060f2002660ee60a660ea6ea807ccc1dcc0f8c1d4dd500f9983b9818983a9baa01f3307798009833983a1baa30303075375403f4c0103d87a8000a60103d879800041c8660ef3001306730743754604e60ea6ea807e980103d87a8000a60103d879800041c8660ee607e60ea6ea807ccc1dcc094c1d4dd500f9983b9817983a9baa01f3307730243075375403e97ae03074375402c97ae04bd704dd5982e983a1baa305d307437540394c0103d87a800040a114a0838a2c83a860da00260d800260d600260d400260d200260d000260ce00260cc00260ca00260c800260be6ea80062c82e0c1840062c82f8c174dd5000c5905a1bad305e00130323039305b3754608860b66ea800e2c82e0c168dd5000c590571980b982e182c9baa0013756602660b26ea812a2a660ae92011a3c65787065637465643e204d697865642076657273696f6e732e0016415860b600316416460b260ac6ea801e60026eb0c164c158dd5023cc020c158dd502e5300103d879800040d9159800980b80144c8cc07924012176657273696f6e5265636f7264206f757470757420697320696e636f72726563740098009bac303530573754091301f33059300f33059301f33059305a305b305b305b305b305b305b305b305b305b305b305b305737540ba97ae0330594c103d87a80004bd7025eb826018660b2601e660b260b460ae6ea8004cc164dd399198008009bac30413058375400444b30010018a5eb822660b66e9cc8cc170c174004cc170c174c168dd5182e982f000a5eb80dd6182e00099801001182e800a0b44bd7025eb826014604260ae6ea8176980103d87a8000402c60b260ac6ea801e2b300130160028a518a51414c829905320a6414c82988966002608c60ac6ea800a26464646464646464646465300130650019bae306500b9bad306500998328044c19401e60ca00d306500598328024dd69832801cc96600260c600315980098111831000c5a260aa60c400283022c8320dd5183280124444444444b3001307000b899818983780a0998148038998188030998190028998190020998190018992cc004c170006264b30013072001899819983880080c45906f18369baa00b8acc004c17c0062b3001306d37540170178b20dc8b20d441a860d66ea802a2c836860ca00260c800260c600260c400260c200260c000260be00260bc00260ba00260b800260ae6ea800a2c82a105220a43053375400a8a504130460a460a660a660a660a660a660a600314a0825888888c8c8cc00400401c896600200314a1159800992cc004c0100062b30013375e606660aa6ea800401e2b300133229800992cc004c11cc15cdd5000c4dd6982c182d9bab305b30583754003148001055182d000cdd58014dd7982d182d800c8966002609660b06ea8026266e2400400a2b30013371200200513371200466e0000520809bee028a50415882b1222259800801c566002600400d13300100448002294105844c96600266ebd3001014000305b0018acc004cc008014dd6982e182f9bab305c001898019ba630600048a50416515980099801002a4001130030078a50416482c8c17800d05c0dd3003194c0040066eacc0fcc158dd5001488cc168008cc168dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044c8cc896600266e452201000028acc004cdc7a4410000289980218099982e982d801a5eb80006266008980103d87a80000054161198008034006446600c004660be00a00280310581bae3058001305d003305b002416513375e603c60aa6ea800530103d87a80008a50414914a082922941052182b800c528c4cc008008c16000505120aa59800982018281baa004891919baf30563053375460ac60a66ea8008004c154c148dd5002c48c8cdd7982b18299baa00200130553052375400a8270966002942297adef6c6089982799bb03050304d37540026e98cc010dd7181b18269baa001480092f5bded8c0825114a0822914a082122941042452820842304830493049304930490018a504104446464660020020064464b30013375e008608e003130480018998018019826001208a304a001300c330460024bd7011192cc004c0d0006264b3001304a0018998061824800801c5904718229baa0038acc004c0dc006264b3001304a0018998059824800801c5904718229baa0038acc004c09000626464b3001304b0028024590481bae304900130453754007164108821104218219baa0024590370c0d4004c0d0004c0cc004c0c8004c0b4dd5001c5902a06644b300100180145660026056003133029302a001330299800a51a60103d87a8000a60103d8798000409097ae0801205040a026644b300100180145660026056003133029302a001330299800a50a6103d87a8000a60103d8798000409097ae0801205040a02a6604692130457870656374656420476f7620696e7075742065697468657220617320696e707574206f72207265662e20696e707574001698009bac300e3025375402d3028302537540574c0103d87980004015300100c981418129baa02ba60103d8798000401444464b30013018001899192cc004c0bc00a0091640b06eb8c0b4004c0a4dd5001c56600260360031323322598009818000c4cc024dd61817800912cc00400a00f19800804cc0c400a260026064004804902f45902d1bad302d001302e001302937540071640988130c09cdd500122a6603c921283c65787065637465643e20526571756972657320617574686564206578656375746520696e7075740016407444602730010029bae302430213754003375c601460426ea800500311119199119801001000912cc004006007132325980099b910060018acc004cdc7803000c4dd69813001401502344cc010010c0a800d0231bae30240013027001409464646600200200c44b3001001801c4c8c96600266e440200062b30013371e01000313756604e0050054091133004004302b00340906eb8c094004c0a00050260a5eb7bdb1805200080aa03e407c66002006603e60386ea8c07cc070dd50011bab301f30203020302030203020302030203020302000632330010010022259800800c5a264b30013375e6040603a6ea800402e2600c603a6ea8006266006006604200480d0c07c00501d1119802001119baf3020301d37546040603a6ea8c018c074dd50008011bac301c0034590120c040dd50019b87480022c8068601e00260146ea803e29344d95900701"
7812
+ };
7813
+
7814
+ // src/contracts/execute/scripts.ts
7815
+ var mkExecuteValidator = (params) => {
8348
7816
  return {
8349
7817
  type: "PlutusV3",
8350
- script: applyParamsToScript11(_treasuryValidator.cborHex, [
8351
- castTreasuryParams({
8352
- upgradeToken: fromSystemParamsAssetLucid(params.upgradeToken),
8353
- versionRecordToken: fromSystemParamsAssetLucid(
8354
- params.versionRecordToken
8355
- ),
8356
- treasuryUtxosStakeCredential: params.treasuryUtxosStakeCredential ? fromSysParamsStakeCredential(params.treasuryUtxosStakeCredential) : null
8357
- })
8358
- ])
7818
+ script: applySingleCborEncoding(
7819
+ applyParamsToScript13(_executeValidator.cborHex, [
7820
+ castExecuteParams(params)
7821
+ ])
7822
+ )
7823
+ };
7824
+ };
7825
+ var mkExecuteValidatorFromSP = (params) => {
7826
+ return {
7827
+ type: "PlutusV3",
7828
+ script: applySingleCborEncoding(
7829
+ applyParamsToScript13(_executeValidator.cborHex, [
7830
+ castExecuteParams({
7831
+ govNFT: fromSystemParamsAssetLucid(params.govNFT),
7832
+ upgradeToken: fromSystemParamsAssetLucid(params.upgradeToken),
7833
+ iAssetToken: fromSystemParamsAssetLucid(params.iAssetToken),
7834
+ collateralAssetToken: fromSystemParamsAssetLucid(
7835
+ params.collateralAssetToken
7836
+ ),
7837
+ stabilityPoolToken: fromSystemParamsAssetLucid(
7838
+ params.stabilityPoolToken
7839
+ ),
7840
+ cdpCreatorToken: fromSystemParamsAssetLucid(params.cdpCreatorToken),
7841
+ cdpToken: fromSystemParamsAssetLucid(params.cdpToken),
7842
+ versionRecordToken: fromSystemParamsAssetLucid(
7843
+ params.versionRecordToken
7844
+ ),
7845
+ iassetValHash: params.iassetValHash,
7846
+ cdpValHash: params.cdpValHash,
7847
+ sPoolValHash: params.sPoolValHash,
7848
+ versionRegistryValHash: params.versionRegistryValHash,
7849
+ treasuryValHash: params.treasuryValHash
7850
+ })
7851
+ ])
7852
+ )
8359
7853
  };
8360
7854
  };
8361
7855
 
8362
- // src/contracts/treasury/queries.ts
8363
- import { option as O15, function as F18 } from "fp-ts";
7856
+ // src/contracts/price-oracle/types.ts
7857
+ import { Data as Data41 } from "@lucid-evolution/lucid";
7858
+ var PriceOracleParamsSchema = Data41.Object({
7859
+ owner: Data41.Bytes(),
7860
+ /** Milliseconds */
7861
+ biasTime: Data41.Integer(),
7862
+ /** Milliseconds */
7863
+ expirationPeriod: Data41.Integer()
7864
+ });
7865
+ var PriceOracleParams = PriceOracleParamsSchema;
7866
+ function castPriceOracleParams(params) {
7867
+ return Data41.castTo(params, PriceOracleParams);
7868
+ }
7869
+
7870
+ // src/contracts/stability-pool/queries.ts
7871
+ import { toHex as toHex11 } from "@lucid-evolution/lucid";
8364
7872
  import {
8365
- assetClassToUnit as assetClassToUnit4,
8366
- assetClassValueOf as assetClassValueOf8,
8367
- getRandomElement as getRandomElement3
7873
+ assetClassToUnit as assetClassToUnit5,
7874
+ matchSingle as matchSingle4
8368
7875
  } from "@3rd-eye-labs/cardano-offchain-common";
8369
- async function findAllTreasuryUtxos(lucid, sysParams) {
8370
- return lucid.utxosAt({
8371
- type: "Script",
8372
- hash: sysParams.validatorHashes.treasuryHash
7876
+ import { option as O16, array as A10, function as F19 } from "fp-ts";
7877
+ async function findStabilityPool(lucid, sysParams, iassetName) {
7878
+ const spUtxos = await lucid.utxosAtWithUnit(
7879
+ { hash: sysParams.validatorHashes.stabilityPoolHash, type: "Script" },
7880
+ assetClassToUnit5(
7881
+ fromSystemParamsAsset(sysParams.stabilityPoolParams.stabilityPoolToken)
7882
+ )
7883
+ );
7884
+ return matchSingle4(
7885
+ F19.pipe(
7886
+ spUtxos.map(
7887
+ (utxo) => F19.pipe(
7888
+ O16.fromNullable(utxo.datum),
7889
+ O16.flatMap(parseStabilityPoolDatum),
7890
+ O16.flatMap((datum) => {
7891
+ if (toHex11(datum.iasset) == toHex11(iassetName)) {
7892
+ return O16.some({ utxo, datum });
7893
+ } else {
7894
+ return O16.none;
7895
+ }
7896
+ })
7897
+ )
7898
+ ),
7899
+ A10.compact
7900
+ ),
7901
+ (res) => new Error(
7902
+ "Expected a single Stability Pool UTXO.: " + JSON.stringify(res)
7903
+ )
7904
+ );
7905
+ }
7906
+ async function findStabilityPoolAccount(lucid, sysParams, owner, iassetName) {
7907
+ const spUtxos = await lucid.utxosAt({
7908
+ hash: sysParams.validatorHashes.stabilityPoolHash,
7909
+ type: "Script"
8373
7910
  });
7911
+ return matchSingle4(
7912
+ F19.pipe(
7913
+ spUtxos.map(
7914
+ (utxo) => F19.pipe(
7915
+ O16.fromNullable(utxo.datum),
7916
+ O16.flatMap(parseAccountDatum),
7917
+ O16.flatMap((datum) => {
7918
+ if (toHex11(datum.iasset) == toHex11(iassetName) && toHex11(datum.owner) == owner) {
7919
+ return O16.some({ utxo, datum });
7920
+ } else {
7921
+ return O16.none;
7922
+ }
7923
+ })
7924
+ )
7925
+ ),
7926
+ A10.compact
7927
+ ),
7928
+ (res) => new Error("Expected a single Account UTXO.: " + JSON.stringify(res))
7929
+ );
7930
+ }
7931
+ async function findE2s2sSnapshots(lucid, sysParams, iassetName) {
7932
+ const spUtxos = await lucid.utxosAtWithUnit(
7933
+ mkStabilityPoolAddr(lucid, sysParams),
7934
+ assetClassToUnit5(
7935
+ fromSystemParamsAsset(
7936
+ sysParams.stabilityPoolParams.snapshotEpochToScaleToSumToken
7937
+ )
7938
+ )
7939
+ );
7940
+ return F19.pipe(
7941
+ spUtxos.map(
7942
+ (utxo) => F19.pipe(
7943
+ O16.fromNullable(utxo.datum),
7944
+ O16.flatMap(parseSnapshotEpochToScaleToSumDatum),
7945
+ O16.flatMap((datum) => {
7946
+ if (toHex11(datum.iasset) == toHex11(iassetName)) {
7947
+ return O16.some({ utxo, datum });
7948
+ } else {
7949
+ return O16.none;
7950
+ }
7951
+ })
7952
+ )
7953
+ ),
7954
+ A10.compact
7955
+ );
7956
+ }
7957
+
7958
+ // src/contracts/stability-pool/transactions.ts
7959
+ import {
7960
+ fromText as fromText8,
7961
+ Data as Data42,
7962
+ fromHex as fromHex11,
7963
+ toHex as toHex12,
7964
+ addAssets as addAssets11,
7965
+ slotToUnixTime as slotToUnixTime9,
7966
+ credentialToAddress as credentialToAddress3
7967
+ } from "@lucid-evolution/lucid";
7968
+ import {
7969
+ adaAssetClass as adaAssetClass4,
7970
+ addressFromBech32 as addressFromBech322,
7971
+ addressToBech32 as addressToBech322,
7972
+ assetClassValueOf as assetClassValueOf8,
7973
+ estimateUtxoMinLovelace as estimateUtxoMinLovelace3,
7974
+ lovelacesAmt as lovelacesAmt2,
7975
+ matchSingle as matchSingle5,
7976
+ mkAssetsOf as mkAssetsOf8,
7977
+ mkLovelacesOf as mkLovelacesOf5,
7978
+ negateAssets as negateAssets4
7979
+ } from "@3rd-eye-labs/cardano-offchain-common";
7980
+ import { match as match17, P as P17 } from "ts-pattern";
7981
+ async function requestSpAccountCreation(assetAscii, amount, sysParams, lucid) {
7982
+ const [pkh, _skh] = await addrDetails(lucid);
7983
+ const iasset = fromHex11(fromText8(assetAscii));
7984
+ const iassetAssetClass = {
7985
+ currencySymbol: fromHex11(
7986
+ sysParams.stabilityPoolParams.assetSymbol.unCurrencySymbol
7987
+ ),
7988
+ tokenName: iasset
7989
+ };
7990
+ const datum = {
7991
+ owner: fromHex11(pkh.hash),
7992
+ iasset,
7993
+ state: { ...initSpState, depositVal: mkSPInteger(amount) },
7994
+ assetSums: [],
7995
+ request: "Create",
7996
+ lastRequestProcessingTime: 0n
7997
+ };
7998
+ return lucid.newTx().pay.ToContract(
7999
+ credentialToAddress3(
8000
+ lucid.config().network,
8001
+ {
8002
+ hash: sysParams.validatorHashes.stabilityPoolHash,
8003
+ type: "Script"
8004
+ },
8005
+ sysParams.stabilityPoolParams.stakeCredential != null ? fromSysParamsCredential(
8006
+ sysParams.stabilityPoolParams.stakeCredential
8007
+ ) : void 0
8008
+ ),
8009
+ {
8010
+ kind: "inline",
8011
+ value: serialiseStabilityPoolDatum({ Account: datum })
8012
+ },
8013
+ addAssets11(
8014
+ mkAssetsOf8(iassetAssetClass, amount),
8015
+ mkLovelacesOf5(
8016
+ // TODO: Calculate a more accurate amount to just cover costs.
8017
+ // This should cover the account creation fee,
8018
+ // the minimum ADA for the account UTxO and the transaction fee.
8019
+ BigInt(sysParams.stabilityPoolParams.accountCreateFeeLovelaces) + 3000000n
8020
+ )
8021
+ )
8022
+ ).addSignerKey(pkh.hash);
8023
+ }
8024
+ async function requestSpAccountAdjustment(amount, accountUtxo, sysParams, lucid) {
8025
+ const myAddress = await lucid.wallet().address();
8026
+ const stabilityPoolScriptRef = matchSingle5(
8027
+ await lucid.utxosByOutRef([
8028
+ fromSystemParamsScriptRef(
8029
+ sysParams.scriptReferences.stabilityPoolValidatorRef
8030
+ )
8031
+ ]),
8032
+ (_) => new Error("Expected a single stability pool Ref Script UTXO")
8033
+ );
8034
+ const oldAccountDatum = parseAccountDatumOrThrow(
8035
+ getInlineDatumOrThrow(accountUtxo)
8036
+ );
8037
+ const newAccountDatum = {
8038
+ ...oldAccountDatum,
8039
+ request: {
8040
+ Adjust: {
8041
+ amount,
8042
+ outputAddress: addressFromBech322(myAddress)
8043
+ }
8044
+ }
8045
+ };
8046
+ return lucid.newTx().readFrom([stabilityPoolScriptRef]).collectFrom(
8047
+ [accountUtxo],
8048
+ serialiseStabilityPoolRedeemer({
8049
+ RequestAction: {
8050
+ Adjust: {
8051
+ amount,
8052
+ outputAddress: addressFromBech322(myAddress)
8053
+ }
8054
+ }
8055
+ })
8056
+ ).pay.ToContract(
8057
+ accountUtxo.address,
8058
+ {
8059
+ kind: "inline",
8060
+ value: serialiseStabilityPoolDatum({
8061
+ Account: newAccountDatum
8062
+ })
8063
+ },
8064
+ addAssets11(
8065
+ mkLovelacesOf5(
8066
+ // TODO: Calculate a more accurate amount to just cover costs.
8067
+ // This should cover the minimum ADA for 2 UTxOs (account and
8068
+ // rewards withdrawal) and the transaction fee.
8069
+ 5000000n
8070
+ ),
8071
+ mkAssetsOf8(
8072
+ fromSystemParamsAsset(sysParams.stabilityPoolParams.accountToken),
8073
+ 1n
8074
+ ),
8075
+ amount > 0n ? mkAssetsOf8(
8076
+ {
8077
+ currencySymbol: fromHex11(
8078
+ sysParams.stabilityPoolParams.assetSymbol.unCurrencySymbol
8079
+ ),
8080
+ tokenName: oldAccountDatum.iasset
8081
+ },
8082
+ amount
8083
+ ) : {}
8084
+ )
8085
+ ).addSignerKey(toHex12(oldAccountDatum.owner));
8086
+ }
8087
+ async function requestSpAccountClosure(accountUtxo, sysParams, lucid, maxTxFee = BASE_MAX_TX_FEE) {
8088
+ const myAddress = await lucid.wallet().address();
8089
+ const stabilityPoolScriptRef = matchSingle5(
8090
+ await lucid.utxosByOutRef([
8091
+ fromSystemParamsScriptRef(
8092
+ sysParams.scriptReferences.stabilityPoolValidatorRef
8093
+ )
8094
+ ]),
8095
+ (_) => new Error("Expected a single stability pool Ref Script UTXO")
8096
+ );
8097
+ const request = {
8098
+ Close: {
8099
+ outputAddress: addressFromBech322(myAddress),
8100
+ maxTxFee
8101
+ }
8102
+ };
8103
+ const oldAccountDatum = parseAccountDatumOrThrow(
8104
+ getInlineDatumOrThrow(accountUtxo)
8105
+ );
8106
+ const newAccountDatum = {
8107
+ ...oldAccountDatum,
8108
+ request
8109
+ };
8110
+ return lucid.newTx().readFrom([stabilityPoolScriptRef]).collectFrom(
8111
+ [accountUtxo],
8112
+ serialiseStabilityPoolRedeemer({ RequestAction: request })
8113
+ ).pay.ToContract(
8114
+ accountUtxo.address,
8115
+ {
8116
+ kind: "inline",
8117
+ value: serialiseStabilityPoolDatum({ Account: newAccountDatum })
8118
+ },
8119
+ addAssets11(
8120
+ mkLovelacesOf5(
8121
+ // TODO: Calculate a more accurate amount to just cover costs.
8122
+ // This should cover the minimum ADA for the rewards UTxO and the transaction fee.
8123
+ 3000000n
8124
+ ),
8125
+ mkAssetsOf8(
8126
+ fromSystemParamsAsset(sysParams.stabilityPoolParams.accountToken),
8127
+ 1n
8128
+ )
8129
+ )
8130
+ ).addSignerKey(toHex12(oldAccountDatum.owner));
8131
+ }
8132
+ async function processSpRequestAuxiliary(stabilityPoolUtxo, accountUtxo, iAssetUtxo, allE2s2sSnapshotOrefs, sysParams, lucid, currentSlot, txFee) {
8133
+ const network = lucid.config().network;
8134
+ const currentTime = BigInt(slotToUnixTime9(network, currentSlot));
8135
+ const stabilityPoolScriptRef = matchSingle5(
8136
+ await lucid.utxosByOutRef([
8137
+ fromSystemParamsScriptRef(
8138
+ sysParams.scriptReferences.stabilityPoolValidatorRef
8139
+ )
8140
+ ]),
8141
+ (_) => new Error("Expected a single stability pool Ref Script UTXO")
8142
+ );
8143
+ const accountDatum = parseAccountDatumOrThrow(
8144
+ getInlineDatumOrThrow(accountUtxo)
8145
+ );
8146
+ const stabilityPoolDatum = parseStabilityPoolDatumOrThrow(
8147
+ getInlineDatumOrThrow(stabilityPoolUtxo)
8148
+ );
8149
+ const baseRefInputs = [iAssetUtxo, stabilityPoolScriptRef];
8150
+ const validFrom = slotToUnixTime9(network, currentSlot - 1);
8151
+ const tx = lucid.newTx().validFrom(validFrom).validTo(validFrom + sysParams.stabilityPoolParams.accountProcessingBiasMs).readFrom(baseRefInputs).collectFrom([stabilityPoolUtxo], {
8152
+ kind: "selected",
8153
+ inputs: [stabilityPoolUtxo, accountUtxo],
8154
+ makeRedeemer: (indices) => serialiseStabilityPoolRedeemer({
8155
+ ProcessRequestPool: {
8156
+ poolInputIdx: indices[0],
8157
+ accountInputIdx: indices[1]
8158
+ }
8159
+ })
8160
+ });
8161
+ if (!accountDatum.request) throw new Error("Account Request is null");
8162
+ const iassetAssetClass = {
8163
+ currencySymbol: fromHex11(
8164
+ sysParams.stabilityPoolParams.assetSymbol.unCurrencySymbol
8165
+ ),
8166
+ tokenName: stabilityPoolDatum.iasset
8167
+ };
8168
+ await match17(accountDatum.request).with("Create", async (_) => {
8169
+ const accountTokenScriptRef = matchSingle5(
8170
+ await lucid.utxosByOutRef([
8171
+ fromSystemParamsScriptRef(
8172
+ sysParams.scriptReferences.authTokenPolicies.accountTokenRef
8173
+ )
8174
+ ]),
8175
+ (_2) => new Error("Expected a single cdp auth token policy Ref Script UTXO")
8176
+ );
8177
+ const requestDepositAmt = assetClassValueOf8(
8178
+ accountUtxo.assets,
8179
+ iassetAssetClass
8180
+ );
8181
+ const poolAddr = credentialToAddress3(
8182
+ lucid.config().network,
8183
+ {
8184
+ hash: sysParams.validatorHashes.stabilityPoolHash,
8185
+ type: "Script"
8186
+ },
8187
+ sysParams.stabilityPoolParams.stakeCredential != null ? fromSysParamsCredential(
8188
+ sysParams.stabilityPoolParams.stakeCredential
8189
+ ) : void 0
8190
+ );
8191
+ const accountOutputAdaAmt = lovelacesAmt2(accountUtxo.assets) - BigInt(sysParams.stabilityPoolParams.accountCreateFeeLovelaces) - txFee;
8192
+ const accountTokenVal = mkAssetsOf8(
8193
+ fromSystemParamsAsset(sysParams.stabilityPoolParams.accountToken),
8194
+ 1n
8195
+ );
8196
+ const accountOutputDatum = serialiseStabilityPoolDatum({
8197
+ Account: {
8198
+ owner: accountDatum.owner,
8199
+ iasset: stabilityPoolDatum.iasset,
8200
+ state: {
8201
+ ...stabilityPoolDatum.state,
8202
+ depositVal: mkSPInteger(requestDepositAmt)
8203
+ },
8204
+ assetSums: stabilityPoolDatum.assetStates.map(([key, val]) => [
8205
+ key,
8206
+ val.currentSumVal
8207
+ ]),
8208
+ request: null,
8209
+ lastRequestProcessingTime: currentTime
8210
+ }
8211
+ });
8212
+ const accountOutMinUtxoLovelace = estimateUtxoMinLovelace3(
8213
+ lucid.config().protocolParameters,
8214
+ poolAddr,
8215
+ accountTokenVal,
8216
+ { InlineDatum: { datum: accountOutputDatum } }
8217
+ );
8218
+ if (accountOutputAdaAmt < accountOutMinUtxoLovelace) {
8219
+ throw new Error("Request doesn't have enough ADA to be processed.");
8220
+ }
8221
+ tx.readFrom([accountTokenScriptRef]).collectFrom([accountUtxo], {
8222
+ kind: "selected",
8223
+ inputs: [stabilityPoolUtxo, accountUtxo],
8224
+ makeRedeemer: (indices) => serialiseStabilityPoolRedeemer({
8225
+ ProcessRequestAccount: {
8226
+ poolInputIdx: indices[0],
8227
+ accountInputIdx: indices[1],
8228
+ e2s2sIdxs: [],
8229
+ currentTime
8230
+ }
8231
+ })
8232
+ }).mintAssets(accountTokenVal, Data42.void()).pay.ToContract(
8233
+ poolAddr,
8234
+ {
8235
+ kind: "inline",
8236
+ value: serialiseStabilityPoolDatum({
8237
+ StabilityPool: liquidationHelper(
8238
+ {
8239
+ ...stabilityPoolDatum,
8240
+ state: {
8241
+ ...stabilityPoolDatum.state,
8242
+ depositVal: spAdd(
8243
+ stabilityPoolDatum.state.depositVal,
8244
+ mkSPInteger(requestDepositAmt)
8245
+ )
8246
+ }
8247
+ },
8248
+ adaAssetClass4,
8249
+ 0n,
8250
+ BigInt(sysParams.stabilityPoolParams.accountCreateFeeLovelaces)
8251
+ )
8252
+ })
8253
+ },
8254
+ addAssets11(
8255
+ stabilityPoolUtxo.assets,
8256
+ mkAssetsOf8(iassetAssetClass, requestDepositAmt),
8257
+ mkLovelacesOf5(
8258
+ BigInt(sysParams.stabilityPoolParams.accountCreateFeeLovelaces)
8259
+ )
8260
+ )
8261
+ ).pay.ToContract(
8262
+ poolAddr,
8263
+ {
8264
+ kind: "inline",
8265
+ value: accountOutputDatum
8266
+ },
8267
+ addAssets11(accountTokenVal, mkLovelacesOf5(accountOutputAdaAmt))
8268
+ ).setMinFee(txFee);
8269
+ }).with({ Adjust: P17.select() }, async (adjustContent) => {
8270
+ const iassetDatum = parseIAssetDatumOrThrow(
8271
+ getInlineDatumOrThrow(iAssetUtxo)
8272
+ );
8273
+ const accountDepositChange = adjustContent.amount;
8274
+ const outputAddress = addressToBech322(
8275
+ adjustContent.outputAddress,
8276
+ lucid.config().network
8277
+ );
8278
+ const e2s2sIdxs = await findRelevantE2s2sIdxs(
8279
+ lucid,
8280
+ stabilityPoolDatum,
8281
+ accountDatum.state,
8282
+ allE2s2sSnapshotOrefs
8283
+ );
8284
+ const { updatedAccountContent, reward } = updateAccount(
8285
+ stabilityPoolDatum,
8286
+ accountDatum,
8287
+ e2s2sIdxs
8288
+ );
8289
+ const isDepositOrRewardWithdrawal = accountDepositChange >= 0;
8290
+ const accountBalanceChange = isDepositOrRewardWithdrawal ? accountDepositChange : bigintMax(
8291
+ accountDepositChange,
8292
+ -fromSPInteger(updatedAccountContent.state.depositVal)
8293
+ );
8294
+ const newPoolDepositExcludingFee = spZeroNegatives(
8295
+ spAdd(
8296
+ stabilityPoolDatum.state.depositVal,
8297
+ mkSPInteger(accountBalanceChange)
8298
+ )
8299
+ );
8300
+ const withdrawalFeeAmt = isDepositOrRewardWithdrawal || newPoolDepositExcludingFee.value === 0n ? 0n : calculateFeeFromRatio(
8301
+ iassetDatum.stabilityPoolWithdrawalFeeRatio,
8302
+ -accountBalanceChange
8303
+ );
8304
+ const newPoolState = updatePoolStateWhenWithdrawalFee(withdrawalFeeAmt, {
8305
+ ...stabilityPoolDatum.state,
8306
+ depositVal: newPoolDepositExcludingFee
8307
+ });
8308
+ const { e2s2sRefInputs, mkProcessRequestAccountRedeemerContent } = createProcessRequestAccountRedeemer(
8309
+ e2s2sIdxs,
8310
+ baseRefInputs,
8311
+ currentTime
8312
+ );
8313
+ if (e2s2sRefInputs.length > 0) {
8314
+ tx.readFrom(e2s2sRefInputs);
8315
+ }
8316
+ tx.collectFrom([accountUtxo], {
8317
+ kind: "selected",
8318
+ inputs: [stabilityPoolUtxo, accountUtxo],
8319
+ makeRedeemer: (indices) => {
8320
+ return serialiseStabilityPoolRedeemer({
8321
+ ProcessRequestAccount: mkProcessRequestAccountRedeemerContent(
8322
+ indices[0],
8323
+ indices[1]
8324
+ )
8325
+ });
8326
+ }
8327
+ }).pay.ToContract(
8328
+ stabilityPoolUtxo.address,
8329
+ {
8330
+ kind: "inline",
8331
+ value: serialiseStabilityPoolDatum({
8332
+ StabilityPool: {
8333
+ ...stabilityPoolDatum,
8334
+ state: newPoolState
8335
+ }
8336
+ })
8337
+ },
8338
+ addAssets11(
8339
+ stabilityPoolUtxo.assets,
8340
+ negateAssets4(reward),
8341
+ mkAssetsOf8(iassetAssetClass, accountBalanceChange + withdrawalFeeAmt)
8342
+ )
8343
+ );
8344
+ const theoreticalOwnerOutputVal = addAssets11(
8345
+ reward,
8346
+ isDepositOrRewardWithdrawal ? {} : mkAssetsOf8(
8347
+ iassetAssetClass,
8348
+ -accountBalanceChange - withdrawalFeeAmt
8349
+ )
8350
+ );
8351
+ const ownerOutputDat = serialiseActionReturnDatum({
8352
+ IndigoStabilityPoolAccountAdjustment: {
8353
+ txHash: fromHex11(accountUtxo.txHash),
8354
+ outputIndex: BigInt(accountUtxo.outputIndex)
8355
+ }
8356
+ });
8357
+ const ownerOutputMinUtxoLovelace = estimateUtxoMinLovelace3(
8358
+ lucid.config().protocolParameters,
8359
+ outputAddress,
8360
+ theoreticalOwnerOutputVal,
8361
+ { InlineDatum: { datum: ownerOutputDat } }
8362
+ );
8363
+ const extraOwnerOutputLovelacesAmt = lovelacesAmt2(theoreticalOwnerOutputVal) >= ownerOutputMinUtxoLovelace ? 0n : ownerOutputMinUtxoLovelace - lovelacesAmt2(theoreticalOwnerOutputVal);
8364
+ const actualOwnerOutputVal = addAssets11(
8365
+ theoreticalOwnerOutputVal,
8366
+ mkLovelacesOf5(extraOwnerOutputLovelacesAmt)
8367
+ );
8368
+ const accountOutputDat = serialiseStabilityPoolDatum({
8369
+ Account: {
8370
+ ...updatedAccountContent,
8371
+ state: {
8372
+ ...updatedAccountContent.state,
8373
+ depositVal: spAdd(
8374
+ updatedAccountContent.state.depositVal,
8375
+ mkSPInteger(accountBalanceChange)
8376
+ )
8377
+ },
8378
+ request: null,
8379
+ lastRequestProcessingTime: currentTime
8380
+ }
8381
+ });
8382
+ const accountOutputValWithoutAda = mkAssetsOf8(
8383
+ fromSystemParamsAsset(sysParams.stabilityPoolParams.accountToken),
8384
+ 1n
8385
+ );
8386
+ const accountOutMinUtxoLovelace = estimateUtxoMinLovelace3(
8387
+ lucid.config().protocolParameters,
8388
+ stabilityPoolUtxo.address,
8389
+ accountOutputValWithoutAda,
8390
+ { InlineDatum: { datum: accountOutputDat } }
8391
+ );
8392
+ const accountOutputAdaAmt = lovelacesAmt2(accountUtxo.assets) - extraOwnerOutputLovelacesAmt - txFee;
8393
+ if (accountOutputAdaAmt < accountOutMinUtxoLovelace) {
8394
+ throw new Error("Account doesn't have enough ADA to be processed.");
8395
+ }
8396
+ tx.pay.ToContract(
8397
+ stabilityPoolUtxo.address,
8398
+ {
8399
+ kind: "inline",
8400
+ value: accountOutputDat
8401
+ },
8402
+ addAssets11(
8403
+ accountOutputValWithoutAda,
8404
+ mkLovelacesOf5(accountOutputAdaAmt)
8405
+ )
8406
+ ).pay.ToAddressWithData(
8407
+ outputAddress,
8408
+ {
8409
+ kind: "inline",
8410
+ value: ownerOutputDat
8411
+ },
8412
+ actualOwnerOutputVal
8413
+ ).setMinFee(txFee);
8414
+ }).with({ Close: P17.select() }, async (closeContent) => {
8415
+ if (txFee > closeContent.maxTxFee) {
8416
+ throw new Error("Account doesn't allow current transaction fee.");
8417
+ }
8418
+ const accountTokenScriptRef = matchSingle5(
8419
+ await lucid.utxosByOutRef([
8420
+ fromSystemParamsScriptRef(
8421
+ sysParams.scriptReferences.authTokenPolicies.accountTokenRef
8422
+ )
8423
+ ]),
8424
+ (_) => new Error("Expected a single cdp auth token policy Ref Script UTXO")
8425
+ );
8426
+ const iassetDatum = parseIAssetDatumOrThrow(
8427
+ getInlineDatumOrThrow(iAssetUtxo)
8428
+ );
8429
+ const outputAddress = addressToBech322(
8430
+ closeContent.outputAddress,
8431
+ lucid.config().network
8432
+ );
8433
+ const e2s2sIdxs = await findRelevantE2s2sIdxs(
8434
+ lucid,
8435
+ stabilityPoolDatum,
8436
+ accountDatum.state,
8437
+ allE2s2sSnapshotOrefs
8438
+ );
8439
+ const { updatedAccountContent, reward } = updateAccount(
8440
+ stabilityPoolDatum,
8441
+ accountDatum,
8442
+ e2s2sIdxs
8443
+ );
8444
+ const newPoolDepositExcludingFee = spZeroNegatives(
8445
+ spSub(
8446
+ stabilityPoolDatum.state.depositVal,
8447
+ updatedAccountContent.state.depositVal
8448
+ )
8449
+ );
8450
+ const withdrawnAmt = zeroNegatives(
8451
+ fromSPInteger(updatedAccountContent.state.depositVal)
8452
+ );
8453
+ const withdrawalFeeAmt = newPoolDepositExcludingFee.value === 0n ? 0n : calculateFeeFromRatio(
8454
+ iassetDatum.stabilityPoolWithdrawalFeeRatio,
8455
+ withdrawnAmt
8456
+ );
8457
+ const newPoolState = updatePoolStateWhenWithdrawalFee(withdrawalFeeAmt, {
8458
+ ...stabilityPoolDatum.state,
8459
+ depositVal: newPoolDepositExcludingFee
8460
+ });
8461
+ const { e2s2sRefInputs, mkProcessRequestAccountRedeemerContent } = createProcessRequestAccountRedeemer(
8462
+ e2s2sIdxs,
8463
+ [...baseRefInputs, accountTokenScriptRef],
8464
+ currentTime
8465
+ );
8466
+ if (e2s2sRefInputs.length > 0) {
8467
+ tx.readFrom(e2s2sRefInputs);
8468
+ }
8469
+ tx.readFrom([accountTokenScriptRef]).collectFrom([accountUtxo], {
8470
+ kind: "selected",
8471
+ inputs: [stabilityPoolUtxo, accountUtxo],
8472
+ makeRedeemer: (indices) => {
8473
+ return serialiseStabilityPoolRedeemer({
8474
+ ProcessRequestAccount: mkProcessRequestAccountRedeemerContent(
8475
+ indices[0],
8476
+ indices[1]
8477
+ )
8478
+ });
8479
+ }
8480
+ }).mintAssets(
8481
+ mkAssetsOf8(
8482
+ fromSystemParamsAsset(sysParams.stabilityPoolParams.accountToken),
8483
+ -1n
8484
+ ),
8485
+ Data42.void()
8486
+ ).pay.ToContract(
8487
+ stabilityPoolUtxo.address,
8488
+ {
8489
+ kind: "inline",
8490
+ value: serialiseStabilityPoolDatum({
8491
+ StabilityPool: {
8492
+ ...stabilityPoolDatum,
8493
+ state: newPoolState
8494
+ }
8495
+ })
8496
+ },
8497
+ addAssets11(
8498
+ stabilityPoolUtxo.assets,
8499
+ negateAssets4(reward),
8500
+ mkAssetsOf8(iassetAssetClass, -withdrawnAmt + withdrawalFeeAmt)
8501
+ )
8502
+ ).pay.ToAddressWithData(
8503
+ outputAddress,
8504
+ {
8505
+ kind: "inline",
8506
+ value: serialiseActionReturnDatum({
8507
+ IndigoStabilityPoolAccountClosure: {
8508
+ txHash: fromHex11(accountUtxo.txHash),
8509
+ outputIndex: BigInt(accountUtxo.outputIndex)
8510
+ }
8511
+ })
8512
+ },
8513
+ addAssets11(
8514
+ mkLovelacesOf5(lovelacesAmt2(accountUtxo.assets) - txFee),
8515
+ reward,
8516
+ mkAssetsOf8(iassetAssetClass, withdrawnAmt - withdrawalFeeAmt)
8517
+ )
8518
+ ).setMinFee(txFee);
8519
+ }).exhaustive();
8520
+ return tx;
8374
8521
  }
8375
- async function findRandomTreasuryUtxo(lucid, sysParams) {
8376
- const treasuryUtxos = await findAllTreasuryUtxos(lucid, sysParams);
8377
- return F18.pipe(
8378
- O15.fromNullable(getRandomElement3(treasuryUtxos)),
8379
- O15.match(() => {
8380
- throw new Error("Expected some treasury UTXOs.");
8381
- }, F18.identity)
8522
+ async function processSpRequest(stabilityPoolUtxo, accountUtxo, iAssetUtxo, allE2s2sSnapshotOrefs, sysParams, lucid, currentSlot) {
8523
+ const draftTx = processSpRequestAuxiliary(
8524
+ stabilityPoolUtxo,
8525
+ accountUtxo,
8526
+ iAssetUtxo,
8527
+ allE2s2sSnapshotOrefs,
8528
+ sysParams,
8529
+ lucid,
8530
+ currentSlot,
8531
+ // Placeholder transation fee
8532
+ 1n
8533
+ );
8534
+ const fee = (await (await draftTx).complete()).toTransaction().body().fee();
8535
+ return processSpRequestAuxiliary(
8536
+ stabilityPoolUtxo,
8537
+ accountUtxo,
8538
+ iAssetUtxo,
8539
+ allE2s2sSnapshotOrefs,
8540
+ sysParams,
8541
+ lucid,
8542
+ currentSlot,
8543
+ fee
8382
8544
  );
8383
8545
  }
8384
- async function findRandomTreasuryUtxoWithOnlyAda(lucid, sysParams) {
8385
- const treasuryUtxos = await findAllTreasuryUtxos(lucid, sysParams);
8386
- const adaOnlyTreasuryUtxos = treasuryUtxos.filter(
8387
- (utxo) => Object.keys(utxo.assets).length == 1
8546
+ async function createE2s2sSnapshots(stabilityPoolOref, sysParams, lucid) {
8547
+ const stabilityPoolRefScriptUtxo = matchSingle5(
8548
+ await lucid.utxosByOutRef([
8549
+ fromSystemParamsScriptRef(
8550
+ sysParams.scriptReferences.stabilityPoolValidatorRef
8551
+ )
8552
+ ]),
8553
+ (_) => new Error("Expected a single stability pool Ref Script UTXO")
8388
8554
  );
8389
- return F18.pipe(
8390
- O15.fromNullable(getRandomElement3(adaOnlyTreasuryUtxos)),
8391
- O15.match(() => {
8392
- throw new Error("Expected some treasury UTXOs.");
8393
- }, F18.identity)
8555
+ const snapshotE2s2sPolicyRefScriptUtxo = matchSingle5(
8556
+ await lucid.utxosByOutRef([
8557
+ fromSystemParamsScriptRef(
8558
+ sysParams.scriptReferences.authTokenPolicies.snapshotEpochToScaleToSumTokenRef
8559
+ )
8560
+ ]),
8561
+ (_) => new Error("Expected a single snapshot e2s2s policy Ref Script UTXO")
8394
8562
  );
8395
- }
8396
- async function findRandomTreasuryUtxoWithAsset(lucid, sysParams, asset, max_number_of_assets = 2n) {
8397
- const treasuryUtxos = await lucid.utxosAtWithUnit(
8398
- { hash: sysParams.validatorHashes.treasuryHash, type: "Script" },
8399
- assetClassToUnit4(asset)
8563
+ const spUtxo = matchSingle5(
8564
+ await lucid.utxosByOutRef([stabilityPoolOref]),
8565
+ (_) => new Error("Expected a single stability pool UTXO")
8400
8566
  );
8401
- const validTreasuryUtxos = treasuryUtxos.filter(
8402
- (utxo) => Object.keys(utxo.assets).length <= max_number_of_assets
8567
+ const spDatum = parseStabilityPoolDatumOrThrow(getInlineDatumOrThrow(spUtxo));
8568
+ const [newSnapshotDatums, newAssetStates] = partitionEpochToScaleToSums(spDatum);
8569
+ if (newSnapshotDatums.length === 0) {
8570
+ throw new Error("There has to be a snapshot being created.");
8571
+ }
8572
+ const snapshotAc = fromSystemParamsAsset(
8573
+ sysParams.stabilityPoolParams.snapshotEpochToScaleToSumToken
8403
8574
  );
8404
- return F18.pipe(
8405
- O15.fromNullable(getRandomElement3(validTreasuryUtxos)),
8406
- O15.match(() => {
8407
- throw new Error("Expected some treasury UTXOs.");
8408
- }, F18.identity)
8575
+ const tx = lucid.newTx().readFrom([stabilityPoolRefScriptUtxo, snapshotE2s2sPolicyRefScriptUtxo]).collectFrom(
8576
+ [spUtxo],
8577
+ serialiseStabilityPoolRedeemer("RecordEpochToScaleToSum")
8578
+ ).mintAssets(
8579
+ mkAssetsOf8(snapshotAc, BigInt(newSnapshotDatums.length)),
8580
+ Data42.void()
8581
+ ).pay.ToContract(
8582
+ spUtxo.address,
8583
+ {
8584
+ kind: "inline",
8585
+ value: serialiseStabilityPoolDatum({
8586
+ StabilityPool: { ...spDatum, assetStates: newAssetStates }
8587
+ })
8588
+ },
8589
+ spUtxo.assets
8409
8590
  );
8591
+ for (const newDatum of newSnapshotDatums) {
8592
+ tx.pay.ToContract(
8593
+ spUtxo.address,
8594
+ {
8595
+ kind: "inline",
8596
+ value: serialiseStabilityPoolDatum({
8597
+ SnapshotEpochToScaleToSum: newDatum
8598
+ })
8599
+ },
8600
+ mkAssetsOf8(snapshotAc, 1n)
8601
+ );
8602
+ }
8603
+ return tx;
8410
8604
  }
8411
- async function findAllTreasuryUtxosWithNonAdaAsset(lucid, sysParams, includeDaoToken = true) {
8412
- const treasuryUtxos = await findAllTreasuryUtxos(lucid, sysParams);
8413
- const treasuryUtxosWithNonAdaAsset = treasuryUtxos.filter(
8414
- (utxo) => Object.keys(utxo.assets).length !== 1 && (includeDaoToken ? true : assetClassValueOf8(
8415
- utxo.assets,
8416
- fromSystemParamsAsset(sysParams.govParams.daoIdentityToken)
8417
- ) === 0n)
8605
+ async function annulRequest(accountUtxo, params, lucid) {
8606
+ const stabilityPoolRefScriptUtxo = matchSingle5(
8607
+ await lucid.utxosByOutRef([
8608
+ fromSystemParamsScriptRef(
8609
+ params.scriptReferences.stabilityPoolValidatorRef
8610
+ )
8611
+ ]),
8612
+ (_) => new Error("Expected a single stability pool Ref Script UTXO")
8418
8613
  );
8419
- return treasuryUtxosWithNonAdaAsset;
8420
- }
8421
-
8422
- // src/contracts/collector/scripts.ts
8423
- import {
8424
- applyParamsToScript as applyParamsToScript12,
8425
- Constr as Constr2,
8426
- fromText as fromText8
8427
- } from "@lucid-evolution/lucid";
8428
-
8429
- // src/validators/collector-validator.ts
8430
- var _collectorValidator = {
8431
- type: "PlutusScriptV3",
8432
- description: "Generated by Aiken",
8433
- cborHex: "590a2a590a27010100229800aba2aba1aba0aab9faab9eaab9dab9cab9a488888888cc896600264653001300b00198059806000cdc3a4005300b0024888966002600460166ea800e33001300c3754007370e90024dc3a4001300b375400891111919912cc004c0140122b3001301337540170028b20288acc004c0240122b3001301337540170028b20288acc004c0180122b3001301337540170028b20288b202040408080660024602a602c0032259800800c52f5c11330153012301600133002002301700140512301530163016001911919800800801912cc004006297ae0899912cc004c01400a2660320046600800800313300400400140506030002603200280b24446466446600400400244b3001001801c4c8c96600266e440180062b30013371e00c0031375a60320050054059133004004301d00340586eb8c05c004c068005018191919800800803112cc004006007132325980099b910080018acc004cdc7804000c4dd5980d001401501744cc010010c07800d0171bae3018001301b0014064297adef6c6014800260206ea802644b30010018800c54cc04400840050104dd2a400091111111194c0048c00800644602530010029bae301f301c3754003375c601660386ea8005007488c8cc00400400c8966002003168992cc004cdd79811180f9baa00100489807180f9baa001899801801981180120383021001407c9112cc004c03c01e2646464b300100180dc4c966002604a00513259800800c07a2b30013026001899805a49364d7573742070726f6475636520636f6c6c6563746f72206f7574707574207769746820696e63726561736564204144412076616c75650098009b914881009b8f4881009bac300f3022375402f3374a90011981218051981200219812260103d87a80004bd7025eb812222332232330010010052259800800c528456600264b300130040018acc004cdd7980c18159baa0014c107d87b9fd87980ff008acc004cc8a600264b30013020302d37540031375a605c60626eacc0c4c0b8dd5000c5200040ac60600033756005375e606060620032259800981298171baa4c0103d87a8000899b890010028acc004cdc480080144cdc480119b80001482026fb80a294102c20584888966002007159800980100344cc00401120008a5040b91325980099baf4c101400030310018acc004cc008014dd69819181a9bab3032001898019ba630360048a5040bd15980099801002a4001130030078a5040bc8178c0d000d0320dd3002994c0040066eacc06cc0b0dd5001488cc0c0008cc0c0dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044c8cc8966002601e005159800980700144cc010c064cc0ccc0c400d2f5c00031330044c0103d87a800000540b9198008034006446600c0046606a00a002803102e1bae302e0013033003303100240bd13375e605c605e605e605e60566ea800530103d87a80008a5040a114a0814229410281816800c528c4cc008008c0b800502720563259800a508800c4c8c8cc00400400c896600200313302c337609801014000374c00697adef6c6089919912cc004c02c00a2b3001300a0028992cc004cdd7a6101a000374c003100289981819bb04c01014000374c0020048158c8cc004004dd59817002112cc00400626606266ec130010140004c010101004bd6f7b63044c8cc89660026020005159800980780144c96600266e1c0052001880144cc0d4cdd8261014000375066e00005200200240c06eb4c0c800e26606866ec13010140004c0101010000440bd1330340033300500500140bc6eb8c0bc004c0d0008c0c800503044cc0bccdd82601014000374c00c008815226605e0066600a00a0028150dd7181500098178011816800a056330293376098010140004c010101004bd6f7b63020483756602a604c6ea8025660026030604a6ea8006246466ebcc0acc0a0dd5181598141baa002001302a3027375400512323375e605660506ea8008004c0a8c09cdd500120464079023204630073756602060426ea8c040c084dd5000c0710221811800a0423300b37586044603e6ea80508cdd7981198101baa302330203754601e60406ea8004008c084c078dd51810980f1baa0013300137586040603a6ea80480362b3001301300789919803a49334d757374207370656e64207374616b696e67206d616e61676572207769746820446973747269627574652072656465656d657200332259800800c00a2b3001302400189919912cc004c05400626464b300130290028024590261bae302700130233754007159800980c800c56600260466ea800e005164091159800980b000c56600260466ea800e00516409115980099b874801800626464b300130290028024590261bad30270013023375400715980099b87480200062b3001302337540070028b20488acc004cdc3a401400315980098119baa003801459024456600266e1d200c0018acc004c08cdd5001c00a2c81222c8101020204040808101020204013375e00298103d87b8000302037540026464660020026eacc094c098c098c098c098c098c098c098c098c098c088dd500b91192cc004cdd78021811800c4c09000626600600660500048108c098004cdd2a400466044604660406ea8c08c0052f5c100240848108528198051bac3021301e37540264660086eacc038c07cdd51807180f9baa0010023020301d37540471332259800980a980f1baa001899912cc004c094006264b30013014302137540031323322598009814800c4c8cc004004dd61814801112cc004006264b3001301a30273754003132324a2b3001323300100130103756605a605c605c605c605c60546ea807c896600266e3cdd71817000801c528c4cc008008c0bc00502845268b204c375c605660506ea80062c8128c8cc004004dd6180b98141baa0072259800800c5300103d87a80008992cc006600266ebc00530103d87a8000a50a51409d10018998018019817001204e325980099b8f375c605a002017130123302c302d302e0014bd7045300103d87a8000409c6eb0c0b000502a44c8c8cc8966002605e007133006006302f0058b2058375c60580026eb8c0b0008c0b0004dd61815000a0508b204c375a604c002604e00260446ea80062c80f8c966002602a60426ea80062604a60446ea80062c80f8c038c084dd5180818109baa30240018b2044375c6044603e6ea8004c8cc030dd6180798101baa01523002301030213754002b30013011301e375498103d879800089198029bab300f30203754002007123371090004c004dd5980798101baa0019bae302330203754007375c601e60406ea800d00b20388b2038300a301d37540466040603a6ea8c080c074dd5198009bac3020301d375402401a80d101a0c01c01c6028602a00a60260088b2012180580098031baa00b8a4d13656400c2a660049201353c65787065637465643e20436f6c6c6563746f7220696e7075742063616e6e6f742068617665206e6f6e2d41444120617373657473001615330024912c3c65787065637465643e204d757374207370656e642073696e676c6520636f6c6c6563746f7220696e707574001601"
8434
- };
8435
-
8436
- // src/contracts/collector/scripts.ts
8437
- var mkCollectorValidatorFromSP = (params) => {
8438
- return {
8439
- type: "PlutusV3",
8440
- script: applyParamsToScript12(_collectorValidator.cborHex, [
8441
- new Constr2(0, [
8442
- new Constr2(0, [
8443
- params.stakingManagerNFT[0].unCurrencySymbol,
8444
- fromText8(params.stakingManagerNFT[1].unTokenName)
8445
- ]),
8446
- new Constr2(0, [
8447
- params.stakingToken[0].unCurrencySymbol,
8448
- fromText8(params.stakingToken[1].unTokenName)
8449
- ]),
8450
- new Constr2(0, [
8451
- params.versionRecordToken[0].unCurrencySymbol,
8452
- fromText8(params.versionRecordToken[1].unTokenName)
8453
- ])
8454
- ])
8455
- ])
8456
- };
8457
- };
8458
-
8459
- // src/contracts/execute/types.ts
8460
- import { Data as Data41 } from "@lucid-evolution/lucid";
8461
- var ExecuteParamsSchema = Data41.Object({
8462
- govNFT: AssetClassSchema2,
8463
- upgradeToken: AssetClassSchema2,
8464
- iAssetToken: AssetClassSchema2,
8465
- collateralAssetToken: AssetClassSchema2,
8466
- stabilityPoolToken: AssetClassSchema2,
8467
- cdpCreatorToken: AssetClassSchema2,
8468
- cdpToken: AssetClassSchema2,
8469
- versionRecordToken: AssetClassSchema2,
8470
- iassetValHash: Data41.Bytes(),
8471
- cdpValHash: Data41.Bytes(),
8472
- sPoolValHash: Data41.Bytes(),
8473
- versionRegistryValHash: Data41.Bytes(),
8474
- treasuryValHash: Data41.Bytes()
8475
- });
8476
- var ExecuteParams = ExecuteParamsSchema;
8477
- function castExecuteParams(params) {
8478
- return Data41.castTo(params, ExecuteParams);
8479
- }
8480
-
8481
- // src/contracts/execute/scripts.ts
8482
- import {
8483
- applyParamsToScript as applyParamsToScript13,
8484
- applySingleCborEncoding
8485
- } from "@lucid-evolution/lucid";
8486
-
8487
- // src/validators/execute-validator.ts
8488
- var _executeValidator = {
8489
- type: "PlutusScriptV3",
8490
- description: "Generated by Aiken",
8491
- cborHex: "5931ec5931e9010100229800aba2aba1aba0aab9faab9eaab9dab9cab9a48888888a60022a66004921203c65787065637465643e20694173736574206e6f74207265666572656e63656400168a99801249283c65787065637465643e2053696e676c6520636f6c6c61746572616c20617373657420696e70757400168a998012491e3c65787065637465643e2053696e676c652069617373657420696e70757400168a99801249193c65787065637465643e204d697865642076657273696f6e7300168a99801249523c65787065637465643e205768656e2066756e64732066726f6d207472656173757279207265717565737465642069742068617320746f207370656e642061207574786f2066726f6d20747265617375727900168a99801249243c65787065637465643e204f6e6c792073696e676c65206578656375746520696e707574001648888896600264653001300f00198079808000cdc3a4005300f00248889660026004601e6ea800e2664530013015002980a980b001566002600260226ea801a2b30013012375400d149a2c809a2c8079222598009802180a1baa0028cc004c060c054dd50014c054dd500348c064c06800644646600200200644b30010018a5eb8226644b3001300500289980e80119802002000c4cc010010005018180e000980e800a03448888c8cc88cc89660020050158acc004c08800a26464b3001330013756601260406ea8018c024c080dd5013466002444646601800846004601c604a6ea800566002602460446ea8006246600a6eacc034c090dd5000801c48cdc42400130013756601a60486ea80066eb8c09cc090dd5001cdd7180698121baa003401881026e1d20049181218129812800c88c8cc00400400c88cc00c004c00800a4464b30013012001899192cc004c0a400a0091640986eb8c09c004c08cdd5001c566002602a00315980098119baa0038014590244590202040302137540049111119914c004c0a800a6002003259800980398139baa0018981598141baa0018b204a488a60026002601060546ea8c04cc0a8dd5001c8966002603660566ea800a26464646464646464646464653001303b0019bad303b00c9bad303b00b9bad303b00a9bad303b0099bad303b0089bad303b0079bad303b0069bad303b0059bad303b0049bad303b00248888888888966002608e01913301f304600e13301b00b0188b2088181d800981d000981c800981c000981b800981b000981a800981a00098198009819000981880098161baa0028b2052980e18149baa302d302e005488966002603860586ea800e264646464653001375a606a003375a606a00b375a606a007375a606a00491112cc004c0e80162660166072010330012303a303b303b303b303b303b303b303b0019181d181d981d981d800cdd2a40052259800800c40062a6606c004200281aa44b3001302730373754005132323322598009820001c0162c81e8dd6981e8009bad303d002303d001303837540051640d522598009813981b9baa0028991919912cc004c10000e00b1640f46eb8c0f4004dd7181e801181e800981c1baa0028b206a9b874801a6e1d20089b874802a6e1d200e9b87480326e2520044888888888888cc89660026601692125476f7620696e707574206d75737420757365207468652072696768742072656465656d6572005980080c44ca6002266ebc00530103d87b800098221baa00191192cc004c0dc00626464b3001304e00280245904b1bae304c00130483754007159800981d000c4c8c966002609c0050048b2096375c609800260906ea800e2c822904518231baa002488966002606e00513232323298009827800cdd698278024dd71827801a444b3001305300489919912cc004c10400a264b300130570018992cc004c10cc14cdd5000c4c8c8c8c8c8ca600260ba003375c60ba00d305d004982e801cc1740092222259800983180344cc094c1880284cc09400c4cc0940084cc0940044cc09401403a2c830060ba00260b800260b600260b400260b200260a86ea80062c8288c1580062c82a0c148dd5001c566002608800513259800982b800c4c966002608660a66ea800626464646464653001305d0019bae305d006982e8024c17400e60ba004911112cc004c18c01a26604a60c401426604a00626604a00426604a00226604a00a01d164180305d001305c001305b001305a00130590013054375400316414460ac00316415060a46ea800e2b300130310028992cc004c15c006264b3001304330533754003132323232323232323298009bad30600019bae30600099bad306000798300034c18001660c000930600039830001244444444b30013069009899815183400809981100289981500209981580189981580109981580080a4590660c180004c17c004c178004c174004c170004c16c004c168004c164004c150dd5000c59051182b000c5905418291baa0038acc004c05800a264b300130570018992cc004c10cc14cdd5000c4c8c8c8c8c8c8c8c8ca60026eb4c1800066eb8c1800266eb4c18001e60c000d306000598300024c18000e60c0004911111112cc004c1a402626605460d002026604400a2660540082660560062660560042660560020291641983060001305f001305e001305d001305c001305b001305a00130590013054375400316414460ac00316415060a46ea800e2b300130150028992cc004c15c006264b3001304330533754003132323232323232323298009bae30600019bae30600099830003cc18001a60c000b30600049bad30600039bad30600024888888896600260d201313302a306801013302b00613302b00513302b0041330410030148b20cc1830000982f800982f000982e800982e000982d800982d000982c800982a1baa0018b20a230560018b20a830523754007159800980a00144c96600260ae00313259800982198299baa001899191919191919191919194c004dd71831000cdd71831005cc18802660c40113062007992cc004c1800062b3001301f305f0018b44c148c17c00505d4590611baa3062006992cc004c1800062b3001301f305f0018b44c148c17c00505d4590611baa306200598310024dd69831001cdd6983100124444444444b3001306d00b899817183600a09981780409981780389981780309982280180c45906a0c188004c184004c180004c17c004c178004c174004c170004c16c004c168004c164004c150dd5000c59051182b000c5905418291baa0038acc004c04800a264b30013057001899814182b00080145905418291baa0038acc004c04c00a264b300130570018992cc004c10cc14cdd5000c4c8cc896600260b6003133034375860b400244b300100280444c8cc896600260c0003132598009826182e1baa001899192cc004c18c00a2600e60c60111641806eb8c184004c174dd5000c5905a182f800c5905d1bae305d001305e001375860b800482d22c82c0dd6982c000982c800982a1baa0018b20a230560018b20a83052375400715980099b874804000a26464b30013058002801c590551bae30560013052375400716413c827904f209e413c827904f209e413c609e6ea80044c966002608000313259800982b000c4c966002608460a46ea80062646464b3001305a002899912cc004c11cc15cdd500144c8c8c96600260be005133014305e003132598009825800c4c96600260c200313232598009827000c4c96600260c800313301930630010098b20c2305f37540051598009828800c4c8c8ca60026eb4c1940066eb4c19400e6eb4c194009222598009834802403a2c833060ca00260c800260be6ea800a2c82e105c182e9baa00130600018b20bc305c37540051598009827000c56600260b86ea800a00b16417516416482c8c168dd5000c5905c182e800982e800982c1baa0028b20aa30590031330330012259800801404e264b3001304830583754003132323298009bad305f0019bae305f0039bae305f00248896600260c60091300830630098b20c0182f800982f000982c9baa0018b20ac305b002416516415c6eb0c160004c160004c14cdd5000c59050182a800c5905318289baa0058acc004c10c0062b30013051375400b00c8b20a48b209c4138609e6ea8010c1480162c8280609e002609c002609a00260906ea80122b3001303a002899192cc004c13800a00b16412c6eb4c130004c120dd50024566002604e00515980098241baa004801c590494566002601800515980098241baa004801c59049459045208a4114822866004608e60886ea807409e294504144c96600266018921174d697865642070726f746f636f6c2076657273696f6e73003370e6eb4c08cc114dd500d9bad30013045375406115980099806249224d7573742065786563757465206166746572206566666563746976652064656c6179003259800981c18229baa001899b88337006eb4c090c118dd50189bad302430463754605e608c6ea8070dd6982498231baa0018a50410c6090608a6ea8c120c114dd5180798229baa0368acc004cc03124011143616e6e6f742062652065787069726564003259800981c18229baa001899b89375a6092608c6ea8004cdc01bad300f304637540626eb4c03cc118dd5181798231baa01c8a50410c6090608a6ea8c0b8c114dd5180798229baa0368cc0048c124c128c128c128c128c12800646092609460946094609460946094609460946094003375e980103d879800048896600264b3001303830483754600860926ea80d22b3001001820c4c966002609c005132332259800981e000c566002609a6ea800e005164139159800981f800c566002609a6ea800e0051641391598009816000c566002609a6ea800e0051641391598009808800c566002609a6ea800e0051641391598009808000c4c8c8c8ca600260a8003375a60a8007375a60a80049112cc004c16001226603260ae00e2b300130433053375400713232332259800982e001c0362c82c8dd6982c8009bae3059002305900130543754007164145164154305400130530013052001304d37540071598009807800c566002609a6ea800e005164139164128825104a2094412882504c010004c128dd500099804182698251baa0013756600860946ea80ee0848258c13000504a44cc0412414b5768656e206e6f207472656173757279207769746864726177616c207265717565737465642069742063616e2774207370656e6420616e79207574786f2066726f6d207472656173757279003375e6e9c005300101800041186605a6eb0c12cc120dd501c980819825182598261826182618261826182618261826182618261826182618241baa04e4bd704660026e952000911982619bb037520046ea00052f5bded8c1370090014dd2a4008911119912cc004cc88cc05d24012c54686520646174756d206f6620676f7665726e616e6365206d757374207570646174652070726f7065726c79003232598009820800c6600200900398039982a19191918069982b982c0019982b982c0011982b982c0009982b9ba8300b375a603c60aa6ea80acc164c164004c160004c15c004c148dd501425eb82600a60aa60a46ea816298103d87a800040191598009809000c6600200900398039982a1918059982a982b0009982a982b18299baa003305730570013052375405097ae09802982a98291baa058a60103d87a800040191598009809800c6600200900398039982a191918061982b182b8011982b182b8009982b1ba8300a375a606460a86ea80a8c160c160004c15c004c148dd501425eb82600a60aa60a46ea816298103d87a8000401919800813528528a09e413c827904f18281baa0013039305037540766eb0c144c148c148c138dd501f980b19828180319828182898271baa3051304e3754606e609c6ea809ccc14130103d87a80004bd7025eb82264b300133016490122546865207472616e73616374696f6e206d757374206d696e742070726f7065726c79003375e6016609e6ea8100dd34c0048c8cc004004008896600200314bd6f7b63044c8cc154cdd818290009ba63233001001375660a800444b30010018a5eb7bdb182264660b066ec0c154004dd419b8148000dd6982b00099801801982d001182c000a0ac3300300330570023055001414d304e37546070609e6ea80ea4446644b300130430038802c4c8c8cc00400401c8966002003133059337606ea4014dd3001a5eb7bdb1822646644b30013372201000515980099b8f0080028992cc004cdd7a60101a000374c003100289982e99bb037520126e9800400905819198008009bab305b0042259800800c4cc178cdd81ba9009375001697adef6c6089919912cc004cdc8806001456600266e3c03000a264b30013370e00266e05200000f880144cc188cdd81ba900d375066e0000403c00905d1bad305f00389983099bb037520186ea003801105c44cc18400ccc01401400505c1bae305c0013061002305f001417513305c337606ea4020dd300300220ae89982e00199802802800a0ae375c60ae00260b800460b400282c0cc02c00400d0511bae3055305237540046eb8c0ecc148dd50012444b300130410028cc00660026006600a607660a46ea8162601c60a46ea816290012002981818291baa058a4004800a2b300130310028cc004c00cc014c0ecc148dd502c4c06cc148dd502c520024005159800980a8014660026006600a607660a46ea8162600860a46ea8162900120028acc004c04c00a3300130033005303b305237540b1301c305237540b14800900144c00cc014c0ecc148dd502c209e413c827904f226602c921104661696c656420657865637574696f6e009800981c18279baa03a91829982a182a182a182a182a182a182a182a000c8c14cc150c150c150c150c150c150c150c150c150c15000644b300130403050375400513232323232323232329800982e800cdd7182e804cdd6982e8044c17401a60ba00b305d004982e801cc96600260b6003159800980d182d000c5a2609a60b400282c22c82e0dd5182e801244444444b30013066009899814183280789981400289981400209981400189981400109981f0040094590630c174004c170004c16c004c168004c164004c160004c15c004c158004c144dd500145904e4896600266e40008006298103d87980008acc004cdc7801000c530103d87a80008a6103d87b8000413882712222232598009822000c4ca6002601c660b0002660b0980103d87a80004bd704dd6182c982d182d182b1baa047982c982b1baa0074888c966002660429212153746162696c697479506f6f6c206f757470757420697320696e636f7272656374009800801cc088cc170c048cc170c088cc170c024c168dd503025eb80cc171300103d87a80004bd7025eb82601e660b86024660b86024660b860ba60b46ea8008cc171300118d8799fd8799f1b0de0b6b3a7640000ffd8799f00ff0000ff003305c4c10180004bd7025eb812f5c1300d3016305a37540c14c103d87a8000403915980098249bad3023305a37540611330214912370726f706f73656420694173736574206f757470757420697320696e636f727265637400330014a2980103d87a8000899810a48125496e636f72726563746c7920636f6e73756d6564207265666572656e636520696173736574003259800982f800c4c96600266ebc01cc17cc170dd5182f982e1baa3045305c3754003132598009826182e1baa0018992cc004c1880062646601a002264b3001304f0018acc004c148c17cdd5181518301baa0028acc004cc09d2412370726f706f73656420694173736574206f757470757420697320696e636f727265637400330074a26030660c460c660c06ea80092f5c113302749123636f6e73756d656420694173736574206f757470757420697320696e636f7272656374009800804cc0a0cc1880292f5c130153306230183306232323232323232301f33069306a00733069306a00633069306a00533069306a00433069306a00333069306a00233069306a001330699800a50a6103d87a8000a60103d8798000419060d660d600260d400260d200260d000260ce00260cc00260ca00260c06ea80092f5c097ae09809981f18301baa066a6103d87a8000405114a082ea294105d4566002607e003159800992cc004c140c180dd5000c4c068cc038dd7183218309baa009375c60c860c26ea8006294505e180818301baa0028acc004cc09d2412370726f706f73656420694173736574206f757470757420697320696e636f727265637400330074a0602060c06ea800a26604e92123636f6e73756d656420694173736574206f757470757420697320696e636f7272656374009800804cc0a0cc1880292f5c130153306230183306232323232323232301f33069306a00733069306a00633069306a00533069306a00433069306a00333069306a00233069306a00133069306a306b00133069301f33069306a3067375401e97ae04bd7018350009834800983400098338009833000983280098301baa0024bd7025eb826026607c60c06ea819a98103d87a8000405114a082ea294105d454cc1792411a537563682069617373657420616c7265616479206578697374730016417482e8c178dd5198061bae3062305f375400e6eb8c188c17cdd50009830800c5905f182e9baa0018b20b43033303a305c3754608a60b86ea80060aa82c8c1780062c82e260026eb0c174c168dd5025cc0e0c168dd50305300103d879800040e882ba2941057114c0040126046660ba00a97ae098081982e98099982e98099982e982f182d9baa0033305d4c10100003305d3044305b3754006660ba607260b66ea800ccc174c090c16cdd50019982e980b982d9baa0033305d3016305b3754006660bb3001002a6103d87a8000a60103d87980004160660ba00297ae04bd7025eb82601c607260b66ea818698103d87a8000403c301d330573005305537540b697ae08acc004c11c0062653001375860b260b460b400398009bac3059001981a182b1baa05ca6103d879800040d9301e330583006305637540b897ae0982c982b1baa007488896600260bc0071325980099baf003305e305b375460bc60b66ea8c110c16cdd5000c4c966002609660b66ea8006264b30013061001899198060008acc004cdc79bae3061305e37540026eb8c184c178dd5002c5660033001008981319830180b198300031983026103d87a80004bd7025eb826026660c0602c660c064646030660c460c6004660c460c6002660c4609260c06ea801ccc188c0f8c180dd500399831181498301baa00733062301c3060375400e660c4603660c06ea801cc190c190c190c190c190c190004c18c004c178dd5000a5eb812f5c13011303c305e37540c94c0103d87a8000404914a3153305c491253c65787065637465643e20694173736574206f757470757420697320696e636f72726563740016416d153305c4911e3c65787065637465643e204e6f742072656c6576616e74206961737365740016416c60c000316417860b86ea80062c82c8c0c8c0e4c16cdd51822182d9baa0018a9982ca49283c65787065637465643e204d6f64696679696e67206e6f6e2d7570677261646564204941737365740016416060ba00716416c3055375408d13259800981a80146600260b260ac6ea801e4464b3001304b30583754003133006375c608460b26ea800cdd71821182c9baa0028800a0ac33005375c60b660b06ea8008dd7182d982c1baa001980f1982c1803182b1baa05c4bd704c158dd5023a4445300130123305c0023305c4c103d87a80004bd704dd6182e982f182f000e60026eb0c174006607060b46ea818298103d879800040e89112cc0040060af132598009831001456600266ebc018c184c178dd51830982f1baa3047305e3754003132598009827182f1baa0018992cc004c1900062646601e0022b30013371e6eb8c190c184dd50009bae306430613754017159800cc00401a6052660c600e97ae0980b19831980c9983199180d198321832800998321ba83018375a609660c46ea8008c198c198004c184dd5000a5eb812f5c13014303f306137540cf4c103d87a80004055132324a2b30013051375a609660c46ea800a2b300198009bac3065306237540a7302b306237540d14c0103d8798000410915980099800a514c0103d87a80008a4d1533060491223c65787065637465643e2057726f6e6720636f6c6c61746572616c206f75747075740016417d1533060491243c65787065637465643e204e6f20636f6c6c61746572616c20617373657420696e7075740016418d13259800800c17a264b300130680028acc004cdd7806183398321baa306730643754609a60c86ea8006264b3001305730643754003132598009835000c4c8cc04800456600266e3cdd7183518339baa001375c60d460ce6ea80462b3001337106eb4c140c19cdd5003acc0056600266ebd6600260b260cc6ea8c084c19cdd5000c4c140c19cdd5000c4c96600260d800313259800982d98341baa0018992cc004c1b80062646602c0022b3001305d306a3754604a60d66ea8006260a860d66ea80062a660d2921253c65787065637465643e204e6f742074686520666972737420696e2074686520636861696e001641a060da0031641ac60d26ea80062c8330c0fcc118c1a0dd5182898341baa306b0018b20d298009bac3050306737540b13030306737540db4c0103d8798000411c8321300106d8799f4040ff008a51899baf30503067375402298106d8799f4040ff00419114804a2900820c88acc004c96600260ae003159800982d18339baa30223068375400515980099817a4812a70726f706f73656420636f6c6c61746572616c206173736574206f757470757420696e636f727265637400330074a26040660d460a260d06ea80092f5c113302f4912a636f6e73756d656420636f6c6c61746572616c206173736574206f757470757420696e636f7272656374009800806cc0c0cc1a80392f5c1301d3306a30303306a3232323232323232323029330733074009330733074008330733074007330733074006330733074005330733074004330733074003330733074002330733074001330739800a50a6103d87a8000a60103d879800041b860ea60ea00260e800260e600260e400260e200260e000260de00260dc00260da00260d06ea80092f5c097ae0980d981898341baa06ea6103d87a8000407114a0832a29410654566002608e003159800992cc004c160c1a0dd5000c4c088cc048c148c1a4dd5009983618349baa0018a514198602e60d06ea800a2b30013302f4912a70726f706f73656420636f6c6c61746572616c206173736574206f757470757420696e636f727265637400330074a0602e60d06ea800a26605e9212a636f6e73756d656420636f6c6c61746572616c206173736574206f757470757420696e636f7272656374009800806cc0c0cc1a80392f5c1301d3306a30303306a3232323232323232323029330733074009330733074008330733074007330733074006330733074005330733074004330733074003330733074002330733074001330733074307500133073302933073305a3071375403697ae04bd70183a000983980098390009838800983800098378009837000983680098341baa0024bd7025eb826036606260d06ea81ba98103d87a8000407114a0832a2941065454cc199241245375636820636f6c6c61746572616c20617373657420616c726561647920657869737473001641948328c198dd519808182818339baa011305030673754003149a2c83222a660ca921283c65787065637465643e204d617820636f6c6c61746572616c206173736574732072656163686564001641911533065491283c65787065637465643e204e6f742072656c6576616e7420636f6c6c61746572616c2061737365740016419060d200316419c60ca6ea80062c8310c0ecc108c190dd5182698321baa00182ea0c282fa0ca306600141913001375860ca60c46ea814e605660c46ea81a298103d8798000410882f88a6002011302b330650094bd704c060cc194c0accc194c06ccc194c198c18cdd500199832982618319baa00d3306530413063375401a660ca605860c66ea8034cc194c07cc18cdd500699832980f18319baa00d3306530153063375401a660ca605a60c66ea8034cc194c04cc18cdd500699832cc00400a98103d87a8000a60103d87980004180660ca00297ae04bd7025eb82602c605860c66ea81a698103d87a8000405d153305f4911e3c65787065637465643e2057726f6e6720696173736574206f757470757400164179153305f491173c65787065637465643e2057726f6e67206961737365740016417860c600316418460be6ea80062c82e0c0d4c0f0c178dd51823982f1baa00182ba0b682c20be3060001417845660026034005132980098079982c8009982ca6103d87a80004bd70660026eb0c168c15cdd50244c080c15cdd502ed300103d879800040dd305a305737540109112cc004c17800a264b30013375e00a60bc60b66ea8c178c16cdd51822182d9baa0018992cc004c138c16cdd5000c4c96600260c200313233009001159800acc004cdc79bae3061305e37540026eb8c184c178dd5002c4cdd79823982f1baa0013047305e375400b14a082da2b300198009bac303c305e375409f3026330600074bd704c04ccc180c098cc180c8c8c8c064cc18cc19000ccc18cc190008cc18cc190004cc18cc0a8c184dd500419831980e98309baa00833063301c30613754010660c6602660c26ea8020cc18cc0acc184dd500419831980898309baa008306530653065306530653065306500130640013063001305e375400297ae04bd704c044c09cc178dd5032530103d87a8000404914a3153305c4912c3c65787065637465643e20436f6c6c61746572616c206173736574206f757470757420696e636f72726563740016416d153305c491263c65787065637465643e20697272656c6576616e7420636f6c6c61746572616c2061737365740016416c60c000316417860b86ea80062c82c8c0c8c0e4c16cdd51822182d9baa00182a20b0305d0028b20b6180f1982c1803182b1baa05c4bd70456600260320051332259800982e000c4c966002609660b06ea80062b30013059375400313259800800c15a264b3001305f0028992cc004c12cc16cdd5000c4c96600260c20031323300c00115980099812a4810c57726f6e6720694173736574003371e6eb8c184c178dd50009bae3061305e3754011133025490117434450206f757470757420697320696e636f72726563740098009bac303c305e375409f3026330603016330603026330603018305e37540c897ae0330604c103d87a80004bd7025eb826026660c0604c660c0602c660c060c260bc6ea8020cc180c11cc178dd500419830181e182f1baa008330603027305e3754010660c0603460bc6ea8020cc1826002946980103d87a8000a60103d8798000416c660c130014a34c0103d87a8000a60103d8798000416c660c0603260bc6ea8020cc180c040c178dd5004198301814182f1baa00833060300e305e375401097ae04bd7025eb826022602060bc6ea8192980103d87a8000404914a082d8c1800062c82f0c170dd5000c590591819181c982d9baa3044305b3754003057417060ba00282da60026eb0c108c164dd50254c0dcc164dd502fd300103d879800040e51641691641586602c60b660b06ea8c16c004dd59809182c1baa0498b20b230593056375400f3001375860b260ac6ea811e602260ac6ea817298103d879800040d9159800980c00144cc896600260b80031325980099baf305c3059375460b860b26ea8c108c164dd500098109982d9809982c9baa05f4bd7044c96600266e1d20103059375400313259800982f800c4cc8966002609e60b86ea8006264b300130620018992cc004c138c178dd5000c4c8c8c8c8c8c8c8c8c8c8ca60026eb8c1b40066eb8c1b402e60da013306d0089836803cc96600260d600315980098151835000c5a260ba60d400283422c8360dd518368034c96600260d600315980098151835000c5a260ba60d400283422c8360dd51836802cc1b40126eb4c1b400e6eb4c1b4009222222222259800983c005c4cc0e4c1dc0504cc0e80204cc0e801c4cc0e80184cc14000c566002660769211643445020696e70757420697320696e636f7272656374005980099b8f375c60ee60e86ea8058dd7183b983a1baa01e899baf305d3074375402c60ba60e86ea807a294107144cc0ed24117434450206f757470757420697320696e636f72726563740098009bac3052307437540cb303c33076302c33076303c33076302e307437540f497ae0330764c103d87a80004bd7025eb826052660ec6078660ec64605a660ee60f0002660ee60f060f2002660ee60a660ea6ea807ccc1dcc0f8c1d4dd500f9983b9818983a9baa01f3307798009833983a1baa30303075375403f4c0103d87a8000a60103d879800041c8660ef3001306730743754604e60ea6ea807e980103d87a8000a60103d879800041c8660ee607e60ea6ea807ccc1dcc094c1d4dd500f9983b9817983a9baa01f3307730243075375403e97ae03074375402c97ae04bd704dd5982e983a1baa305d307437540394c0103d87a800040a114a0838a2c83a860da00260d800260d600260d400260d200260d000260ce00260cc00260ca00260c800260be6ea80062c82e0c1840062c82f8c174dd5000c5905a1bad305e00130323039305b3754608860b66ea800e2c82e0c168dd5000c590571980b982e182c9baa0013756602660b26ea812a2a660ae92011a3c65787065637465643e204d697865642076657273696f6e732e0016415860b600316416460b260ac6ea801e60026eb0c164c158dd5023cc020c158dd502e5300103d879800040d9159800980b80144c8cc07924012176657273696f6e5265636f7264206f757470757420697320696e636f72726563740098009bac303530573754091301f33059300f33059301f33059305a305b305b305b305b305b305b305b305b305b305b305b305737540ba97ae0330594c103d87a80004bd7025eb826018660b2601e660b260b460ae6ea8004cc164dd399198008009bac30413058375400444b30010018a5eb822660b66e9cc8cc170c174004cc170c174c168dd5182e982f000a5eb80dd6182e00099801001182e800a0b44bd7025eb826014604260ae6ea8176980103d87a8000402c60b260ac6ea801e2b300130160028a518a51414c829905320a6414c82988966002608c60ac6ea800a26464646464646464646465300130650019bae306500b9bad306500998328044c19401e60ca00d306500598328024dd69832801cc96600260c600315980098111831000c5a260aa60c400283022c8320dd5183280124444444444b3001307000b899818983780a0998148038998188030998190028998190020998190018992cc004c170006264b30013072001899819983880080c45906f18369baa00b8acc004c17c0062b3001306d37540170178b20dc8b20d441a860d66ea802a2c836860ca00260c800260c600260c400260c200260c000260be00260bc00260ba00260b800260ae6ea800a2c82a105220a43053375400a8a504130460a460a660a660a660a660a660a600314a0825888888c8c8cc00400401c896600200314a1159800992cc004c0100062b30013375e606660aa6ea800401e2b300133229800992cc004c11cc15cdd5000c4dd6982c182d9bab305b30583754003148001055182d000cdd58014dd7982d182d800c8966002609660b06ea8026266e2400400a2b30013371200200513371200466e0000520809bee028a50415882b1222259800801c566002600400d13300100448002294105844c96600266ebd3001014000305b0018acc004cc008014dd6982e182f9bab305c001898019ba630600048a50416515980099801002a4001130030078a50416482c8c17800d05c0dd3003194c0040066eacc0fcc158dd5001488cc168008cc168dd3000a5eb810011112cc00400a26600298103d87a80004bd6f7b63044c8cc896600266e452201000028acc004cdc7a4410000289980218099982e982d801a5eb80006266008980103d87a80000054161198008034006446600c004660be00a00280310581bae3058001305d003305b002416513375e603c60aa6ea800530103d87a80008a50414914a082922941052182b800c528c4cc008008c16000505120aa59800982018281baa004891919baf30563053375460ac60a66ea8008004c154c148dd5002c48c8cdd7982b18299baa00200130553052375400a8270966002942297adef6c6089982799bb03050304d37540026e98cc010dd7181b18269baa001480092f5bded8c0825114a0822914a082122941042452820842304830493049304930490018a504104446464660020020064464b30013375e008608e003130480018998018019826001208a304a001300c330460024bd7011192cc004c0d0006264b3001304a0018998061824800801c5904718229baa0038acc004c0dc006264b3001304a0018998059824800801c5904718229baa0038acc004c09000626464b3001304b0028024590481bae304900130453754007164108821104218219baa0024590370c0d4004c0d0004c0cc004c0c8004c0b4dd5001c5902a06644b300100180145660026056003133029302a001330299800a51a60103d87a8000a60103d8798000409097ae0801205040a026644b300100180145660026056003133029302a001330299800a50a6103d87a8000a60103d8798000409097ae0801205040a02a6604692130457870656374656420476f7620696e7075742065697468657220617320696e707574206f72207265662e20696e707574001698009bac300e3025375402d3028302537540574c0103d87980004015300100c981418129baa02ba60103d8798000401444464b30013018001899192cc004c0bc00a0091640b06eb8c0b4004c0a4dd5001c56600260360031323322598009818000c4cc024dd61817800912cc00400a00f19800804cc0c400a260026064004804902f45902d1bad302d001302e001302937540071640988130c09cdd500122a6603c921283c65787065637465643e20526571756972657320617574686564206578656375746520696e7075740016407444602730010029bae302430213754003375c601460426ea800500311119199119801001000912cc004006007132325980099b910060018acc004cdc7803000c4dd69813001401502344cc010010c0a800d0231bae30240013027001409464646600200200c44b3001001801c4c8c96600266e440200062b30013371e01000313756604e0050054091133004004302b00340906eb8c094004c0a00050260a5eb7bdb1805200080aa03e407c66002006603e60386ea8c07cc070dd50011bab301f30203020302030203020302030203020302000632330010010022259800800c5a264b30013375e6040603a6ea800402e2600c603a6ea8006266006006604200480d0c07c00501d1119802001119baf3020301d37546040603a6ea8c018c074dd50008011bac301c0034590120c040dd50019b87480022c8068601e00260146ea803e29344d95900701"
8492
- };
8493
-
8494
- // src/contracts/execute/scripts.ts
8495
- var mkExecuteValidator = (params) => {
8496
- return {
8497
- type: "PlutusV3",
8498
- script: applySingleCborEncoding(
8499
- applyParamsToScript13(_executeValidator.cborHex, [
8500
- castExecuteParams(params)
8501
- ])
8502
- )
8503
- };
8504
- };
8505
- var mkExecuteValidatorFromSP = (params) => {
8506
- return {
8507
- type: "PlutusV3",
8508
- script: applySingleCborEncoding(
8509
- applyParamsToScript13(_executeValidator.cborHex, [
8510
- castExecuteParams({
8511
- govNFT: fromSystemParamsAssetLucid(params.govNFT),
8512
- upgradeToken: fromSystemParamsAssetLucid(params.upgradeToken),
8513
- iAssetToken: fromSystemParamsAssetLucid(params.iAssetToken),
8514
- collateralAssetToken: fromSystemParamsAssetLucid(
8515
- params.collateralAssetToken
8516
- ),
8517
- stabilityPoolToken: fromSystemParamsAssetLucid(
8518
- params.stabilityPoolToken
8519
- ),
8520
- cdpCreatorToken: fromSystemParamsAssetLucid(params.cdpCreatorToken),
8521
- cdpToken: fromSystemParamsAssetLucid(params.cdpToken),
8522
- versionRecordToken: fromSystemParamsAssetLucid(
8523
- params.versionRecordToken
8524
- ),
8525
- iassetValHash: params.iassetValHash,
8526
- cdpValHash: params.cdpValHash,
8527
- sPoolValHash: params.sPoolValHash,
8528
- versionRegistryValHash: params.versionRegistryValHash,
8529
- treasuryValHash: params.treasuryValHash
8614
+ const oldAccountDatum = parseAccountDatumOrThrow(
8615
+ getInlineDatumOrThrow(accountUtxo)
8616
+ );
8617
+ const tx = lucid.newTx().readFrom([stabilityPoolRefScriptUtxo]).collectFrom([accountUtxo], serialiseStabilityPoolRedeemer("AnnulRequest")).addSignerKey(toHex12(oldAccountDatum.owner));
8618
+ if (oldAccountDatum.request !== "Create") {
8619
+ tx.pay.ToContract(
8620
+ accountUtxo.address,
8621
+ {
8622
+ kind: "inline",
8623
+ value: serialiseStabilityPoolDatum({
8624
+ Account: {
8625
+ ...oldAccountDatum,
8626
+ request: null
8627
+ }
8530
8628
  })
8531
- ])
8532
- )
8533
- };
8534
- };
8535
-
8536
- // src/contracts/price-oracle/types.ts
8537
- import { Data as Data42 } from "@lucid-evolution/lucid";
8538
- var PriceOracleParamsSchema = Data42.Object({
8539
- owner: Data42.Bytes(),
8540
- /** Milliseconds */
8541
- biasTime: Data42.Integer(),
8542
- /** Milliseconds */
8543
- expirationPeriod: Data42.Integer()
8544
- });
8545
- var PriceOracleParams = PriceOracleParamsSchema;
8546
- function castPriceOracleParams(params) {
8547
- return Data42.castTo(params, PriceOracleParams);
8629
+ },
8630
+ mkAssetsOf8(
8631
+ fromSystemParamsAsset(params.stabilityPoolParams.accountToken),
8632
+ 1n
8633
+ )
8634
+ );
8635
+ }
8636
+ return tx;
8548
8637
  }
8549
8638
 
8550
8639
  // src/contracts/rob/helpers.ts
8551
8640
  import {
8552
8641
  addAssets as addAssets12,
8553
8642
  fromHex as fromHex12,
8554
- toHex as toHex12
8643
+ toHex as toHex13
8555
8644
  } from "@lucid-evolution/lucid";
8556
8645
 
8557
8646
  // src/contracts/rob/types-new.ts
@@ -8560,7 +8649,7 @@ import {
8560
8649
  AssetClassSchema as AssetClassSchema7,
8561
8650
  OutputReferenceSchema as OutputReferenceSchema6
8562
8651
  } from "@3rd-eye-labs/cardano-offchain-common";
8563
- import { option as O16, function as F19 } from "fp-ts";
8652
+ import { option as O17, function as F20 } from "fp-ts";
8564
8653
  var RobOrderTypeSchema = TSchema19.Union(
8565
8654
  TSchema19.Struct(
8566
8655
  {
@@ -8616,21 +8705,21 @@ var RobRedeemerSchema = TSchema19.Union(
8616
8705
  );
8617
8706
  function parseRobDatum(datum) {
8618
8707
  try {
8619
- return O16.some(
8708
+ return O17.some(
8620
8709
  Data43.withSchema(RobDatumSchema, DEFAULT_SCHEMA_OPTIONS).fromCBORHex(
8621
8710
  datum
8622
8711
  )
8623
8712
  );
8624
8713
  } catch (_) {
8625
- return O16.none;
8714
+ return O17.none;
8626
8715
  }
8627
8716
  }
8628
8717
  function parseRobDatumOrThrow(datum) {
8629
- return F19.pipe(
8718
+ return F20.pipe(
8630
8719
  parseRobDatum(datum),
8631
- O16.match(() => {
8720
+ O17.match(() => {
8632
8721
  throw new Error("Expected an ROB datum.");
8633
- }, F19.identity)
8722
+ }, F20.identity)
8634
8723
  );
8635
8724
  }
8636
8725
  function serialiseRobDatum(d) {
@@ -8643,30 +8732,30 @@ function serialiseRobRedeemer(r) {
8643
8732
  }
8644
8733
  function parseRobRedeemer(redeemerCborHex) {
8645
8734
  try {
8646
- return O16.some(
8735
+ return O17.some(
8647
8736
  Data43.withSchema(RobRedeemerSchema, DEFAULT_SCHEMA_OPTIONS).fromCBORHex(
8648
8737
  redeemerCborHex
8649
8738
  )
8650
8739
  );
8651
8740
  } catch (_) {
8652
- return O16.none;
8741
+ return O17.none;
8653
8742
  }
8654
8743
  }
8655
8744
  function parseRobRedeemerOrThrow(redeemerCborHex) {
8656
- return F19.pipe(
8745
+ return F20.pipe(
8657
8746
  parseRobRedeemer(redeemerCborHex),
8658
- O16.match(() => {
8747
+ O17.match(() => {
8659
8748
  throw new Error("Expected an ROB redeemer.");
8660
- }, F19.identity)
8749
+ }, F20.identity)
8661
8750
  );
8662
8751
  }
8663
8752
 
8664
8753
  // src/contracts/rob/helpers.ts
8665
8754
  import {
8666
8755
  readonlyArray as RA3,
8667
- array as A10,
8668
- function as F20,
8669
- option as O17,
8756
+ array as A11,
8757
+ function as F21,
8758
+ option as O18,
8670
8759
  ord as Ord4
8671
8760
  } from "fp-ts";
8672
8761
  import { match as match18, P as P18 } from "ts-pattern";
@@ -8799,13 +8888,13 @@ function isFullyRedeemed(robAssets, robOrderType, robIasset) {
8799
8888
  }).exhaustive();
8800
8889
  }
8801
8890
  function buildRedemptionsTx(redemptions, iasset, collateralAsset, price, redemptionReimbursementRatio, sysParams, tx, txOutputsBeforeCount, collateralAssetRefInputIdx, iassetRefInputIdx, oracleIdx) {
8802
- return F20.pipe(
8891
+ return F21.pipe(
8803
8892
  redemptions,
8804
- A10.reduceWithIndex(
8893
+ A11.reduceWithIndex(
8805
8894
  tx,
8806
8895
  (idx, acc, [robUtxo, payoutAmt]) => {
8807
8896
  const robDatum = parseRobDatumOrThrow(getInlineDatumOrThrow(robUtxo));
8808
- if (toHex12(robDatum.iasset) !== toHex12(iasset)) {
8897
+ if (toHex13(robDatum.iasset) !== toHex13(iasset)) {
8809
8898
  throw new Error("Only same iAsset");
8810
8899
  }
8811
8900
  const [robOutputVal, sellOrderAllowedAssetsIdx] = match18(
@@ -8835,12 +8924,12 @@ function buildRedemptionsTx(redemptions, iasset, collateralAsset, price, redempt
8835
8924
  );
8836
8925
  return [resultVal, 0n];
8837
8926
  }).with({ SellIAssetOrder: P18.select() }, (content) => {
8838
- const allowedAssetIdx = F20.pipe(
8927
+ const allowedAssetIdx = F21.pipe(
8839
8928
  content.allowedCollateralAssets,
8840
8929
  RA3.findIndex(
8841
8930
  ([asset, _]) => isSameAssetClass3(asset, collateralAsset)
8842
8931
  ),
8843
- O17.getOrElse(() => {
8932
+ O18.getOrElse(() => {
8844
8933
  throw new Error("Doesn't allow required collateral asset.");
8845
8934
  })
8846
8935
  );
@@ -8901,26 +8990,26 @@ function buildRedemptionsTx(redemptions, iasset, collateralAsset, price, redempt
8901
8990
  );
8902
8991
  }
8903
8992
  function calculateTotalCollateralForRedemption(iasset, collateralAsset, iassetPrice, allRobs, maxRobsInTx) {
8904
- return F20.pipe(
8993
+ return F21.pipe(
8905
8994
  allRobs,
8906
- A10.filterMap(([utxo, datum]) => {
8995
+ A11.filterMap(([utxo, datum]) => {
8907
8996
  const isCorrectOrder = match18(datum.orderType).returnType().with(
8908
8997
  { BuyIAssetOrder: P18.select() },
8909
8998
  (content) => isSameAssetClass3(content.collateralAsset, collateralAsset) && rationalToFloat(content.maxPrice) >= rationalToFloat(iassetPrice) && !isBuyOrderFullyRedeemed(utxo.assets, datum.orderType, iassetPrice)
8910
8999
  ).otherwise(() => false);
8911
- if (toHex12(datum.iasset) !== toHex12(iasset) || !isCorrectOrder) {
8912
- return O17.none;
9000
+ if (toHex13(datum.iasset) !== toHex13(iasset) || !isCorrectOrder) {
9001
+ return O18.none;
8913
9002
  }
8914
9003
  const collateralToSpend = robCollateralAmtToSpend(
8915
9004
  utxo.assets,
8916
9005
  datum.orderType
8917
9006
  );
8918
- return O17.some(collateralToSpend);
9007
+ return O18.some(collateralToSpend);
8919
9008
  }),
8920
9009
  // From largest to smallest
8921
- A10.sort(Ord4.reverse(BigIntOrd)),
9010
+ A11.sort(Ord4.reverse(BigIntOrd)),
8922
9011
  // We can fit only this number of redemptions with CDP open into a single Tx.
8923
- A10.takeLeft(maxRobsInTx),
9012
+ A11.takeLeft(maxRobsInTx),
8924
9013
  sum
8925
9014
  );
8926
9015
  }
@@ -8929,10 +9018,10 @@ function randomRobsSubsetSatisfyingTargetCollateral(iasset, collateralAsset, tar
8929
9018
  throw new Error("Must redeem and payout more than 0.");
8930
9019
  }
8931
9020
  const shuffled = randomiseFn(
8932
- F20.pipe(
9021
+ F21.pipe(
8933
9022
  allLrps,
8934
- A10.filter(
8935
- ([utxo, datum]) => toHex12(datum.iasset) === toHex12(iasset) && match18(datum.orderType).with(
9023
+ A11.filter(
9024
+ ([utxo, datum]) => toHex13(datum.iasset) === toHex13(iasset) && match18(datum.orderType).with(
8936
9025
  { BuyIAssetOrder: P18.select() },
8937
9026
  (content) => isSameAssetClass3(collateralAsset, content.collateralAsset) && rationalToFloat(content.maxPrice) >= rationalToFloat(iassetPrice)
8938
9027
  ).otherwise(() => false) && !isBuyOrderFullyRedeemed(utxo.assets, datum.orderType, iassetPrice)
@@ -9011,15 +9100,15 @@ function castRobParams(params) {
9011
9100
  import {
9012
9101
  addAssets as addAssets13,
9013
9102
  fromHex as fromHex13,
9014
- toHex as toHex13,
9103
+ toHex as toHex14,
9015
9104
  fromText as fromText9,
9016
9105
  getInputIndices as getInputIndices4
9017
9106
  } from "@lucid-evolution/lucid";
9018
9107
  import {
9019
9108
  readonlyArray as RA4,
9020
- array as A11,
9021
- function as F21,
9022
- option as O18
9109
+ array as A12,
9110
+ function as F22,
9111
+ option as O19
9023
9112
  } from "fp-ts";
9024
9113
  import { unzip, zip } from "fp-ts/lib/Array";
9025
9114
  import {
@@ -9085,7 +9174,7 @@ async function cancelRob(robOutRef, sysParams, lucid) {
9085
9174
  (_) => new Error("Expected a single ROB UTXO.")
9086
9175
  );
9087
9176
  const robDatum = parseRobDatumOrThrow(getInlineDatumOrThrow(robUtxo));
9088
- return lucid.newTx().readFrom([robScriptRefUtxo]).collectFrom([robUtxo], serialiseRobRedeemer("Cancel")).addSignerKey(toHex13(robDatum.owner));
9177
+ return lucid.newTx().readFrom([robScriptRefUtxo]).collectFrom([robUtxo], serialiseRobRedeemer("Cancel")).addSignerKey(toHex14(robDatum.owner));
9089
9178
  }
9090
9179
  async function redeemRob(redemptionRobsData, priceOracleOutRef, iassetOutRef, collateralAssetOutRef, lucid, sysParams, currentSlot, pythMessage = void 0, pythStateOutRef = void 0) {
9091
9180
  const robScriptRefUtxo = matchSingle(
@@ -9196,7 +9285,7 @@ async function adjustRob(lucid, robOutRef, adjustmentAmt, newLimitPrice, sysPara
9196
9285
  const reward = assetClassValueOf10(robUtxo.assets, iassetAc);
9197
9286
  return [buyContent.collateralAsset, mkAssetsOf10(iassetAc, reward)];
9198
9287
  }).with({ SellIAssetOrder: P19.select() }, (content) => {
9199
- const reward = F21.pipe(
9288
+ const reward = F22.pipe(
9200
9289
  content.allowedCollateralAssets,
9201
9290
  RA4.reduce(
9202
9291
  {},
@@ -9236,12 +9325,12 @@ async function adjustRob(lucid, robOutRef, adjustmentAmt, newLimitPrice, sysPara
9236
9325
  return {
9237
9326
  SellIAssetOrder: {
9238
9327
  allowedCollateralAssets: content.allowedCollateralAssets.map(
9239
- (entry) => F21.pipe(
9328
+ (entry) => F22.pipe(
9240
9329
  newPrices,
9241
- A11.findFirst(
9330
+ A12.findFirst(
9242
9331
  (newPrice) => isSameAssetClass4(newPrice[0], entry[0])
9243
9332
  ),
9244
- O18.match(
9333
+ O19.match(
9245
9334
  () => entry,
9246
9335
  (newPrice) => [
9247
9336
  entry[0],
@@ -9260,7 +9349,7 @@ async function adjustRob(lucid, robOutRef, adjustmentAmt, newLimitPrice, sysPara
9260
9349
  mkAssetsOf10(depositAsset, adjustmentAmt),
9261
9350
  negateAssets5(rewardVal)
9262
9351
  )
9263
- ).addSignerKey(toHex13(robDatum.owner));
9352
+ ).addSignerKey(toHex14(robDatum.owner));
9264
9353
  }
9265
9354
  async function claimRob(lucid, robOutRef, sysParams) {
9266
9355
  return adjustRob(lucid, robOutRef, 0n, void 0, sysParams);
@@ -9312,7 +9401,7 @@ import {
9312
9401
  } from "@lucid-evolution/lucid";
9313
9402
 
9314
9403
  // src/contracts/rob-leverage/helpers.ts
9315
- import { array as A12, function as F22 } from "fp-ts";
9404
+ import { array as A13, function as F23 } from "fp-ts";
9316
9405
  import { Decimal as Decimal2 } from "decimal.js";
9317
9406
  var MAX_REDEMPTIONS_WITH_CDP_OPEN = 4;
9318
9407
  function approximateLeverageRedemptions(baseCollateral, targetLeverage, redemptionReimbursementRatio, debtMintingFeeRatio) {
@@ -9338,9 +9427,9 @@ function approximateLeverageRedemptions(baseCollateral, targetLeverage, redempti
9338
9427
  };
9339
9428
  }
9340
9429
  function summarizeActualLeverageRedemptions(lovelacesForRedemptionWithReimbursement, redemptionReimbursementRatio, iassetPrice, redemptionLrps) {
9341
- const redemptionDetails = F22.pipe(
9430
+ const redemptionDetails = F23.pipe(
9342
9431
  redemptionLrps,
9343
- A12.reduce(
9432
+ A13.reduce(
9344
9433
  {
9345
9434
  remainingCollateralToSpend: lovelacesForRedemptionWithReimbursement,
9346
9435
  redemptions: []
@@ -9394,9 +9483,9 @@ function summarizeActualLeverageRedemptions(lovelacesForRedemptionWithReimbursem
9394
9483
  }
9395
9484
  )
9396
9485
  );
9397
- const res = F22.pipe(
9486
+ const res = F23.pipe(
9398
9487
  redemptionDetails.redemptions,
9399
- A12.reduce(
9488
+ A13.reduce(
9400
9489
  {
9401
9490
  redeemedCollateral: 0n,
9402
9491
  payoutIAssets: 0n,
@@ -9867,7 +9956,7 @@ import {
9867
9956
  validatorToScriptHash as validatorToScriptHash3
9868
9957
  } from "@lucid-evolution/lucid";
9869
9958
  import {
9870
- assetClassToUnit as assetClassToUnit5,
9959
+ assetClassToUnit as assetClassToUnit6,
9871
9960
  assetClassValueOf as assetClassValueOf11,
9872
9961
  lovelacesAmt as lovelacesAmt4,
9873
9962
  mkAssetsOf as mkAssetsOf13,
@@ -9878,7 +9967,7 @@ import {
9878
9967
  import {
9879
9968
  applyParamsToScript as applyParamsToScript16,
9880
9969
  Constr as Constr3,
9881
- toHex as toHex14
9970
+ toHex as toHex15
9882
9971
  } from "@lucid-evolution/lucid";
9883
9972
  var authPolicyData = {
9884
9973
  type: "PlutusV2",
@@ -9888,7 +9977,7 @@ function mkAuthTokenPolicy(ac, tn) {
9888
9977
  return {
9889
9978
  type: authPolicyData.type,
9890
9979
  script: applyParamsToScript16(authPolicyData.cborHex, [
9891
- new Constr3(0, [toHex14(ac.currencySymbol), toHex14(ac.tokenName)]),
9980
+ new Constr3(0, [toHex15(ac.currencySymbol), toHex15(ac.tokenName)]),
9892
9981
  tn
9893
9982
  ])
9894
9983
  };
@@ -9932,7 +10021,7 @@ var mkIAssetValidatorFromSP = (params) => {
9932
10021
  import { match as match20 } from "ts-pattern";
9933
10022
 
9934
10023
  // tests/test-helpers.ts
9935
- import { array as A13, function as F23, option as O19 } from "fp-ts";
10024
+ import { array as A14, function as F24, option as O20 } from "fp-ts";
9936
10025
  async function runAndAwaitTxBuilder(lucid, transaction, extraSigners = []) {
9937
10026
  const bTx = await transaction.complete();
9938
10027
  const signatures = [await bTx.partialSign.withWallet()];
@@ -10316,7 +10405,7 @@ async function mintAuthTokenDirect(lucid, asset, tokenName, amount) {
10316
10405
  const script = mkAuthTokenPolicy(asset, fromText11(tokenName));
10317
10406
  const policyId = mintingPolicyToId2(script);
10318
10407
  const address = await lucid.wallet().address();
10319
- const utxos = (await lucid.utxosAtWithUnit(address, assetClassToUnit5(asset))).filter((utxo2) => assetClassValueOf11(utxo2.assets, asset) === 1n).sort((a, b) => Number(lovelacesAmt4(b.assets) - lovelacesAmt4(a.assets)));
10408
+ const utxos = (await lucid.utxosAtWithUnit(address, assetClassToUnit6(asset))).filter((utxo2) => assetClassValueOf11(utxo2.assets, asset) === 1n).sort((a, b) => Number(lovelacesAmt4(b.assets) - lovelacesAmt4(a.assets)));
10320
10409
  if (utxos.length === 0) {
10321
10410
  throw new Error("No utxos found");
10322
10411
  }
@@ -10338,7 +10427,7 @@ import {
10338
10427
  fromText as fromText13,
10339
10428
  mintingPolicyToId as mintingPolicyToId3,
10340
10429
  scriptHashToCredential as scriptHashToCredential4,
10341
- toHex as toHex16,
10430
+ toHex as toHex17,
10342
10431
  validatorToScriptHash as validatorToScriptHash5
10343
10432
  } from "@lucid-evolution/lucid";
10344
10433
  import {
@@ -10350,7 +10439,7 @@ import {
10350
10439
  import {
10351
10440
  applyParamsToScript as applyParamsToScript18,
10352
10441
  Constr as Constr4,
10353
- toHex as toHex15
10442
+ toHex as toHex16
10354
10443
  } from "@lucid-evolution/lucid";
10355
10444
  var iassetPolicyData = {
10356
10445
  type: "PlutusV2",
@@ -10360,7 +10449,7 @@ function mkIAssetTokenPolicy(ac) {
10360
10449
  return {
10361
10450
  type: iassetPolicyData.type,
10362
10451
  script: applyParamsToScript18(iassetPolicyData.cborHex, [
10363
- new Constr4(0, [toHex15(ac.currencySymbol), toHex15(ac.tokenName)])
10452
+ new Constr4(0, [toHex16(ac.currencySymbol), toHex16(ac.tokenName)])
10364
10453
  ])
10365
10454
  };
10366
10455
  }
@@ -10566,7 +10655,7 @@ async function initPythConfig(lucid, initialAssets, pythStateAsset) {
10566
10655
  throw error;
10567
10656
  }
10568
10657
  }
10569
- const key = `${asset.name}/${toHex16(collateral.collateralAsset.currencySymbol)}.${toHex16(collateral.collateralAsset.tokenName)}`;
10658
+ const key = `${asset.name}/${toHex17(collateral.collateralAsset.currencySymbol)}.${toHex17(collateral.collateralAsset.tokenName)}`;
10570
10659
  return {
10571
10660
  [key]: {
10572
10661
  params: val.pythFeedParams,
@@ -10618,8 +10707,8 @@ async function init(lucid, defaultInitialAssets, currentSlot, mkPythBasedAssets
10618
10707
  };
10619
10708
  const versionRecordTokenPolicy = mkVersionRecordTokenPolicy({
10620
10709
  upgradeToken: {
10621
- currencySymbol: toHex16(upgradeToken.currencySymbol),
10622
- tokenName: toHex16(upgradeToken.tokenName)
10710
+ currencySymbol: toHex17(upgradeToken.currencySymbol),
10711
+ tokenName: toHex17(upgradeToken.tokenName)
10623
10712
  }
10624
10713
  });
10625
10714
  const versionRecordToken = {
@@ -11133,39 +11222,39 @@ async function init(lucid, defaultInitialAssets, currentSlot, mkPythBasedAssets
11133
11222
  }
11134
11223
 
11135
11224
  // src/contracts/iasset/queries.ts
11136
- import { toHex as toHex17 } from "@lucid-evolution/lucid";
11225
+ import { toHex as toHex18 } from "@lucid-evolution/lucid";
11137
11226
  import {
11138
- assetClassToUnit as assetClassToUnit6,
11227
+ assetClassToUnit as assetClassToUnit7,
11139
11228
  isSameAssetClass as isSameAssetClass5,
11140
- matchSingle as matchSingle5
11229
+ matchSingle as matchSingle6
11141
11230
  } from "@3rd-eye-labs/cardano-offchain-common";
11142
- import { option as O20, array as A14, function as F24 } from "fp-ts";
11231
+ import { option as O21, array as A15, function as F25 } from "fp-ts";
11143
11232
  async function findIAsset(lucid, sysParams, iassetName) {
11144
11233
  const iassetUtxos = await lucid.utxosAtWithUnit(
11145
11234
  createScriptAddress(
11146
11235
  lucid.config().network,
11147
11236
  sysParams.validatorHashes.iassetHash
11148
11237
  ),
11149
- assetClassToUnit6(
11238
+ assetClassToUnit7(
11150
11239
  fromSystemParamsAsset(sysParams.cdpParams.iAssetAuthToken)
11151
11240
  )
11152
11241
  );
11153
- return matchSingle5(
11154
- F24.pipe(
11242
+ return matchSingle6(
11243
+ F25.pipe(
11155
11244
  iassetUtxos.map(
11156
- (utxo) => F24.pipe(
11157
- O20.fromNullable(utxo.datum),
11158
- O20.flatMap(parseIAssetDatum),
11159
- O20.flatMap((datum) => {
11160
- if (toHex17(datum.assetName) === toHex17(iassetName)) {
11161
- return O20.some({ utxo, datum });
11245
+ (utxo) => F25.pipe(
11246
+ O21.fromNullable(utxo.datum),
11247
+ O21.flatMap(parseIAssetDatum),
11248
+ O21.flatMap((datum) => {
11249
+ if (toHex18(datum.assetName) === toHex18(iassetName)) {
11250
+ return O21.some({ utxo, datum });
11162
11251
  } else {
11163
- return O20.none;
11252
+ return O21.none;
11164
11253
  }
11165
11254
  })
11166
11255
  )
11167
11256
  ),
11168
- A14.compact
11257
+ A15.compact
11169
11258
  ),
11170
11259
  (res) => new Error("Expected a single IAsset UTXO.: " + JSON.stringify(res))
11171
11260
  );
@@ -11176,26 +11265,26 @@ async function findCollateralAsset(lucid, sysParams, iassetName, collateralAsset
11176
11265
  lucid.config().network,
11177
11266
  sysParams.validatorHashes.iassetHash
11178
11267
  ),
11179
- assetClassToUnit6(
11268
+ assetClassToUnit7(
11180
11269
  fromSystemParamsAsset(sysParams.cdpParams.collateralAssetAuthToken)
11181
11270
  )
11182
11271
  );
11183
- return matchSingle5(
11184
- F24.pipe(
11272
+ return matchSingle6(
11273
+ F25.pipe(
11185
11274
  collateralAssetUtxos.map(
11186
- (utxo) => F24.pipe(
11187
- O20.fromNullable(utxo.datum),
11188
- O20.flatMap(parseCollateralAssetDatum),
11189
- O20.flatMap((datum) => {
11190
- if (isSameAssetClass5(datum.collateralAsset, collateralAsset) && toHex17(iassetName) === toHex17(datum.iasset)) {
11191
- return O20.some({ utxo, datum });
11275
+ (utxo) => F25.pipe(
11276
+ O21.fromNullable(utxo.datum),
11277
+ O21.flatMap(parseCollateralAssetDatum),
11278
+ O21.flatMap((datum) => {
11279
+ if (isSameAssetClass5(datum.collateralAsset, collateralAsset) && toHex18(iassetName) === toHex18(datum.iasset)) {
11280
+ return O21.some({ utxo, datum });
11192
11281
  } else {
11193
- return O20.none;
11282
+ return O21.none;
11194
11283
  }
11195
11284
  })
11196
11285
  )
11197
11286
  ),
11198
- A14.compact
11287
+ A15.compact
11199
11288
  ),
11200
11289
  (res) => new Error(
11201
11290
  "Expected a single Collateral Asset UTXO.: " + JSON.stringify(res)
@@ -11213,7 +11302,7 @@ import {
11213
11302
  OutputReferenceSchema as OutputReferenceSchema7
11214
11303
  } from "@3rd-eye-labs/cardano-offchain-common";
11215
11304
  import { TSchema as TSchema20, Data as Data51 } from "@evolution-sdk/evolution";
11216
- import { option as O21, function as F25 } from "fp-ts";
11305
+ import { option as O22, function as F26 } from "fp-ts";
11217
11306
  import { Schema as Schema4 } from "effect";
11218
11307
  var OpaqueData4 = Schema4.typeSchema(Data51.DataSchema);
11219
11308
  var StableswapOrderDatumSchema = TSchema20.Struct({
@@ -11255,22 +11344,22 @@ function serialiseStableswapOrderDatum(d) {
11255
11344
  }
11256
11345
  function parseStableswapOrderDatum(datum) {
11257
11346
  try {
11258
- return O21.some(
11347
+ return O22.some(
11259
11348
  Data51.withSchema(
11260
11349
  StableswapOrderDatumSchema,
11261
11350
  DEFAULT_SCHEMA_OPTIONS
11262
11351
  ).fromCBORHex(datum)
11263
11352
  );
11264
11353
  } catch (_) {
11265
- return O21.none;
11354
+ return O22.none;
11266
11355
  }
11267
11356
  }
11268
11357
  function parseStableswapOrderDatumOrThrow(datum) {
11269
- return F25.pipe(
11358
+ return F26.pipe(
11270
11359
  parseStableswapOrderDatum(datum),
11271
- O21.match(() => {
11360
+ O22.match(() => {
11272
11361
  throw new Error("Expected a Stableswap Order datum.");
11273
- }, F25.identity)
11362
+ }, F26.identity)
11274
11363
  );
11275
11364
  }
11276
11365
  function serialiseStableswapOutputDatum(d) {
@@ -11287,22 +11376,22 @@ function serialiseStableswapOrderRedeemer(r) {
11287
11376
  }
11288
11377
  function parseStableswapOrderRedeemer(redeemerCborHex) {
11289
11378
  try {
11290
- return O21.some(
11379
+ return O22.some(
11291
11380
  Data51.withSchema(
11292
11381
  StableswapOrderRedeemerSchema,
11293
11382
  DEFAULT_SCHEMA_OPTIONS
11294
11383
  ).fromCBORHex(redeemerCborHex)
11295
11384
  );
11296
11385
  } catch (_) {
11297
- return O21.none;
11386
+ return O22.none;
11298
11387
  }
11299
11388
  }
11300
11389
  function parseStableswapOrderRedeemerOrThrow(redeemerCborHex) {
11301
- return F25.pipe(
11390
+ return F26.pipe(
11302
11391
  parseStableswapOrderRedeemer(redeemerCborHex),
11303
- O21.match(() => {
11392
+ O22.match(() => {
11304
11393
  throw new Error("Expected a Stableswap Order redeemer.");
11305
- }, F25.identity)
11394
+ }, F26.identity)
11306
11395
  );
11307
11396
  }
11308
11397
 
@@ -11331,20 +11420,20 @@ import {
11331
11420
  fromText as fromText15,
11332
11421
  paymentCredentialOf as paymentCredentialOf3,
11333
11422
  sortUTxOs as sortUTxOs2,
11334
- toHex as toHex18
11423
+ toHex as toHex19
11335
11424
  } from "@lucid-evolution/lucid";
11336
11425
  import {
11337
11426
  addressFromBech32 as addressFromBech323,
11338
11427
  addressToBech32 as addressToBech323,
11339
11428
  getInlineDatumOrThrow as getInlineDatumOrThrow6,
11340
- matchSingle as matchSingle6,
11429
+ matchSingle as matchSingle7,
11341
11430
  mkAssetsOf as mkAssetsOf16,
11342
11431
  mkLovelacesOf as mkLovelacesOf9,
11343
11432
  lovelacesAmt as lovelacesAmt5,
11344
11433
  isSameOutRef as isSameOutRef2,
11345
11434
  assetClassValueOf as assetClassValueOf12
11346
11435
  } from "@3rd-eye-labs/cardano-offchain-common";
11347
- import { array as A15, function as F26 } from "fp-ts";
11436
+ import { array as A16, function as F27 } from "fp-ts";
11348
11437
  import { isEmpty } from "fp-ts/lib/Array";
11349
11438
  async function createStableswapOrder(iasset, collateralAsset, amount, minting, poolDatum, params, lucid, destinationAddress, destinationInlineDatum, maxExecutionFee = BASE_MAX_EXECUTION_FEE, additionalLovelaces = 0n, maxFeeRatio) {
11350
11439
  const myAddress = await lucid.wallet().address();
@@ -11398,7 +11487,7 @@ async function createStableswapOrder(iasset, collateralAsset, amount, minting, p
11398
11487
  );
11399
11488
  }
11400
11489
  async function cancelStableswapOrder(stableswapOrderOref, sysParams, lucid) {
11401
- const stableswapScriptRefUtxo = matchSingle6(
11490
+ const stableswapScriptRefUtxo = matchSingle7(
11402
11491
  await lucid.utxosByOutRef([
11403
11492
  fromSystemParamsScriptRef(
11404
11493
  sysParams.scriptReferences.stableswapValidatorRef
@@ -11406,7 +11495,7 @@ async function cancelStableswapOrder(stableswapOrderOref, sysParams, lucid) {
11406
11495
  ]),
11407
11496
  (_) => new Error("Expected a single Stableswap Ref Script UTXO")
11408
11497
  );
11409
- const stableswapOrderUtxo = matchSingle6(
11498
+ const stableswapOrderUtxo = matchSingle7(
11410
11499
  await lucid.utxosByOutRef([stableswapOrderOref]),
11411
11500
  (_) => new Error("Expected a single Stableswap Order UTXO.")
11412
11501
  );
@@ -11416,10 +11505,10 @@ async function cancelStableswapOrder(stableswapOrderOref, sysParams, lucid) {
11416
11505
  return lucid.newTx().readFrom([stableswapScriptRefUtxo]).collectFrom(
11417
11506
  [stableswapOrderUtxo],
11418
11507
  serialiseStableswapOrderRedeemer("CancelStableswapOrder")
11419
- ).addSignerKey(toHex18(stableswapOrderDatum.owner));
11508
+ ).addSignerKey(toHex19(stableswapOrderDatum.owner));
11420
11509
  }
11421
11510
  async function batchProcessStableswapOrders(stableswapOrderOrefs, stableswapPoolOref, treasuryOref, sysParams, lucid) {
11422
- const stableswapScriptRefUtxo = matchSingle6(
11511
+ const stableswapScriptRefUtxo = matchSingle7(
11423
11512
  await lucid.utxosByOutRef([
11424
11513
  fromSystemParamsScriptRef(
11425
11514
  sysParams.scriptReferences.stableswapValidatorRef
@@ -11427,13 +11516,13 @@ async function batchProcessStableswapOrders(stableswapOrderOrefs, stableswapPool
11427
11516
  ]),
11428
11517
  (_) => new Error("Expected a single Stableswap Ref Script UTXO")
11429
11518
  );
11430
- const cdpScriptRefUtxo = matchSingle6(
11519
+ const cdpScriptRefUtxo = matchSingle7(
11431
11520
  await lucid.utxosByOutRef([
11432
11521
  fromSystemParamsScriptRef(sysParams.scriptReferences.cdpValidatorRef)
11433
11522
  ]),
11434
11523
  (_) => new Error("Expected a single CDP Ref Script UTXO")
11435
11524
  );
11436
- const iAssetTokenPolicyRefScriptUtxo = matchSingle6(
11525
+ const iAssetTokenPolicyRefScriptUtxo = matchSingle7(
11437
11526
  await lucid.utxosByOutRef([
11438
11527
  fromSystemParamsScriptRef(
11439
11528
  sysParams.scriptReferences.iAssetTokenPolicyRef
@@ -11463,7 +11552,7 @@ async function batchProcessStableswapOrders(stableswapOrderOrefs, stableswapPool
11463
11552
  tokenName: mainOrderDatum.iasset
11464
11553
  };
11465
11554
  const collateralAc = mainOrderDatum.collateralAsset;
11466
- const stableswapPoolUtxo = matchSingle6(
11555
+ const stableswapPoolUtxo = matchSingle7(
11467
11556
  await lucid.utxosByOutRef([stableswapPoolOref]),
11468
11557
  (_) => new Error("Expected a single cdp UTXO")
11469
11558
  );
@@ -11475,7 +11564,7 @@ async function batchProcessStableswapOrders(stableswapOrderOrefs, stableswapPool
11475
11564
  const orderDatum = parseStableswapOrderDatumOrThrow(
11476
11565
  getInlineDatumOrThrow6(orderUtxo)
11477
11566
  );
11478
- if (toHex18(orderDatum.iasset) != toHex18(mainOrderDatum.iasset) || toHex18(orderDatum.collateralAsset.currencySymbol) != toHex18(mainOrderDatum.collateralAsset.currencySymbol) || toHex18(orderDatum.collateralAsset.tokenName) != toHex18(mainOrderDatum.collateralAsset.tokenName)) {
11567
+ if (toHex19(orderDatum.iasset) != toHex19(mainOrderDatum.iasset) || toHex19(orderDatum.collateralAsset.currencySymbol) != toHex19(mainOrderDatum.collateralAsset.currencySymbol) || toHex19(orderDatum.collateralAsset.tokenName) != toHex19(mainOrderDatum.collateralAsset.tokenName)) {
11479
11568
  throw new Error("Wrong batch of orders");
11480
11569
  }
11481
11570
  const suppliedIasset = assetClassValueOf12(orderUtxo.assets, iassetAc);
@@ -11603,9 +11692,9 @@ async function batchProcessStableswapOrders(stableswapOrderOrefs, stableswapPool
11603
11692
  }
11604
11693
  }
11605
11694
  );
11606
- const totalSwapInfo = F26.pipe(
11695
+ const totalSwapInfo = F27.pipe(
11607
11696
  ordersInfo,
11608
- A15.reduce(
11697
+ A16.reduce(
11609
11698
  {
11610
11699
  suppliedCollateralAsset: 0n,
11611
11700
  suppliedIasset: 0n,
@@ -11655,9 +11744,9 @@ async function batchProcessStableswapOrders(stableswapOrderOrefs, stableswapPool
11655
11744
  if (amountToMint !== 0n) {
11656
11745
  tx.mintAssets(mkAssetsOf16(iassetAc, amountToMint), Data53.void());
11657
11746
  }
11658
- F26.pipe(
11747
+ F27.pipe(
11659
11748
  ordersInfo,
11660
- A15.reduce(tx, (acc, orderInfo) => {
11749
+ A16.reduce(tx, (acc, orderInfo) => {
11661
11750
  return acc.collectFrom(
11662
11751
  [orderInfo.utxo],
11663
11752
  isSameOutRef2(orderInfo.utxo, mainOrderUtxo) ? serialiseStableswapOrderRedeemer("BatchProcessStableswapOrders") : {
@@ -11710,7 +11799,7 @@ async function batchProcessStableswapOrders(stableswapOrderOrefs, stableswapPool
11710
11799
  return tx;
11711
11800
  }
11712
11801
  async function updateStableswapPoolFees(stableswapPoolOutRef, stableswapFeeOutRef, newMintingFeeRatio, newRedemptionFeeRatio, sysParams, lucid) {
11713
- const stableswapScriptRefUtxo = matchSingle6(
11802
+ const stableswapScriptRefUtxo = matchSingle7(
11714
11803
  await lucid.utxosByOutRef([
11715
11804
  fromSystemParamsScriptRef(
11716
11805
  sysParams.scriptReferences.stableswapValidatorRef
@@ -11718,17 +11807,17 @@ async function updateStableswapPoolFees(stableswapPoolOutRef, stableswapFeeOutRe
11718
11807
  ]),
11719
11808
  (_) => new Error("Expected a single Stableswap Ref Script UTXO")
11720
11809
  );
11721
- const cdpScriptRefUtxo = matchSingle6(
11810
+ const cdpScriptRefUtxo = matchSingle7(
11722
11811
  await lucid.utxosByOutRef([
11723
11812
  fromSystemParamsScriptRef(sysParams.scriptReferences.cdpValidatorRef)
11724
11813
  ]),
11725
11814
  (_) => new Error("Expected a single CDP Ref Script UTXO")
11726
11815
  );
11727
- const stableswapPool = matchSingle6(
11816
+ const stableswapPool = matchSingle7(
11728
11817
  await lucid.utxosByOutRef([stableswapPoolOutRef]),
11729
11818
  (_) => new Error("Expected a single Stableswap Pool UTXO.")
11730
11819
  );
11731
- const stableswapFeeUtxo = matchSingle6(
11820
+ const stableswapFeeUtxo = matchSingle7(
11732
11821
  await lucid.utxosByOutRef([stableswapFeeOutRef]),
11733
11822
  (_) => new Error("Expected a single Stableswap Fee UTXO.")
11734
11823
  );
@@ -11761,7 +11850,7 @@ async function updateStableswapPoolFees(stableswapPoolOutRef, stableswapFeeOutRe
11761
11850
  value: serialiseStableswapPoolDatum(newStableswapPoolDatum)
11762
11851
  },
11763
11852
  stableswapPool.assets
11764
- ).addSignerKey(toHex18(stableswapPoolDatum.feeManager)).setMinFee(1038402n);
11853
+ ).addSignerKey(toHex19(stableswapPoolDatum.feeManager)).setMinFee(1038402n);
11765
11854
  }
11766
11855
  export {
11767
11856
  AccountContentSchema,
@@ -11901,6 +11990,7 @@ export {
11901
11990
  findAllTreasuryUtxos,
11902
11991
  findAllTreasuryUtxosWithNonAdaAsset,
11903
11992
  findCollateralAsset,
11993
+ findE2s2sSnapshots,
11904
11994
  findIAsset,
11905
11995
  findRandomCdpCreator,
11906
11996
  findRandomNonAdminInterestCollector,
@@ -11908,6 +11998,8 @@ export {
11908
11998
  findRandomTreasuryUtxoWithAsset,
11909
11999
  findRandomTreasuryUtxoWithOnlyAda,
11910
12000
  findRelevantE2s2sIdxs,
12001
+ findStabilityPool,
12002
+ findStabilityPoolAccount,
11911
12003
  findStakingManager,
11912
12004
  findStakingManagerByOutRef,
11913
12005
  findStakingPositionByOutRef,