UNPKG

@0xsplits/splits-sdk

Version:

SDK for the 0xSplits protocol

963 lines 69.6 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.SwapperClient = void 0; var viem_1 = require("viem"); var base_1 = require("./base"); var constants_1 = require("../constants"); var swapperFactory_1 = require("../constants/abi/swapperFactory"); var uniV3Swap_1 = require("../constants/abi/uniV3Swap"); var swapper_1 = require("../constants/abi/swapper"); var errors_1 = require("../errors"); var mixin_1 = require("./mixin"); var utils_1 = require("../utils"); var validation_1 = require("../utils/validation"); var universalSwap_1 = require("../constants/abi/universalSwap"); var SwapperTransactions = /** @class */ (function (_super) { __extends(SwapperTransactions, _super); function SwapperTransactions(transactionClientArgs) { return _super.call(this, __assign({ supportedChainIds: constants_1.SWAPPER_CHAIN_IDS }, transactionClientArgs)) || this; } SwapperTransactions.prototype._createSwapperTransaction = function (_a) { return __awaiter(this, arguments, void 0, function (_b) { var formattedOracleParams, formattedDefaultScaledOfferFactor, formattedScaledOfferFactorOverrides, result; var owner = _b.owner, _c = _b.paused, paused = _c === void 0 ? false : _c, beneficiary = _b.beneficiary, tokenToBeneficiary = _b.tokenToBeneficiary, oracleParams = _b.oracleParams, defaultScaledOfferFactorPercent = _b.defaultScaledOfferFactorPercent, scaledOfferFactorOverrides = _b.scaledOfferFactorOverrides, _d = _b.transactionOverrides, transactionOverrides = _d === void 0 ? {} : _d; return __generator(this, function (_e) { switch (_e.label) { case 0: (0, validation_1.validateAddress)(owner); (0, validation_1.validateAddress)(beneficiary); (0, validation_1.validateAddress)(tokenToBeneficiary); (0, validation_1.validateOracleParams)(oracleParams); (0, validation_1.validateScaledOfferFactor)(defaultScaledOfferFactorPercent); (0, validation_1.validateScaledOfferFactorOverrides)(scaledOfferFactorOverrides); if (this._shouldRequireWalletClient) this._requireWalletClient(); formattedOracleParams = (0, utils_1.getFormattedOracleParams)(oracleParams); formattedDefaultScaledOfferFactor = (0, utils_1.getFormattedScaledOfferFactor)(defaultScaledOfferFactorPercent); formattedScaledOfferFactorOverrides = (0, utils_1.getFormattedScaledOfferFactorOverrides)(scaledOfferFactorOverrides); return [4 /*yield*/, this._executeContractFunction({ contractAddress: (0, constants_1.getSwapperFactoryAddress)(), contractAbi: swapperFactory_1.swapperFactoryAbi, functionName: 'createSwapper', functionArgs: [ [ owner, paused, beneficiary, tokenToBeneficiary, formattedOracleParams, formattedDefaultScaledOfferFactor, formattedScaledOfferFactorOverrides, ], ], transactionOverrides: transactionOverrides, })]; case 1: result = _e.sent(); return [2 /*return*/, result]; } }); }); }; SwapperTransactions.prototype._uniV3FlashSwapTransaction = function (_a) { return __awaiter(this, arguments, void 0, function (_b) { var functionChainId, excessRecipientAddress, tokenToBeneficiary, swapRecipient, deadlineTime, quoteParams, exactInputParams, flashParams, result; var _c, _d; var swapperAddress = _b.swapperAddress, excessRecipient = _b.excessRecipient, inputAssets = _b.inputAssets, _e = _b.transactionTimeLimit, transactionTimeLimit = _e === void 0 ? 300 : _e, chainId = _b.chainId, _f = _b.transactionOverrides, transactionOverrides = _f === void 0 ? {} : _f; return __generator(this, function (_g) { switch (_g.label) { case 0: (0, validation_1.validateAddress)(swapperAddress); (0, validation_1.validateUniV3SwapInputAssets)(inputAssets); if (this._shouldRequireWalletClient) this._requireWalletClient(); functionChainId = this._getFunctionChainId(chainId); excessRecipientAddress = excessRecipient ? excessRecipient : ((_c = this._walletClient) === null || _c === void 0 ? void 0 : _c.account) ? this._walletClient.account.address : viem_1.zeroAddress; (0, validation_1.validateAddress)(excessRecipientAddress); this._requireDataClient(); return [4 /*yield*/, this._dataClient.getSwapperMetadata({ chainId: functionChainId, swapperAddress: swapperAddress, })]; case 1: tokenToBeneficiary = (_g.sent()).tokenToBeneficiary; if (!constants_1.PERMISSIONLESS_SWAPPER_CHAIN_IDS.includes(functionChainId)) { if (inputAssets.length > 1) { throw new errors_1.InvalidArgumentError("Chain id: ".concat(functionChainId, " - swappers only support one input asset, swapper owners can use the execCalls function to execute multiple swaps.")); } if (((_d = inputAssets[0]) === null || _d === void 0 ? void 0 : _d.token) !== tokenToBeneficiary.address) { throw new errors_1.InvalidArgumentError("Chain id: ".concat(functionChainId, " - swappers only support the tokenToBeneficiary as the input asset, swapper owners can use the execCalls function to execute this swap.")); } } swapRecipient = (0, constants_1.getUniV3SwapAddress)(functionChainId); deadlineTime = Math.floor(Date.now() / 1000) + transactionTimeLimit; quoteParams = []; exactInputParams = []; inputAssets.map(function (inputAsset) { quoteParams.push([ [inputAsset.token, tokenToBeneficiary.address], inputAsset.amountIn, '0x', ]); if (inputAsset.encodedPath) { exactInputParams.push([ inputAsset.encodedPath, swapRecipient, deadlineTime, inputAsset.amountIn, inputAsset.amountOutMin, ]); } }); flashParams = [ quoteParams, [exactInputParams, excessRecipientAddress], ]; return [4 /*yield*/, this._executeContractFunction({ contractAddress: (0, constants_1.getUniV3SwapAddress)(functionChainId), contractAbi: uniV3Swap_1.uniV3SwapAbi, functionName: 'initFlash', functionArgs: [swapperAddress, flashParams], transactionOverrides: transactionOverrides, })]; case 2: result = _g.sent(); return [2 /*return*/, result]; } }); }); }; SwapperTransactions.prototype._universalSwapTransaction = function (_a) { return __awaiter(this, arguments, void 0, function (_b) { var functionChainId, excessRecipientAddress, tokenToBeneficiary, quoteParams, flashParams, result; var _c; var swapperAddress = _b.swapperAddress, excessRecipient = _b.excessRecipient, calls = _b.calls, inputAssets = _b.inputAssets, chainId = _b.chainId, _d = _b.transactionOverrides, transactionOverrides = _d === void 0 ? {} : _d; return __generator(this, function (_e) { switch (_e.label) { case 0: (0, validation_1.validateAddress)(swapperAddress); (0, validation_1.validateCalls)(calls); if (this._shouldRequireWalletClient) this._requireWalletClient(); functionChainId = this._getFunctionChainId(chainId); excessRecipientAddress = excessRecipient ? excessRecipient : ((_c = this._walletClient) === null || _c === void 0 ? void 0 : _c.account) ? this._walletClient.account.address : viem_1.zeroAddress; (0, validation_1.validateAddress)(excessRecipientAddress); this._requirePublicClient(functionChainId); return [4 /*yield*/, this._publicClient.readContract({ address: (0, viem_1.getAddress)(swapperAddress), abi: swapper_1.swapperAbi, functionName: 'tokenToBeneficiary', })]; case 1: tokenToBeneficiary = _e.sent(); quoteParams = []; inputAssets.map(function (inputAsset) { quoteParams.push([ [inputAsset.token, tokenToBeneficiary], inputAsset.amountIn, '0x', ]); }); flashParams = [quoteParams, [calls, excessRecipientAddress]]; return [4 /*yield*/, this._executeContractFunction({ contractAddress: constants_1.UNIVERSAL_SWAP_ADDRESS, contractAbi: universalSwap_1.universalSwapAbi, functionName: 'initFlash', functionArgs: [swapperAddress, flashParams], transactionOverrides: transactionOverrides, })]; case 2: result = _e.sent(); return [2 /*return*/, result]; } }); }); }; SwapperTransactions.prototype._setBeneficiaryTransaction = function (_a) { return __awaiter(this, arguments, void 0, function (_b) { var result; var swapperAddress = _b.swapperAddress, beneficiary = _b.beneficiary, _c = _b.transactionOverrides, transactionOverrides = _c === void 0 ? {} : _c; return __generator(this, function (_d) { switch (_d.label) { case 0: (0, validation_1.validateAddress)(swapperAddress); (0, validation_1.validateAddress)(beneficiary); if (!this._shouldRequireWalletClient) return [3 /*break*/, 2]; this._requireWalletClient(); return [4 /*yield*/, this._requireOwner(swapperAddress)]; case 1: _d.sent(); _d.label = 2; case 2: return [4 /*yield*/, this._executeContractFunction({ contractAddress: (0, viem_1.getAddress)(swapperAddress), contractAbi: swapper_1.swapperAbi, functionName: 'setBeneficiary', functionArgs: [beneficiary], transactionOverrides: transactionOverrides, })]; case 3: result = _d.sent(); return [2 /*return*/, result]; } }); }); }; SwapperTransactions.prototype._setTokenToBeneficiaryTransaction = function (_a) { return __awaiter(this, arguments, void 0, function (_b) { var result; var swapperAddress = _b.swapperAddress, tokenToBeneficiary = _b.tokenToBeneficiary, _c = _b.transactionOverrides, transactionOverrides = _c === void 0 ? {} : _c; return __generator(this, function (_d) { switch (_d.label) { case 0: (0, validation_1.validateAddress)(swapperAddress); (0, validation_1.validateAddress)(tokenToBeneficiary); if (!this._shouldRequireWalletClient) return [3 /*break*/, 2]; this._requireWalletClient(); return [4 /*yield*/, this._requireOwner(swapperAddress)]; case 1: _d.sent(); _d.label = 2; case 2: return [4 /*yield*/, this._executeContractFunction({ contractAddress: (0, viem_1.getAddress)(swapperAddress), contractAbi: swapper_1.swapperAbi, functionName: 'setTokenToBeneficiary', functionArgs: [tokenToBeneficiary], transactionOverrides: transactionOverrides, })]; case 3: result = _d.sent(); return [2 /*return*/, result]; } }); }); }; SwapperTransactions.prototype._setOracleTransaction = function (_a) { return __awaiter(this, arguments, void 0, function (_b) { var result; var swapperAddress = _b.swapperAddress, oracle = _b.oracle, _c = _b.transactionOverrides, transactionOverrides = _c === void 0 ? {} : _c; return __generator(this, function (_d) { switch (_d.label) { case 0: (0, validation_1.validateAddress)(swapperAddress); (0, validation_1.validateAddress)(oracle); if (!this._shouldRequireWalletClient) return [3 /*break*/, 2]; this._requireWalletClient(); return [4 /*yield*/, this._requireOwner(swapperAddress)]; case 1: _d.sent(); _d.label = 2; case 2: return [4 /*yield*/, this._executeContractFunction({ contractAddress: (0, viem_1.getAddress)(swapperAddress), contractAbi: swapper_1.swapperAbi, functionName: 'setOracle', functionArgs: [oracle], transactionOverrides: transactionOverrides, })]; case 3: result = _d.sent(); return [2 /*return*/, result]; } }); }); }; SwapperTransactions.prototype._setDefaultScaledOfferFactorTransaction = function (_a) { return __awaiter(this, arguments, void 0, function (_b) { var formattedDefaultScaledOfferFactor, result; var swapperAddress = _b.swapperAddress, defaultScaledOfferFactorPercent = _b.defaultScaledOfferFactorPercent, _c = _b.transactionOverrides, transactionOverrides = _c === void 0 ? {} : _c; return __generator(this, function (_d) { switch (_d.label) { case 0: (0, validation_1.validateAddress)(swapperAddress); (0, validation_1.validateScaledOfferFactor)(defaultScaledOfferFactorPercent); if (!this._shouldRequireWalletClient) return [3 /*break*/, 2]; this._requireWalletClient(); return [4 /*yield*/, this._requireOwner(swapperAddress)]; case 1: _d.sent(); _d.label = 2; case 2: formattedDefaultScaledOfferFactor = (0, utils_1.getFormattedScaledOfferFactor)(defaultScaledOfferFactorPercent); return [4 /*yield*/, this._executeContractFunction({ contractAddress: (0, viem_1.getAddress)(swapperAddress), contractAbi: swapper_1.swapperAbi, functionName: 'setDefaultScaledOfferFactor', functionArgs: [formattedDefaultScaledOfferFactor], transactionOverrides: transactionOverrides, })]; case 3: result = _d.sent(); return [2 /*return*/, result]; } }); }); }; SwapperTransactions.prototype._setScaledOfferFactorOverridesTransaction = function (_a) { return __awaiter(this, arguments, void 0, function (_b) { var formattedScaledOfferFactorOverrides, result; var swapperAddress = _b.swapperAddress, scaledOfferFactorOverrides = _b.scaledOfferFactorOverrides, _c = _b.transactionOverrides, transactionOverrides = _c === void 0 ? {} : _c; return __generator(this, function (_d) { switch (_d.label) { case 0: (0, validation_1.validateAddress)(swapperAddress); (0, validation_1.validateScaledOfferFactorOverrides)(scaledOfferFactorOverrides); if (!this._shouldRequireWalletClient) return [3 /*break*/, 2]; this._requireWalletClient(); return [4 /*yield*/, this._requireOwner(swapperAddress)]; case 1: _d.sent(); _d.label = 2; case 2: formattedScaledOfferFactorOverrides = (0, utils_1.getFormattedScaledOfferFactorOverrides)(scaledOfferFactorOverrides); return [4 /*yield*/, this._executeContractFunction({ contractAddress: (0, viem_1.getAddress)(swapperAddress), contractAbi: swapper_1.swapperAbi, functionName: 'setPairScaledOfferFactors', functionArgs: [formattedScaledOfferFactorOverrides], transactionOverrides: transactionOverrides, })]; case 3: result = _d.sent(); return [2 /*return*/, result]; } }); }); }; SwapperTransactions.prototype._execCallsTransaction = function (_a) { return __awaiter(this, arguments, void 0, function (_b) { var formattedCalls, result; var swapperAddress = _b.swapperAddress, calls = _b.calls, _c = _b.transactionOverrides, transactionOverrides = _c === void 0 ? {} : _c; return __generator(this, function (_d) { switch (_d.label) { case 0: (0, validation_1.validateAddress)(swapperAddress); calls.map(function (callData) { return (0, validation_1.validateAddress)(callData.to); }); if (!this._shouldRequireWalletClient) return [3 /*break*/, 2]; this._requireWalletClient(); return [4 /*yield*/, this._requireOwner(swapperAddress)]; case 1: _d.sent(); _d.label = 2; case 2: formattedCalls = calls.map(function (callData) { return [callData.to, callData.value, callData.data]; }); return [4 /*yield*/, this._executeContractFunction({ contractAddress: (0, viem_1.getAddress)(swapperAddress), contractAbi: swapper_1.swapperAbi, functionName: 'execCalls', functionArgs: [formattedCalls], transactionOverrides: transactionOverrides, })]; case 3: result = _d.sent(); return [2 /*return*/, result]; } }); }); }; SwapperTransactions.prototype._setPausedTransaction = function (_a) { return __awaiter(this, arguments, void 0, function (_b) { var result; var swapperAddress = _b.swapperAddress, paused = _b.paused, _c = _b.transactionOverrides, transactionOverrides = _c === void 0 ? {} : _c; return __generator(this, function (_d) { switch (_d.label) { case 0: (0, validation_1.validateAddress)(swapperAddress); if (!this._shouldRequireWalletClient) return [3 /*break*/, 2]; this._requireWalletClient(); return [4 /*yield*/, this._requireOwner(swapperAddress)]; case 1: _d.sent(); _d.label = 2; case 2: return [4 /*yield*/, this._executeContractFunction({ contractAddress: (0, viem_1.getAddress)(swapperAddress), contractAbi: swapper_1.swapperAbi, functionName: 'setPaused', functionArgs: [paused], transactionOverrides: transactionOverrides, })]; case 3: result = _d.sent(); return [2 /*return*/, result]; } }); }); }; SwapperTransactions.prototype._requireOwner = function (swapperAddress) { return __awaiter(this, void 0, void 0, function () { var swapperContract, owner, walletAddress; var _a; return __generator(this, function (_b) { switch (_b.label) { case 0: this._requireWalletClient(); swapperContract = this._getSwapperContract(swapperAddress, this._walletClient.chain.id); return [4 /*yield*/, swapperContract.read.owner()]; case 1: owner = _b.sent(); walletAddress = (_a = this._walletClient.account) === null || _a === void 0 ? void 0 : _a.address; if (owner !== walletAddress) throw new errors_1.InvalidAuthError("Action only available to the swapper owner. Swapper address: ".concat(swapperAddress, ", owner: ").concat(owner, ", wallet address: ").concat(walletAddress)); return [2 /*return*/]; } }); }); }; SwapperTransactions.prototype._getUniV3SwapContract = function (chainId) { var publicClient = this._getPublicClient(chainId); return (0, viem_1.getContract)({ address: (0, constants_1.getUniV3SwapAddress)(chainId), abi: uniV3Swap_1.uniV3SwapAbi, client: publicClient, }); }; SwapperTransactions.prototype._getSwapperContract = function (swapper, chainId) { var publicClient = this._getPublicClient(chainId); return (0, viem_1.getContract)({ address: (0, viem_1.getAddress)(swapper), abi: swapper_1.swapperAbi, client: publicClient, }); }; return SwapperTransactions; }(base_1.BaseTransactions)); // eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging var SwapperClient = /** @class */ (function (_super) { __extends(SwapperClient, _super); function SwapperClient(clientArgs) { var _this = _super.call(this, __assign({ transactionType: constants_1.TransactionType.Transaction }, clientArgs)) || this; _this.eventTopics = { createSwapper: [ (0, viem_1.encodeEventTopics)({ abi: swapperFactory_1.swapperFactoryAbi, eventName: 'CreateSwapper', })[0], ], swapperFlash: [ (0, viem_1.encodeEventTopics)({ abi: swapper_1.swapperAbi, eventName: 'Flash', })[0], ], execCalls: [ (0, viem_1.encodeEventTopics)({ abi: swapper_1.swapperAbi, eventName: 'ExecCalls', })[0], ], setPaused: [ (0, viem_1.encodeEventTopics)({ abi: swapper_1.swapperAbi, eventName: 'SetPaused', })[0], ], setBeneficiary: [ (0, viem_1.encodeEventTopics)({ abi: swapper_1.swapperAbi, eventName: 'SetBeneficiary', })[0], ], setTokenToBeneficiary: [ (0, viem_1.encodeEventTopics)({ abi: swapper_1.swapperAbi, eventName: 'SetTokenToBeneficiary', })[0], ], setOracle: [ (0, viem_1.encodeEventTopics)({ abi: swapper_1.swapperAbi, eventName: 'SetOracle', })[0], ], setDefaultScaledOfferFactor: [ (0, viem_1.encodeEventTopics)({ abi: swapper_1.swapperAbi, eventName: 'SetDefaultScaledOfferFactor', })[0], ], setScaledOfferFactorOverrides: [ (0, viem_1.encodeEventTopics)({ abi: swapper_1.swapperAbi, eventName: 'SetPairScaledOfferFactors', })[0], ], }; _this.callData = new SwapperCallData(clientArgs); _this.estimateGas = new SwapperGasEstimates(clientArgs); return _this; } // Write actions SwapperClient.prototype._submitCreateSwapperTransaction = function (createSwapperArgs) { return __awaiter(this, void 0, void 0, function () { var txHash; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._createSwapperTransaction(createSwapperArgs)]; case 1: txHash = _a.sent(); if (!this._isContractTransaction(txHash)) throw new Error('Invalid response'); return [2 /*return*/, { txHash: txHash }]; } }); }); }; SwapperClient.prototype.createSwapper = function (createSwapperArgs) { return __awaiter(this, void 0, void 0, function () { var txHash, events, event, log; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._submitCreateSwapperTransaction(createSwapperArgs)]; case 1: txHash = (_a.sent()).txHash; return [4 /*yield*/, this.getTransactionEvents({ txHash: txHash, eventTopics: this.eventTopics.createSwapper, })]; case 2: events = _a.sent(); event = events.length > 0 ? events[0] : undefined; if (event) { log = (0, viem_1.decodeEventLog)({ abi: swapperFactory_1.swapperFactoryAbi, data: event.data, topics: event.topics, }); return [2 /*return*/, { swapperAddress: log.args.swapper, event: event, }]; } throw new errors_1.TransactionFailedError(); } }); }); }; SwapperClient.prototype._submitUniV3FlashSwapTransaction = function (flashArgs) { return __awaiter(this, void 0, void 0, function () { var txHash; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._uniV3FlashSwapTransaction(flashArgs)]; case 1: txHash = _a.sent(); if (!this._isContractTransaction(txHash)) throw new Error('Invalid response'); return [2 /*return*/, { txHash: txHash }]; } }); }); }; SwapperClient.prototype.uniV3FlashSwap = function (flashArgs) { return __awaiter(this, void 0, void 0, function () { var txHash, events, event; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._submitUniV3FlashSwapTransaction(flashArgs)]; case 1: txHash = (_a.sent()).txHash; return [4 /*yield*/, this.getTransactionEvents({ txHash: txHash, eventTopics: this.eventTopics.swapperFlash, })]; case 2: events = _a.sent(); event = events.length > 0 ? events[0] : undefined; if (event) return [2 /*return*/, { event: event, }]; throw new errors_1.TransactionFailedError(); } }); }); }; SwapperClient.prototype._submitUniversalSwapTransaction = function (flashArgs) { return __awaiter(this, void 0, void 0, function () { var txHash; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._universalSwapTransaction(flashArgs)]; case 1: txHash = _a.sent(); if (!this._isContractTransaction(txHash)) throw new Error('Invalid response'); return [2 /*return*/, { txHash: txHash }]; } }); }); }; SwapperClient.prototype.universalSwap = function (flashArgs) { return __awaiter(this, void 0, void 0, function () { var txHash, events, event; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._submitUniversalSwapTransaction(flashArgs)]; case 1: txHash = (_a.sent()).txHash; return [4 /*yield*/, this.getTransactionEvents({ txHash: txHash, eventTopics: this.eventTopics.swapperFlash, })]; case 2: events = _a.sent(); event = events.length > 0 ? events[0] : undefined; if (event) return [2 /*return*/, { event: event, }]; throw new errors_1.TransactionFailedError(); } }); }); }; SwapperClient.prototype._submitExecCallsTransaction = function (callArgs) { return __awaiter(this, void 0, void 0, function () { var txHash; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._execCallsTransaction(callArgs)]; case 1: txHash = _a.sent(); if (!this._isContractTransaction(txHash)) throw new Error('Invalid response'); return [2 /*return*/, { txHash: txHash }]; } }); }); }; SwapperClient.prototype.execCalls = function (callArgs) { return __awaiter(this, void 0, void 0, function () { var txHash, events, event; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._submitExecCallsTransaction(callArgs)]; case 1: txHash = (_a.sent()).txHash; return [4 /*yield*/, this.getTransactionEvents({ txHash: txHash, eventTopics: this.eventTopics.execCalls, })]; case 2: events = _a.sent(); event = events.length > 0 ? events[0] : undefined; if (event) return [2 /*return*/, { event: event, }]; throw new errors_1.TransactionFailedError(); } }); }); }; SwapperClient.prototype._submitSetPausedTransaction = function (pauseArgs) { return __awaiter(this, void 0, void 0, function () { var txHash; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._setPausedTransaction(pauseArgs)]; case 1: txHash = _a.sent(); if (!this._isContractTransaction(txHash)) throw new Error('Invalid response'); return [2 /*return*/, { txHash: txHash }]; } }); }); }; SwapperClient.prototype.setPaused = function (pauseArgs) { return __awaiter(this, void 0, void 0, function () { var txHash, events, event; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._submitSetPausedTransaction(pauseArgs)]; case 1: txHash = (_a.sent()).txHash; return [4 /*yield*/, this.getTransactionEvents({ txHash: txHash, eventTopics: this.eventTopics.setPaused, })]; case 2: events = _a.sent(); event = events.length > 0 ? events[0] : undefined; if (event) return [2 /*return*/, { event: event, }]; throw new errors_1.TransactionFailedError(); } }); }); }; SwapperClient.prototype._submitSetBeneficiaryTransaction = function (args) { return __awaiter(this, void 0, void 0, function () { var txHash; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._setBeneficiaryTransaction(args)]; case 1: txHash = _a.sent(); if (!this._isContractTransaction(txHash)) throw new Error('Invalid response'); return [2 /*return*/, { txHash: txHash }]; } }); }); }; SwapperClient.prototype.setBeneficiary = function (args) { return __awaiter(this, void 0, void 0, function () { var txHash, events, event; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._submitSetBeneficiaryTransaction(args)]; case 1: txHash = (_a.sent()).txHash; return [4 /*yield*/, this.getTransactionEvents({ txHash: txHash, eventTopics: this.eventTopics.setBeneficiary, })]; case 2: events = _a.sent(); event = events.length > 0 ? events[0] : undefined; if (event) return [2 /*return*/, { event: event, }]; throw new errors_1.TransactionFailedError(); } }); }); }; SwapperClient.prototype._submitSetTokenToBeneficiaryTransaction = function (args) { return __awaiter(this, void 0, void 0, function () { var txHash; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._setTokenToBeneficiaryTransaction(args)]; case 1: txHash = _a.sent(); if (!this._isContractTransaction(txHash)) throw new Error('Invalid response'); return [2 /*return*/, { txHash: txHash }]; } }); }); }; SwapperClient.prototype.setTokenToBeneficiary = function (args) { return __awaiter(this, void 0, void 0, function () { var txHash, events, event; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._submitSetTokenToBeneficiaryTransaction(args)]; case 1: txHash = (_a.sent()).txHash; return [4 /*yield*/, this.getTransactionEvents({ txHash: txHash, eventTopics: this.eventTopics.setTokenToBeneficiary, })]; case 2: events = _a.sent(); event = events.length > 0 ? events[0] : undefined; if (event) return [2 /*return*/, { event: event, }]; throw new errors_1.TransactionFailedError(); } }); }); }; SwapperClient.prototype._submitSetOracleTransaction = function (args) { return __awaiter(this, void 0, void 0, function () { var txHash; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._setOracleTransaction(args)]; case 1: txHash = _a.sent(); if (!this._isContractTransaction(txHash)) throw new Error('Invalid response'); return [2 /*return*/, { txHash: txHash }]; } }); }); }; SwapperClient.prototype.setOracle = function (args) { return __awaiter(this, void 0, void 0, function () { var txHash, events, event; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._submitSetOracleTransaction(args)]; case 1: txHash = (_a.sent()).txHash; return [4 /*yield*/, this.getTransactionEvents({ txHash: txHash, eventTopics: this.eventTopics.setOracle, })]; case 2: events = _a.sent(); event = events.length > 0 ? events[0] : undefined; if (event) return [2 /*return*/, { event: event, }]; throw new errors_1.TransactionFailedError(); } }); }); }; SwapperClient.prototype._submitSetDefaultScaledOfferFactorTransaction = function (args) { return __awaiter(this, void 0, void 0, function () { var txHash; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._setDefaultScaledOfferFactorTransaction(args)]; case 1: txHash = _a.sent(); if (!this._isContractTransaction(txHash)) throw new Error('Invalid response'); return [2 /*return*/, { txHash: txHash }]; } }); }); }; SwapperClient.prototype.setDefaultScaledOfferFactor = function (args) { return __awaiter(this, void 0, void 0, function () { var txHash, events, event; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._submitSetDefaultScaledOfferFactorTransaction(args)]; case 1: txHash = (_a.sent()).txHash; return [4 /*yield*/, this.getTransactionEvents({ txHash: txHash, eventTopics: this.eventTopics.setDefaultScaledOfferFactor, })]; case 2: events = _a.sent(); event = events.length > 0 ? events[0] : undefined; if (event) return [2 /*return*/, { event: event, }]; throw new errors_1.TransactionFailedError(); } }); }); }; SwapperClient.prototype._submitSetScaledOfferFactorOverridesTransaction = function (args) { return __awaiter(this, void 0, void 0, function () { var txHash; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._setScaledOfferFactorOverridesTransaction(args)]; case 1: txHash = _a.sent(); if (!this._isContractTransaction(txHash)) throw new Error('Invalid response'); return [2 /*return*/, { txHash: txHash }]; } }); }); }; SwapperClient.prototype.setScaledOfferFactorOverrides = function (args) { return __awaiter(this, void 0, void 0, function () { var txHash, events, event; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, this._submitSetScaledOfferFactorOverridesTransaction(args)]; case 1: txHash = (_a.sent()).txHash; return [4 /*yield*/, this.getTransactionEvents({ txHash: txHash, eventTopics: this.eventTopics.setScaledOfferFactorOverrides, })]; case 2: events = _a.sent(); event = events.length > 0 ? events[0] : undefined; if (event) return [2 /*return*/, { event: event, }]; throw new errors_1.TransactionFailedError(); } }); }); }; // Read actions SwapperClient.prototype.getBeneficiary = function (_a) { return __awaiter(this, arguments, void 0, function (_b) { var functionChainId, swapperContract, beneficiary; var swapperAddress = _b.swapperAddress, chainId = _b.chainId; return __generator(this, function (_c) { switch (