const { instances, netId } = require('../config') const { poseidon } = require('circomlib') const { toBN } = require('web3-utils') const sleep = (ms) => new Promise(res => setTimeout(res, ms)) function getInstance(address) { const inst = instances[`netId${netId}`] for (const currency of Object.keys(inst)) { for (const amount of Object.keys(inst[currency].instanceAddress)) { if (inst[currency].instanceAddress[amount] === address) { return { currency, amount } } } } return null } // async function setSafeInterval(func, interval) { // try { // await func() // } catch (e) { // console.error('Unhandled promise error:', e) // } finally { // setTimeout(() => setSafeInterval(func, interval), interval) // } // } const poseidonHash = (items) => toBN(poseidon(items).toString()) const poseidonHash2 = (a, b) => poseidonHash([a, b]) function setSafeInterval(func, interval) { func().catch(console.error).finally(() => { setTimeout(() => setSafeInterval(func, interval), interval) }) } /** * A promise that resolves when the source emits specified event */ function when(source, event) { return new Promise(resolve => { source.once(event, payload => { resolve(payload) }) }) } module.exports = { getInstance, setSafeInterval, poseidonHash2, sleep, when, }