@0xsplits/splits-sdk
Version:
SDK for the 0xSplits protocol
963 lines • 69.6 kB
JavaScript
"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 (