@sky-mavis/smart-order-router
Version:
Ronin Swap Smart Order Router
57 lines • 3.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getQuoteThroughNativePool = exports.IOnChainGasModelFactory = exports.IV2GasModelFactory = exports.USD_GAS_TOKEN_BY_CHAIN = exports.USDC_RONIN_MAINNET = exports.USDC_RONIN_TESTNET = void 0;
const katana_core_1 = require("@sky-mavis/katana-core");
const util_1 = require("../../../util");
const katana_core_2 = require("@sky-mavis/katana-core");
// Some well known tokens on each chain for seeding cache / testing.
exports.USDC_RONIN_TESTNET = katana_core_2.DEFAULT_ERC20[2021].USDC;
exports.USDC_RONIN_MAINNET = katana_core_2.DEFAULT_ERC20[2020].USDC;
// When adding new usd gas tokens, ensure the tokens are ordered
// from tokens with highest decimals to lowest decimals. For example,
// DAI_AVAX has 18 decimals and comes before USDC_AVAX which has 6 decimals.
exports.USD_GAS_TOKEN_BY_CHAIN = {
[katana_core_1.ChainId.mainnet]: [exports.USDC_RONIN_MAINNET],
[katana_core_1.ChainId.testnet]: [exports.USDC_RONIN_TESTNET],
};
/**
* Factory for building gas models that can be used with any route to generate
* gas estimates.
*
* Factory model is used so that any supporting data can be fetched once and
* returned as part of the model.
*
* @export
* @abstract
* @class IV2GasModelFactory
*/
class IV2GasModelFactory {
}
exports.IV2GasModelFactory = IV2GasModelFactory;
/**
* Factory for building gas models that can be used with any route to generate
* gas estimates.
*
* Factory model is used so that any supporting data can be fetched once and
* returned as part of the model.
*
* @export
* @abstract
* @class IOnChainGasModelFactory
*/
class IOnChainGasModelFactory {
}
exports.IOnChainGasModelFactory = IOnChainGasModelFactory;
// Determines if native currency is token0
// Gets the native price of the pool, dependent on 0 or 1
// quotes across the pool
const getQuoteThroughNativePool = (chainId, nativeTokenAmount, nativeTokenPool) => {
const nativeCurrency = util_1.WRAPPED_NATIVE_CURRENCY[chainId];
const isToken0 = nativeTokenPool.token0.equals(nativeCurrency);
// returns mid price in terms of the native currency (the ratio of token/nativeToken)
const nativeTokenPrice = isToken0 ? nativeTokenPool.token0Price : nativeTokenPool.token1Price;
// return gas cost in terms of the non native currency
return nativeTokenPrice.quote(nativeTokenAmount);
};
exports.getQuoteThroughNativePool = getQuoteThroughNativePool;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3JvdXRlcnMvYWxwaGEtcm91dGVyL2dhcy1tb2RlbHMvZ2FzLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdEQUFpRDtBQVFqRCx3Q0FBd0Q7QUFReEQsd0RBQXVEO0FBRXZELG9FQUFvRTtBQUN2RCxRQUFBLGtCQUFrQixHQUFVLDJCQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3JELFFBQUEsa0JBQWtCLEdBQVUsMkJBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFFbEUsZ0VBQWdFO0FBQ2hFLHFFQUFxRTtBQUNyRSw0RUFBNEU7QUFDL0QsUUFBQSxzQkFBc0IsR0FBRztJQUNwQyxDQUFDLHFCQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQywwQkFBa0IsQ0FBQztJQUN2QyxDQUFDLHFCQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQywwQkFBa0IsQ0FBQztDQUN4QyxDQUFDO0FBMkVGOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFzQixrQkFBa0I7Q0FRdkM7QUFSRCxnREFRQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFzQix1QkFBdUI7Q0FVNUM7QUFWRCwwREFVQztBQUVELDBDQUEwQztBQUMxQyx5REFBeUQ7QUFDekQseUJBQXlCO0FBQ2xCLE1BQU0seUJBQXlCLEdBQUcsQ0FDdkMsT0FBZ0IsRUFDaEIsaUJBQTJDLEVBQzNDLGVBQTRCLEVBQ1osRUFBRTtJQUNsQixNQUFNLGNBQWMsR0FBRyw4QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4RCxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvRCxxRkFBcUY7SUFDckYsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUM7SUFDOUYsc0RBQXNEO0lBQ3RELE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFtQixDQUFDO0FBQ3JFLENBQUMsQ0FBQztBQVhXLFFBQUEseUJBQXlCLDZCQVdwQyJ9