@indigo-labs/indigo-sdk 0.1.19 → 0.1.21

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 +1298 -677
  3. package/dist/index.d.ts +1298 -677
  4. package/dist/index.js +4650 -2217
  5. package/dist/index.mjs +4592 -2192
  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} +23 -23
  29. package/src/{types/indigo/lrp.ts → contracts/lrp/types.ts} +3 -3
  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 +660 -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 +38 -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 +180 -78
  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 -748
  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 -692
  117. package/src/contracts/staking.ts +0 -348
  118. package/src/contracts/treasury.ts +0 -112
  119. package/src/helpers/asset-helpers.ts +0 -57
  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,98 +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 { _collectorValidator } from '../scripts/collector-validator';
16
- import {
17
- CollectorParams,
18
- ScriptReferences,
19
- SystemParams,
20
- } from '../types/system-params';
21
- import { scriptRef } from '../helpers/lucid-utils';
22
- import { getRandomElement } from '../helpers/helpers';
23
-
24
- export class CollectorContract {
25
- static async feeTx(
26
- fee: bigint,
27
- lucid: LucidEvolution,
28
- params: SystemParams,
29
- tx: TxBuilder,
30
- collectorRef?: OutRef,
31
- ): Promise<void> {
32
- const collectorUtxo: UTxO = collectorRef
33
- ? getRandomElement(await lucid.utxosByOutRef([collectorRef]))
34
- : getRandomElement(
35
- await lucid.utxosAt(
36
- CollectorContract.address(params.collectorParams, lucid),
37
- ),
38
- );
39
-
40
- const collectorScriptRefUtxo = await CollectorContract.scriptRef(
41
- params.scriptReferences,
42
- lucid,
43
- );
44
-
45
- tx.collectFrom([collectorUtxo], Data.to(new Constr(0, [])))
46
- .pay.ToContract(
47
- collectorUtxo.address,
48
- { kind: 'inline', value: Data.to(new Constr(0, [])) },
49
- {
50
- ...collectorUtxo.assets,
51
- lovelace: collectorUtxo.assets.lovelace + fee,
52
- },
53
- )
54
- .readFrom([collectorScriptRefUtxo]);
55
- }
56
-
57
- // Collector Validator
58
- static validator(params: CollectorParams): SpendingValidator {
59
- return {
60
- type: 'PlutusV2',
61
- script: applyParamsToScript(_collectorValidator.cborHex, [
62
- new Constr(0, [
63
- new Constr(0, [
64
- params.stakingManagerNFT[0].unCurrencySymbol,
65
- fromText(params.stakingManagerNFT[1].unTokenName),
66
- ]),
67
- new Constr(0, [
68
- params.stakingToken[0].unCurrencySymbol,
69
- fromText(params.stakingToken[1].unTokenName),
70
- ]),
71
- new Constr(0, [
72
- params.versionRecordToken[0].unCurrencySymbol,
73
- fromText(params.versionRecordToken[1].unTokenName),
74
- ]),
75
- ]),
76
- ]),
77
- };
78
- }
79
-
80
- static validatorHash(params: CollectorParams): string {
81
- return validatorToScriptHash(CollectorContract.validator(params));
82
- }
83
-
84
- static address(params: CollectorParams, lucid: LucidEvolution): Address {
85
- const network = lucid.config().network;
86
- if (!network) {
87
- throw new Error('Network configuration is undefined');
88
- }
89
- return validatorToAddress(network, CollectorContract.validator(params));
90
- }
91
-
92
- static async scriptRef(
93
- params: ScriptReferences,
94
- lucid: LucidEvolution,
95
- ): Promise<UTxO> {
96
- return scriptRef(params.collectorValidatorRef, lucid);
97
- }
98
- }
@@ -1 +0,0 @@
1
- export class GovContract {}
@@ -1,149 +0,0 @@
1
- import {
2
- fromText,
3
- LucidEvolution,
4
- OutRef,
5
- toUnit,
6
- TxBuilder,
7
- UTxO,
8
- validatorToAddress,
9
- } from '@lucid-evolution/lucid';
10
- import { AssetClass } from '../types/generic';
11
- import {
12
- InterestOracleParams,
13
- parseInterestOracleDatum,
14
- serialiseFeedInterestOracleRedeemer,
15
- serialiseInterestOracleDatum,
16
- } from '../types/indigo/interest-oracle';
17
- import { oneShotMintTx } from './one-shot';
18
- import { mkInterestOracleValidator } from '../scripts/interest-oracle-validator';
19
- import { findInterestOracle } from '../../tests/queries/interest-oracle-queries';
20
- import { ONE_SECOND } from '../helpers/time-helpers';
21
- import { calculateUnitaryInterestSinceOracleLastUpdated } from '../helpers/interest-oracle';
22
-
23
- export class InterestOracleContract {
24
- static async startInterestOracle(
25
- initialUnitaryInterest: bigint,
26
- initialInterestRate: bigint,
27
- initialLastInterestUpdate: bigint,
28
- oracleParams: InterestOracleParams,
29
- lucid: LucidEvolution,
30
- withScriptRef: boolean = false,
31
- refOutRef?: OutRef,
32
- interestTokenName?: string,
33
- ): Promise<[TxBuilder, AssetClass]> {
34
- const tokenName = interestTokenName ?? 'INTEREST_ORACLE';
35
- if (!refOutRef) {
36
- refOutRef = (await lucid.wallet().getUtxos())[0];
37
- }
38
-
39
- const [tx, policyId] = await oneShotMintTx(lucid, {
40
- referenceOutRef: {
41
- txHash: refOutRef.txHash,
42
- outputIdx: BigInt(refOutRef.outputIndex),
43
- },
44
- mintAmounts: [
45
- {
46
- tokenName: fromText(tokenName),
47
- amount: 1n,
48
- },
49
- ],
50
- });
51
-
52
- const validator = mkInterestOracleValidator(oracleParams);
53
-
54
- tx.pay.ToContract(
55
- validatorToAddress(lucid.config().network, validator),
56
- {
57
- kind: 'inline',
58
- value: serialiseInterestOracleDatum({
59
- unitaryInterest: initialUnitaryInterest,
60
- interestRate: {
61
- getOnChainInt: initialInterestRate,
62
- },
63
- lastUpdated: initialLastInterestUpdate,
64
- }),
65
- },
66
- {
67
- lovelace: 2_500_000n,
68
- [toUnit(policyId, fromText(tokenName))]: 1n,
69
- },
70
- );
71
-
72
- if (withScriptRef) {
73
- tx.pay.ToAddressWithData(
74
- validatorToAddress(lucid.config().network, validator),
75
- undefined,
76
- undefined,
77
- validator,
78
- );
79
- }
80
-
81
- return [
82
- tx,
83
- {
84
- currencySymbol: policyId,
85
- tokenName: fromText(tokenName),
86
- },
87
- ];
88
- }
89
-
90
- static async feedInterestOracle(
91
- params: InterestOracleParams,
92
- newInterestRate: bigint,
93
- lucid: LucidEvolution,
94
- assetClass?: AssetClass,
95
- utxo?: UTxO,
96
- scriptRef?: UTxO,
97
- ): Promise<TxBuilder> {
98
- if (!assetClass && !utxo)
99
- throw new Error('Either interest oracle nft or utxo must be provided');
100
- if (assetClass && !utxo) {
101
- const [ioUtxo, _datum] = await findInterestOracle(lucid, assetClass);
102
- utxo = ioUtxo;
103
- }
104
-
105
- const now = BigInt(Date.now());
106
- const tx = lucid.newTx();
107
- const datum = parseInterestOracleDatum(utxo.datum);
108
-
109
- if (scriptRef) {
110
- tx.readFrom([scriptRef]);
111
- } else {
112
- tx.attach.Script(mkInterestOracleValidator(params));
113
- }
114
-
115
- tx.collectFrom(
116
- [utxo],
117
- serialiseFeedInterestOracleRedeemer({
118
- newInterestRate: {
119
- getOnChainInt: newInterestRate,
120
- },
121
- currentTime: now,
122
- }),
123
- );
124
-
125
- tx.pay.ToContract(
126
- utxo.address,
127
- {
128
- kind: 'inline',
129
- value: serialiseInterestOracleDatum({
130
- unitaryInterest:
131
- datum.unitaryInterest +
132
- calculateUnitaryInterestSinceOracleLastUpdated(now, datum),
133
- interestRate: {
134
- getOnChainInt: newInterestRate,
135
- },
136
- lastUpdated: now,
137
- }),
138
- },
139
- utxo.assets,
140
- );
141
-
142
- tx.validFrom(Number(now) - ONE_SECOND);
143
- tx.validTo(Number(now + params.biasTime) - ONE_SECOND);
144
-
145
- tx.addSignerKey(params.owner);
146
-
147
- return tx;
148
- }
149
- }