UNPKG

pulsar-contracts

Version:

73 lines 2.63 kB
import { fetchLastBlock, Mina, UInt32 } from 'o1js'; import { log } from './loggers.js'; import { PulsarAction } from '../types/PulsarAction.js'; import { ENDPOINTS } from './constants.js'; import { SettlementEvent } from '../SettlementContract.js'; export { fetchActions, fetchRawActions, fetchBlockHeight, fetchEvents, setMinaNetwork, }; async function fetchRawActions(address, fromActionState, endActionState) { try { const result = await Mina.fetchActions(address, { fromActionState, endActionState, }); log('Fetched actions:', JSON.stringify(result), null, 2); if (Array.isArray(result)) { return result; } else { console.error('Error fetching actions:', result.error); } } catch (error) { console.error('Unexpected error:', error); } } async function fetchActions(address, fromActionState, endActionState) { const rawActions = await fetchRawActions(address, fromActionState, endActionState); if (!rawActions || rawActions.length === 0) { console.warn('No actions found for the given address and state range.'); return []; } return rawActions.map((action) => { return { action: PulsarAction.fromRawAction(action.actions[0]), hash: BigInt(action.hash), }; }); } async function fetchBlockHeight(network = 'devnet') { try { const lastBlock = await fetchLastBlock(ENDPOINTS.NODE[network]); return Number(lastBlock.blockchainLength.toBigint()); } catch (error) { console.error('Error fetching block height:', error); throw error; } } async function fetchEvents(contractInstance, from = UInt32.from(0), to) { try { const result = await contractInstance.fetchEvents(from, to); const events = result .map((item) => item.event.data) .map((data) => new SettlementEvent({ fromActionState: data.fromActionState, endActionState: data.endActionState, mask: data.mask, })); return events; } catch (error) { console.error('Error fetching events:', error); throw error; } } function setMinaNetwork(network = 'devnet') { const Network = Mina.Network({ mina: ENDPOINTS.NODE[network], archive: ENDPOINTS.ARCHIVE[network], }); console.log(`Setting Mina network to ${network}, Mina endpoint: ${ENDPOINTS.NODE[network]}, Archive endpoint: ${ENDPOINTS.ARCHIVE[network]}`); Mina.setActiveInstance(Network); } //# sourceMappingURL=fetch.js.map