UNPKG

@f5i23q999d/cow-sdk

Version:

<p align="center"> <img width="400" src="https://github.com/cowprotocol/cow-sdk/raw/main/docs/images/CoW.png" /> </p>

78 lines 3.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.adjustEthFlowOrderParams = exports.getTradeParametersAfterQuote = exports.mapQuoteAmountsAndCosts = exports.calculateGasMargin = exports.getIsEthFlowOrder = exports.swapParamsToLimitOrderParams = void 0; const common_1 = require("../common/index.js"); const consts_1 = require("./consts.js"); function swapParamsToLimitOrderParams(params, quoteResponse) { return { ...params, // eslint-disable-next-line @typescript-eslint/no-non-null-assertion quoteId: quoteResponse.id, sellAmount: quoteResponse.quote.sellAmount, buyAmount: quoteResponse.quote.buyAmount, }; } exports.swapParamsToLimitOrderParams = swapParamsToLimitOrderParams; function getIsEthFlowOrder(params) { return params.sellToken.toLowerCase() === common_1.ETH_ADDRESS.toLowerCase(); } exports.getIsEthFlowOrder = getIsEthFlowOrder; /** * Returns the gas value plus a margin for unexpected or variable gas costs (20%) * @param value the gas value to pad */ function calculateGasMargin(value) { return value + (value * BigInt(20)) / BigInt(100); } exports.calculateGasMargin = calculateGasMargin; function mapQuoteAmountsAndCosts(value, mapper) { const { costs: { networkFee, partnerFee }, } = value; function serializeAmounts(value) { return { sellAmount: mapper(value.sellAmount), buyAmount: mapper(value.buyAmount), }; } return { ...value, costs: { ...value.costs, networkFee: { ...networkFee, amountInSellCurrency: mapper(networkFee.amountInSellCurrency), amountInBuyCurrency: mapper(networkFee.amountInBuyCurrency), }, partnerFee: { ...partnerFee, amount: mapper(partnerFee.amount), }, }, beforeNetworkCosts: serializeAmounts(value.beforeNetworkCosts), afterNetworkCosts: serializeAmounts(value.afterNetworkCosts), afterPartnerFees: serializeAmounts(value.afterPartnerFees), afterSlippage: serializeAmounts(value.afterSlippage), }; } exports.mapQuoteAmountsAndCosts = mapQuoteAmountsAndCosts; /** * Set sell token to the initial one * Because for ETH-flow orders we do quote requests with wrapped token */ function getTradeParametersAfterQuote({ quoteParameters, orderParameters, }) { return { ...quoteParameters, sellToken: orderParameters.sellToken }; } exports.getTradeParametersAfterQuote = getTradeParametersAfterQuote; /** * ETH-flow orders are special and need to be adjusted * 1. Sell token should be the wrapped native currency * 2. Default slippage is 2% */ function adjustEthFlowOrderParams(chainId, params) { return { ...params, sellToken: common_1.WRAPPED_NATIVE_CURRENCIES[chainId].address, slippageBps: typeof params.slippageBps === 'number' ? params.slippageBps : consts_1.ETH_FLOW_DEFAULT_SLIPPAGE_BPS[chainId], }; } exports.adjustEthFlowOrderParams = adjustEthFlowOrderParams; //# sourceMappingURL=utils.js.map