@indigo-labs/indigo-sdk 0.1.27 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/.github/workflows/ci.yml +8 -3
  2. package/dist/index.d.mts +1300 -671
  3. package/dist/index.d.ts +1300 -671
  4. package/dist/index.js +4663 -2214
  5. package/dist/index.mjs +4594 -2184
  6. package/eslint.config.mjs +7 -1
  7. package/package.json +9 -4
  8. package/src/contracts/cdp/helpers.ts +167 -0
  9. package/src/contracts/cdp/scripts.ts +33 -0
  10. package/src/contracts/cdp/transactions.ts +1310 -0
  11. package/src/contracts/cdp/types.ts +161 -0
  12. package/src/contracts/cdp-creator/scripts.ts +39 -0
  13. package/src/{types/indigo/cdp-creator.ts → contracts/cdp-creator/types.ts} +6 -4
  14. package/src/contracts/collector/scripts.ts +32 -0
  15. package/src/contracts/collector/transactions.ts +44 -0
  16. package/src/contracts/execute/scripts.ts +48 -0
  17. package/src/contracts/execute/types.ts +57 -0
  18. package/src/contracts/gov/helpers.ts +157 -0
  19. package/src/contracts/gov/scripts.ts +34 -0
  20. package/src/contracts/gov/transactions.ts +1224 -0
  21. package/src/contracts/gov/types-new.ts +115 -0
  22. package/src/contracts/gov/types.ts +89 -0
  23. package/src/{helpers/interest-oracle.ts → contracts/interest-oracle/helpers.ts} +37 -9
  24. package/src/contracts/interest-oracle/scripts.ts +18 -0
  25. package/src/contracts/interest-oracle/transactions.ts +149 -0
  26. package/src/{types/indigo/interest-oracle.ts → contracts/interest-oracle/types.ts} +1 -1
  27. package/src/contracts/lrp/scripts.ts +27 -0
  28. package/src/contracts/{lrp.ts → lrp/transactions.ts} +14 -14
  29. package/src/{types/indigo/lrp.ts → contracts/lrp/types.ts} +2 -2
  30. package/src/{scripts/one-shot-policy.ts → contracts/one-shot/scripts.ts} +1 -1
  31. package/src/contracts/{one-shot.ts → one-shot/transactions.ts} +3 -3
  32. package/src/contracts/poll/helpers.ts +55 -0
  33. package/src/contracts/poll/scripts.ts +72 -0
  34. package/src/contracts/poll/types-poll-manager.ts +38 -0
  35. package/src/contracts/poll/types-poll-shard.ts +38 -0
  36. package/src/contracts/poll/types-poll.ts +88 -0
  37. package/src/{scripts/price-oracle-validator.ts → contracts/price-oracle/scripts.ts} +1 -4
  38. package/src/contracts/price-oracle/transactions.ts +112 -0
  39. package/src/{types/indigo/price-oracle.ts → contracts/price-oracle/types.ts} +16 -4
  40. package/src/{helpers/stability-pool-helpers.ts → contracts/stability-pool/helpers.ts} +110 -6
  41. package/src/contracts/stability-pool/scripts.ts +46 -0
  42. package/src/contracts/stability-pool/transactions.ts +676 -0
  43. package/src/contracts/stability-pool/types-new.ts +208 -0
  44. package/src/contracts/stability-pool/types.ts +42 -0
  45. package/src/contracts/staking/helpers.ts +116 -0
  46. package/src/contracts/staking/scripts.ts +41 -0
  47. package/src/contracts/staking/transactions.ts +268 -0
  48. package/src/contracts/staking/types-new.ts +81 -0
  49. package/src/contracts/staking/types.ts +41 -0
  50. package/src/contracts/treasury/scripts.ts +37 -0
  51. package/src/contracts/treasury/transactions.ts +44 -0
  52. package/src/contracts/treasury/types.ts +55 -0
  53. package/src/contracts/version-registry/scripts.ts +29 -0
  54. package/src/contracts/version-registry/types-new.ts +19 -0
  55. package/src/{types/indigo/version-record.ts → contracts/version-registry/types.ts} +1 -1
  56. package/src/contracts/vesting/helpers.ts +267 -0
  57. package/src/index.ts +39 -33
  58. package/src/types/evolution-schema-options.ts +16 -0
  59. package/src/types/generic.ts +78 -60
  60. package/src/types/on-chain-decimal.ts +22 -0
  61. package/src/types/system-params.ts +22 -11
  62. package/src/utils/bigint-utils.ts +7 -0
  63. package/src/{helpers → utils}/helper-txs.ts +1 -0
  64. package/src/utils/time-helpers.ts +4 -0
  65. package/src/{helpers/helpers.ts → utils/utils.ts} +0 -10
  66. package/src/{helpers → utils}/value-helpers.ts +10 -0
  67. package/src/{scripts → validators}/cdp-creator-validator.ts +4 -50
  68. package/src/{scripts → validators}/cdp-validator.ts +3 -5
  69. package/src/{scripts → validators}/collector-validator.ts +2 -3
  70. package/src/{scripts/version-registry.ts → validators/execute-validator.ts} +3 -11
  71. package/src/{scripts/gov-validator.ts → validators/governance-validator.ts} +3 -40
  72. package/src/{scripts → validators}/interest-oracle-validator.ts +4 -20
  73. package/src/validators/lrp-validator.ts +7 -0
  74. package/src/validators/poll-manager-validator.ts +7 -0
  75. package/src/{scripts → validators}/poll-shard-validator.ts +3 -43
  76. package/src/{scripts → validators}/stability-pool-validator.ts +4 -57
  77. package/src/{scripts → validators}/staking-validator.ts +2 -3
  78. package/src/{scripts → validators}/treasury-validator.ts +2 -3
  79. package/src/{scripts → validators}/version-record-policy.ts +4 -23
  80. package/src/validators/version-registry-validator.ts +7 -0
  81. package/tests/cdp.test.ts +1565 -0
  82. package/tests/datums.test.ts +125 -108
  83. package/tests/endpoints/initialize.ts +240 -338
  84. package/tests/gov.test.ts +1874 -0
  85. package/tests/hash-checks.test.ts +26 -21
  86. package/tests/indigo-test-helpers.ts +1 -55
  87. package/tests/initialize.test.ts +10 -5
  88. package/tests/interest-calculations.test.ts +18 -18
  89. package/tests/interest-oracle.test.ts +20 -18
  90. package/tests/lrp.test.ts +191 -65
  91. package/tests/mock/assets-mock.ts +59 -0
  92. package/tests/queries/cdp-queries.ts +144 -0
  93. package/tests/queries/collector-queries.ts +26 -0
  94. package/tests/queries/execute-queries.ts +46 -0
  95. package/tests/queries/governance-queries.ts +19 -16
  96. package/tests/queries/iasset-queries.ts +46 -23
  97. package/tests/queries/interest-oracle-queries.ts +3 -6
  98. package/tests/queries/lrp-queries.ts +2 -2
  99. package/tests/queries/poll-queries.ts +97 -0
  100. package/tests/queries/price-oracle-queries.ts +5 -22
  101. package/tests/queries/stability-pool-queries.ts +10 -8
  102. package/tests/queries/staking-queries.ts +28 -19
  103. package/tests/queries/treasury-queries.ts +19 -0
  104. package/tests/stability-pool.test.ts +186 -71
  105. package/tests/staking.test.ts +30 -23
  106. package/tests/test-helpers.ts +11 -2
  107. package/tests/utils/asserts.ts +13 -0
  108. package/tests/utils/index.ts +50 -0
  109. package/tsconfig.json +3 -1
  110. package/vitest.config.ts +1 -1
  111. package/.github/workflows/test.yml +0 -44
  112. package/src/contracts/cdp.ts +0 -745
  113. package/src/contracts/collector.ts +0 -98
  114. package/src/contracts/gov.ts +0 -1
  115. package/src/contracts/interest-oracle.ts +0 -149
  116. package/src/contracts/stability-pool.ts +0 -690
  117. package/src/contracts/staking.ts +0 -348
  118. package/src/contracts/treasury.ts +0 -112
  119. package/src/helpers/asset-helpers.ts +0 -62
  120. package/src/helpers/staking-helpers.ts +0 -94
  121. package/src/helpers/time-helpers.ts +0 -4
  122. package/src/scripts/execute-validator.ts +0 -52
  123. package/src/scripts/lrp-validator.ts +0 -40
  124. package/src/scripts/poll-manager-validator.ts +0 -52
  125. package/src/types/indigo/cdp.ts +0 -88
  126. package/src/types/indigo/execute.ts +0 -21
  127. package/src/types/indigo/gov.ts +0 -51
  128. package/src/types/indigo/poll-manager.ts +0 -21
  129. package/src/types/indigo/poll-shard.ts +0 -16
  130. package/src/types/indigo/stability-pool.ts +0 -233
  131. package/src/types/indigo/staking.ts +0 -99
  132. /package/src/{types/one-shot.ts → contracts/one-shot/types.ts} +0 -0
  133. /package/src/{helpers/price-oracle-helpers.ts → contracts/price-oracle/helpers.ts} +0 -0
  134. /package/src/{helpers → utils}/indigo-helpers.ts +0 -0
  135. /package/src/{helpers → utils}/lucid-utils.ts +0 -0
@@ -1,348 +0,0 @@
1
- import {
2
- Address,
3
- applyParamsToScript,
4
- Constr,
5
- Data,
6
- fromText,
7
- LucidEvolution,
8
- OutRef,
9
- SpendingValidator,
10
- TxBuilder,
11
- UTxO,
12
- validatorToAddress,
13
- validatorToScriptHash,
14
- } from '@lucid-evolution/lucid';
15
- import {
16
- ScriptReferences,
17
- StakingParams,
18
- SystemParams,
19
- } from '../types/system-params';
20
- import { addrDetails, scriptRef } from '../helpers/lucid-utils';
21
- import { _stakingValidator } from '../scripts/staking-validator';
22
- import {
23
- serialiseStakingDatum,
24
- StakingManagerContent,
25
- StakingPositionContent,
26
- } from '../types/indigo/staking';
27
- import { StakingHelpers } from '../helpers/staking-helpers';
28
-
29
- export class StakingContract {
30
- static async openPosition(
31
- amount: bigint,
32
- params: SystemParams,
33
- lucid: LucidEvolution,
34
- stakingManagerRef?: OutRef,
35
- ): Promise<TxBuilder> {
36
- const [pkh, _] = await addrDetails(lucid);
37
-
38
- const stakingManagerOut = stakingManagerRef
39
- ? await StakingHelpers.findStakingManagerByOutRef(
40
- stakingManagerRef,
41
- lucid,
42
- )
43
- : await StakingHelpers.findStakingManager(params, lucid);
44
- const stakingScriptRef = await StakingContract.scriptRef(
45
- params.scriptReferences,
46
- lucid,
47
- );
48
- const stakingTokenScriptRefUtxo =
49
- await StakingContract.stakingTokenScriptRef(
50
- params.scriptReferences,
51
- lucid,
52
- );
53
-
54
- const newStakingManagerDatum: StakingManagerContent = {
55
- totalStake: stakingManagerOut.datum.totalStake + amount,
56
- managerSnapshot: {
57
- snapshotAda: stakingManagerOut.datum.managerSnapshot.snapshotAda,
58
- },
59
- };
60
-
61
- const stakingPositionDatum: StakingPositionContent = {
62
- owner: pkh.hash,
63
- lockedAmount: new Map([]),
64
- positionSnapshot: {
65
- snapshotAda: stakingManagerOut.datum.managerSnapshot.snapshotAda,
66
- },
67
- };
68
-
69
- const stakingToken =
70
- params.stakingParams.stakingToken[0].unCurrencySymbol +
71
- fromText(params.stakingParams.stakingToken[1].unTokenName);
72
- const indyToken =
73
- params.stakingParams.indyToken[0].unCurrencySymbol +
74
- fromText(params.stakingParams.indyToken[1].unTokenName);
75
- return lucid
76
- .newTx()
77
- .collectFrom([stakingManagerOut.utxo], Data.to(new Constr(0, [pkh.hash])))
78
- .readFrom([stakingScriptRef])
79
- .pay.ToContract(
80
- stakingManagerOut.utxo.address,
81
- {
82
- kind: 'inline',
83
- value: serialiseStakingDatum({
84
- StakingManager: { content: newStakingManagerDatum },
85
- }),
86
- },
87
- stakingManagerOut.utxo.assets,
88
- )
89
- .readFrom([stakingTokenScriptRefUtxo])
90
- .mintAssets(
91
- {
92
- [stakingToken]: 1n,
93
- },
94
- Data.void(),
95
- )
96
- .pay.ToContract(
97
- StakingContract.address(params.stakingParams, lucid),
98
- {
99
- kind: 'inline',
100
- value: serialiseStakingDatum({
101
- StakingPosition: { content: stakingPositionDatum },
102
- }),
103
- },
104
- {
105
- [stakingToken]: 1n,
106
- [indyToken]: amount,
107
- },
108
- )
109
- .addSignerKey(pkh.hash);
110
- }
111
-
112
- static async adjustPosition(
113
- stakingPositionRef: OutRef,
114
- amount: bigint,
115
- params: SystemParams,
116
- lucid: LucidEvolution,
117
- stakingManagerRef?: OutRef,
118
- ): Promise<TxBuilder> {
119
- const [pkh, _] = await addrDetails(lucid);
120
- const now = Date.now();
121
-
122
- const stakingPositionOut = await StakingHelpers.findStakingPositionByOutRef(
123
- stakingPositionRef,
124
- lucid,
125
- );
126
- const stakingManagerOut = stakingManagerRef
127
- ? await StakingHelpers.findStakingManagerByOutRef(
128
- stakingManagerRef,
129
- lucid,
130
- )
131
- : await StakingHelpers.findStakingManager(params, lucid);
132
-
133
- const stakingScriptRef = await StakingContract.scriptRef(
134
- params.scriptReferences,
135
- lucid,
136
- );
137
-
138
- const stakingToken =
139
- params.stakingParams.stakingToken[0].unCurrencySymbol +
140
- fromText(params.stakingParams.stakingToken[1].unTokenName);
141
- const stakingManagerToken =
142
- params.stakingParams.stakingManagerNFT[0].unCurrencySymbol +
143
- fromText(params.stakingParams.stakingManagerNFT[1].unTokenName);
144
- const indyToken =
145
- params.stakingParams.indyToken[0].unCurrencySymbol +
146
- fromText(params.stakingParams.indyToken[1].unTokenName);
147
-
148
- const existingIndyAmount = stakingPositionOut.utxo.assets[indyToken] ?? 0n;
149
- const currentSnapshotAda =
150
- stakingManagerOut.datum.managerSnapshot.snapshotAda;
151
- const oldSnapshotAda =
152
- stakingPositionOut.datum.positionSnapshot.snapshotAda;
153
- const adaReward =
154
- ((currentSnapshotAda - oldSnapshotAda) * existingIndyAmount) /
155
- (1000000n * 1000000n);
156
-
157
- const newLockedAmount = new Map<bigint, [bigint, bigint]>();
158
- for (const [key, value] of stakingPositionOut.datum.lockedAmount) {
159
- if (value[1] > now) {
160
- newLockedAmount.set(key, [value[0], value[1]]);
161
- }
162
- }
163
- return lucid
164
- .newTx()
165
- .validFrom(Date.now())
166
- .readFrom([stakingScriptRef])
167
- .collectFrom([stakingPositionOut.utxo], Data.to(new Constr(3, [amount])))
168
- .collectFrom([stakingManagerOut.utxo], Data.to(new Constr(1, [])))
169
- .pay.ToContract(
170
- stakingManagerOut.utxo.address,
171
- {
172
- kind: 'inline',
173
- value: serialiseStakingDatum({
174
- StakingManager: {
175
- content: {
176
- ...stakingManagerOut.datum,
177
- totalStake: stakingManagerOut.datum.totalStake + amount,
178
- },
179
- },
180
- }),
181
- },
182
- {
183
- lovelace: stakingManagerOut.utxo.assets.lovelace - adaReward,
184
- [stakingManagerToken]: 1n,
185
- },
186
- )
187
- .pay.ToContract(
188
- stakingPositionOut.utxo.address,
189
- {
190
- kind: 'inline',
191
- value: serialiseStakingDatum({
192
- StakingPosition: {
193
- content: {
194
- ...stakingPositionOut.datum,
195
- lockedAmount: newLockedAmount,
196
- },
197
- },
198
- }),
199
- },
200
- {
201
- [stakingToken]: 1n,
202
- [indyToken]: stakingPositionOut.utxo.assets[indyToken] + amount,
203
- },
204
- )
205
- .addSignerKey(pkh.hash);
206
- }
207
-
208
- static async closePosition(
209
- stakingPositionRef: OutRef,
210
- params: SystemParams,
211
- lucid: LucidEvolution,
212
- stakingManagerRef?: OutRef,
213
- ): Promise<TxBuilder> {
214
- const [pkh, _] = await addrDetails(lucid);
215
-
216
- const stakingPositionOut = await StakingHelpers.findStakingPositionByOutRef(
217
- stakingPositionRef,
218
- lucid,
219
- );
220
- const stakingManagerOut = stakingManagerRef
221
- ? await StakingHelpers.findStakingManagerByOutRef(
222
- stakingManagerRef,
223
- lucid,
224
- )
225
- : await StakingHelpers.findStakingManager(params, lucid);
226
-
227
- const stakingScriptRef = await StakingContract.scriptRef(
228
- params.scriptReferences,
229
- lucid,
230
- );
231
- const stakingTokenScriptRefUtxo =
232
- await StakingContract.stakingTokenScriptRef(
233
- params.scriptReferences,
234
- lucid,
235
- );
236
-
237
- const stakingToken =
238
- params.stakingParams.stakingToken[0].unCurrencySymbol +
239
- fromText(params.stakingParams.stakingToken[1].unTokenName);
240
- const stakingManagerToken =
241
- params.stakingParams.stakingManagerNFT[0].unCurrencySymbol +
242
- fromText(params.stakingParams.stakingManagerNFT[1].unTokenName);
243
- const indyToken =
244
- params.stakingParams.indyToken[0].unCurrencySymbol +
245
- fromText(params.stakingParams.indyToken[1].unTokenName);
246
-
247
- const existingIndyAmount = stakingPositionOut.utxo.assets[indyToken] ?? 0n;
248
- const currentSnapshotAda =
249
- stakingManagerOut.datum.managerSnapshot.snapshotAda;
250
- const oldSnapshotAda =
251
- stakingPositionOut.datum.positionSnapshot.snapshotAda;
252
- const adaReward =
253
- ((currentSnapshotAda - oldSnapshotAda) * existingIndyAmount) /
254
- (1000000n * 1000000n);
255
-
256
- return lucid
257
- .newTx()
258
- .validFrom(Date.now())
259
- .readFrom([stakingScriptRef])
260
- .readFrom([stakingTokenScriptRefUtxo])
261
- .collectFrom([stakingPositionOut.utxo], Data.to(new Constr(4, [])))
262
- .collectFrom([stakingManagerOut.utxo], Data.to(new Constr(1, [])))
263
- .pay.ToContract(
264
- stakingManagerOut.utxo.address,
265
- {
266
- kind: 'inline',
267
- value: serialiseStakingDatum({
268
- StakingManager: {
269
- content: {
270
- ...stakingManagerOut.datum,
271
- totalStake:
272
- stakingManagerOut.datum.totalStake - existingIndyAmount,
273
- },
274
- },
275
- }),
276
- },
277
- {
278
- lovelace: stakingManagerOut.utxo.assets.lovelace - adaReward,
279
- [stakingManagerToken]: 1n,
280
- },
281
- )
282
- .mintAssets(
283
- {
284
- [stakingToken]: -1n,
285
- },
286
- Data.void(),
287
- )
288
- .addSignerKey(pkh.hash);
289
- }
290
-
291
- // Staking Validator
292
- static validator(params: StakingParams): SpendingValidator {
293
- return {
294
- type: 'PlutusV2',
295
- script: applyParamsToScript(_stakingValidator.cborHex, [
296
- new Constr(0, [
297
- new Constr(0, [
298
- params.stakingManagerNFT[0].unCurrencySymbol,
299
- fromText(params.stakingManagerNFT[1].unTokenName),
300
- ]),
301
- new Constr(0, [
302
- params.stakingToken[0].unCurrencySymbol,
303
- fromText(params.stakingToken[1].unTokenName),
304
- ]),
305
- new Constr(0, [
306
- params.indyToken[0].unCurrencySymbol,
307
- fromText(params.indyToken[1].unTokenName),
308
- ]),
309
- new Constr(0, [
310
- params.pollToken[0].unCurrencySymbol,
311
- fromText(params.pollToken[1].unTokenName),
312
- ]),
313
- new Constr(0, [
314
- params.versionRecordToken[0].unCurrencySymbol,
315
- fromText(params.versionRecordToken[1].unTokenName),
316
- ]),
317
- params.collectorValHash,
318
- ]),
319
- ]),
320
- };
321
- }
322
-
323
- static validatorHash(params: StakingParams): string {
324
- return validatorToScriptHash(StakingContract.validator(params));
325
- }
326
-
327
- static address(params: StakingParams, lucid: LucidEvolution): Address {
328
- const network = lucid.config().network;
329
- if (!network) {
330
- throw new Error('Network configuration is undefined');
331
- }
332
- return validatorToAddress(network, StakingContract.validator(params));
333
- }
334
-
335
- static async scriptRef(
336
- params: ScriptReferences,
337
- lucid: LucidEvolution,
338
- ): Promise<UTxO> {
339
- return scriptRef(params.stakingValidatorRef, lucid);
340
- }
341
-
342
- static async stakingTokenScriptRef(
343
- params: ScriptReferences,
344
- lucid: LucidEvolution,
345
- ): Promise<UTxO> {
346
- return scriptRef(params.authTokenPolicies.stakingTokenRef, lucid);
347
- }
348
- }
@@ -1,112 +0,0 @@
1
- import {
2
- Address,
3
- applyParamsToScript,
4
- Constr,
5
- Data,
6
- fromText,
7
- LucidEvolution,
8
- OutRef,
9
- SpendingValidator,
10
- TxBuilder,
11
- UTxO,
12
- validatorToAddress,
13
- validatorToScriptHash,
14
- } from '@lucid-evolution/lucid';
15
- import { _treasuryValidator } from '../scripts/treasury-validator';
16
- import {
17
- ScriptReferences,
18
- SystemParams,
19
- TreasuryParams,
20
- } from '../types/system-params';
21
- import { scriptRef } from '../helpers/lucid-utils';
22
- import { getRandomElement } from '../helpers/helpers';
23
-
24
- export class TreasuryContract {
25
- static async feeTx(
26
- fee: bigint,
27
- lucid: LucidEvolution,
28
- params: SystemParams,
29
- tx: TxBuilder,
30
- treasuryRef?: OutRef,
31
- ): Promise<void> {
32
- const treasuryUtxo: UTxO = treasuryRef
33
- ? getRandomElement(await lucid.utxosByOutRef([treasuryRef]))
34
- : getRandomElement(
35
- await lucid.utxosAt(
36
- TreasuryContract.address(params.treasuryParams, lucid),
37
- ),
38
- );
39
-
40
- const treasuryScriptRefUtxo = await TreasuryContract.scriptRef(
41
- params.scriptReferences,
42
- lucid,
43
- );
44
-
45
- tx.collectFrom([treasuryUtxo], Data.to(new Constr(4, [])))
46
- .pay.ToContract(
47
- treasuryUtxo.address,
48
- { kind: 'inline', value: treasuryUtxo.datum || '' },
49
- {
50
- ...treasuryUtxo.assets,
51
- lovelace: treasuryUtxo.assets['lovelace'] + fee,
52
- },
53
- )
54
- .readFrom([treasuryScriptRefUtxo]);
55
- }
56
-
57
- // treasury Validator
58
- static validator(params: TreasuryParams): SpendingValidator {
59
- return {
60
- type: 'PlutusV2',
61
- script: applyParamsToScript(_treasuryValidator.cborHex, [
62
- new Constr(0, [
63
- new Constr(0, [
64
- params.upgradeToken[0].unCurrencySymbol,
65
- fromText(params.upgradeToken[1].unTokenName),
66
- ]),
67
- new Constr(0, [
68
- params.versionRecordToken[0].unCurrencySymbol,
69
- fromText(params.versionRecordToken[1].unTokenName),
70
- ]),
71
- params.treasuryUtxosStakeCredential
72
- ? new Constr(0, [
73
- new Constr(0, [
74
- new Constr(1, [
75
- params.treasuryUtxosStakeCredential.contents.contents,
76
- ]),
77
- ]),
78
- ])
79
- : new Constr(1, []),
80
- ]),
81
- ]),
82
- };
83
- }
84
-
85
- static validatorHash(params: TreasuryParams): string {
86
- return validatorToScriptHash(TreasuryContract.validator(params));
87
- }
88
-
89
- static address(params: TreasuryParams, lucid: LucidEvolution): Address {
90
- const network = lucid.config().network;
91
- if (!network) {
92
- throw new Error('Network configuration is undefined');
93
- }
94
- return validatorToAddress(
95
- network,
96
- TreasuryContract.validator(params),
97
- params.treasuryUtxosStakeCredential
98
- ? {
99
- type: 'Script',
100
- hash: params.treasuryUtxosStakeCredential.contents.contents,
101
- }
102
- : undefined,
103
- );
104
- }
105
-
106
- static async scriptRef(
107
- params: ScriptReferences,
108
- lucid: LucidEvolution,
109
- ): Promise<UTxO> {
110
- return scriptRef(params.treasuryValidatorRef, lucid);
111
- }
112
- }
@@ -1,62 +0,0 @@
1
- import { fromText, LucidEvolution, OutRef, UTxO } from '@lucid-evolution/lucid';
2
- import { CDPContract } from '../contracts/cdp';
3
- import { SystemParams } from '../types/system-params';
4
- import { IAssetContent, parseIAssetDatum } from '../types/indigo/cdp';
5
-
6
- export type IAssetOutput = { utxo: UTxO; datum: IAssetContent };
7
-
8
- export class IAssetHelpers {
9
- static async findIAssetByRef(
10
- outRef: OutRef,
11
- lucid: LucidEvolution,
12
- ): Promise<IAssetOutput> {
13
- return lucid
14
- .utxosByOutRef([outRef])
15
- .then((utxos) =>
16
- utxos
17
- .map((utxo) => {
18
- if (!utxo.datum) return undefined;
19
- const datum = parseIAssetDatum(utxo.datum);
20
- return { utxo, datum };
21
- })
22
- .find((utxo) => utxo !== undefined),
23
- )
24
- .then((result) => {
25
- if (!result)
26
- throw new Error('Unable to locate IAsset by output reference.');
27
- return result;
28
- });
29
- }
30
-
31
- static async findIAssetByName(
32
- assetName: string,
33
- params: SystemParams,
34
- lucid: LucidEvolution,
35
- ): Promise<IAssetOutput> {
36
- console.log(
37
- CDPContract.address(params.cdpParams, lucid),
38
- params.cdpParams.iAssetAuthToken[0].unCurrencySymbol +
39
- fromText(params.cdpParams.iAssetAuthToken[1].unTokenName),
40
- );
41
- return lucid
42
- .utxosAtWithUnit(
43
- CDPContract.address(params.cdpParams, lucid),
44
- params.cdpParams.iAssetAuthToken[0].unCurrencySymbol +
45
- fromText(params.cdpParams.iAssetAuthToken[1].unTokenName),
46
- )
47
- .then((utxos) => {
48
- return utxos
49
- .map((utxo) => {
50
- if (!utxo.datum) return undefined;
51
- const datum = parseIAssetDatum(utxo.datum);
52
- if (datum.assetName !== assetName) return undefined;
53
- return { utxo, datum };
54
- })
55
- .find((utxo) => utxo !== undefined);
56
- })
57
- .then((result) => {
58
- if (!result) throw new Error('Unable to locate IAsset by name: ' + assetName);
59
- return result;
60
- });
61
- }
62
- }
@@ -1,94 +0,0 @@
1
- import { fromText, OutRef, UTxO } from '@lucid-evolution/lucid';
2
- import { LucidEvolution } from '@lucid-evolution/lucid';
3
- import { StakingContract } from '../contracts/staking';
4
- import { SystemParams } from '../types/system-params';
5
- import {
6
- parseStakingManagerDatum,
7
- parseStakingPositionDatum,
8
- StakingManagerContent,
9
- StakingPositionContent,
10
- } from '../types/indigo/staking';
11
-
12
- export type StakingPositionOutput = {
13
- utxo: UTxO;
14
- datum: StakingPositionContent;
15
- };
16
- export type StakingManagerOutput = { utxo: UTxO; datum: StakingManagerContent };
17
-
18
- export class StakingHelpers {
19
- static async findStakingManagerByOutRef(
20
- stakingManagerRef: OutRef,
21
- lucid: LucidEvolution,
22
- ): Promise<StakingManagerOutput> {
23
- return lucid
24
- .utxosByOutRef([stakingManagerRef])
25
- .then((utxos) =>
26
- utxos
27
- .map((utxo) => {
28
- if (!utxo.datum) return undefined;
29
- const datum = parseStakingManagerDatum(utxo.datum);
30
- return { utxo, datum };
31
- })
32
- .find((utxo) => utxo !== undefined),
33
- )
34
- .then((result) => {
35
- if (!result)
36
- throw new Error(
37
- 'Unable to locate Staking Manager by output reference.',
38
- );
39
- return result;
40
- });
41
- }
42
-
43
- static async findStakingManager(
44
- params: SystemParams,
45
- lucid: LucidEvolution,
46
- ): Promise<StakingManagerOutput> {
47
- return lucid
48
- .utxosAtWithUnit(
49
- StakingContract.address(params.stakingParams, lucid),
50
- params.stakingParams.stakingManagerNFT[0].unCurrencySymbol +
51
- fromText(params.stakingParams.stakingManagerNFT[1].unTokenName),
52
- )
53
- .then((utxos) =>
54
- utxos
55
- .map((utxo) => {
56
- if (!utxo.datum) return undefined;
57
- const datum = parseStakingManagerDatum(utxo.datum);
58
- return { utxo, datum };
59
- })
60
- .find((utxo) => utxo !== undefined),
61
- )
62
- .then((result) => {
63
- if (!result)
64
- throw new Error(
65
- 'Unable to locate Staking Manager by output reference.',
66
- );
67
- return result;
68
- });
69
- }
70
-
71
- static async findStakingPositionByOutRef(
72
- stakingPositionRef: OutRef,
73
- lucid: LucidEvolution,
74
- ): Promise<StakingPositionOutput> {
75
- return lucid
76
- .utxosByOutRef([stakingPositionRef])
77
- .then((utxos) =>
78
- utxos
79
- .map((utxo) => {
80
- if (!utxo.datum) return undefined;
81
- const datum = parseStakingPositionDatum(utxo.datum);
82
- return { utxo, datum };
83
- })
84
- .find((utxo) => utxo !== undefined),
85
- )
86
- .then((result) => {
87
- if (!result)
88
- throw new Error(
89
- 'Unable to locate Staking Position by output reference.',
90
- );
91
- return result;
92
- });
93
- }
94
- }
@@ -1,4 +0,0 @@
1
- export const ONE_SECOND: number = 1_000;
2
- export const oneHour: bigint = 3_600_000n;
3
- export const oneDay: bigint = 86_400_000n;
4
- export const oneYear: bigint = 31_536_000_000n;