@f5i23q999d/cow-sdk
Version:
<p align="center"> <img width="400" src="https://github.com/cowprotocol/cow-sdk/raw/main/docs/images/CoW.png" /> </p>
98 lines • 4.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TradingSdk = void 0;
const postSwapOrder_1 = require("./postSwapOrder.js");
const postLimitOrder_1 = require("./postLimitOrder.js");
const getQuote_1 = require("./getQuote.js");
const postSellNativeCurrencyOrder_1 = require("./postSellNativeCurrencyOrder.js");
const utils_1 = require("./utils.js");
const getPreSignTransaction_1 = require("./getPreSignTransaction.js");
const log_1 = require("../common/utils/log.js");
const wallet_1 = require("../common/utils/wallet.js");
class TradingSdk {
traderParams;
options;
constructor(traderParams = {}, options = {}) {
this.traderParams = traderParams;
this.options = options;
if (options.enableLogging !== undefined) {
(0, log_1.enableLogging)(options.enableLogging);
}
}
setTraderParams(params) {
this.traderParams = { ...this.traderParams, ...params };
return this;
}
async getQuote(params, advancedSettings) {
const quoteResults = await (0, getQuote_1.getQuoteWithSigner)(this.mergeParams(params), advancedSettings, this.options.orderBookApi);
return {
quoteResults: quoteResults.result,
postSwapOrderFromQuote: (advancedSettings) => (0, postSwapOrder_1.postSwapOrderFromQuote)({
...quoteResults,
result: {
...quoteResults.result,
tradeParameters: (0, utils_1.getTradeParametersAfterQuote)({
quoteParameters: quoteResults.result.tradeParameters,
orderParameters: params,
}),
},
}, advancedSettings),
};
}
async getQuoteResults(params, advancedSettings) {
return (0, getQuote_1.getQuoteWithSigner)(this.mergeParams(params), advancedSettings, this.options.orderBookApi);
}
async postSwapOrder(params, advancedSettings) {
return (0, postSwapOrder_1.postSwapOrder)(this.mergeParams(params), advancedSettings, this.options.orderBookApi);
}
async postLimitOrder(params, advancedSettings) {
return (0, postLimitOrder_1.postLimitOrder)(this.mergeParams(params), advancedSettings, this.options.orderBookApi);
}
async postSellNativeCurrencyOrder(params, advancedSettings) {
const quoteResults = await (0, getQuote_1.getQuoteWithSigner)(this.mergeParams(params), advancedSettings, this.options.orderBookApi);
const { tradeParameters, quoteResponse } = quoteResults.result;
return (0, postSellNativeCurrencyOrder_1.postSellNativeCurrencyOrder)(quoteResults.orderBookApi, quoteResults.result.signer, quoteResults.result.appDataInfo,
// Quote response response always has an id
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
(0, utils_1.swapParamsToLimitOrderParams)((0, utils_1.getTradeParametersAfterQuote)({ quoteParameters: tradeParameters, orderParameters: params }), quoteResponse), advancedSettings?.additionalParams);
}
async getPreSignTransaction(params) {
const traderParams = this.mergeParams(params);
const signer = (0, wallet_1.getSigner)(traderParams.signer);
return (0, getPreSignTransaction_1.getPreSignTransaction)(signer, traderParams.chainId, params.account, params.orderId);
}
mergeParams(params) {
const { chainId, signer, appCode, env } = params;
const traderParams = {
chainId: chainId || this.traderParams.chainId,
signer: signer || this.traderParams.signer,
appCode: appCode || this.traderParams.appCode,
env: env || this.traderParams.env,
};
assertTraderParams(traderParams);
return {
...params,
...traderParams,
};
}
}
exports.TradingSdk = TradingSdk;
function assertTraderParams(params) {
if (!isTraderParameters(params)) {
throw new Error('Missing trader parameters: ' + getMissingTraderParams(params).join(', '));
}
}
function getMissingTraderParams(params) {
const missingParams = [];
if (!params.chainId)
missingParams.push('chainId');
if (!params.signer)
missingParams.push('signer');
if (!params.appCode)
missingParams.push('appCode');
return missingParams;
}
function isTraderParameters(params) {
return getMissingTraderParams(params).length === 0;
}
//# sourceMappingURL=tradingSdk.js.map