UNPKG

@gateway.fm/gtw-dvf-client-js

Version:

DVF client js lib with gateway.fm rpc endpoints

37 lines (28 loc) 1.31 kB
const FP = require('lodash/fp') const { Joi } = require('dvf-utils') const post = require('../lib/dvf/post-authenticated') const validateWithJoi = require('../lib/validators/validateWithJoi') const makeCreateSignedTransferTx = require('../lib/dvf/makeCreateSignedTransferTx') const generateRandomNonceV2 = require('../lib/dvf/generateRandomNonceV2') const schema = Joi.object({ token: Joi.string(), amount: Joi.bigNumber().greaterThan(0), recipientEthAddress: Joi.string(), nonce: Joi.number().integer().optional() }) const validateInputs = validateWithJoi(schema)('INVALID_METHOD_ARGUMENT')({ context: `transferAndWithdraw` }) module.exports = async (dvf, data, authNonce, signature, createSignedTransferTx = makeCreateSignedTransferTx(dvf)) => { dvf = FP.set('config.useAuthHeader', true, dvf) const { token, amount, recipientEthAddress, nonce } = validateInputs(data) const transferData = { token, amount, recipientVaultId: 0, // We will always use vaultId 0 recipientPublicKey: recipientEthAddress } const endpoint = '/v1/trading/w/transferAndWithdraw' const payload = await dvf.createTransferAndWithdrawPayload(transferData, createSignedTransferTx) return post(dvf, endpoint, authNonce, signature, { ...payload, nonce: nonce || generateRandomNonceV2() }) }