UNPKG

@indigo-labs/indigo-sdk

Version:

Indigo SDK for interacting with Indigo endpoints via lucid-evolution

38 lines (35 loc) 1.06 kB
import { LucidEvolution, ScriptHash, UTxO } from '@lucid-evolution/lucid'; import { createScriptAddress } from '../../src/utils/lucid-utils'; import { matchSingle } from '../../src'; import { option as O, array as A, function as F } from 'fp-ts'; import { GovDatum, parseGovDatum } from '../../src/contracts/gov/types-new'; import { AssetClass, assetClassToUnit, } from '@3rd-eye-labs/cardano-offchain-common'; export async function findGov( lucid: LucidEvolution, govScriptHash: ScriptHash, govNft: AssetClass, ): Promise<{ utxo: UTxO; datum: GovDatum; }> { const govUtxos = await lucid.utxosAtWithUnit( createScriptAddress(lucid.config().network!, govScriptHash), assetClassToUnit(govNft), ); return matchSingle( F.pipe( govUtxos.map((utxo) => F.pipe( O.fromNullable(utxo.datum), O.flatMap(parseGovDatum), O.map((datum) => ({ utxo, datum: datum })), ), ), A.compact, ), (res) => new Error('Expected a single Gov UTXO.: ' + JSON.stringify(res)), ); }