UNPKG

@indigo-labs/indigo-sdk

Version:

Indigo SDK for interacting with Indigo endpoints via lucid-evolution

87 lines (80 loc) 2.44 kB
import { Address, applyParamsToScript, Constr, Credential, Data, fromText, LucidEvolution, SpendingValidator, UTxO, validatorToAddress, validatorToScriptHash, } from '@lucid-evolution/lucid'; import { _cdpCreatorValidator } from '../scripts/cdp-creator-validator'; import { CdpCreatorParams, ScriptReferences } from '../types/system-params'; import { scriptRef } from '../helpers/lucid-utils'; export class CDPCreatorContract { static address(params: CdpCreatorParams, lucid: LucidEvolution): Address { const network = lucid.config().network; if (!network) { throw new Error('Network configuration is undefined'); } return validatorToAddress(network, CDPCreatorContract.validator(params)); } static validator(params: CdpCreatorParams): SpendingValidator { return { type: 'PlutusV2', script: applyParamsToScript(_cdpCreatorValidator.cborHex, [ new Constr(0, [ new Constr(0, [ params.cdpCreatorNft[0].unCurrencySymbol, fromText(params.cdpCreatorNft[1].unTokenName), ]), params.cdpAssetCs.unCurrencySymbol, new Constr(0, [ params.cdpAuthTk[0].unCurrencySymbol, fromText(params.cdpAuthTk[1].unTokenName), ]), new Constr(0, [ params.iAssetAuthTk[0].unCurrencySymbol, fromText(params.iAssetAuthTk[1].unTokenName), ]), new Constr(0, [ params.versionRecordToken[0].unCurrencySymbol, fromText(params.versionRecordToken[1].unTokenName), ]), params.cdpScriptHash, params.collectorValHash, BigInt(params.minCollateralInLovelace), BigInt(params.biasTime), ]), ]), }; } static validatorHash( params: CdpCreatorParams ): string { return validatorToScriptHash(CDPCreatorContract.validator(params)); } static redeemer( hash: Credential, mintedAmount: bigint, collateralAmount: bigint, currentTime: bigint, ): Data { if (hash.type !== 'Key') throw new Error('Cannot support script hash.'); return new Constr<Data>(0, [ hash.hash, BigInt(mintedAmount), BigInt(collateralAmount), currentTime ]); } static scriptRef( params: ScriptReferences, lucid: LucidEvolution, ): Promise<UTxO> { return scriptRef(params.cdpCreatorValidatorRef, lucid); } }