@indigo-labs/indigo-sdk 0.2.41 → 0.3.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 (201) hide show
  1. package/.github/workflows/ci.yml +4 -2
  2. package/dist/index.d.mts +3008 -2194
  3. package/dist/index.d.ts +3008 -2194
  4. package/dist/index.js +9827 -6194
  5. package/dist/index.mjs +8591 -4809
  6. package/package.json +14 -3
  7. package/src/contracts/cdp/helpers.ts +68 -72
  8. package/src/contracts/cdp/scripts.ts +50 -13
  9. package/src/contracts/cdp/transactions.ts +831 -545
  10. package/src/contracts/cdp/types-new.ts +256 -0
  11. package/src/contracts/cdp/types.ts +26 -144
  12. package/src/contracts/cdp-creator/scripts.ts +15 -9
  13. package/src/contracts/cdp-creator/types-new.ts +50 -0
  14. package/src/contracts/cdp-creator/types.ts +5 -31
  15. package/src/contracts/collector/scripts.ts +1 -1
  16. package/src/contracts/collector/transactions.ts +23 -13
  17. package/src/contracts/collector/types-new.ts +17 -0
  18. package/src/contracts/execute/scripts.ts +19 -10
  19. package/src/contracts/execute/types-new.ts +44 -0
  20. package/src/contracts/execute/types.ts +5 -38
  21. package/src/contracts/gov/helpers.ts +187 -51
  22. package/src/contracts/gov/scripts.ts +17 -10
  23. package/src/contracts/gov/transactions.ts +599 -271
  24. package/src/contracts/gov/types-new.ts +253 -100
  25. package/src/contracts/gov/types.ts +4 -71
  26. package/src/contracts/iasset/helpers.ts +172 -0
  27. package/src/contracts/iasset/scripts.ts +38 -0
  28. package/src/contracts/iasset/types.ts +154 -0
  29. package/src/contracts/initialize/actions.ts +768 -0
  30. package/src/contracts/initialize/helpers.ts +611 -36
  31. package/src/contracts/initialize/types.ts +102 -28
  32. package/src/contracts/interest-collection/helpers.ts +19 -0
  33. package/src/contracts/interest-collection/scripts.ts +44 -0
  34. package/src/contracts/interest-collection/transactions.ts +436 -0
  35. package/src/contracts/interest-collection/types-new.ts +50 -0
  36. package/src/contracts/interest-collection/types.ts +26 -0
  37. package/src/contracts/interest-oracle/helpers.ts +2 -30
  38. package/src/contracts/interest-oracle/scripts.ts +1 -1
  39. package/src/contracts/interest-oracle/transactions.ts +21 -16
  40. package/src/contracts/interest-oracle/types-new.ts +32 -0
  41. package/src/contracts/interest-oracle/types.ts +1 -40
  42. package/src/contracts/one-shot/transactions.ts +1 -2
  43. package/src/contracts/poll/helpers.ts +5 -23
  44. package/src/contracts/poll/scripts.ts +12 -13
  45. package/src/contracts/poll/types-poll-manager.ts +1 -19
  46. package/src/contracts/poll/types-poll-new.ts +170 -0
  47. package/src/contracts/poll/types-poll-shard.ts +2 -24
  48. package/src/contracts/price-oracle/helpers.ts +1 -4
  49. package/src/contracts/price-oracle/scripts.ts +3 -8
  50. package/src/contracts/price-oracle/transactions.ts +32 -25
  51. package/src/contracts/price-oracle/types-new.ts +50 -0
  52. package/src/contracts/price-oracle/types.ts +2 -36
  53. package/src/contracts/pyth-feed/helpers.ts +58 -0
  54. package/src/contracts/pyth-feed/scripts.ts +15 -0
  55. package/src/contracts/pyth-feed/types.ts +181 -0
  56. package/src/contracts/rob/helpers.ts +405 -0
  57. package/src/contracts/rob/scripts.ts +35 -0
  58. package/src/contracts/rob/transactions.ts +410 -0
  59. package/src/contracts/rob/types-new.ts +128 -0
  60. package/src/contracts/rob/types.ts +16 -0
  61. package/src/contracts/rob-leverage/helpers.ts +424 -0
  62. package/src/contracts/{leverage → rob-leverage}/transactions.ts +68 -48
  63. package/src/contracts/stability-pool/helpers.ts +714 -230
  64. package/src/contracts/stability-pool/scripts.ts +20 -15
  65. package/src/contracts/stability-pool/transactions.ts +625 -495
  66. package/src/contracts/stability-pool/types-new.ts +237 -100
  67. package/src/contracts/stability-pool/types.ts +5 -22
  68. package/src/contracts/stableswap/helpers.ts +22 -0
  69. package/src/contracts/stableswap/scripts.ts +37 -0
  70. package/src/contracts/stableswap/transactions.ts +647 -0
  71. package/src/contracts/stableswap/types-new.ts +131 -0
  72. package/src/contracts/stableswap/types.ts +17 -0
  73. package/src/contracts/staking/helpers.ts +49 -34
  74. package/src/contracts/staking/scripts.ts +1 -1
  75. package/src/contracts/staking/transactions.ts +85 -130
  76. package/src/contracts/staking/types-new.ts +60 -28
  77. package/src/contracts/staking/types.ts +1 -28
  78. package/src/contracts/treasury/helpers.ts +21 -0
  79. package/src/contracts/treasury/scripts.ts +16 -26
  80. package/src/contracts/treasury/transactions.ts +256 -27
  81. package/src/contracts/treasury/types-new.ts +69 -0
  82. package/src/contracts/treasury/types.ts +2 -43
  83. package/src/contracts/version-registry/scripts.ts +2 -2
  84. package/src/contracts/version-registry/types-new.ts +6 -7
  85. package/src/index.ts +37 -20
  86. package/src/scripts/auth-token-policy.ts +3 -2
  87. package/src/scripts/iasset-policy.ts +3 -2
  88. package/src/types/evolution-schema-options.ts +3 -3
  89. package/src/types/generic.ts +17 -89
  90. package/src/types/multisig.ts +48 -0
  91. package/src/types/on-chain-decimal.ts +14 -7
  92. package/src/types/rational.ts +61 -0
  93. package/src/types/system-params.ts +237 -41
  94. package/src/utils/array-utils.ts +70 -1
  95. package/src/utils/bigint-utils.ts +12 -0
  96. package/src/utils/indigo-helpers.ts +8 -10
  97. package/src/utils/lucid-utils.ts +47 -40
  98. package/src/utils/oracle-helpers.ts +62 -0
  99. package/src/utils/pyth/decode.ts +223 -0
  100. package/src/utils/pyth/encode.ts +262 -0
  101. package/src/utils/pyth/index.ts +14 -0
  102. package/src/utils/pyth/types.ts +87 -0
  103. package/src/validators/always-succeed-validator.ts +6 -0
  104. package/src/validators/cdp-creator-validator.ts +2 -2
  105. package/src/validators/cdp-redeem-validator.ts +7 -0
  106. package/src/validators/cdp-validator.ts +2 -2
  107. package/src/validators/collector-validator.ts +2 -2
  108. package/src/validators/execute-validator.ts +2 -2
  109. package/src/validators/governance-validator.ts +2 -2
  110. package/src/validators/iasset-validator.ts +7 -0
  111. package/src/validators/interest-collection-validator.ts +7 -0
  112. package/src/validators/interest-oracle-validator.ts +2 -2
  113. package/src/validators/poll-manager-validator.ts +2 -2
  114. package/src/validators/poll-shard-validator.ts +2 -2
  115. package/src/validators/price-oracle-validator.ts +7 -0
  116. package/src/validators/pyth-feed-validator.ts +7 -0
  117. package/src/validators/rob-validator.ts +7 -0
  118. package/src/validators/stability-pool-validator.ts +2 -2
  119. package/src/validators/stableswap-validator.ts +7 -0
  120. package/src/validators/staking-validator.ts +2 -2
  121. package/src/validators/treasury-validator.ts +2 -2
  122. package/src/validators/version-record-policy.ts +2 -2
  123. package/src/validators/version-registry-validator.ts +2 -2
  124. package/tests/always-succeed/script.ts +7 -0
  125. package/tests/bigint-utils.test.ts +41 -0
  126. package/tests/cdp/actions.ts +611 -0
  127. package/tests/cdp/cdp-helpers.ts +55 -0
  128. package/tests/cdp/cdp-queries.ts +440 -0
  129. package/tests/cdp/cdp.test.ts +6087 -0
  130. package/tests/cdp/transactions-mutated.ts +1729 -0
  131. package/tests/data/system-params.json +177 -34
  132. package/tests/datums.test.ts +209 -210
  133. package/tests/endpoints/initialize.ts +68 -0
  134. package/tests/endpoints/interest-collector.ts +37 -0
  135. package/tests/endpoints/treasury.ts +70 -0
  136. package/tests/gov/actions.ts +406 -0
  137. package/tests/gov/gov.test.ts +4450 -0
  138. package/tests/{queries → gov}/governance-queries.ts +6 -3
  139. package/tests/hash-checks.test.ts +38 -11
  140. package/tests/indigo-test-helpers.ts +100 -0
  141. package/tests/initialize.test.ts +61 -9
  142. package/tests/interest-collection/interest-collection.test.ts +892 -0
  143. package/tests/interest-collection/interest-collector-queries.ts +49 -0
  144. package/tests/interest-collection/transactions-mutated.ts +260 -0
  145. package/tests/interest-oracle.test.ts +43 -35
  146. package/tests/mock/assets-mock.ts +234 -23
  147. package/tests/mock/protocol-params-mock.ts +21 -0
  148. package/tests/price-oracle/actions.ts +163 -0
  149. package/tests/price-oracle/price-oracle-queries.ts +12 -0
  150. package/tests/price-oracle/price-oracle.test.ts +240 -0
  151. package/tests/price-oracle/transactions-mutated.ts +62 -0
  152. package/tests/pyth/endpoints.ts +96 -0
  153. package/tests/pyth/helpers.ts +37 -0
  154. package/tests/pyth/pyth-encoding.test.ts +376 -0
  155. package/tests/pyth/pyth-indigo.test.ts +509 -0
  156. package/tests/pyth/pyth.test.ts +300 -0
  157. package/tests/queries/execute-queries.ts +6 -5
  158. package/tests/queries/iasset-queries.ts +175 -5
  159. package/tests/queries/interest-oracle-queries.ts +4 -2
  160. package/tests/queries/poll-queries.ts +8 -9
  161. package/tests/queries/stability-pool-queries.ts +95 -48
  162. package/tests/queries/staking-queries.ts +4 -2
  163. package/tests/queries/treasury-queries.ts +80 -5
  164. package/tests/rob/actions.ts +58 -0
  165. package/tests/{lrp-leverage.test.ts → rob/rob-leverage.test.ts} +393 -296
  166. package/tests/rob/rob-queries.ts +95 -0
  167. package/tests/rob/rob.test.ts +3762 -0
  168. package/tests/rob/transactions-mutated.ts +853 -0
  169. package/tests/script-size.test.ts +240 -0
  170. package/tests/setup.ts +135 -0
  171. package/tests/stability-pool/actions.ts +210 -0
  172. package/tests/stability-pool.test.ts +5469 -666
  173. package/tests/stableswap/stableswap-actions.ts +84 -0
  174. package/tests/stableswap/stableswap-queries.ts +89 -0
  175. package/tests/stableswap/stableswap.test.ts +3891 -0
  176. package/tests/stableswap/transactions-mutated.ts +348 -0
  177. package/tests/staking.test.ts +82 -99
  178. package/tests/test-helpers.ts +58 -11
  179. package/tests/treasury.test.ts +242 -0
  180. package/tests/utils/asserts.ts +74 -0
  181. package/tests/utils/benchmark-utils.ts +81 -0
  182. package/tests/utils/index.ts +122 -4
  183. package/tsconfig.json +9 -1
  184. package/vitest.config.ts +3 -1
  185. package/src/contracts/collector/types.ts +0 -16
  186. package/src/contracts/initialize/transactions.ts +0 -891
  187. package/src/contracts/leverage/helpers.ts +0 -424
  188. package/src/contracts/lrp/helpers.ts +0 -294
  189. package/src/contracts/lrp/scripts.ts +0 -27
  190. package/src/contracts/lrp/transactions.ts +0 -250
  191. package/src/contracts/lrp/types.ts +0 -131
  192. package/src/contracts/poll/types-poll.ts +0 -88
  193. package/src/contracts/vesting/helpers.ts +0 -218
  194. package/src/utils/value-helpers.ts +0 -37
  195. package/src/validators/lrp-validator.ts +0 -7
  196. package/tests/cdp.test.ts +0 -1528
  197. package/tests/gov.test.ts +0 -2011
  198. package/tests/lrp.test.ts +0 -673
  199. package/tests/queries/cdp-queries.ts +0 -220
  200. package/tests/queries/lrp-queries.ts +0 -76
  201. package/tests/queries/price-oracle-queries.ts +0 -10
@@ -1,220 +0,0 @@
1
- import {
2
- Credential,
3
- fromText,
4
- LucidEvolution,
5
- ScriptHash,
6
- UTxO,
7
- } from '@lucid-evolution/lucid';
8
- import {
9
- AssetClass,
10
- CDPContent,
11
- createScriptAddress,
12
- fromSystemParamsAsset,
13
- getRandomElement,
14
- IAssetOutput,
15
- matchSingle,
16
- parseCdpDatum,
17
- SystemParams,
18
- } from '../../src';
19
- import { assetClassToUnit } from '../../src/utils/value-helpers';
20
- import { option as O, array as A, function as F } from 'fp-ts';
21
- import { findRandomCollector } from './collector-queries';
22
- import { findGov } from './governance-queries';
23
- import { findIAsset } from './iasset-queries';
24
- import { findInterestOracle } from './interest-oracle-queries';
25
- import { findPriceOracle } from './price-oracle-queries';
26
- import { findStabilityPool } from './stability-pool-queries';
27
- import { findRandomTreasuryUtxo } from './treasury-queries';
28
- import { match, P } from 'ts-pattern';
29
-
30
- export async function findAllActiveCdps(
31
- lucid: LucidEvolution,
32
- sysParams: SystemParams,
33
- assetAscii: string,
34
- stakeCred?: Credential,
35
- ): Promise<{ utxo: UTxO; datum: CDPContent }[]> {
36
- const cdpUtxos = await lucid.utxosAtWithUnit(
37
- createScriptAddress(
38
- lucid.config().network!,
39
- sysParams.validatorHashes.cdpHash,
40
- stakeCred,
41
- ),
42
- assetClassToUnit(fromSystemParamsAsset(sysParams.cdpParams.cdpAuthToken)),
43
- );
44
-
45
- return F.pipe(
46
- cdpUtxos.map((utxo) =>
47
- F.pipe(
48
- O.fromNullable(utxo.datum),
49
- O.flatMap(parseCdpDatum),
50
- O.flatMap((datum) => {
51
- if (datum.iasset === fromText(assetAscii) && datum.cdpOwner) {
52
- return O.some({ utxo, datum: datum });
53
- } else {
54
- return O.none;
55
- }
56
- }),
57
- ),
58
- ),
59
- A.compact,
60
- );
61
- }
62
-
63
- export async function findCdp(
64
- lucid: LucidEvolution,
65
- cdpScriptHash: ScriptHash,
66
- cdpNft: AssetClass,
67
- ownerPkh: string,
68
- stakeCred?: Credential,
69
- ): Promise<{ utxo: UTxO; datum: CDPContent }> {
70
- const cdpUtxos = await lucid.utxosAtWithUnit(
71
- createScriptAddress(lucid.config().network!, cdpScriptHash, stakeCred),
72
- assetClassToUnit(cdpNft),
73
- );
74
-
75
- return matchSingle(
76
- F.pipe(
77
- cdpUtxos.map((utxo) =>
78
- F.pipe(
79
- O.fromNullable(utxo.datum),
80
- O.flatMap(parseCdpDatum),
81
- O.flatMap((datum) => {
82
- if (datum.cdpOwner === ownerPkh) {
83
- return O.some({ utxo, datum: datum });
84
- } else {
85
- return O.none;
86
- }
87
- }),
88
- ),
89
- ),
90
- A.compact,
91
- ),
92
- (res) => new Error('Expected a single CDP UTXO.: ' + JSON.stringify(res)),
93
- );
94
- }
95
-
96
- export async function findFrozenCDPs(
97
- lucid: LucidEvolution,
98
- cdpScriptHash: ScriptHash,
99
- cdpNft: AssetClass,
100
- assetAscii: string,
101
- ): Promise<{ utxo: UTxO; datum: CDPContent }[]> {
102
- const cdpUtxos = await lucid.utxosAtWithUnit(
103
- createScriptAddress(lucid.config().network!, cdpScriptHash),
104
- assetClassToUnit(cdpNft),
105
- );
106
-
107
- return F.pipe(
108
- cdpUtxos.map((utxo) =>
109
- F.pipe(
110
- O.fromNullable(utxo.datum),
111
- O.flatMap(parseCdpDatum),
112
- O.flatMap((datum) => {
113
- if (datum.cdpOwner == null && datum.iasset === fromText(assetAscii)) {
114
- return O.some({ utxo, datum: datum });
115
- } else {
116
- return O.none;
117
- }
118
- }),
119
- ),
120
- ),
121
- A.compact,
122
- );
123
- }
124
-
125
- export async function findAllCdpCreators(
126
- lucid: LucidEvolution,
127
- cdpCreatorScriptHash: string,
128
- cdpCreatorNft: AssetClass,
129
- ): Promise<UTxO[]> {
130
- return lucid.utxosAtWithUnit(
131
- createScriptAddress(lucid.config().network!, cdpCreatorScriptHash),
132
- assetClassToUnit(cdpCreatorNft),
133
- );
134
- }
135
-
136
- export async function findRandomCdpCreator(
137
- lucid: LucidEvolution,
138
- cdpCreatorScriptHash: string,
139
- cdpCreatorNft: AssetClass,
140
- ): Promise<UTxO> {
141
- const cdpCreatorUtxos = await findAllCdpCreators(
142
- lucid,
143
- cdpCreatorScriptHash,
144
- cdpCreatorNft,
145
- );
146
-
147
- return F.pipe(
148
- O.fromNullable(getRandomElement(cdpCreatorUtxos)),
149
- O.match(() => {
150
- throw new Error('Expected some cdp creator UTXOs.');
151
- }, F.identity),
152
- );
153
- }
154
-
155
- export async function findAllNecessaryOrefs(
156
- lucid: LucidEvolution,
157
- sysParams: SystemParams,
158
- // ASCII encoded
159
- asset: string,
160
- ): Promise<{
161
- stabilityPoolUtxo: UTxO;
162
- iasset: IAssetOutput;
163
- cdpCreatorUtxo: UTxO;
164
- priceOracleUtxo: UTxO;
165
- interestOracleUtxo: UTxO;
166
- collectorUtxo: UTxO;
167
- govUtxo: UTxO;
168
- treasuryUtxo: UTxO;
169
- }> {
170
- const iasset = await findIAsset(
171
- lucid,
172
- sysParams.validatorHashes.cdpHash,
173
- fromSystemParamsAsset(sysParams.cdpParams.iAssetAuthToken),
174
- asset,
175
- );
176
-
177
- const stabilityPool = await findStabilityPool(
178
- lucid,
179
- sysParams.validatorHashes.stabilityPoolHash,
180
- fromSystemParamsAsset(sysParams.stabilityPoolParams.stabilityPoolToken),
181
- asset,
182
- );
183
-
184
- return {
185
- stabilityPoolUtxo: stabilityPool,
186
- iasset,
187
- cdpCreatorUtxo: await findRandomCdpCreator(
188
- lucid,
189
- sysParams.validatorHashes.cdpCreatorHash,
190
- fromSystemParamsAsset(sysParams.cdpCreatorParams.cdpCreatorNft),
191
- ),
192
- priceOracleUtxo: await findPriceOracle(
193
- lucid,
194
- match(iasset.datum.price)
195
- .with({ Oracle: { content: P.select() } }, (oracleNft) => oracleNft)
196
- .otherwise(() => {
197
- throw new Error('Expected active oracle');
198
- }),
199
- ),
200
- interestOracleUtxo: await findInterestOracle(
201
- lucid,
202
- iasset.datum.interestOracleNft,
203
- ),
204
- collectorUtxo: await findRandomCollector(
205
- lucid,
206
- sysParams.validatorHashes.collectorHash,
207
- ),
208
- govUtxo: (
209
- await findGov(
210
- lucid,
211
- sysParams.validatorHashes.govHash,
212
- fromSystemParamsAsset(sysParams.govParams.govNFT),
213
- )
214
- ).utxo,
215
- treasuryUtxo: await findRandomTreasuryUtxo(
216
- lucid,
217
- sysParams.validatorHashes.treasuryHash,
218
- ),
219
- };
220
- }
@@ -1,76 +0,0 @@
1
- import {
2
- Credential,
3
- LucidEvolution,
4
- ScriptHash,
5
- UTxO,
6
- } from '@lucid-evolution/lucid';
7
- import { createScriptAddress } from '../../src/utils/lucid-utils';
8
- import {
9
- LRPDatum,
10
- parseLrpDatum,
11
- parseLrpDatumOrThrow,
12
- } from '../../src/contracts/lrp/types';
13
- import { SystemParams } from '../../src';
14
- import { option as O, array as A, function as F } from 'fp-ts';
15
-
16
- /**
17
- * Beware, this shouldn't be used in production since it queries all the UTXOs
18
- * at an address and does the filtering in this function.
19
- */
20
- export async function findLrp(
21
- lucid: LucidEvolution,
22
- lrpScriptHash: ScriptHash,
23
- owner: string,
24
- assetTokenName: string,
25
- stakeCredential?: Credential,
26
- ): Promise<UTxO[]> {
27
- const network = lucid.config().network!;
28
-
29
- const lrpUtxos = await lucid.utxosAt(
30
- createScriptAddress(network, lrpScriptHash, stakeCredential),
31
- );
32
-
33
- return lrpUtxos.filter((utxo) => {
34
- if (utxo.datum != null) {
35
- try {
36
- const lrpDatum = parseLrpDatumOrThrow(utxo.datum);
37
-
38
- return lrpDatum.owner == owner && lrpDatum.iasset == assetTokenName;
39
- } catch (_) {
40
- // when incompatible datum
41
- return false;
42
- }
43
- }
44
- });
45
- }
46
-
47
- export async function findAllLrps(
48
- lucid: LucidEvolution,
49
- sysParams: SystemParams,
50
- // hex encoded
51
- iasset: string,
52
- ): Promise<{ utxo: UTxO; datum: LRPDatum }[]> {
53
- const lrpUtxos = await lucid.utxosAt(
54
- createScriptAddress(
55
- lucid.config().network!,
56
- sysParams.validatorHashes.lrpHash,
57
- ),
58
- );
59
-
60
- return F.pipe(
61
- lrpUtxos.map((utxo) =>
62
- F.pipe(
63
- O.fromNullable(utxo.datum),
64
- O.flatMap(parseLrpDatum),
65
- O.flatMap((datum) => {
66
- if (datum.iasset === iasset) {
67
- return O.some({ utxo, datum: datum });
68
- } else {
69
- return O.none;
70
- }
71
- }),
72
- ),
73
- ),
74
- A.compact,
75
- );
76
- }
@@ -1,10 +0,0 @@
1
- import { LucidEvolution, UTxO } from '@lucid-evolution/lucid';
2
- import { OracleAssetNft } from '../../src';
3
- import { assetClassToUnit } from '../../src/utils/value-helpers';
4
-
5
- export async function findPriceOracle(
6
- lucid: LucidEvolution,
7
- oracleNft: OracleAssetNft,
8
- ): Promise<UTxO> {
9
- return lucid.utxoByUnit(assetClassToUnit(oracleNft.oracleNft));
10
- }