@f5i23q999d/cow-sdk
Version:
<p align="center"> <img width="400" src="https://github.com/cowprotocol/cow-sdk/raw/main/docs/images/CoW.png" /> </p>
51 lines • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeAppDataDoc = exports.generateAppDataFromDoc = exports.buildAppData = void 0;
const tslib_1 = require("tslib");
const app_data_1 = require("@cowprotocol/app-data");
const utils_1 = require("ethers/lib/utils");
const deepmerge_1 = tslib_1.__importDefault(require("deepmerge"));
const metadataApiSdk = new app_data_1.MetadataApi();
async function buildAppData({ slippageBps, appCode, orderClass: orderClassName, partnerFee }, advancedParams) {
const quoteParams = { slippageBips: slippageBps };
const orderClass = { orderClass: orderClassName };
const doc = await metadataApiSdk.generateAppDataDoc((0, deepmerge_1.default)({
appCode,
metadata: {
quote: quoteParams,
orderClass,
partnerFee,
},
}, advancedParams || {}));
const { fullAppData, appDataKeccak256 } = await generateAppDataFromDoc(doc);
return { doc, fullAppData, appDataKeccak256 };
}
exports.buildAppData = buildAppData;
async function generateAppDataFromDoc(doc) {
const fullAppData = await (0, app_data_1.stringifyDeterministic)(doc);
const appDataKeccak256 = (0, utils_1.keccak256)((0, utils_1.toUtf8Bytes)(fullAppData));
return { fullAppData, appDataKeccak256 };
}
exports.generateAppDataFromDoc = generateAppDataFromDoc;
async function mergeAppDataDoc(_doc, appDataOverride) {
// Do not merge hooks if there are overrides
// Otherwise we will just append hooks instead of overriding
const doc = appDataOverride.metadata?.hooks
? {
..._doc,
metadata: {
..._doc.metadata,
hooks: {},
},
}
: _doc;
const appData = (appDataOverride ? (0, deepmerge_1.default)(doc, appDataOverride) : doc);
const { fullAppData, appDataKeccak256 } = await generateAppDataFromDoc(appData);
return {
fullAppData,
appDataKeccak256,
doc: appData,
};
}
exports.mergeAppDataDoc = mergeAppDataDoc;
//# sourceMappingURL=appDataUtils.js.map