@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
JavaScript
;
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