Skip to main content

index/functions/bidirectionalTokenMatch.md

bidirectionalTokenMatch(token0, token1, tokenA, tokenB): boolean

Check if two token pairs match in either order (bidirectional).

Compares two pairs of tokens to see if they represent the same pair, accounting for different orderings (A,B matches B,A). Essential for pool pair matching in DEX operations.

Consolidated from 4 duplicated patterns in bidirectional token matching:

  • (token0 === tokenA && token1 === tokenB) || (token0 === tokenB && token1 === tokenA)
  • Pool pair matching logic

Parameters​

ParameterTypeDescription
token0stringFirst token in pair A
token1stringSecond token in pair A
tokenAstringFirst token in pair B
tokenBstringSecond token in pair B

Returns​

boolean

True if both pairs represent the same token pair (in any order)

Examples​

Direct pool pair matching

import { bidirectionalTokenMatch } from '@gala-chain/launchpad-sdk';

const poolToken0 = 'GALA';
const poolToken1 = 'GUSDC';

const searchToken0 = 'GUSDC';
const searchToken1 = 'GALA';

if (bidirectionalTokenMatch(poolToken0, poolToken1, searchToken0, searchToken1)) {
// Found matching pool (order doesn't matter)
}

Finding matching DEX pool

import { bidirectionalTokenMatch } from '@gala-chain/launchpad-sdk';

const targetPool = { token0: 'GALA', token1: 'GUSDC' };
const allPools = [...];

const match = allPools.find(pool =>
bidirectionalTokenMatch(pool.token0, pool.token1, targetPool.token0, targetPool.token1)
);

Liquidity position matching

import { bidirectionalTokenMatch } from '@gala-chain/launchpad-sdk';

const position = { token0: 'GUSDC', token1: 'GALA' };
const newPoolTokens = { token0: 'GALA', token1: 'GUSDC' };

if (bidirectionalTokenMatch(position.token0, position.token1, newPoolTokens.token0, newPoolTokens.token1)) {
console.log('Position is in the same pool');
}

Since​

6.14.0