Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
prompt.get(fields, values => {
new ethers.Contract(indexerAddress, Indexer.abi, wallet)
.getLocators(values.signerToken, values.senderToken, constants.PROTOCOL_CODE, constants.INDEX_HEAD, values.count)
.then(result => {
if (!result.locators.length) {
console.log('No locators found.')
} else {
for (let i = 0; i < result.locators.length; i++) {
try {
console.log(`${i + 1}. ${ethers.utils.parseBytes32String(result.locators[i])} (${result.scores[i]})`)
} catch (e) {
console.log(`${i + 1}. Could not parse (${result.locators[i]})`)
}
}
}
})
.catch(prompt.handleError)
})
async function setIntent(signerToken, senderToken, locator, stakeAmount, wallet) {
const indexerAddress = indexerDeploys[wallet.provider.network.chainId]
console.log(chalk.white(`Indexer ${indexerAddress}\n`))
console.log(chalk.white(`Signer Token ${signerToken}`))
console.log(chalk.white(`Sender Token ${senderToken}`))
console.log(chalk.white(`Locator ${locator}`))
console.log(chalk.white(`Stake Amount ${stakeAmount}`))
const indexerContract = new ethers.Contract(indexerAddress, Indexer.abi, wallet)
const index = await indexerContract.indexes(signerToken, senderToken, constants.PROTOCOL_CODE)
if (index == constants.ADDRESS_ZERO) {
console.log(`\n${chalk.yellow('Error')}: Index does not exist`)
console.log(`You can create one for this token pair using ${chalk.bold('yarn indexer:create')}\n`)
return
}
const atomicAmount = stakeAmount * 10 ** constants.AST_DECIMALS
const astContract = new ethers.Contract(
constants.stakingTokenAddresses[wallet.provider.network.chainId],
IERC20.abi,
wallet,
)
const balance = await astContract.balanceOf(wallet.address)
if (balance.toNumber() < atomicAmount) {
prompt.get(fields, values => {
const indexerContract = new ethers.Contract(indexerAddress, Indexer.abi, wallet)
indexerContract.indexes(values.signerToken, values.senderToken).then(index => {
if (index !== constants.ADDRESS_ZERO) {
console.log(`\n${chalk.yellow('Error')}: Index already exists`)
console.log(`You can stake on this index using ${chalk.bold('yarn indexer:set')}\n`)
} else {
prompt.confirm('This will create a new Index for a token pair.', values, 'send transaction', () => {
new ethers.Contract(indexerAddress, Indexer.abi, wallet)
.createIndex(values.signerToken, values.senderToken)
.then(prompt.handleTransaction)
.catch(prompt.handleError)
})
}
})
})
})
prompt.get(fields, values => {
new ethers.Contract(indexerAddress, Indexer.abi, wallet)
.indexes(values.signerToken, values.senderToken)
.then(indexAddress => {
if (indexAddress === '0x0000000000000000000000000000000000000000') {
console.log(`\n${chalk.yellow('Error')}: Token Pair Not Found\n`)
} else {
prompt.confirm('Unset an Intent', values, 'send transaction', () => {
new ethers.Contract(indexerAddress, Indexer.abi, wallet)
.unsetIntent(values.signerToken, values.senderToken)
.then(prompt.handleTransaction)
.catch(prompt.handleError)
})
}
})
})
})
network.select('Set Intent to Trade', wallet => {
const indexerAddress = indexerDeploys[wallet.provider.network.chainId]
console.log(chalk.white(`Indexer ${indexerAddress}\n`))
const indexerContract = new ethers.Contract(indexerAddress, Indexer.abi, wallet)
prompt.get(fields, values => {
indexerContract.indexes(values.signerToken, values.senderToken).then(index => {
if (index === constants.ADDRESS_ZERO) {
console.log(`\n${chalk.yellow('Error')}: Index does not exist`)
console.log(`You can create one for this token pair using ${chalk.bold('yarn indexer:create')}\n`)
} else {
const atomicAmount = values.stakeAmount * 10 ** constants.AST_DECIMALS
new ethers.Contract(constants.stakingTokenAddresses[wallet.provider.network.chainId], IERC20.abi, wallet)
.balanceOf(wallet.address)
.then(balance => {
if (balance.toNumber() < atomicAmount) {
console.log(
chalk.red('\n\nError ') +
`The selected account cannot stake ${values.stakeAmount} AST. Its balance is ${balance.toNumber() /
10 ** constants.AST_DECIMALS}.\n`,
)
prompt.confirm('Set an Intent', values, 'send transaction', () => {
const locatorBytes = ethers.utils.formatBytes32String(values.locator)
new ethers.Contract(indexerAddress, Indexer.abi, wallet)
.setIntent(values.signerToken, values.senderToken, atomicAmount, locatorBytes)
.then(prompt.handleTransaction)
.catch(prompt.handleError)
})
}
prompt.confirm('Unset an Intent', values, 'send transaction', () => {
new ethers.Contract(indexerAddress, Indexer.abi, wallet)
.unsetIntent(values.signerToken, values.senderToken)
.then(prompt.handleTransaction)
.catch(prompt.handleError)
})
}
prompt.get(getFields(['signerToken', 'senderToken'], signerSide, senderSide), values => {
new ethers.Contract(indexerAddress, Indexer.abi, wallet)
.getLocators(
values.signerToken,
values.senderToken,
constants.PROTOCOL_CODE,
constants.INDEX_HEAD,
constants.MAX_LOCATORS,
)
.then(result => {
callback(result, values)
})
})
}
prompt.confirm('This will create a new Index for a token pair.', values, 'send transaction', () => {
new ethers.Contract(indexerAddress, Indexer.abi, wallet)
.createIndex(values.signerToken, values.senderToken)
.then(prompt.handleTransaction)
.catch(prompt.handleError)
})
}