UNPKG

@indigo-labs/indigo-sdk

Version:

Indigo SDK for interacting with Indigo endpoints via lucid-evolution

85 lines (79 loc) 2.61 kB
import { fromHex, fromText, paymentCredentialOf } from '@lucid-evolution/lucid'; import { createProposal, fromSystemParamsAsset } from '../../src'; import { processSuccessfulProposal } from '../gov/actions'; import { AssetClass } from '@3rd-eye-labs/cardano-offchain-common'; import { findGov } from '../gov/governance-queries'; import { IndigoTestContext, runAndAwaitTxBuilder } from '../test-helpers'; import { findRandomCdpCreator } from '../cdp/cdp-queries'; import { findIAsset } from '../queries/iasset-queries'; import { Rational, rationalFromInt } from '../../src/types/rational'; export async function runCreateStableswapPool( iasset: string, collateralAsset: AssetClass, context: IndigoTestContext, ratioAssets?: Rational, mintingFeeRatio?: Rational, redemptionFeeRatio?: Rational, ): Promise<void> { const feeManager = fromHex( paymentCredentialOf(context.users.admin.address).hash, ); const [tx, pollId] = await createProposal( { ProposeStableswapPool: { iasset: fromHex(fromText(iasset)), collateralAsset: collateralAsset, collateralToIassetRatio: ratioAssets ? ratioAssets : rationalFromInt(1n), mintingFeeRatio: mintingFeeRatio ? mintingFeeRatio : { numerator: 5n, denominator: 1_000n }, redemptionFeeRatio: redemptionFeeRatio ? redemptionFeeRatio : { numerator: 5n, denominator: 1_000n }, feeManager: feeManager, minMintingAmount: 0n, minRedemptionAmount: 0n, stableswapValHash: fromHex( context.systemParams.validatorHashes.stableswapHash, ), }, }, null, context.systemParams, context.lucid, context.emulator.slot, ( await findGov( context.lucid, context.systemParams.validatorHashes.govHash, fromSystemParamsAsset(context.systemParams.govParams.govNFT), ) ).utxo, undefined, ); await runAndAwaitTxBuilder(context.lucid, tx); const iassetReference = await findIAsset( context.lucid, context.systemParams.validatorHashes.iassetHash, fromSystemParamsAsset(context.systemParams.cdpParams.iAssetAuthToken), 'iUSD', ); const cdpCreatorUtxo = await findRandomCdpCreator( context.lucid, context.systemParams.validatorHashes.cdpCreatorHash, fromSystemParamsAsset(context.systemParams.cdpCreatorParams.cdpCreatorNft), ); await processSuccessfulProposal( pollId, null, null, iassetReference.utxo, null, null, cdpCreatorUtxo, context.systemParams, context, ); }