UNPKG

@swaptoshi/dex-module

Version:

Klayr decentralized exchange (dex) on-chain module

47 lines 1.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultPoolKey = void 0; exports.getPoolKey = getPoolKey; exports.decodePoolAddress = decodePoolAddress; exports.computeAddress = computeAddress; exports.computePoolId = computePoolId; const cryptography = require("@klayr/cryptography"); exports.defaultPoolKey = Object.freeze({ token0: Buffer.alloc(0), token1: Buffer.alloc(0), fee: '0', }); function getPoolKey(tokenA, tokenB, fee) { if (tokenA.compare(tokenB) === 0) throw new Error('same token address'); const token0 = tokenA.compare(tokenB) < 0 ? tokenA : tokenB; const token1 = tokenA.compare(tokenB) < 0 ? tokenB : tokenA; return { token0, token1, fee }; } function decodePoolAddress(poolAddress) { return { token0: poolAddress.subarray(0, 8), token1: poolAddress.subarray(8, 16), fee: poolAddress.subarray(16).readUIntBE(0, 4).toString(), }; } function computeAddress(key) { if (key.token0.compare(Buffer.alloc(8)) === 0 && key.token1.compare(Buffer.alloc(8)) === 0 && key.fee === '0') { throw new Error('zero'); } if (key.token0.compare(key.token1) > 0) { throw new Error('invalid token0/token1'); } if (key.token0.compare(Buffer.alloc(0)) === 0) { throw new Error('invalid token0'); } const feeBuf = Buffer.allocUnsafe(4); feeBuf.writeUIntBE(parseInt(key.fee, 10), 0, 4); return Buffer.concat([key.token0, key.token1, feeBuf]); } function computePoolId(poolAddress) { if (poolAddress.length !== 20) throw new Error('invalid poolAddress'); return cryptography.utils.hash(poolAddress).subarray(0, 4); } //# sourceMappingURL=pool_address.js.map