Pool Pair API

import {JsonRpcClient} from '@defichain/jellyfish-api-jsonrpc'
const client = new JsonRpcClient('http://foo:bar@localhost:8554')

// Using client.poolpair.
const something = await client.poolpair.method()

listPoolPairs

Returns information about pools

interface poolpair {
  listPoolPairs (
    pagination: PoolPairPagination = {
      start: 0,
      including_start: true,
      limit: 100
    },
    verbose = true,
  ): Promise<PoolPairsResult>
}

interface PoolPairsResult {
  [id: string]: PoolPairInfo
}

interface PoolPairInfo {
  symbol: string
  name: string
  status: boolean
  idTokenA: string
  idTokenB: string
  dexFeePctTokenA?: BigNumber
  dexFeeInPctTokenA?: BigNumber
  dexFeeOutPctTokenA?: BigNumber
  dexFeePctTokenB?: BigNumber
  dexFeeInPctTokenB?: BigNumber
  dexFeeOutPctTokenB?: BigNumber
  reserveA: BigNumber
  reserveB: BigNumber
  commission: BigNumber
  totalLiquidity: BigNumber
  'reserveA/reserveB': BigNumber | string
  'reserveB/reserveA': BigNumber | string
  tradeEnabled: boolean
  ownerAddress: string
  blockCommissionA: BigNumber
  blockCommissionB: BigNumber
  rewardPct: BigNumber
  customRewards?: string[]
  creationTx: string
  creationHeight: BigNumber
}

interface PoolPairPagination {
  start: number
  including_start: boolean
  limit: number
}

getPoolPair

Returns information about pools

interface poolpair {
  getPoolPair (symbol: string, verbose = true): Promise<PoolPairsResult>
}

interface PoolPairsResult {
  [id: string]: PoolPairInfo
}

interface PoolPairInfo {
  symbol: string
  name: string
  status: boolean
  idTokenA: string
  idTokenB: string
  dexFeePctTokenA?: BigNumber
  dexFeeInPctTokenA?: BigNumber
  dexFeeOutPctTokenA?: BigNumber
  dexFeePctTokenB?: BigNumber
  dexFeeInPctTokenB?: BigNumber
  dexFeeOutPctTokenB?: BigNumber
  reserveA: BigNumber
  reserveB: BigNumber
  commission: BigNumber
  totalLiquidity: BigNumber
  'reserveA/reserveB': BigNumber | string
  'reserveB/reserveA': BigNumber | string
  tradeEnabled: boolean
  ownerAddress: string
  blockCommissionA: BigNumber
  blockCommissionB: BigNumber
  rewardPct: BigNumber
  customRewards?: string[]
  creationTx: string
  creationHeight: BigNumber
}

addPoolLiquidity

Add pool liquidity transaction

interface poolpair {
  addPoolLiquidity (from: AddPoolLiquiditySource, shareAddress: string, options: PoolLiquidityOptions = {}): Promise<string>
}

interface AddPoolLiquiditySource {
  [address: string]: string | string[]
}

interface PoolLiquidityOptions {
  utxos?: UTXO[]
}

interface UTXO {
  txid: string
  vout: number
}

listPoolShares

Returns information about pools

interface poolpair {
  listPoolShares (
    pagination: PoolPairPagination = {
      start: 0,
      including_start: true,
      limit: 100
    },
    verbose = true,
    options: PoolShareOptions = {},
  ): Promise<PoolSharesResult>
}

interface PoolSharesResult {
  [id: string]: PoolShareInfo
}

interface PoolShareInfo {
  poolID: string
  owner: string
  '%': BigNumber
  amount: BigNumber
  totalLiquidity: BigNumber
}

interface PoolPairPagination {
  start: number
  including_start: boolean
  limit: number
}

interface PoolShareOptions {
  isMineOnly?: boolean
}

poolSwap

Creates a pool swap transaction with given metadata.

interface poolpair {
  poolSwap (metadata: PoolSwapMetadata, utxos: UTXO[] = []): Promise<string>
}

interface PoolSwapMetadata {
  from: string
  tokenFrom: string
  amountFrom: number
  to: string
  tokenTo: string
  maxPrice?: number
}

interface UTXO {
  txid: string
  vout: number
}

compositeSwap

Creates a composite swap (swap between multiple poolpairs) transaction with given metadata.

interface poolpair {
  compositeSwap (metadata: PoolSwapMetadata, utxos: UTXO[] = []): Promise<string>
}

interface PoolSwapMetadata {
  from: string
  tokenFrom: string
  amountFrom: number
  to: string
  tokenTo: string
  maxPrice?: number
}

interface UTXO {
  txid: string
  vout: number
}

testPoolSwap

Create a test pool swap transaction to check pool swap's return result

interface poolpair {
  testPoolSwap (metadata: PoolSwapMetadata): Promise<string>
}

interface PoolSwapMetadata {
  from: string
  tokenFrom: string
  amountFrom: number
  to: string
  tokenTo: string
  maxPrice?: number
}

removePoolLiquidity

Remove pool liquidity transaction

interface poolpair {
  removePoolLiquidity (address: string, poolAccount: string, options: PoolLiquidityOptions = {}): Promise<string>
}

interface PoolLiquidityOptions {
  utxos?: UTXO[]
}

interface UTXO {
  txid: string
  vout: number
}