UNPKG

rubic-sdk

Version:
990 lines (931 loc) • 11.5 MB
var RubicSDK; /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ "./node_modules/@1inch/limit-order-protocol-utils/connector/private-key-provider.connector.js": /*!****************************************************************************************************!*\ !*** ./node_modules/@1inch/limit-order-protocol-utils/connector/private-key-provider.connector.js ***! \****************************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js")["Buffer"]; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.PrivateKeyProviderConnector = void 0; const eth_sig_util_1 = __webpack_require__(/*! @metamask/eth-sig-util */ "./node_modules/@metamask/eth-sig-util/dist/index.js"); const limit_order_utils_1 = __webpack_require__(/*! ../utils/limit-order.utils */ "./node_modules/@1inch/limit-order-protocol-utils/utils/limit-order.utils.js"); class PrivateKeyProviderConnector { constructor(privateKey, web3Provider) { this.privateKey = privateKey; this.web3Provider = web3Provider; } contractEncodeABI(abi, address, methodName, methodParams) { const contract = new this.web3Provider.eth.Contract(abi, address === null ? undefined : address); return contract.methods[methodName](...methodParams).encodeABI(); } signTypedData(_walletAddress, typedData, /* eslint-disable-next-line @typescript-eslint/no-unused-vars */ _typedDataHash = '') { const result = eth_sig_util_1.signTypedData({ privateKey: Buffer.from(this.privateKey, 'hex'), data: typedData, version: eth_sig_util_1.SignTypedDataVersion.V4, }); return Promise.resolve(result); } ethCall(contractAddress, callData) { return this.web3Provider.eth.call({ to: contractAddress, data: callData, }); } decodeABIParameter(type, hex) { return this.web3Provider.eth.abi.decodeParameter(type, hex); } decodeABICallParameters(types, callData) { const parameters = limit_order_utils_1.trim0x(callData).substring(8); return this.web3Provider.eth.abi.decodeParameters([...types], parameters); } } exports.PrivateKeyProviderConnector = PrivateKeyProviderConnector; //# sourceMappingURL=private-key-provider.connector.js.map /***/ }), /***/ "./node_modules/@1inch/limit-order-protocol-utils/connector/provider.connector.js": /*!****************************************************************************************!*\ !*** ./node_modules/@1inch/limit-order-protocol-utils/connector/provider.connector.js ***! \****************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); //# sourceMappingURL=provider.connector.js.map /***/ }), /***/ "./node_modules/@1inch/limit-order-protocol-utils/connector/web3-provider.connector.js": /*!*********************************************************************************************!*\ !*** ./node_modules/@1inch/limit-order-protocol-utils/connector/web3-provider.connector.js ***! \*********************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Web3ProviderConnector = void 0; const limit_order_utils_1 = __webpack_require__(/*! ../utils/limit-order.utils */ "./node_modules/@1inch/limit-order-protocol-utils/utils/limit-order.utils.js"); class Web3ProviderConnector { constructor(web3Provider) { this.web3Provider = web3Provider; } contractEncodeABI(abi, address, methodName, methodParams) { const contract = new this.web3Provider.eth.Contract(abi, address === null ? undefined : address); return contract.methods[methodName](...methodParams).encodeABI(); } signTypedData(walletAddress, typedData, /* eslint-disable-next-line @typescript-eslint/no-unused-vars */ _typedDataHash) { const extendedWeb3 = this.web3Provider.extend({ methods: [ { name: 'signTypedDataV4', call: 'eth_signTypedData_v4', params: 2, }, ], }); return extendedWeb3.signTypedDataV4(walletAddress, JSON.stringify(typedData)); } ethCall(contractAddress, callData) { return this.web3Provider.eth.call({ to: contractAddress, data: callData, }); } decodeABIParameter(type, hex) { return this.web3Provider.eth.abi.decodeParameter(type, hex); } decodeABICallParameters(types, callData) { const parameters = limit_order_utils_1.trim0x(callData).substring(8); return this.web3Provider.eth.abi.decodeParameters([...types], parameters); } } exports.Web3ProviderConnector = Web3ProviderConnector; //# sourceMappingURL=web3-provider.connector.js.map /***/ }), /***/ "./node_modules/@1inch/limit-order-protocol-utils/erc20.facade.js": /*!************************************************************************!*\ !*** ./node_modules/@1inch/limit-order-protocol-utils/erc20.facade.js ***! \************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.Erc20Facade = exports.Erc20Methods = void 0; const limit_order_protocol_const_1 = __webpack_require__(/*! ./limit-order-protocol.const */ "./node_modules/@1inch/limit-order-protocol-utils/limit-order-protocol.const.js"); var Erc20Methods; (function (Erc20Methods) { Erc20Methods["transferFrom"] = "transferFrom"; Erc20Methods["balanceOf"] = "balanceOf"; })(Erc20Methods = exports.Erc20Methods || (exports.Erc20Methods = {})); class Erc20Facade { constructor(providerConnector) { this.providerConnector = providerConnector; } balanceOf(tokenAddress, walletAddress) { return this.providerConnector.contractEncodeABI(limit_order_protocol_const_1.ERC20_ABI, tokenAddress, Erc20Methods.balanceOf, [walletAddress]); } } exports.Erc20Facade = Erc20Facade; //# sourceMappingURL=erc20.facade.js.map /***/ }), /***/ "./node_modules/@1inch/limit-order-protocol-utils/index.js": /*!*****************************************************************!*\ !*** ./node_modules/@1inch/limit-order-protocol-utils/index.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); const tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); tslib_1.__exportStar(__webpack_require__(/*! ./erc20.facade */ "./node_modules/@1inch/limit-order-protocol-utils/erc20.facade.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./limit-order-protocol.const */ "./node_modules/@1inch/limit-order-protocol-utils/limit-order-protocol.const.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./limit-order.builder */ "./node_modules/@1inch/limit-order-protocol-utils/limit-order.builder.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./limit-order-protocol.facade */ "./node_modules/@1inch/limit-order-protocol-utils/limit-order-protocol.facade.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./limit-order-predicate.builder */ "./node_modules/@1inch/limit-order-protocol-utils/limit-order-predicate.builder.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./limit-order.decoder */ "./node_modules/@1inch/limit-order-protocol-utils/limit-order.decoder.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./limit-order-predicate.decoder */ "./node_modules/@1inch/limit-order-protocol-utils/limit-order-predicate.decoder.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./series-nonce-manager.const */ "./node_modules/@1inch/limit-order-protocol-utils/series-nonce-manager.const.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./series-nonce-manager.facade */ "./node_modules/@1inch/limit-order-protocol-utils/series-nonce-manager.facade.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./series-nonce-manager-predicate.builder */ "./node_modules/@1inch/limit-order-protocol-utils/series-nonce-manager-predicate.builder.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./connector/provider.connector */ "./node_modules/@1inch/limit-order-protocol-utils/connector/provider.connector.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./connector/web3-provider.connector */ "./node_modules/@1inch/limit-order-protocol-utils/connector/web3-provider.connector.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./connector/private-key-provider.connector */ "./node_modules/@1inch/limit-order-protocol-utils/connector/private-key-provider.connector.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./model/abi.model */ "./node_modules/@1inch/limit-order-protocol-utils/model/abi.model.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./model/eip712.model */ "./node_modules/@1inch/limit-order-protocol-utils/model/eip712.model.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./model/limit-order-protocol.model */ "./node_modules/@1inch/limit-order-protocol-utils/model/limit-order-protocol.model.js"), exports); tslib_1.__exportStar(__webpack_require__(/*! ./model/series-nonce-manager.model */ "./node_modules/@1inch/limit-order-protocol-utils/model/series-nonce-manager.model.js"), exports); //# sourceMappingURL=index.js.map /***/ }), /***/ "./node_modules/@1inch/limit-order-protocol-utils/limit-order-predicate.builder.js": /*!*****************************************************************************************!*\ !*** ./node_modules/@1inch/limit-order-protocol-utils/limit-order-predicate.builder.js ***! \*****************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.LimitOrderPredicateBuilder = void 0; const limit_order_protocol_model_1 = __webpack_require__(/*! ./model/limit-order-protocol.model */ "./node_modules/@1inch/limit-order-protocol-utils/model/limit-order-protocol.model.js"); const limit_order_protocol_const_1 = __webpack_require__(/*! ./limit-order-protocol.const */ "./node_modules/@1inch/limit-order-protocol-utils/limit-order-protocol.const.js"); const abstract_facade_1 = __webpack_require__(/*! ./utils/abstract-facade */ "./node_modules/@1inch/limit-order-protocol-utils/utils/abstract-facade.js"); const limit_order_builder_1 = __webpack_require__(/*! ./limit-order.builder */ "./node_modules/@1inch/limit-order-protocol-utils/limit-order.builder.js"); /** * All methods is lambdas to preserve `this` context and allow DSL-like usage */ class LimitOrderPredicateBuilder { constructor(facade) { this.facade = facade; this.and = (...predicates) => { const { offsets, data } = limit_order_builder_1.LimitOrderBuilder.joinStaticCalls(predicates); return this.facade.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.and, [ offsets, data, ]); }; this.or = (...predicates) => { const { offsets, data } = limit_order_builder_1.LimitOrderBuilder.joinStaticCalls(predicates); return this.facade.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.or, [ offsets, data, ]); }; this.eq = (value, callData) => { return this.facade.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.eq, [ value, callData, ]); }; this.lt = (value, callData) => { return this.facade.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.lt, [ value, callData, ]); }; this.gt = (value, callData) => { return this.facade.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.gt, [ value, callData, ]); }; this.nonce = (makerAddress) => { return this.facade.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.nonce, [makerAddress]); }; this.nonceEquals = (makerAddress, makerNonce) => { return this.facade.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.nonceEquals, [makerAddress, makerNonce]); }; /** * @param timestamp seconds unit */ this.timestampBelow = (timestamp) => { return this.facade.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.timestampBelow, [limit_order_protocol_const_1.ZX + timestamp.toString(16)]); }; /** * @param timestamp seconds unit */ this.timestampBelowAndNonceEquals = (timestamp, nonce, address) => { const predicateValue = BigInt(address) + (BigInt(nonce) << BigInt(160)) + (BigInt(timestamp) << BigInt(208)); return this.facade.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.timestampBelowAndNonceEquals, [limit_order_protocol_const_1.ZX + predicateValue.toString(16)]); }; this.arbitraryStaticCall = (target, callData) => { const address = target instanceof abstract_facade_1.AbstractSmartcontractFacade ? target.contractAddress : target; if (address.toLowerCase() === this.facade.contractAddress.toLowerCase()) { console.warn('Unnecessary arbitraryStaticCall(). ' + 'Omit it when interacting with limit-order-protocol methods.'); return callData; } return this.facade.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.arbitraryStaticCall, [ address, callData, ]); }; } } exports.LimitOrderPredicateBuilder = LimitOrderPredicateBuilder; //# sourceMappingURL=limit-order-predicate.builder.js.map /***/ }), /***/ "./node_modules/@1inch/limit-order-protocol-utils/limit-order-predicate.decoder.js": /*!*****************************************************************************************!*\ !*** ./node_modules/@1inch/limit-order-protocol-utils/limit-order-predicate.decoder.js ***! \*****************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.LimitOrderPredicateDecoder = exports.PredicateFn = exports.PredicateBytes = exports.DecodableCall = void 0; const limit_order_protocol_const_1 = __webpack_require__(/*! ./limit-order-protocol.const */ "./node_modules/@1inch/limit-order-protocol-utils/limit-order-protocol.const.js"); const series_nonce_manager_const_1 = __webpack_require__(/*! ./series-nonce-manager.const */ "./node_modules/@1inch/limit-order-protocol-utils/series-nonce-manager.const.js"); const abi_1 = __webpack_require__(/*! @ethersproject/abi */ "./node_modules/@ethersproject/abi/lib.esm/index.js"); const limit_order_protocol_const_2 = __webpack_require__(/*! ./limit-order-protocol.const */ "./node_modules/@1inch/limit-order-protocol-utils/limit-order-protocol.const.js"); const helpers_1 = __webpack_require__(/*! ./utils/helpers */ "./node_modules/@1inch/limit-order-protocol-utils/utils/helpers.js"); const limit_order_predicate_decoders_1 = __webpack_require__(/*! ./utils/decoders/limit-order-predicate-decoders */ "./node_modules/@1inch/limit-order-protocol-utils/utils/decoders/limit-order-predicate-decoders.js"); const series_nonce_manager_decoders_1 = __webpack_require__(/*! ./utils/decoders/series-nonce-manager-decoders */ "./node_modules/@1inch/limit-order-protocol-utils/utils/decoders/series-nonce-manager-decoders.js"); const limit_order_utils_1 = __webpack_require__(/*! ./utils/limit-order.utils */ "./node_modules/@1inch/limit-order-protocol-utils/utils/limit-order.utils.js"); class DecodableCall { constructor(calldata, target) { this.calldata = calldata; this.target = target; } } exports.DecodableCall = DecodableCall; class PredicateBytes { constructor(bytes, source) { this.bytes = bytes; this.type = "bytes"; this.meta = { source, }; } } exports.PredicateBytes = PredicateBytes; class PredicateFn { constructor(name, args, source) { this.name = name; this.args = args; this.type = "function"; this.meta = { source, }; } } exports.PredicateFn = PredicateFn; class LimitOrderPredicateDecoder { constructor(chainId, decodableContracts = {}) { this.chainId = chainId; this.findFirstDFS = (tree, matcher) => { if (matcher(tree)) return tree; if (tree.args) { const args = helpers_1.isIterable(tree.args) ? Array.from(tree.args) : Object.values(tree.args); for (const arg of args) { const result = this.findFirstDFS(arg, matcher); if (result) return result; } } return null; }; // eslint-disable-next-line this.parseCalldata = (calldata, address) => { const sig = calldata.substring(0, 10); const decodableIface = this.decodableInterfaces[address]; if (!decodableIface) return new PredicateBytes(calldata, address); let fn; try { fn = decodableIface.iface.getFunction(sig); } catch (e) { console.warn(`Tried to decode unknown function with signature ${sig} on ${address}.`); return new PredicateBytes(calldata, address); } const data = decodableIface.iface.decodeFunctionData(fn, calldata); const decoder = (decodableIface.decoders[fn.name] || decodableIface.decoders[sig] || decodableIface.decoders[sig.substring(2)]); if (!decoder) return new PredicateBytes(calldata, address); const decoded = decoder(fn, data, address); const result = Object.assign({}, decoded); const { args } = decoded; if (args) { if (helpers_1.isIterable(args)) { result.args = Array.from(args).map(this.mapArgs); } else { result.args = helpers_1.mapObject(args, this.mapArgs); } } return result; }; this.parseDecodableCall = (call) => { return this.parseCalldata(limit_order_protocol_const_1.ZX + limit_order_utils_1.trim0x(call.calldata), call.target.toLowerCase()); }; this.mapArgs = (arg) => { if (arg instanceof DecodableCall) { return this.parseDecodableCall(arg); } return arg; }; this.defaultAddress = limit_order_protocol_const_2.limirOrderProtocolAdresses[this.chainId].toLowerCase(); this.decodableInterfaces = { [this.defaultAddress]: { iface: new abi_1.Interface(limit_order_protocol_const_1.LIMIT_ORDER_PROTOCOL_ABI), decoders: new limit_order_predicate_decoders_1.LimitOrderPredicateDecoders(), }, [series_nonce_manager_const_1.seriesNonceManagerContractAddresses[this.chainId].toLowerCase()]: { iface: new abi_1.Interface(series_nonce_manager_const_1.SERIES_NONCE_MANAGER_ABI), decoders: new series_nonce_manager_decoders_1.SeriesNonceManagerDecoders(), }, }; // User defined decoders Object.assign(this.decodableInterfaces, this.decodableContractsToDecodableInterfaces(decodableContracts)); } decode(calldata) { return this.parseCalldata(calldata, this.defaultAddress); } decodableContractsToDecodableInterfaces(decodableContracts) { return Object.assign({}, ...Object.entries(decodableContracts).map(([address, { abi, decoders }]) => { return [ address.toLowerCase(), { iface: new abi_1.Interface(abi), decoders, } ]; })); } } exports.LimitOrderPredicateDecoder = LimitOrderPredicateDecoder; //# sourceMappingURL=limit-order-predicate.decoder.js.map /***/ }), /***/ "./node_modules/@1inch/limit-order-protocol-utils/limit-order-protocol.const.js": /*!**************************************************************************************!*\ !*** ./node_modules/@1inch/limit-order-protocol-utils/limit-order-protocol.const.js ***! \**************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.contractAddresses = exports.limirOrderProtocolAdresses = exports.RFQ_ORDER_STRUCTURE = exports.ORDER_STRUCTURE = exports.EIP712_DOMAIN = exports.ERC20_ABI = exports.LIMIT_ORDER_PROTOCOL_ABI = exports.CALL_RESULTS_PREFIX = exports.ZERO_ADDRESS = exports.ZX = exports.TypedDataVersion = exports.PROTOCOL_VERSION = exports.PROTOCOL_NAME = void 0; const tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); const LimitOrderProtocol_json_1 = tslib_1.__importDefault(__webpack_require__(/*! ./abi/LimitOrderProtocol.json */ "./node_modules/@1inch/limit-order-protocol-utils/abi/LimitOrderProtocol.json")); const ERC20ABI_json_1 = tslib_1.__importDefault(__webpack_require__(/*! ./abi/ERC20ABI.json */ "./node_modules/@1inch/limit-order-protocol-utils/abi/ERC20ABI.json")); const eth_sig_util_1 = __webpack_require__(/*! @metamask/eth-sig-util */ "./node_modules/@metamask/eth-sig-util/dist/index.js"); const limit_order_protocol_model_1 = __webpack_require__(/*! ./model/limit-order-protocol.model */ "./node_modules/@1inch/limit-order-protocol-utils/model/limit-order-protocol.model.js"); exports.PROTOCOL_NAME = '1inch Aggregation Router'; exports.PROTOCOL_VERSION = '5'; exports.TypedDataVersion = eth_sig_util_1.SignTypedDataVersion.V4; exports.ZX = '0x'; exports.ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; exports.CALL_RESULTS_PREFIX = 'CALL_RESULTS_'; exports.LIMIT_ORDER_PROTOCOL_ABI = LimitOrderProtocol_json_1.default; exports.ERC20_ABI = ERC20ABI_json_1.default; exports.EIP712_DOMAIN = [ { name: 'name', type: 'string' }, { name: 'version', type: 'string' }, { name: 'chainId', type: 'uint256' }, { name: 'verifyingContract', type: 'address' }, ]; exports.ORDER_STRUCTURE = [ { name: 'salt', type: 'uint256' }, { name: 'makerAsset', type: 'address' }, { name: 'takerAsset', type: 'address' }, { name: 'maker', type: 'address' }, { name: 'receiver', type: 'address' }, { name: 'allowedSender', type: 'address' }, { name: 'makingAmount', type: 'uint256' }, { name: 'takingAmount', type: 'uint256' }, { name: 'offsets', type: 'uint256' }, { name: 'interactions', type: 'bytes' }, ]; exports.RFQ_ORDER_STRUCTURE = [ { name: 'info', type: 'uint256' }, { name: 'makerAsset', type: 'address' }, { name: 'takerAsset', type: 'address' }, { name: 'maker', type: 'address' }, { name: 'allowedSender', type: 'address' }, { name: 'makingAmount', type: 'uint256' }, { name: 'takingAmount', type: 'uint256' }, ]; exports.limirOrderProtocolAdresses = { [limit_order_protocol_model_1.ChainId.etherumMainnet]: '0x1111111254eeb25477b68fb85ed929f73a960582', [limit_order_protocol_model_1.ChainId.binanceMainnet]: '0x1111111254eeb25477b68fb85ed929f73a960582', [limit_order_protocol_model_1.ChainId.polygonMainnet]: '0x1111111254eeb25477b68fb85ed929f73a960582', [limit_order_protocol_model_1.ChainId.optimismMainnet]: '0x1111111254eeb25477b68fb85ed929f73a960582', [limit_order_protocol_model_1.ChainId.arbitrumMainnet]: '0x1111111254eeb25477b68fb85ed929f73a960582', [limit_order_protocol_model_1.ChainId.auroraMainnet]: '0x1111111254eeb25477b68fb85ed929f73a960582', [limit_order_protocol_model_1.ChainId.gnosisMainnet]: '0x1111111254eeb25477b68fb85ed929f73a960582', [limit_order_protocol_model_1.ChainId.avalancheMainnet]: '0x1111111254eeb25477b68fb85ed929f73a960582', [limit_order_protocol_model_1.ChainId.fantomMainnet]: '0x1111111254EEB25477B68fb85Ed929f73A960582', [limit_order_protocol_model_1.ChainId.klaytnMainnet]: '0x1111111254EEB25477B68fb85Ed929f73A960582', }; /** * @deprecated Change to `limirOrderProtocolAdresses` */ exports.contractAddresses = exports.limirOrderProtocolAdresses; //# sourceMappingURL=limit-order-protocol.const.js.map /***/ }), /***/ "./node_modules/@1inch/limit-order-protocol-utils/limit-order-protocol.facade.js": /*!***************************************************************************************!*\ !*** ./node_modules/@1inch/limit-order-protocol-utils/limit-order-protocol.facade.js ***! \***************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.LimitOrderProtocolFacade = void 0; const limit_order_protocol_const_1 = __webpack_require__(/*! ./limit-order-protocol.const */ "./node_modules/@1inch/limit-order-protocol-utils/limit-order-protocol.const.js"); const limit_order_protocol_model_1 = __webpack_require__(/*! ./model/limit-order-protocol.model */ "./node_modules/@1inch/limit-order-protocol-utils/model/limit-order-protocol.model.js"); const bignumber_1 = __webpack_require__(/*! @ethersproject/bignumber */ "./node_modules/@ethersproject/bignumber/lib.esm/index.js"); const limit_order_utils_1 = __webpack_require__(/*! ./utils/limit-order.utils */ "./node_modules/@1inch/limit-order-protocol-utils/utils/limit-order.utils.js"); const abi_1 = __webpack_require__(/*! ./utils/abi */ "./node_modules/@1inch/limit-order-protocol-utils/utils/abi.js"); const eth_sig_util_1 = __webpack_require__(/*! @metamask/eth-sig-util */ "./node_modules/@metamask/eth-sig-util/dist/index.js"); const abstract_facade_1 = __webpack_require__(/*! ./utils/abstract-facade */ "./node_modules/@1inch/limit-order-protocol-utils/utils/abstract-facade.js"); class LimitOrderProtocolFacade extends abstract_facade_1.AbstractSmartcontractFacade { constructor() { super(...arguments); this.ABI = limit_order_protocol_const_1.LIMIT_ORDER_PROTOCOL_ABI; } fillLimitOrder(params) { const { order, interaction = limit_order_protocol_const_1.ZX, signature, makingAmount, takingAmount, thresholdAmount, skipPermit = false, } = params; return this.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.fillOrder, [ order, signature, interaction, makingAmount, takingAmount, // skipPermitAndThresholdAmount limit_order_utils_1.packSkipPermitAndThresholdAmount(thresholdAmount, skipPermit), ]); } /** * @param params.interaction pre-interaction in fact. * @param params.skipPermit skip maker's permit evaluation if it was evaluated before. * Useful if multiple orders was created with same nonce. * * Tip: you can just check if allowance exsists and then set it to `true`. */ fillOrderToWithPermit(params) { const { order, signature, makingAmount, takingAmount, interaction = limit_order_protocol_const_1.ZX, thresholdAmount, skipPermit = false, targetAddress, permit, } = params; return this.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.fillOrderToWithPermit, [ order, signature, interaction, makingAmount, takingAmount, // skipPermitAndThresholdAmount limit_order_utils_1.packSkipPermitAndThresholdAmount(thresholdAmount, skipPermit), targetAddress, permit ]); } fillRFQOrder(order, signature, makingAmount, takingAmount) { let flagsAndAmount = '0'; if (makingAmount) { flagsAndAmount = limit_order_utils_1.getMakingAmountForRFQ(makingAmount); } else if (takingAmount) { flagsAndAmount = takingAmount; } return this.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.fillOrderRFQ, [order, signature, flagsAndAmount]); } cancelLimitOrder(order) { return this.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.cancelOrder, [ order, ]); } cancelRFQOrder(orderInfo) { return this.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.cancelOrderRFQ, [orderInfo]); } nonce(makerAddress) { const callData = this.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.nonce, [makerAddress]); return this.providerConnector .ethCall(this.contractAddress, callData) .then((nonce) => BigInt(nonce)); } advanceNonce(count) { return this.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.advanceNonce, [count]); } increaseNonce() { return this.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.increaseNonce); } checkPredicate(order) { const callData = this.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.checkPredicate, [order]); return this.providerConnector .ethCall(this.contractAddress, callData) .catch((error) => { console.error(error); return false; }) .then((result) => { try { return bignumber_1.BigNumber.from(result).toNumber() === 1; } catch (e) { console.error(e); return false; } }); } remaining(orderHash) { const callData = this.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.remaining, [orderHash]); return this.providerConnector .ethCall(this.contractAddress, callData) .then((result) => { const response = this.parseRemainingResponse(result); if (response !== null) { return response; } return Promise.reject(result); }); } simulate(targetAddress, data) { const callData = this.getContractCallData(limit_order_protocol_model_1.LimitOrderProtocolMethods.simulate, [targetAddress, data]); return this.providerConnector .ethCall(this.contractAddress, callData) .then(() => { throw new Error('call was successful but revert was expected'); }) .catch((result) => { const parsedResult = this.parseSimulateTransferError(result); if (parsedResult) { return parsedResult; } throw { success: false, rawResult: result }; }); } // https://github.com/1inch/limit-order-protocol/blob/v3-prerelease/test/helpers/eip712.js#L22 domainSeparator() { const hex = '0x' + eth_sig_util_1.TypedDataUtils.hashStruct('EIP712Domain', { name: limit_order_protocol_const_1.PROTOCOL_NAME, version: limit_order_protocol_const_1.PROTOCOL_VERSION, chainId: this.chainId, verifyingContract: this.contractAddress, }, { EIP712Domain: limit_order_protocol_const_1.EIP712_DOMAIN }, limit_order_protocol_const_1.TypedDataVersion).toString('hex'); return Promise.resolve(hex); } parseRemainingResponse(response) { if (response.length === 66) { return bignumber_1.BigNumber.from(response); } return null; } parseSimulateTransferError(error) { const simulationResultsAbi = abi_1.getABIFor(limit_order_protocol_const_1.LIMIT_ORDER_PROTOCOL_ABI, 'SimulationResults'); const revertionData = limit_order_utils_1.extractWeb3OriginalErrorData(error); if (simulationResultsAbi && revertionData) { const parsed = this.providerConnector.decodeABICallParameters(simulationResultsAbi.inputs, revertionData); const parsedResult = parsed.res; const success = parsed.success && this.isSimulationResultResponseSuccessfull(parsedResult); return { success, rawResult: parsed.res, }; } return null; } isSimulationResultResponseSuccessfull(res) { if (!res || !res.length) return true; return this.providerConnector.decodeABIParameter('bool', res); } } exports.LimitOrderProtocolFacade = LimitOrderProtocolFacade; //# sourceMappingURL=limit-order-protocol.facade.js.map /***/ }), /***/ "./node_modules/@1inch/limit-order-protocol-utils/limit-order.builder.js": /*!*******************************************************************************!*\ !*** ./node_modules/@1inch/limit-order-protocol-utils/limit-order.builder.js ***! \*******************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.LimitOrderBuilder = exports.generateRFQOrderInfo = exports.generateOrderSalt = void 0; const limit_order_protocol_const_1 = __webpack_require__(/*! ./limit-order-protocol.const */ "./node_modules/@1inch/limit-order-protocol-utils/limit-order-protocol.const.js"); const ethereumjs_util_1 = __webpack_require__(/*! ethereumjs-util */ "./node_modules/ethereumjs-util/dist.browser/index.js"); const eth_sig_util_1 = __webpack_require__(/*! @metamask/eth-sig-util */ "./node_modules/@metamask/eth-sig-util/dist/index.js"); const limit_order_utils_1 = __webpack_require__(/*! ./utils/limit-order.utils */ "./node_modules/@1inch/limit-order-protocol-utils/utils/limit-order.utils.js"); function generateOrderSalt() { return Math.round(Math.random() * Date.now()) + ''; } exports.generateOrderSalt = generateOrderSalt; function generateRFQOrderInfo(id, expiresInTimestamp, wrapEth) { const info = (BigInt(expiresInTimestamp) << BigInt(64)) | BigInt(id); if (wrapEth) { return (info | (BigInt(1) << BigInt(255))).toString(10); } return info.toString(10); } exports.generateRFQOrderInfo = generateRFQOrderInfo; class LimitOrderBuilder { constructor(contractAddress, chainId, providerConnector, generateSalt = generateOrderSalt) { this.contractAddress = contractAddress; this.chainId = chainId; this.providerConnector = providerConnector; this.generateSalt = generateSalt; } static packInteractions({ makerAssetData = limit_order_protocol_const_1.ZX, takerAssetData = limit_order_protocol_const_1.ZX, getMakingAmount = limit_order_protocol_const_1.ZX, getTakingAmount = limit_order_protocol_const_1.ZX, predicate = limit_order_protocol_const_1.ZX, permit = limit_order_protocol_const_1.ZX, preInteraction = limit_order_protocol_const_1.ZX, postInteraction = limit_order_protocol_const_1.ZX, }) { const allInteractions = [ makerAssetData, takerAssetData, getMakingAmount, getTakingAmount, predicate, permit, preInteraction, postInteraction, ]; const { offsets, data: interactions } = this.joinStaticCalls(allInteractions); return { offsets, interactions }; } static joinStaticCalls(data) { const trimmed = data.map(limit_order_utils_1.trim0x); return { offsets: limit_order_utils_1.getOffsets(trimmed), data: limit_order_protocol_const_1.ZX + trimmed.join(''), }; } buildOrderSignature(walletAddress, typedData) { const dataHash = eth_sig_util_1.TypedDataUtils.hashStruct(typedData.primaryType, typedData.message, typedData.types, eth_sig_util_1.SignTypedDataVersion.V4).toString('hex'); return this.providerConnector.signTypedData(walletAddress, typedData, dataHash); } buildLimitOrderHash(orderTypedData) { const message = orderTypedData; const hash = ethereumjs_util_1.bufferToHex(eth_sig_util_1.TypedDataUtils.eip712Hash(message, eth_sig_util_1.SignTypedDataVersion.V4)); return limit_order_protocol_const_1.ZX + hash.substring(2); } buildLimitOrderTypedData(order, domainName = limit_order_protocol_const_1.PROTOCOL_NAME) { return { primaryType: 'Order', types: { EIP712Domain: limit_order_protocol_const_1.EIP712_DOMAIN, Order: limit_order_protocol_const_1.ORDER_STRUCTURE, }, domain: { name: domainName, version: limit_order_protocol_const_1.PROTOCOL_VERSION, chainId: this.chainId, verifyingContract: this.contractAddress, }, message: order, }; } buildRFQOrderTypedData(order, domainName = limit_order_protocol_const_1.PROTOCOL_NAME) { return { primaryType: 'OrderRFQ', types: { EIP712Domain: limit_order_protocol_const_1.EIP712_DOMAIN, OrderRFQ: limit_order_protocol_const_1.RFQ_ORDER_STRUCTURE, }, domain: { name: domainName, version: limit_order_protocol_const_1.PROTOCOL_VERSION, chainId: this.chainId, verifyingContract: this.contractAddress, }, message: Object.assign({}, order), }; } buildRFQOrder({ id, wrapEth = false, expiresInTimestamp, makerAssetAddress, takerAssetAddress, makerAddress, allowedSender = limit_order_protocol_const_1.ZERO_ADDRESS, makingAmount, takingAmount, }) { return { info: generateRFQOrderInfo(id, expiresInTimestamp, wrapEth), makerAsset: makerAssetAddress, takerAsset: takerAssetAddress, maker: makerAddress, allowedSender, makingAmount, takingAmount, }; } /** * @param allowedSender formerly `takerAddress` * @returns */ // eslint-disable-next-line max-lines-per-function buildLimitOrder({ makerAssetAddress, takerAssetAddress, makerAddress, receiver = limit_order_protocol_const_1.ZERO_ADDRESS, allowedSender = limit_order_protocol_const_1.ZERO_ADDRESS, makingAmount, takingAmount, predicate = limit_order_protocol_const_1.ZX, permit = limit_order_protocol_const_1.ZX, getMakingAmount = limit_order_protocol_const_1.ZX, getTakingAmount = limit_order_protocol_const_1.ZX, preInteraction = limit_order_protocol_const_1.ZX, postInteraction = limit_order_protocol_const_1.ZX, salt = this.generateSalt(), }) { const makerAssetData = limit_order_protocol_const_1.ZX; const takerAssetData = limit_order_protocol_const_1.ZX; const { offsets, interactions } = LimitOrderBuilder.packInteractions({ makerAssetData, takerAssetData, getMakingAmount, getTakingAmount, predicate, permit, preInteraction, postInteraction, }); return { salt, makerAsset: makerAssetAddress, takerAsset: takerAssetAddress, maker: makerAddress, receiver, allowedSender, makingAmount, takingAmount, offsets, interactions, }; } getContractCallData(methodName, methodParams = []) { return this.providerConnector.contractEncodeABI(limit_order_protocol_const_1.LIMIT_ORDER_PROTOCOL_ABI, this.contractAddress, methodName, methodParams); } /** * Get nonce from contract (nonce method) and put it to predicate on order creating */ getCustomAmountData(methodName, makingAmount, takingAmount, swapTakerAmount = '0') { return this.getContractCallData(methodName, [ makingAmount, takingAmount, swapTakerAmount, ]).substr(0, 2 + 68 * 2); } } exports.LimitOrderBuilder = LimitOrderBuilder; //# sourceMappingURL=limit-order.builder.js.map /***/ }), /***/ "./node_modules/@1inch/limit-order-protocol-utils/limit-order.decoder.js": /*!*******************************************************************************!*\ !*** ./node_modules/@1inch/limit-order-protocol-utils/limit-order.decoder.js ***! \*******************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.LimitOrderDecoder = void 0; const limit_order_protocol_model_1 = __webpack_require__(/*! ./model/limit-order-protocol.model */ "./node_modules/@1inch/limit-order-protocol-utils/model/limit-order-protocol.model.js"); const limit_order_utils_1 = __webpack_require__(/*! ./utils/limit-order.utils */ "./node_modules/@1inch/limit-order-protocol-utils/utils/limit-order.utils.js"); class LimitOrderDecoder { static unpackInteractions(offsets, interactions) { const offsetsBN = BigInt(offsets); const parsedInteractions = {}; Object.entries(limit_order_protocol_model_1.InteractionsFields).forEach(([name, position]) => { parsedInteractions[name] = limit_order_utils_1.parseInteractionForField(offsetsBN, interactions, position); }); return parsedInteractions; } static unpackInteraction(order, name) { return limit_order_utils_1.parseInteractionForField(BigInt(order.offsets), order.interactions, limit_order_protocol_model_1.InteractionsFields[name]); } /** * @returns `true` if interaction value is empty of 0x */ static hasInteraction(order, name) { const interaction = this.unpackInteraction(order, name); return limit_order_utils_1.trim0x(interaction) !== ''; } static unpackStaticCalls(offsets, interactions) { const offsetsBI = BigInt(offsets); const data = limit_order_utils_1.trim0x(interactions); const result = []; let previous = BigInt(0); let current = BigInt(0); // See PredicateHelper.and in limit-order-protocol for (let i = BigInt(0); (current = (offsetsBI >> i) & limit_order_utils_1.UINT32_BITMASK); i += limit_order_utils_1.UINT32_BITS) { const calldata = data.slice(Number(previous) * 2, Number(current) * 2); result.push(calldata); previous = current; } return result; } } exports.LimitOrderDecoder = LimitOrderDecoder; //# sourceMappingURL=limit-order.decoder.js.map /***/ }), /***/ "./node_modules/@1inch/limit-order-protocol-utils/model/abi.model.js": /*!***************************************************************************!*\ !*** ./node_modules/@1inch/limit-order-protocol-utils/model/abi.model.js ***! \***************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); //# sourceMappingURL=abi.model.js.map /***/ }), /***/ "./node_modules/@1inch/limit-order-protocol-utils/model/eip712.model.js": /*!******************************************************************************!*\ !*** ./node_modules/@1inch/limit-order-protocol-utils/model/eip712.model.js ***! \******************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); //# sourceMappingURL=eip712.model.js.map /***/ }), /***/ "./node_modules/@1inch/limit-order-protocol-utils/model/limit-order-protocol.model.js": /*!********************************************************************************************!*\ !*** ./node_modules/@1inch/limit-order-protocol-utils/model/limit-order-protocol.model.js ***! \********************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.LimitOrderProtocolMethods = exports.InteractionsFields = exports.ChainId = void 0; var ChainId; (function (ChainId) { ChainId[ChainId["etherumMainnet"] = 1] = "etherumMainnet"; ChainId[ChainId["binanceMainnet"] = 56] = "binanceMainnet"; ChainId[ChainId["polygonMainnet"] = 137] = "polygonMainnet"; ChainId[ChainId["optimismMainnet"] = 10] = "optimismMainnet"; ChainId[ChainId["arbitrumMainnet"] = 42161] = "arbitrumMainnet"; ChainId[ChainId["gnosisMainnet"] = 100] = "gnosisMainnet"; ChainId[ChainId["avalancheMainnet"] = 43114] = "avalancheMainnet"; ChainId[ChainId["fantomMainnet"] = 250] = "fantomMainnet"; ChainId[ChainId["auroraMainnet"] = 1313161554] = "auroraMainnet"; ChainId[ChainId["klaytnMainnet"] = 8217] = "klaytnMainnet"; })(ChainId = exports.ChainId || (exports.ChainId = {})); exports.InteractionsFields = { makerAssetData: 0, takerAssetData: 1, getMakingAmount: 2, getTakingAmount: 3, predicate: 4, permit: 5, preInteraction: 6, postInteraction: 7, // cuz enum has numeric keys also }; var LimitOrderProtocolMethods; (function (LimitOrderProtocolMethods) { LimitOrderProtocolMethods["getMakingAmount"] = "getMakingAmount"; LimitOrderProtocolMethods["getTakingAmount"] = "getTakingAmount"; LimitOrderProtocolMethods["arbitraryStaticCall"] = "arbitraryStaticCall"; LimitOrderProtocolMethods["fillOrder"] = "fillOrder"; LimitOrderProtocolMethods["fillOrderToWithPermit"] = "fillOrderToWithPermit"; LimitOrderProtocolMethods["fillOrderRFQ"] = "fillOrderRFQ"; LimitOrderProtocolMethods["cancelOrder"] = "cancelOrder"; LimitOrderProtocolMethods["cancelOrderRFQ"] = "cancelOrderRFQ"; LimitOrderProtocolMethods["nonce"] = "nonce"; LimitOrderProtocolMethods["advanceNonce"] = "advanceNonce"; LimitOrderProtocolMethods["increaseNonce"] = "increaseNonce"; LimitOrderProtocolMethods["and"] = "and"; LimitOrderProtocolMethods["or"] = "or"; LimitOrderProtocolMethods["eq"] = "eq"; LimitOrderProtocolMethods["lt"] = "lt"; LimitOrderProtocolMethods["gt"] = "gt"; LimitOrderProtocolMethods["timestampBelow"] = "timestampBelow"; LimitOrderProtocolMethods["timestampBelowAndNonceEquals"] = "timestampBelowAndNonceEquals"; LimitOrderProtocolMethods["nonceEquals"] = "nonceEquals"; LimitOrderProtocolMethods["remaining"] = "remaining"; LimitOrderProtocolMethods["transferFrom"] = "transferFrom"; LimitOrderProtocolMethods["checkPredicate"] = "checkPredicate"; LimitOrderProtocolMethods["remainingsRaw"] = "remainingsRaw"; LimitOrderProtocolMethods["simulate"] = "simulate"; })(LimitOrderProtocolMethods = exports.LimitOrderProtocolMethods || (exports.LimitOrderProtocolMethods = {})); //# sourceMappingURL=limit-order-protocol.model.js.map /***/ }), /***/ "./node_modules/@1inch/limit-order-protocol-utils/model/series-nonce-manager.model.js": /*!********************************************************************************************!*\ !*** ./node_modules/@1inch/limit-order-protocol-utils/model/series-nonce-manager.model.js ***! \********************************************************************************************/ /***/ ((__unused_webpack_module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.SeriesNonceManagerMethods = exports.NonceSeriesV2 = exports.NonceSeriesLegacyV1 = void 0; /** * @deprecated */ exports.NonceSeriesLegacyV1 = { P2Pv2: BigInt(1), }; exports.NonceSeriesV2 = { /** * This is not a valid option. * * @deprecated Gasless should use main contract's built-in nonce manager * to avoid arbitraryStaticCall() and save gas. */ GaslessV3: BigInt(-1), // Those are valid _GaslessV3: BigInt(-1), LimitOrderV3: BigInt(0), P2PV3: BigInt(1), }; var SeriesNonceManagerMethods; (function (SeriesNonceManagerMethods) { SeriesNonceManagerMethods["nonce"] = "nonce"; SeriesNonceManagerMethods["advanceNonce"] = "advanceNonce"; SeriesNonceManagerMethods["increaseNonce"] = "increaseNonce"; SeriesNonceManagerMethods["nonceEquals"] = "nonceEquals"; // Don't expose