Skip to content

Commit

Permalink
Merge pull request #1669 from RafaelTaranto/feat/bitfinex-implementation
Browse files Browse the repository at this point in the history
LAM-1087 feat: bitfinex implementation
  • Loading branch information
RafaelTaranto authored Apr 15, 2024
2 parents 4010f32 + 26d3857 commit 6234390
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 4 deletions.
4 changes: 3 additions & 1 deletion lib/new-admin/config/accounts.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const _ = require('lodash/fp')
const { ALL } = require('../../plugins/common/ccxt')

const { BTC, BCH, DASH, ETH, LTC, USDT, ZEC, XMR, LN, TRX, USDT_TRON } = COINS
const { bitpay, coinbase, itbit, bitstamp, kraken, binanceus, cex, binance } = ALL
const { bitpay, coinbase, itbit, bitstamp, kraken, binanceus, cex, binance, bitfinex } = ALL

const TICKER = 'ticker'
const WALLET = 'wallet'
Expand All @@ -17,6 +17,8 @@ const ZERO_CONF = 'zeroConf'
const WALLET_SCORING = 'wallet_scoring'

const ALL_ACCOUNTS = [
{ code: 'bitfinex', display: 'Bitfinex', class: TICKER, cryptos: bitfinex.CRYPTO },
{ code: 'bitfinex', display: 'Bitfinex', class: EXCHANGE, cryptos: bitfinex.CRYPTO },
{ code: 'binance', display: 'Binance', class: TICKER, cryptos: binance.CRYPTO },
{ code: 'binanceus', display: 'Binance.us', class: TICKER, cryptos: binanceus.CRYPTO },
{ code: 'cex', display: 'CEX.IO', class: TICKER, cryptos: cex.CRYPTO },
Expand Down
3 changes: 2 additions & 1 deletion lib/new-settings-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ const SECRET_FIELDS = [
'telnyx.apiKey',
'vonage.apiSecret',
'galoy.walletId',
'galoy.apiSecret'
'galoy.apiSecret',
'bitfinex.secret'
]

/*
Expand Down
4 changes: 3 additions & 1 deletion lib/plugins/common/ccxt.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const binanceus = require('../exchange/binanceus')
const cex = require('../exchange/cex')
const bitpay = require('../ticker/bitpay')
const binance = require('../exchange/binance')
const bitfinex = require('../exchange/bitfinex')
const logger = require('../../logger')

const { BTC, BCH, DASH, ETH, LTC, ZEC, USDT, TRX, USDT_TRON, LN } = COINS
Expand All @@ -24,7 +25,8 @@ const ALL = {
CRYPTO: [BTC, ETH, LTC, DASH, ZEC, BCH, USDT, USDT_TRON, TRX, LN],
FIAT: 'ALL_CURRENCIES'
},
binance: binance
binance: binance,
bitfinex: bitfinex
}

function buildMarket (fiatCode, cryptoCode, serviceName) {
Expand Down
21 changes: 21 additions & 0 deletions lib/plugins/exchange/bitfinex.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
const { COINS } = require('@lamassu/coins')
const _ = require('lodash/fp')

const { ORDER_TYPES } = require('./consts')

const ORDER_TYPE = ORDER_TYPES.MARKET
const { BTC, ETH, LTC, BCH, USDT, LN } = COINS
const CRYPTO = [BTC, ETH, LTC, BCH, USDT, LN]
const FIAT = ['USD', 'EUR']
const AMOUNT_PRECISION = 8
const REQUIRED_CONFIG_FIELDS = ['key', 'secret']

const loadConfig = (account) => {
const mapper = {
'key': 'apiKey',
}
const mapped = _.mapKeys(key => mapper[key] ? mapper[key] : key)(account)
return { ...mapped, timeout: 3000 }
}

module.exports = { loadConfig, REQUIRED_CONFIG_FIELDS, CRYPTO, FIAT, ORDER_TYPE, AMOUNT_PRECISION }
36 changes: 36 additions & 0 deletions new-lamassu-admin/src/pages/Services/schemas/bitfinex.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import * as Yup from 'yup'

import SecretInputFormik from 'src/components/inputs/formik/SecretInput'
import TextInputFormik from 'src/components/inputs/formik/TextInput'

import { secretTest } from './helper'

export default {
code: 'bitfinex',
name: 'Bitfinex',
title: 'Bitfinex (Exchange)',
elements: [
{
code: 'key',
display: 'API Key',
component: TextInputFormik,
face: true,
long: true
},
{
code: 'secret',
display: 'API Secret',
component: SecretInputFormik
}
],
getValidationSchema: account => {
return Yup.object().shape({
key: Yup.string('The API key must be a string')
.max(100, 'The API key is too long')
.required('The API key is required'),
secret: Yup.string('The API secret must be a string')
.max(100, 'The API secret is too long')
.test(secretTest(account?.secret, 'API secret'))
})
}
}
4 changes: 3 additions & 1 deletion new-lamassu-admin/src/pages/Services/schemas/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import binance from './binance'
import binanceus from './binanceus'
import bitfinex from './bitfinex'
import bitgo from './bitgo'
import bitstamp from './bitstamp'
import blockcypher from './blockcypher'
Expand Down Expand Up @@ -31,5 +32,6 @@ export default {
[cex.code]: cex,
[ciphertrace.code]: ciphertrace,
[trongrid.code]: trongrid,
[binance.code]: binance
[binance.code]: binance,
[bitfinex.code]: bitfinex
}

0 comments on commit 6234390

Please sign in to comment.