@indigo-labs/indigo-sdk
Version:
Indigo SDK for interacting with Indigo endpoints via lucid-evolution
85 lines (79 loc) • 2.61 kB
text/typescript
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,
);
}