UNPKG

@broxus/js-bridge-essentials

Version:

Bridge JavaScript Essentials library

98 lines (97 loc) 4.73 kB
import { getFullContractState } from '@broxus/js-core'; import { solTvmEventAlienContract } from '../../models/sol-tvm-event-alien/contracts'; export class SolTvmEventAlienUtils { static async getDecodedData(connection, eventAddress, cachedState) { const state = cachedState ?? await getFullContractState(connection, eventAddress); const result = await solTvmEventAlienContract(connection, eventAddress) .methods.getDecodedData({ answerId: 0 }) .call({ cachedState: state, responsible: true }); return { amount: result.amount_, baseToken: result.base_token_, decimals: Number(result.decimals_), expectedGas: result.expected_evers_, name: result.name_, payload: result.payload_, proxyAddress: result.proxy_, recipientAddress: result.recipient_, symbol: result.symbol_, tokenAddress: result.token_, value: result.value_, }; } static async getDetails(connection, eventAddress, cachedState) { const state = cachedState ?? await getFullContractState(connection, eventAddress); const result = await solTvmEventAlienContract(connection, eventAddress) .methods.getDetails({ answerId: 0 }) .call({ cachedState: state, responsible: true }); return { balance: result.balance, confirms: result._confirms, empty: result.empty, eventInitData: { configuration: result._eventInitData.configuration, staking: result._eventInitData.staking, voteData: { accountSeed: result._eventInitData.voteData.accountSeed, blockTime: Number(result._eventInitData.voteData.blockTime), eventData: result._eventInitData.voteData.eventData, slot: result._eventInitData.voteData.slot, txSignature: result._eventInitData.voteData.txSignature, }, }, initializer: result._initializer, meta: result._meta, rejects: result._rejects, requiredVotes: Number(result._requiredVotes), status: result._status, }; } static async getEventInitData(connection, eventAddress, cachedState) { const state = cachedState ?? await getFullContractState(connection, eventAddress); const result = await solTvmEventAlienContract(connection, eventAddress) .methods.getEventInitData({ answerId: 0 }) .call({ cachedState: state, responsible: true }); return { configuration: result.value0.configuration, staking: result.value0.staking, voteData: { accountSeed: result.value0.voteData.accountSeed, blockTime: Number(result.value0.voteData.blockTime), eventData: result.value0.voteData.eventData, slot: result.value0.voteData.slot, txSignature: result.value0.voteData.txSignature, }, }; } static async nonce(connection, eventAddress, cachedState) { const state = cachedState ?? await getFullContractState(connection, eventAddress); const result = await solTvmEventAlienContract(connection, eventAddress) .methods.nonce() .call({ cachedState: state }); return result.nonce; } static async relayRound(connection, eventAddress, cachedState) { const state = cachedState ?? await getFullContractState(connection, eventAddress); const result = await solTvmEventAlienContract(connection, eventAddress) .methods.relay_round() .call({ cachedState: state }); return result.relay_round; } static async roundNumber(connection, eventAddress, cachedState) { const state = cachedState ?? await getFullContractState(connection, eventAddress); const result = await solTvmEventAlienContract(connection, eventAddress) .methods.round_number() .call({ cachedState: state }); return Number(result.round_number); } static decodeEvent(connection, eventAddress, args) { return solTvmEventAlienContract(connection, eventAddress).decodeEvent(args); } static decodeTransaction(connection, eventAddress, args) { return solTvmEventAlienContract(connection, eventAddress).decodeTransaction(args); } static decodeTransactionEvents(connection, eventAddress, transaction) { return solTvmEventAlienContract(connection, eventAddress).decodeTransactionEvents({ transaction }); } }