@indigo-labs/indigo-sdk 0.2.42 → 0.3.1

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 (202) hide show
  1. package/.github/workflows/ci.yml +4 -2
  2. package/README.md +88 -15
  3. package/dist/index.d.mts +3012 -2194
  4. package/dist/index.d.ts +3012 -2194
  5. package/dist/index.js +9849 -6198
  6. package/dist/index.mjs +8733 -4933
  7. package/package.json +14 -3
  8. package/src/contracts/cdp/helpers.ts +68 -72
  9. package/src/contracts/cdp/scripts.ts +50 -13
  10. package/src/contracts/cdp/transactions.ts +841 -546
  11. package/src/contracts/cdp/types-new.ts +256 -0
  12. package/src/contracts/cdp/types.ts +26 -144
  13. package/src/contracts/cdp-creator/scripts.ts +15 -9
  14. package/src/contracts/cdp-creator/types-new.ts +50 -0
  15. package/src/contracts/cdp-creator/types.ts +5 -31
  16. package/src/contracts/collector/scripts.ts +1 -1
  17. package/src/contracts/collector/transactions.ts +23 -13
  18. package/src/contracts/collector/types-new.ts +17 -0
  19. package/src/contracts/execute/scripts.ts +19 -10
  20. package/src/contracts/execute/types-new.ts +44 -0
  21. package/src/contracts/execute/types.ts +5 -38
  22. package/src/contracts/gov/helpers.ts +187 -51
  23. package/src/contracts/gov/scripts.ts +17 -10
  24. package/src/contracts/gov/transactions.ts +599 -271
  25. package/src/contracts/gov/types-new.ts +253 -100
  26. package/src/contracts/gov/types.ts +4 -71
  27. package/src/contracts/iasset/helpers.ts +172 -0
  28. package/src/contracts/iasset/scripts.ts +38 -0
  29. package/src/contracts/iasset/types.ts +154 -0
  30. package/src/contracts/initialize/actions.ts +768 -0
  31. package/src/contracts/initialize/helpers.ts +611 -36
  32. package/src/contracts/initialize/types.ts +102 -28
  33. package/src/contracts/interest-collection/helpers.ts +19 -0
  34. package/src/contracts/interest-collection/scripts.ts +44 -0
  35. package/src/contracts/interest-collection/transactions.ts +436 -0
  36. package/src/contracts/interest-collection/types-new.ts +50 -0
  37. package/src/contracts/interest-collection/types.ts +26 -0
  38. package/src/contracts/interest-oracle/helpers.ts +2 -30
  39. package/src/contracts/interest-oracle/scripts.ts +1 -1
  40. package/src/contracts/interest-oracle/transactions.ts +21 -16
  41. package/src/contracts/interest-oracle/types-new.ts +32 -0
  42. package/src/contracts/interest-oracle/types.ts +1 -40
  43. package/src/contracts/one-shot/transactions.ts +1 -2
  44. package/src/contracts/poll/helpers.ts +5 -23
  45. package/src/contracts/poll/scripts.ts +12 -13
  46. package/src/contracts/poll/types-poll-manager.ts +1 -19
  47. package/src/contracts/poll/types-poll-new.ts +170 -0
  48. package/src/contracts/poll/types-poll-shard.ts +2 -24
  49. package/src/contracts/price-oracle/helpers.ts +1 -4
  50. package/src/contracts/price-oracle/scripts.ts +3 -8
  51. package/src/contracts/price-oracle/transactions.ts +32 -25
  52. package/src/contracts/price-oracle/types-new.ts +50 -0
  53. package/src/contracts/price-oracle/types.ts +2 -36
  54. package/src/contracts/pyth-feed/helpers.ts +58 -0
  55. package/src/contracts/pyth-feed/scripts.ts +15 -0
  56. package/src/contracts/pyth-feed/types.ts +181 -0
  57. package/src/contracts/rob/helpers.ts +405 -0
  58. package/src/contracts/rob/scripts.ts +35 -0
  59. package/src/contracts/rob/transactions.ts +410 -0
  60. package/src/contracts/rob/types-new.ts +128 -0
  61. package/src/contracts/rob/types.ts +16 -0
  62. package/src/contracts/rob-leverage/helpers.ts +424 -0
  63. package/src/contracts/{leverage → rob-leverage}/transactions.ts +68 -48
  64. package/src/contracts/stability-pool/helpers.ts +714 -230
  65. package/src/contracts/stability-pool/scripts.ts +20 -15
  66. package/src/contracts/stability-pool/transactions.ts +628 -496
  67. package/src/contracts/stability-pool/types-new.ts +247 -100
  68. package/src/contracts/stability-pool/types.ts +5 -22
  69. package/src/contracts/stableswap/helpers.ts +22 -0
  70. package/src/contracts/stableswap/scripts.ts +37 -0
  71. package/src/contracts/stableswap/transactions.ts +647 -0
  72. package/src/contracts/stableswap/types-new.ts +131 -0
  73. package/src/contracts/stableswap/types.ts +17 -0
  74. package/src/contracts/staking/helpers.ts +49 -34
  75. package/src/contracts/staking/scripts.ts +1 -1
  76. package/src/contracts/staking/transactions.ts +85 -130
  77. package/src/contracts/staking/types-new.ts +60 -28
  78. package/src/contracts/staking/types.ts +1 -28
  79. package/src/contracts/treasury/helpers.ts +21 -0
  80. package/src/contracts/treasury/scripts.ts +16 -26
  81. package/src/contracts/treasury/transactions.ts +256 -27
  82. package/src/contracts/treasury/types-new.ts +69 -0
  83. package/src/contracts/treasury/types.ts +2 -43
  84. package/src/contracts/version-registry/scripts.ts +2 -2
  85. package/src/contracts/version-registry/types-new.ts +6 -7
  86. package/src/index.ts +37 -20
  87. package/src/scripts/auth-token-policy.ts +3 -2
  88. package/src/scripts/iasset-policy.ts +3 -2
  89. package/src/types/evolution-schema-options.ts +3 -3
  90. package/src/types/generic.ts +17 -89
  91. package/src/types/multisig.ts +48 -0
  92. package/src/types/on-chain-decimal.ts +14 -7
  93. package/src/types/rational.ts +61 -0
  94. package/src/types/system-params.ts +237 -41
  95. package/src/utils/array-utils.ts +70 -1
  96. package/src/utils/bigint-utils.ts +12 -0
  97. package/src/utils/indigo-helpers.ts +8 -10
  98. package/src/utils/lucid-utils.ts +47 -40
  99. package/src/utils/oracle-helpers.ts +62 -0
  100. package/src/utils/pyth/decode.ts +223 -0
  101. package/src/utils/pyth/encode.ts +262 -0
  102. package/src/utils/pyth/index.ts +14 -0
  103. package/src/utils/pyth/types.ts +87 -0
  104. package/src/validators/always-succeed-validator.ts +6 -0
  105. package/src/validators/cdp-creator-validator.ts +2 -2
  106. package/src/validators/cdp-redeem-validator.ts +7 -0
  107. package/src/validators/cdp-validator.ts +2 -2
  108. package/src/validators/collector-validator.ts +2 -2
  109. package/src/validators/execute-validator.ts +2 -2
  110. package/src/validators/governance-validator.ts +2 -2
  111. package/src/validators/iasset-validator.ts +7 -0
  112. package/src/validators/interest-collection-validator.ts +7 -0
  113. package/src/validators/interest-oracle-validator.ts +2 -2
  114. package/src/validators/poll-manager-validator.ts +2 -2
  115. package/src/validators/poll-shard-validator.ts +2 -2
  116. package/src/validators/price-oracle-validator.ts +7 -0
  117. package/src/validators/pyth-feed-validator.ts +7 -0
  118. package/src/validators/rob-validator.ts +7 -0
  119. package/src/validators/stability-pool-validator.ts +2 -2
  120. package/src/validators/stableswap-validator.ts +7 -0
  121. package/src/validators/staking-validator.ts +2 -2
  122. package/src/validators/treasury-validator.ts +2 -2
  123. package/src/validators/version-record-policy.ts +2 -2
  124. package/src/validators/version-registry-validator.ts +2 -2
  125. package/tests/always-succeed/script.ts +7 -0
  126. package/tests/bigint-utils.test.ts +41 -0
  127. package/tests/cdp/actions.ts +610 -0
  128. package/tests/cdp/cdp-helpers.ts +55 -0
  129. package/tests/cdp/cdp-queries.ts +440 -0
  130. package/tests/cdp/cdp.test.ts +6087 -0
  131. package/tests/cdp/transactions-mutated.ts +1729 -0
  132. package/tests/data/system-params.json +177 -34
  133. package/tests/datums.test.ts +209 -210
  134. package/tests/endpoints/initialize.ts +68 -0
  135. package/tests/endpoints/interest-collector.ts +37 -0
  136. package/tests/endpoints/treasury.ts +70 -0
  137. package/tests/gov/actions.ts +406 -0
  138. package/tests/gov/gov.test.ts +4450 -0
  139. package/tests/{queries → gov}/governance-queries.ts +6 -3
  140. package/tests/hash-checks.test.ts +38 -11
  141. package/tests/indigo-test-helpers.ts +100 -0
  142. package/tests/initialize.test.ts +61 -9
  143. package/tests/interest-collection/interest-collection.test.ts +892 -0
  144. package/tests/interest-collection/interest-collector-queries.ts +49 -0
  145. package/tests/interest-collection/transactions-mutated.ts +260 -0
  146. package/tests/interest-oracle.test.ts +43 -35
  147. package/tests/mock/assets-mock.ts +234 -23
  148. package/tests/mock/protocol-params-mock.ts +21 -0
  149. package/tests/price-oracle/actions.ts +163 -0
  150. package/tests/price-oracle/price-oracle-queries.ts +12 -0
  151. package/tests/price-oracle/price-oracle.test.ts +240 -0
  152. package/tests/price-oracle/transactions-mutated.ts +62 -0
  153. package/tests/pyth/endpoints.ts +96 -0
  154. package/tests/pyth/helpers.ts +37 -0
  155. package/tests/pyth/pyth-encoding.test.ts +376 -0
  156. package/tests/pyth/pyth-indigo.test.ts +509 -0
  157. package/tests/pyth/pyth.test.ts +300 -0
  158. package/tests/queries/execute-queries.ts +6 -5
  159. package/tests/queries/iasset-queries.ts +175 -5
  160. package/tests/queries/interest-oracle-queries.ts +4 -2
  161. package/tests/queries/poll-queries.ts +8 -9
  162. package/tests/queries/stability-pool-queries.ts +95 -48
  163. package/tests/queries/staking-queries.ts +4 -2
  164. package/tests/queries/treasury-queries.ts +80 -5
  165. package/tests/rob/actions.ts +58 -0
  166. package/tests/{lrp-leverage.test.ts → rob/rob-leverage.test.ts} +393 -296
  167. package/tests/rob/rob-queries.ts +95 -0
  168. package/tests/rob/rob.test.ts +3762 -0
  169. package/tests/rob/transactions-mutated.ts +853 -0
  170. package/tests/script-size.test.ts +240 -0
  171. package/tests/setup.ts +135 -0
  172. package/tests/stability-pool/actions.ts +220 -0
  173. package/tests/stability-pool.test.ts +6121 -667
  174. package/tests/stableswap/stableswap-actions.ts +84 -0
  175. package/tests/stableswap/stableswap-queries.ts +89 -0
  176. package/tests/stableswap/stableswap.test.ts +3891 -0
  177. package/tests/stableswap/transactions-mutated.ts +348 -0
  178. package/tests/staking.test.ts +82 -99
  179. package/tests/test-helpers.ts +58 -11
  180. package/tests/treasury.test.ts +242 -0
  181. package/tests/utils/asserts.ts +74 -0
  182. package/tests/utils/benchmark-utils.ts +81 -0
  183. package/tests/utils/index.ts +122 -4
  184. package/tsconfig.json +9 -1
  185. package/vitest.config.ts +3 -1
  186. package/src/contracts/collector/types.ts +0 -16
  187. package/src/contracts/initialize/transactions.ts +0 -891
  188. package/src/contracts/leverage/helpers.ts +0 -424
  189. package/src/contracts/lrp/helpers.ts +0 -294
  190. package/src/contracts/lrp/scripts.ts +0 -27
  191. package/src/contracts/lrp/transactions.ts +0 -250
  192. package/src/contracts/lrp/types.ts +0 -131
  193. package/src/contracts/poll/types-poll.ts +0 -88
  194. package/src/contracts/vesting/helpers.ts +0 -218
  195. package/src/utils/value-helpers.ts +0 -37
  196. package/src/validators/lrp-validator.ts +0 -7
  197. package/tests/cdp.test.ts +0 -1528
  198. package/tests/gov.test.ts +0 -2011
  199. package/tests/lrp.test.ts +0 -673
  200. package/tests/queries/cdp-queries.ts +0 -220
  201. package/tests/queries/lrp-queries.ts +0 -76
  202. package/tests/queries/price-oracle-queries.ts +0 -10
@@ -0,0 +1,84 @@
1
+ import { fromHex, fromText, paymentCredentialOf } from '@lucid-evolution/lucid';
2
+ import { createProposal, fromSystemParamsAsset } from '../../src';
3
+ import { processSuccessfulProposal } from '../gov/actions';
4
+ import { AssetClass } from '@3rd-eye-labs/cardano-offchain-common';
5
+ import { findGov } from '../gov/governance-queries';
6
+ import { IndigoTestContext, runAndAwaitTxBuilder } from '../test-helpers';
7
+ import { findRandomCdpCreator } from '../cdp/cdp-queries';
8
+ import { findIAsset } from '../queries/iasset-queries';
9
+ import { Rational, rationalFromInt } from '../../src/types/rational';
10
+
11
+ export async function runCreateStableswapPool(
12
+ iasset: string,
13
+ collateralAsset: AssetClass,
14
+ context: IndigoTestContext,
15
+ ratioAssets?: Rational,
16
+ mintingFeeRatio?: Rational,
17
+ redemptionFeeRatio?: Rational,
18
+ ): Promise<void> {
19
+ const feeManager = fromHex(
20
+ paymentCredentialOf(context.users.admin.address).hash,
21
+ );
22
+ const [tx, pollId] = await createProposal(
23
+ {
24
+ ProposeStableswapPool: {
25
+ iasset: fromHex(fromText(iasset)),
26
+ collateralAsset: collateralAsset,
27
+ collateralToIassetRatio: ratioAssets
28
+ ? ratioAssets
29
+ : rationalFromInt(1n),
30
+ mintingFeeRatio: mintingFeeRatio
31
+ ? mintingFeeRatio
32
+ : { numerator: 5n, denominator: 1_000n },
33
+ redemptionFeeRatio: redemptionFeeRatio
34
+ ? redemptionFeeRatio
35
+ : { numerator: 5n, denominator: 1_000n },
36
+ feeManager: feeManager,
37
+ minMintingAmount: 0n,
38
+ minRedemptionAmount: 0n,
39
+ stableswapValHash: fromHex(
40
+ context.systemParams.validatorHashes.stableswapHash,
41
+ ),
42
+ },
43
+ },
44
+ null,
45
+ context.systemParams,
46
+ context.lucid,
47
+ context.emulator.slot,
48
+ (
49
+ await findGov(
50
+ context.lucid,
51
+ context.systemParams.validatorHashes.govHash,
52
+ fromSystemParamsAsset(context.systemParams.govParams.govNFT),
53
+ )
54
+ ).utxo,
55
+ undefined,
56
+ );
57
+
58
+ await runAndAwaitTxBuilder(context.lucid, tx);
59
+
60
+ const iassetReference = await findIAsset(
61
+ context.lucid,
62
+ context.systemParams.validatorHashes.iassetHash,
63
+ fromSystemParamsAsset(context.systemParams.cdpParams.iAssetAuthToken),
64
+ 'iUSD',
65
+ );
66
+
67
+ const cdpCreatorUtxo = await findRandomCdpCreator(
68
+ context.lucid,
69
+ context.systemParams.validatorHashes.cdpCreatorHash,
70
+ fromSystemParamsAsset(context.systemParams.cdpCreatorParams.cdpCreatorNft),
71
+ );
72
+
73
+ await processSuccessfulProposal(
74
+ pollId,
75
+ null,
76
+ null,
77
+ iassetReference.utxo,
78
+ null,
79
+ null,
80
+ cdpCreatorUtxo,
81
+ context.systemParams,
82
+ context,
83
+ );
84
+ }
@@ -0,0 +1,89 @@
1
+ import { AssetClass, matchSingle } from '@3rd-eye-labs/cardano-offchain-common';
2
+ import {
3
+ LucidEvolution,
4
+ ScriptHash,
5
+ toHex,
6
+ UTxO,
7
+ } from '@lucid-evolution/lucid';
8
+ import {
9
+ parseStableswapOrderDatum,
10
+ StableswapOrderDatum,
11
+ } from '../../src/contracts/stableswap/types-new';
12
+ import { createScriptAddress } from '../../src';
13
+ import { array as A, function as F, option as O } from 'fp-ts';
14
+
15
+ export async function findSingleStableswapOrder(
16
+ lucid: LucidEvolution,
17
+ stableswapScriptHash: ScriptHash,
18
+ iassetName: string,
19
+ collateralAsset: AssetClass,
20
+ ): Promise<{ utxo: UTxO; datum: StableswapOrderDatum }> {
21
+ const cdpUtxos = await lucid.utxosAt(
22
+ createScriptAddress(lucid.config().network!, stableswapScriptHash),
23
+ );
24
+
25
+ return matchSingle(
26
+ F.pipe(
27
+ cdpUtxos.map((utxo) =>
28
+ F.pipe(
29
+ O.fromNullable(utxo.datum),
30
+ O.flatMap(parseStableswapOrderDatum),
31
+ O.flatMap((datum) => {
32
+ if (
33
+ toHex(datum.iasset) === iassetName &&
34
+ toHex(datum.collateralAsset.currencySymbol) ===
35
+ toHex(collateralAsset.currencySymbol) &&
36
+ toHex(datum.collateralAsset.tokenName) ===
37
+ toHex(collateralAsset.tokenName)
38
+ ) {
39
+ return O.some({ utxo, datum: datum });
40
+ } else {
41
+ return O.none;
42
+ }
43
+ }),
44
+ ),
45
+ ),
46
+ A.compact,
47
+ ),
48
+ (res) =>
49
+ new Error(
50
+ 'Expected a single stableswap order UTXO.: ' + JSON.stringify(res),
51
+ ),
52
+ );
53
+ }
54
+
55
+ export async function findStableswapOrders(
56
+ lucid: LucidEvolution,
57
+ stableswapScriptHash: ScriptHash,
58
+ iassetName: string,
59
+ collateralAsset: AssetClass,
60
+ ): Promise<{ utxo: UTxO; datum: StableswapOrderDatum }[]> {
61
+ const cdpUtxos = await lucid.utxosAt(
62
+ createScriptAddress(lucid.config().network!, stableswapScriptHash),
63
+ );
64
+
65
+ const orders = F.pipe(
66
+ cdpUtxos.map((utxo) =>
67
+ F.pipe(
68
+ O.fromNullable(utxo.datum),
69
+ O.flatMap(parseStableswapOrderDatum),
70
+ O.flatMap((datum) => {
71
+ if (
72
+ toHex(datum.iasset) === iassetName &&
73
+ toHex(datum.collateralAsset.currencySymbol) ===
74
+ toHex(collateralAsset.currencySymbol) &&
75
+ toHex(datum.collateralAsset.tokenName) ===
76
+ toHex(collateralAsset.tokenName)
77
+ ) {
78
+ return O.some({ utxo, datum: datum });
79
+ } else {
80
+ return O.none;
81
+ }
82
+ }),
83
+ ),
84
+ ),
85
+ A.compact,
86
+ );
87
+
88
+ return orders;
89
+ }