UNPKG

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

Version:

DVF client js lib with gateway.fm rpc endpoints

243 lines (225 loc) 12.2 kB
/** * - Creates an dvf instance * - Load all functions from the ./api folder into this instance * - Binds the functions so they will always receive dvf as first argument * * This way we get a regular looking API on top of functional code */ const _ = require('lodash') module.exports = () => { const dvf = {} // returns a function that will call api functions prepending dvf // as first argument const compose = funk => { return _.partial(funk, dvf) } // dvf.account functions dvf.account = { balance: compose(require('../../api/account/balance')), tokenBalance: compose(require('../../api/account/tokenBalance')), select: compose(require('../../api/account/select')), getPermissions: compose(require('../../api/account/permissions').getPermissions), setPermissions: compose(require('../../api/account/permissions').setPermissions) } dvf.stark = { createOrder: compose(require('../stark/createOrder')), createMarketOrder: compose(require('../stark/createMarketOrder')), createOrderMessage: compose(require('../stark/createOrderMessage')), sign: compose(require('../stark/starkSign')), signAuth: compose(require('../stark/starkSignAuth')), signAmmFundingOrder: require('../stark/signAmmFundingOrder')(dvf), createTransferMsg: compose(require('../stark/createTransferMessage')), createPrivateKey: require('../stark/createPrivateKey'), createKeyPair: compose(require('../stark/createKeyPair')), register: require('../../api/contract/register'), formatStarkPublicKey: require('../stark/formatStarkPublicKey'), ledger: { getPath: compose(require('../stark/ledger/getPath')), getPublicKey: compose(require('../stark/ledger/getPublicKey')), createWithdrawalData: compose( require('../stark/ledger/createWithdrawalData') ), createFastWithdrawalPayload: compose(require('../stark/ledger/createFastWithdrawalPayload')), createDepositData: compose(require('../stark/ledger/createDepositData')), createSignedTransfer: compose( require('../stark/ledger/createSignedTransfer') ), createSignedOrder: compose( require('../../lib/stark/ledger/createSignedOrder') ) } } // dvf.contract functions dvf.contract = { approve: compose(require('../../api/contract/approve')), isApproved: compose(require('../../api/contract/isApproved')), getPermitNonceForAddress: compose(require('../../api/contract/getPermitNonceForAddress')), getPermitNonceWithUnderscoreForAddress: compose(require('../../api/contract/getPermitNonceWithUnderscoreForAddress')), getNameForAddress: compose(require('../../api/contract/getNameForAddress')), deposit: compose(require('../../api/contract/deposit')), depositCancel: compose(require('../../api/contract/depositCancel')), depositReclaim: compose(require('../../api/contract/depositReclaim')), fullWithdrawalRequest: compose(require('../../api/contract/fullWithdrawalRequest')), getStarkKey: compose(require('../../api/contract/getStarkKey')), getWithdrawalBalance: compose( require('../../api/contract/getWithdrawalBalance') ), getWithdrawalBalanceEthAddress: compose( require('../../api/contract/getWithdrawalBalanceEthAddress') ), getAllWithdrawalBalances: compose( require('../../api/contract/getAllWithdrawalBalances') ), getAllWithdrawalBalancesEthAddress: compose( require('../../api/contract/getAllWithdrawalBalancesEthAddress') ), withdraw: compose(require('../../api/contract/withdraw')), abi: { token: require('../../api/contract/abi/token.abi'), getStarkEx: () => require('../../api/contract/abi/StarkExV2.abi'), WithdrawalBalanceReader: require('../../api/contract/abi/WithdrawalBalanceReader.abi'), getDVFInterface: () => require('../../api/contract/abi/DVFInterface.abi'), getSidechainBridgeInterface: () => require('../../api/contract/abi/BridgeDepositContract.abi') } } // dvf.token functions dvf.token = { // TODO: deprecate getTokenInfo provideContractData: compose(require('../ledger/provideContractData')), getTokenInfo: compose(require('./token/getTokenInfo')), getTokenInfoOrThrow: compose(require('./token/getTokenInfoOrThrow')), getTokenInfoByTokenId: compose(require('./token/getTokenInfoByTokenId')), fromBaseUnitAmount: compose(require('./token/fromBaseUnitAmount')), fromQuantizedAmount: compose(require('./token/fromQuantizedAmount')), toBaseUnitAmount: compose(require('./token/toBaseUnitAmount')), toQuantizedAmount: compose(require('./token/toQuantizedAmount')), maxQuantizedDecimalPlaces: compose(require('./token/maxQuantizedDecimalPlaces')) } // dvf.eth functions dvf.eth = { getWeb3ForChain: compose(require('../../api/eth/getWeb3ForChain')), call: compose(require('../../api/eth/call')), send: compose(require('../../api/eth/send')), getNetwork: compose(require('../../api/eth/getNetwork')), getGasPrice: compose(require('../../api/eth/getGasPrice')), getGasStationPrice: compose(require('../../api/eth/getGasStationPrice')) } // dvf utility functions dvf.util = { generateRandomNonce: require('./generateRandomNonce'), dvfToBfxSymbol: require('../../lib/dvf/dvfToBfxSymbol'), bfxToDvfSymbol: require('../../lib/dvf/bfxToDvfSymbol'), prepareDepositAmount: compose(require('../util/prepareDepositAmount')), attachStarkProvider: compose(require('../../lib/wallet/attachStarkProvider')) } // dvf.sign functions dvf.sign = compose(require('../../api/sign/sign')) dvf.sign.request = compose(require('../../api/sign/request')) dvf.sign.nonceSignature = compose(require('../../api/sign/nonceSignature')) dvf.postAuthenticated = compose(require('../../lib/dvf/post-authenticated')) dvf.getAuthenticated = compose(require('../../lib/dvf/get-authenticated')) dvf.createOrderPayload = compose(require('../../lib/dvf/createOrderPayload')) dvf.createMarketOrderPayload = compose(require('../../lib/dvf/createMarketOrderPayload')) dvf.createOrderMetaData = compose( require('../../lib/dvf/createOrderMetaData') ) dvf.createMarketOrderMetaData = compose( require('../../lib/dvf/createMarketOrderMetaData') ) dvf.createFastWithdrawalPayload = compose( require('./createFastWithdrawalPayload') ) dvf.createTransferPayload = compose( require('./createTransferPayload') ) dvf.createSignedTransfer = compose( require('./createSignedTransfer') ) dvf.createTransferAndWithdrawPayload = compose( require('./createTransferAndWithdrawPayload') ) // dvf trading volume data dvf.get30DaysVolume = compose(require('../../api/get30DaysVolume')) // dvf tickers dvf.getTickers = compose(require('../../api/getTickers')) // dvf get DLM APIs dvf.getTokenHolders = compose(require('../../api/getTokenHolders')) dvf.getTokenLiquidityLeft = compose(require('../../api/getTokenLiquidityLeft')) dvf.getTokenSaleStartEnd = compose(require('../../api/getTokenSaleStartEnd')) // dvf airdrop eligibility dvf.airdropEligibility = compose(require('../../api/airdropEligibility')) dvf.getBridgeContractAddressOrThrow = compose( require('../../lib/dvf/getBridgeContractAddressOrThrow') ) dvf.getBridgeContractAddressOrThrow = compose(require('../../lib/dvf/getBridgeContractAddressOrThrow')) // dvf main functions dvf.cancelOrder = compose(require('../../api/cancelOrder')) dvf.cancelOpenOrders = compose(require('../../api/cancelOpenOrders')) dvf.cancelWithdrawal = compose(require('../../api/cancelWithdrawal')) dvf.deposit = compose(require('../../api/deposit')) dvf.depositV2 = compose(require('../../api/depositV2')) dvf.bridgedDeposit = compose(require('../../api/bridgedDeposit')) dvf.fastWithdrawal = compose(require('../../api/fastWithdrawal')) dvf.fastWithdrawalFee = compose(require('../../api/fastWithdrawalFee')) dvf.fastWithdrawalMaxAmount = compose(require('../../api/fastWithdrawalMaxAmount')) dvf.getDeposits = compose(require('../../api/getDeposits')) dvf.getBalance = compose(require('../../api/getBalance')) dvf.getBalanceUsd = compose(require('../../api/getBalanceUsd')) dvf.getConfig = compose(require('../../api/getConfig')) dvf.getDeposits = compose(require('../../api/getDeposits')) dvf.getFeeRate = compose(require('../../api/getFeeRate')) dvf.getGasPrice = compose(require('../../api/getGasPrice')) dvf.getOrder = compose(require('../../api/getOrder')) dvf.getOrders = compose(require('../../api/getOrders')) dvf.getOrdersHist = compose(require('../../api/getOrdersHist')) dvf.getUserConfig = compose(require('../../api/getUserConfig')) dvf.getUserConfigFromServer = compose(require('../../api/getUserConfigFromServer')) dvf.getVaultId = compose(require('../../api/getVaultId')) dvf.getVaultIdFromServer = compose(require('../../api/getVaultIdFromServer')) dvf.getVaultIdAndStarkKey = compose(require('../../api/getVaultIdAndStarkKey')) dvf.register = compose(require('../../api/register')) dvf.registerAndDeposit = compose(require('../../api/registerAndDeposit')) dvf.submitBuyOrder = compose(require('../../api/submitBuyOrder')) dvf.submitOrder = compose(require('../../api/submitOrder')) dvf.submitMarketOrder = compose(require('../../api/submitMarketOrder')) dvf.submitSellOrder = compose(require('../../api/submitSellOrder')) dvf.transferUsingVaultIdAndStarkKey = compose(require('../../api/transferUsingVaultIdAndStarkKey')) dvf.transfer = compose(require('../../api/transfer')) dvf.transferAndWithdraw = compose(require('../../api/transferAndWithdraw')) dvf.getWithdrawal = compose(require('../../api/getWithdrawal')) dvf.getWithdrawals = compose(require('../../api/getWithdrawals')) dvf.withdraw = compose(require('../../api/withdraw')) dvf.withdrawV2 = compose(require('../../api/withdrawV2')) dvf.bridgedWithdraw = compose(require('../../api/bridgedWithdraw')) dvf.withdrawOnchain = compose(require('../../api/withdrawOnchain')) dvf.getRegistrationStatuses = compose(require('../../api/getRegistrationStatuses')) dvf.fullWithdrawalRequest = compose(require('../../api/fullWithdrawalRequest')) dvf.getMinMaxOrderSize = compose(require('../../api/getMinMaxOrderSize')) dvf.postAmmFundingOrders = compose(require('../../api/amm/postAmmFundingOrders')) dvf.getAmmFundingOrders = compose(require('../../api/amm/getAmmFundingOrders')) dvf.getAmmFundingOrderData = compose(require('../../api/amm/getAmmFundingOrderData')) dvf.poolTVL = compose(require('../../api/amm/poolTVL')) dvf.poolTvlHistory = compose(require('../../api/amm/poolTvlHistory')) dvf.poolVolume24Hours = compose(require('../../api/amm/poolVolume24Hours')) dvf.poolSwapFees = compose(require('../../api/amm/poolSwapFees')) dvf.poolAPY = compose(require('../../api/amm/poolAPY')) dvf.poolUserLpBalance = compose(require('../../api/amm/poolUserLpBalance')) dvf.poolStoredTokens = compose(require('../../api/amm/poolStoredTokens')) dvf.poolUserRewards = compose(require('../../api/amm/poolUserRewards')) dvf.poolUserAccruedFees = compose(require('../../api/amm/poolUserAccruedFees')) dvf.poolTokensRate = compose(require('../../api/amm/poolTokensRate')) dvf.getRewardsLockedState = compose(require('../../api/amm/getRewardsLockedState')) dvf.postRewardsLockedState = compose(require('../../api/amm/postRewardsLockedState')) dvf.walletFailedEvent = compose(require('../../api/walletFailedEvent')) dvf.walletSuccessEvent = compose(require('../../api/walletSuccessEvent')) dvf.ledger = { deposit: compose(require('../../api/ledger/deposit')), withdraw: compose(require('../../api/ledger/withdraw')), transfer: compose(require('../../api/ledger/transfer')), transferAndWithdraw: compose(require('../../api/ledger/transferAndWithdraw')), transferUsingVaultIdAndStarkKey: compose(require('../../api/ledger/transferUsingVaultIdAndStarkKey')) } dvf.estimatedNextBatchTime = compose(require('../../api/estimatedNextBatchTime')) dvf.publicUserPermissions = compose(require('../../api/getPublicPermissions')) return dvf }