@maxosllc/smart-order-router
Version:
BlockDAG Smart Order Router
33 lines • 3.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.computePoolAddress = void 0;
const abi_1 = require("@ethersproject/abi");
const address_1 = require("@ethersproject/address");
const solidity_1 = require("@ethersproject/solidity");
const sdk_core_1 = require("@uniswap/sdk-core");
const chains_1 = require("../../../src/util/chains");
/**
* Computes a pool address
* @param factoryAddress The Uniswap V3 factory address
* @param tokenA The first token of the pair, irrespective of sort order
* @param tokenB The second token of the pair, irrespective of sort order
* @param fee The fee tier of the pool
* @param initCodeHashManualOverride Override the init code hash used to compute the pool address if necessary
* @param chainId
* @returns The pool address
*/
function computePoolAddress({ factoryAddress, tokenA, tokenB, fee, initCodeHashManualOverride, chainId, }) {
const [token0, token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA]; // does safety checks
const salt = (0, solidity_1.keccak256)(['bytes'], [abi_1.defaultAbiCoder.encode(['address', 'address', 'uint24'], [token0.address, token1.address, fee])]);
const initCodeHash = initCodeHashManualOverride !== null && initCodeHashManualOverride !== void 0 ? initCodeHashManualOverride : "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54";
// ZKSync uses a different create2 address computation
// Most likely all ZKEVM chains will use the different computation from standard create2
switch (chainId) {
case chains_1.ChainId.ZKSYNC:
return (0, sdk_core_1.computeZksyncCreate2Address)(factoryAddress, initCodeHash, salt);
default:
return (0, address_1.getCreate2Address)(factoryAddress, salt, initCodeHash);
}
}
exports.computePoolAddress = computePoolAddress;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS1wb29sLWFkZHJlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3YzL2NvbXB1dGUtcG9vbC1hZGRyZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRDQUFvRDtBQUNwRCxvREFBMEQ7QUFDMUQsc0RBQW1EO0FBQ25ELGdEQUFzRTtBQUV0RSxxREFBbUQ7QUFFbkQ7Ozs7Ozs7OztHQVNHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsRUFDakMsY0FBYyxFQUNkLE1BQU0sRUFDTixNQUFNLEVBQ04sR0FBRyxFQUNILDBCQUEwQixFQUMxQixPQUFPLEdBUVI7SUFDQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQSxDQUFDLHFCQUFxQjtJQUMvRyxNQUFNLElBQUksR0FBRyxJQUFBLG9CQUFTLEVBQ3BCLENBQUMsT0FBTyxDQUFDLEVBQ1QsQ0FBQyxxQkFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNsRyxDQUFBO0lBQ0QsTUFBTSxZQUFZLEdBQUcsMEJBQTBCLGFBQTFCLDBCQUEwQixjQUExQiwwQkFBMEIsR0FBSSxvRUFBb0UsQ0FBQTtJQUV2SCxzREFBc0Q7SUFDdEQsd0ZBQXdGO0lBQ3hGLFFBQVEsT0FBTyxFQUFFO1FBQ2YsS0FBSyxnQkFBTyxDQUFDLE1BQU07WUFDakIsT0FBTyxJQUFBLHNDQUEyQixFQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDeEU7WUFDRSxPQUFPLElBQUEsMkJBQWlCLEVBQUMsY0FBYyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQTtLQUMvRDtBQUNILENBQUM7QUE5QkQsZ0RBOEJDIn0=