@xswap-link/xswap-common
Version:
JavaScript library for xSwap common components
1,340 lines (1,330 loc) • 28.2 kB
JavaScript
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// index.ts
var xswap_common_exports = {};
__export(xswap_common_exports, {
DEFAULT_API_URL: () => DEFAULT_API_URL,
DEFAULT_DB_ERROR: () => DEFAULT_DB_ERROR,
DEFAULT_ECOSYSTEM: () => DEFAULT_ECOSYSTEM,
DEFAULT_NATIVE_FEE_MULTIPLIER_PERCENTAGE: () => DEFAULT_NATIVE_FEE_MULTIPLIER_PERCENTAGE,
Ecosystem: () => Ecosystem,
Environment: () => Environment,
Web3Environment: () => Web3Environment,
XSwapCallType: () => XSwapCallType,
XSwapRouterAbi: () => XSwapRouterAbi,
safeBigNumberFrom: () => safeBigNumberFrom
});
module.exports = __toCommonJS(xswap_common_exports);
// src/models/Ecosystem.ts
var Ecosystem = /* @__PURE__ */ ((Ecosystem2) => {
Ecosystem2["EVM"] = "evm";
return Ecosystem2;
})(Ecosystem || {});
// src/models/Environment.ts
var Environment = /* @__PURE__ */ ((Environment2) => {
Environment2["PROD"] = "production";
Environment2["DEV"] = "develop";
Environment2["LOCAL"] = "local";
return Environment2;
})(Environment || {});
// src/models/Web3Environment.ts
var Web3Environment = /* @__PURE__ */ ((Web3Environment2) => {
Web3Environment2["DEVNET"] = "devnet";
Web3Environment2["TESTNET"] = "testnet";
Web3Environment2["MAINNET"] = "mainnet";
return Web3Environment2;
})(Web3Environment || {});
// src/models/XSwapCallType.ts
var XSwapCallType = /* @__PURE__ */ ((XSwapCallType2) => {
XSwapCallType2[XSwapCallType2["DEFAULT"] = 0] = "DEFAULT";
XSwapCallType2[XSwapCallType2["FULL_TOKEN_BALANCE"] = 1] = "FULL_TOKEN_BALANCE";
XSwapCallType2[XSwapCallType2["FULL_NATIVE_BALANCE"] = 2] = "FULL_NATIVE_BALANCE";
XSwapCallType2[XSwapCallType2["COLLECT_TOKEN_BALANCE"] = 3] = "COLLECT_TOKEN_BALANCE";
return XSwapCallType2;
})(XSwapCallType || {});
// src/constants/index.ts
var DEFAULT_API_URL = "https://xswap.link/api";
var DEFAULT_DB_ERROR = "No data for provided parameters";
var DEFAULT_ECOSYSTEM = "evm" /* EVM */;
var DEFAULT_NATIVE_FEE_MULTIPLIER_PERCENTAGE = 105;
// src/contracts/abi/XSwapRouter.json
var XSwapRouter_default = [
{
inputs: [],
stateMutability: "nonpayable",
type: "constructor"
},
{
inputs: [
{
internalType: "uint64",
name: "destinationChainSelector",
type: "uint64"
}
],
name: "DestinationChainNotWhitelisted",
type: "error"
},
{
inputs: [],
name: "FailedToSendNative",
type: "error"
},
{
inputs: [],
name: "IncorrectArrayLength",
type: "error"
},
{
inputs: [],
name: "InvalidAddress",
type: "error"
},
{
inputs: [
{
internalType: "address",
name: "router",
type: "address"
}
],
name: "InvalidRouter",
type: "error"
},
{
inputs: [
{
internalType: "address",
name: "messageExecutor",
type: "address"
}
],
name: "MessageAlreadyExecuted",
type: "error"
},
{
inputs: [],
name: "MessageMustTransferOnlyOneToken",
type: "error"
},
{
inputs: [
{
internalType: "uint64",
name: "chainId",
type: "uint64"
}
],
name: "NoXSwapRouterOnSelectedChain",
type: "error"
},
{
inputs: [
{
internalType: "uint256",
name: "currentBalance",
type: "uint256"
},
{
internalType: "uint256",
name: "calculatedFees",
type: "uint256"
}
],
name: "NotEnoughBalance",
type: "error"
},
{
inputs: [
{
internalType: "uint64",
name: "sourceChainSelector",
type: "uint64"
},
{
internalType: "address",
name: "sender",
type: "address"
}
],
name: "SenderNotWhitelisted",
type: "error"
},
{
inputs: [
{
internalType: "address",
name: "token",
type: "address"
}
],
name: "TokenNotWhitelisted",
type: "error"
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "previousAdmin",
type: "address"
},
{
indexed: false,
internalType: "address",
name: "newAdmin",
type: "address"
}
],
name: "AdminChanged",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "beacon",
type: "address"
}
],
name: "BeaconUpgraded",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "token",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "tokenAmount",
type: "uint256"
}
],
name: "EmergencyWithdraw",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "bytes32",
name: "messageId",
type: "bytes32"
},
{
indexed: true,
internalType: "uint64",
name: "sourceChainSelector",
type: "uint64"
},
{
indexed: true,
internalType: "address",
name: "sender",
type: "address"
},
{
indexed: false,
internalType: "bytes",
name: "data",
type: "bytes"
},
{
indexed: false,
internalType: "address",
name: "token",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "tokenAmount",
type: "uint256"
}
],
name: "ExecutorRunFailed",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "newExecutor",
type: "address"
}
],
name: "ExecutorUpdated",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "bytes32",
name: "messageId",
type: "bytes32"
},
{
indexed: true,
internalType: "address",
name: "messageExecutor",
type: "address"
},
{
indexed: true,
internalType: "bytes32",
name: "executionHash",
type: "bytes32"
},
{
indexed: false,
internalType: "address",
name: "token",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "tokenAmount",
type: "uint256"
}
],
name: "FundsReturnedForMessageExecution",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "uint8",
name: "version",
type: "uint8"
}
],
name: "Initialized",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "bytes32",
name: "messageId",
type: "bytes32"
},
{
indexed: true,
internalType: "uint64",
name: "sourceChainSelector",
type: "uint64"
},
{
indexed: true,
internalType: "address",
name: "sender",
type: "address"
},
{
indexed: false,
internalType: "bytes",
name: "data",
type: "bytes"
},
{
indexed: false,
internalType: "address",
name: "token",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "tokenAmount",
type: "uint256"
}
],
name: "MessageReceived",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "bytes32",
name: "messageId",
type: "bytes32"
},
{
indexed: true,
internalType: "uint64",
name: "destinationChainSelector",
type: "uint64"
},
{
indexed: true,
internalType: "address",
name: "sender",
type: "address"
},
{
indexed: false,
internalType: "bytes",
name: "data",
type: "bytes"
},
{
indexed: false,
internalType: "address",
name: "token",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "tokenAmount",
type: "uint256"
},
{
indexed: false,
internalType: "uint256",
name: "valueForInstantCcipRecieve",
type: "uint256"
},
{
indexed: false,
internalType: "address",
name: "transferedToken",
type: "address"
},
{
indexed: false,
internalType: "uint256",
name: "transferedTokenAmount",
type: "uint256"
}
],
name: "MessageSent",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "previousOwner",
type: "address"
},
{
indexed: true,
internalType: "address",
name: "newOwner",
type: "address"
}
],
name: "OwnershipTransferred",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "newFeeCollectorAddress",
type: "address"
}
],
name: "SetFeeCollectorAddress",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: false,
internalType: "address",
name: "newFeeOracleAddress",
type: "address"
}
],
name: "SetFeeOracleAddress",
type: "event"
},
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: "address",
name: "implementation",
type: "address"
}
],
name: "Upgraded",
type: "event"
},
{
inputs: [
{
components: [
{
internalType: "bytes32",
name: "messageId",
type: "bytes32"
},
{
internalType: "uint64",
name: "sourceChainSelector",
type: "uint64"
},
{
internalType: "bytes",
name: "sender",
type: "bytes"
},
{
internalType: "bytes",
name: "data",
type: "bytes"
},
{
components: [
{
internalType: "address",
name: "token",
type: "address"
},
{
internalType: "uint256",
name: "amount",
type: "uint256"
}
],
internalType: "struct Client.EVMTokenAmount[]",
name: "destTokenAmounts",
type: "tuple[]"
}
],
internalType: "struct Client.Any2EVMMessage",
name: "message",
type: "tuple"
}
],
name: "ccipReceive",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "uint64",
name: "",
type: "uint64"
}
],
name: "chainSelectorToXSwapRouterMap",
outputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_tokenToWithdraw",
type: "address"
},
{
internalType: "uint256",
name: "_amountToWithdraw",
type: "uint256"
}
],
name: "emergencyWithdraw",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [],
name: "feeCollectorAddress",
outputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "feeOracleAddress",
outputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_paymentToken",
type: "address"
},
{
internalType: "uint64",
name: "_destinationChainSelector",
type: "uint64"
},
{
components: [
{
internalType: "address",
name: "receiver",
type: "address"
},
{
internalType: "address",
name: "tokenOut",
type: "address"
},
{
internalType: "uint256",
name: "estimatedAmountOut",
type: "uint256"
},
{
components: [
{
internalType: "enum CallType",
name: "callType",
type: "uint8"
},
{
internalType: "address",
name: "target",
type: "address"
},
{
internalType: "uint256",
name: "value",
type: "uint256"
},
{
internalType: "bytes",
name: "callData",
type: "bytes"
},
{
internalType: "bytes",
name: "payload",
type: "bytes"
}
],
internalType: "struct Call[]",
name: "calls",
type: "tuple[]"
}
],
internalType: "struct SwapDataDestination",
name: "_swapDestinationData",
type: "tuple"
},
{
internalType: "address",
name: "_token",
type: "address"
},
{
internalType: "uint256",
name: "_amount",
type: "uint256"
},
{
internalType: "uint256",
name: "_gasLimit",
type: "uint256"
}
],
name: "getFees",
outputs: [
{
components: [
{
internalType: "uint256",
name: "ccipFee",
type: "uint256"
},
{
components: [
{
internalType: "uint256",
name: "tokenFee",
type: "uint256"
},
{
internalType: "uint256",
name: "nativeFee",
type: "uint256"
}
],
internalType: "struct XSwapFee",
name: "xSwapFee",
type: "tuple"
}
],
internalType: "struct MessageFees",
name: "fees",
type: "tuple"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "getRouter",
outputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_ccipRouter",
type: "address"
},
{
internalType: "address",
name: "_feeOracle",
type: "address"
},
{
internalType: "address",
name: "_feeCollector",
type: "address"
},
{
internalType: "address",
name: "_xSwapExecutor",
type: "address"
},
{
internalType: "address",
name: "_owner",
type: "address"
}
],
name: "initialize",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
components: [
{
internalType: "bytes32",
name: "messageId",
type: "bytes32"
},
{
internalType: "uint64",
name: "sourceChainSelector",
type: "uint64"
},
{
internalType: "bytes",
name: "sender",
type: "bytes"
},
{
internalType: "bytes",
name: "data",
type: "bytes"
},
{
components: [
{
internalType: "address",
name: "token",
type: "address"
},
{
internalType: "uint256",
name: "amount",
type: "uint256"
}
],
internalType: "struct Client.EVMTokenAmount[]",
name: "destTokenAmounts",
type: "tuple[]"
}
],
internalType: "struct Client.Any2EVMMessage",
name: "_any2EvmMessage",
type: "tuple"
}
],
name: "instantCcipReceive",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32"
}
],
name: "messageExecutionHashToExecutorMap",
outputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "owner",
outputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "proxiableUUID",
outputs: [
{
internalType: "bytes32",
name: "",
type: "bytes32"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "renounceOwnership",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_feeCollectorAddress",
type: "address"
}
],
name: "setFeeCollectorAddress",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_feeOracleAddress",
type: "address"
}
],
name: "setFeeOracleAddress",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_router",
type: "address"
}
],
name: "setRouter",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_xSwapExecutor",
type: "address"
}
],
name: "setXSwapExecutor",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "bytes4",
name: "interfaceId",
type: "bytes4"
}
],
name: "supportsInterface",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "pure",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_paymentToken",
type: "address"
},
{
internalType: "uint64",
name: "_destinationChainSelector",
type: "uint64"
},
{
components: [
{
internalType: "address",
name: "receiver",
type: "address"
},
{
internalType: "address",
name: "tokenOut",
type: "address"
},
{
internalType: "uint256",
name: "estimatedAmountOut",
type: "uint256"
},
{
components: [
{
internalType: "enum CallType",
name: "callType",
type: "uint8"
},
{
internalType: "address",
name: "target",
type: "address"
},
{
internalType: "uint256",
name: "value",
type: "uint256"
},
{
internalType: "bytes",
name: "callData",
type: "bytes"
},
{
internalType: "bytes",
name: "payload",
type: "bytes"
}
],
internalType: "struct Call[]",
name: "calls",
type: "tuple[]"
}
],
internalType: "struct SwapDataDestination",
name: "_swapDestinationData",
type: "tuple"
},
{
components: [
{
internalType: "address",
name: "tokenIn",
type: "address"
},
{
internalType: "uint256",
name: "amountIn",
type: "uint256"
},
{
internalType: "address",
name: "tokenOut",
type: "address"
},
{
internalType: "uint256",
name: "estimatedAmountOut",
type: "uint256"
},
{
internalType: "uint256",
name: "valueForDestinationGas",
type: "uint256"
},
{
internalType: "uint256",
name: "valueForInstantCcipRecieve",
type: "uint256"
},
{
components: [
{
internalType: "enum CallType",
name: "callType",
type: "uint8"
},
{
internalType: "address",
name: "target",
type: "address"
},
{
internalType: "uint256",
name: "value",
type: "uint256"
},
{
internalType: "bytes",
name: "callData",
type: "bytes"
},
{
internalType: "bytes",
name: "payload",
type: "bytes"
}
],
internalType: "struct Call[]",
name: "calls",
type: "tuple[]"
}
],
internalType: "struct SwapDataOrigin",
name: "_swapOriginData",
type: "tuple"
},
{
internalType: "uint256",
name: "_gasLimit",
type: "uint256"
}
],
name: "swapAndSendMessage",
outputs: [
{
internalType: "bytes32",
name: "messageId",
type: "bytes32"
}
],
stateMutability: "payable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "newOwner",
type: "address"
}
],
name: "transferOwnership",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "uint64",
name: "_chainSelector",
type: "uint64"
},
{
internalType: "address",
name: "_xSwapRouter",
type: "address"
}
],
name: "updateChainSelectorToXSwapRouterMap",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "uint64[]",
name: "_chainSelectors",
type: "uint64[]"
},
{
internalType: "address[]",
name: "_xSwapRouters",
type: "address[]"
}
],
name: "updateChainSelectorToXSwapRouterMapMany",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "uint64",
name: "_sourceChainSelector",
type: "uint64"
},
{
internalType: "address",
name: "_sender",
type: "address"
},
{
internalType: "bool",
name: "_isWhitelisted",
type: "bool"
}
],
name: "updateWhitelistSender",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "uint64[]",
name: "_sourceChainSelectors",
type: "uint64[]"
},
{
internalType: "address[]",
name: "_senders",
type: "address[]"
},
{
internalType: "bool[]",
name: "_areWhitelisted",
type: "bool[]"
}
],
name: "updateWhitelistSenderMany",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "_token",
type: "address"
},
{
internalType: "bool",
name: "_isWhitelisted",
type: "bool"
}
],
name: "updateWhitelistToken",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "newImplementation",
type: "address"
}
],
name: "upgradeTo",
outputs: [],
stateMutability: "nonpayable",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "newImplementation",
type: "address"
},
{
internalType: "bytes",
name: "data",
type: "bytes"
}
],
name: "upgradeToAndCall",
outputs: [],
stateMutability: "payable",
type: "function"
},
{
inputs: [
{
internalType: "uint64",
name: "",
type: "uint64"
},
{
internalType: "address",
name: "",
type: "address"
}
],
name: "whitelistedSenders",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
name: "whitelistedTokens",
outputs: [
{
internalType: "bool",
name: "",
type: "bool"
}
],
stateMutability: "view",
type: "function"
},
{
inputs: [],
name: "xSwapExecutor",
outputs: [
{
internalType: "address",
name: "",
type: "address"
}
],
stateMutability: "view",
type: "function"
},
{
stateMutability: "payable",
type: "receive"
}
];
// src/contracts/abi/index.ts
var XSwapRouterAbi = XSwapRouter_default;
// src/utils/bigNumbers.ts
var import_bignumber = require("bignumber.js");
var import_ethers = require("ethers");
var safeBigNumberFrom = (value) => {
import_bignumber.BigNumber.config({ DECIMAL_PLACES: 0 });
return import_ethers.BigNumber.from(new import_bignumber.BigNumber(value).div(1).toFixed());
};
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
DEFAULT_API_URL,
DEFAULT_DB_ERROR,
DEFAULT_ECOSYSTEM,
DEFAULT_NATIVE_FEE_MULTIPLIER_PERCENTAGE,
Ecosystem,
Environment,
Web3Environment,
XSwapCallType,
XSwapRouterAbi,
safeBigNumberFrom
});