@funkit/core 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +110 -0
- package/dist/fetch-polyfill.d.ts +1 -0
- package/dist/fetch-polyfill.js +35 -0
- package/dist/fetch-polyfill.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/src/abis/ApproveAndExec.json +1 -0
- package/dist/src/abis/ApproveAndSwap.json +1 -0
- package/dist/src/abis/ERC20.json +1 -0
- package/dist/src/abis/ERC721.json +1 -0
- package/dist/src/abis/EntryPoint.json +1 -0
- package/dist/src/abis/EstimationPaymaster.json +1 -0
- package/dist/src/abis/FeePercentOracle.json +1 -0
- package/dist/src/abis/FunWallet.json +1 -0
- package/dist/src/abis/FunWalletFactory.json +1 -0
- package/dist/src/abis/GaslessPaymaster.json +1 -0
- package/dist/src/abis/LidoWithdrawQueue.json +1 -0
- package/dist/src/abis/RoleBasedAccessControl.json +1 -0
- package/dist/src/abis/TestNFT.json +1 -0
- package/dist/src/abis/TokenPaymaster.json +1 -0
- package/dist/src/abis/TokenPriceOracle.json +1 -0
- package/dist/src/abis/UniswapV2Factory.json +1 -0
- package/dist/src/abis/UniswapV2Router02.json +1 -0
- package/dist/src/abis/UniswapV3LimitOrder.json +1 -0
- package/dist/src/abis/UserAuthentication.json +1 -0
- package/dist/src/abis/univ3factory.json +1 -0
- package/dist/src/abis/univ3quoter.json +1 -0
- package/dist/src/abis/univ3router.json +1 -0
- package/dist/src/actions/AccessControl.d.ts +9 -0
- package/dist/src/actions/AccessControl.js +88 -0
- package/dist/src/actions/AccessControl.js.map +1 -0
- package/dist/src/actions/BatchActions.d.ts +3 -0
- package/dist/src/actions/BatchActions.js +12 -0
- package/dist/src/actions/BatchActions.js.map +1 -0
- package/dist/src/actions/FirstClassActions.d.ts +161 -0
- package/dist/src/actions/FirstClassActions.js +347 -0
- package/dist/src/actions/FirstClassActions.js.map +1 -0
- package/dist/src/actions/Group.d.ts +6 -0
- package/dist/src/actions/Group.js +44 -0
- package/dist/src/actions/Group.js.map +1 -0
- package/dist/src/actions/LimitOrder.d.ts +4 -0
- package/dist/src/actions/LimitOrder.js +45 -0
- package/dist/src/actions/LimitOrder.js.map +1 -0
- package/dist/src/actions/Stake.d.ts +8 -0
- package/dist/src/actions/Stake.js +124 -0
- package/dist/src/actions/Stake.js.map +1 -0
- package/dist/src/actions/Swap.d.ts +9 -0
- package/dist/src/actions/Swap.js +169 -0
- package/dist/src/actions/Swap.js.map +1 -0
- package/dist/src/actions/Token.d.ts +12 -0
- package/dist/src/actions/Token.js +102 -0
- package/dist/src/actions/Token.js.map +1 -0
- package/dist/src/actions/index.d.ts +7 -0
- package/dist/src/actions/index.js +24 -0
- package/dist/src/actions/index.js.map +1 -0
- package/dist/src/actions/types.d.ts +117 -0
- package/dist/src/actions/types.js +11 -0
- package/dist/src/actions/types.js.map +1 -0
- package/dist/src/apis/AccessControlApis.d.ts +5 -0
- package/dist/src/apis/AccessControlApis.js +22 -0
- package/dist/src/apis/AccessControlApis.js.map +1 -0
- package/dist/src/apis/AssetApis.d.ts +79 -0
- package/dist/src/apis/AssetApis.js +100 -0
- package/dist/src/apis/AssetApis.js.map +1 -0
- package/dist/src/apis/ContractApis.d.ts +1 -0
- package/dist/src/apis/ContractApis.js +11 -0
- package/dist/src/apis/ContractApis.js.map +1 -0
- package/dist/src/apis/GroupApis.d.ts +8 -0
- package/dist/src/apis/GroupApis.js +45 -0
- package/dist/src/apis/GroupApis.js.map +1 -0
- package/dist/src/apis/InfoApis.d.ts +6 -0
- package/dist/src/apis/InfoApis.js +59 -0
- package/dist/src/apis/InfoApis.js.map +1 -0
- package/dist/src/apis/ListenerApis.d.ts +3 -0
- package/dist/src/apis/ListenerApis.js +36 -0
- package/dist/src/apis/ListenerApis.js.map +1 -0
- package/dist/src/apis/NFTApis.d.ts +22 -0
- package/dist/src/apis/NFTApis.js +34 -0
- package/dist/src/apis/NFTApis.js.map +1 -0
- package/dist/src/apis/OnOffRampApis.d.ts +2 -0
- package/dist/src/apis/OnOffRampApis.js +23 -0
- package/dist/src/apis/OnOffRampApis.js.map +1 -0
- package/dist/src/apis/OnOffRampUtils.d.ts +2 -0
- package/dist/src/apis/OnOffRampUtils.js +23 -0
- package/dist/src/apis/OnOffRampUtils.js.map +1 -0
- package/dist/src/apis/OperationApis.d.ts +14 -0
- package/dist/src/apis/OperationApis.js +77 -0
- package/dist/src/apis/OperationApis.js.map +1 -0
- package/dist/src/apis/PaymasterApis.d.ts +15 -0
- package/dist/src/apis/PaymasterApis.js +89 -0
- package/dist/src/apis/PaymasterApis.js.map +1 -0
- package/dist/src/apis/UserApis.d.ts +12 -0
- package/dist/src/apis/UserApis.js +77 -0
- package/dist/src/apis/UserApis.js.map +1 -0
- package/dist/src/apis/index.d.ts +10 -0
- package/dist/src/apis/index.js +27 -0
- package/dist/src/apis/index.js.map +1 -0
- package/dist/src/apis/types.d.ts +49 -0
- package/dist/src/apis/types.js +3 -0
- package/dist/src/apis/types.js.map +1 -0
- package/dist/src/auth/Auth.d.ts +81 -0
- package/dist/src/auth/Auth.js +317 -0
- package/dist/src/auth/Auth.js.map +1 -0
- package/dist/src/auth/SessionKeyAuth.d.ts +19 -0
- package/dist/src/auth/SessionKeyAuth.js +118 -0
- package/dist/src/auth/SessionKeyAuth.js.map +1 -0
- package/dist/src/auth/index.d.ts +2 -0
- package/dist/src/auth/index.js +19 -0
- package/dist/src/auth/index.js.map +1 -0
- package/dist/src/auth/types.d.ts +20 -0
- package/dist/src/auth/types.js +3 -0
- package/dist/src/auth/types.js.map +1 -0
- package/dist/src/common/constants.d.ts +1072 -0
- package/dist/src/common/constants.js +153 -0
- package/dist/src/common/constants.js.map +1 -0
- package/dist/src/common/index.d.ts +2 -0
- package/dist/src/common/index.js +19 -0
- package/dist/src/common/index.js.map +1 -0
- package/dist/src/common/types.d.ts +32 -0
- package/dist/src/common/types.js +3 -0
- package/dist/src/common/types.js.map +1 -0
- package/dist/src/config/Config.d.ts +3 -0
- package/dist/src/config/Config.js +46 -0
- package/dist/src/config/Config.js.map +1 -0
- package/dist/src/config/index.d.ts +2 -0
- package/dist/src/config/index.js +19 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/config/types.d.ts +21 -0
- package/dist/src/config/types.js +3 -0
- package/dist/src/config/types.js.map +1 -0
- package/dist/src/data/Chain.d.ts +29 -0
- package/dist/src/data/Chain.js +174 -0
- package/dist/src/data/Chain.js.map +1 -0
- package/dist/src/data/NFT.d.ts +24 -0
- package/dist/src/data/NFT.js +104 -0
- package/dist/src/data/NFT.js.map +1 -0
- package/dist/src/data/Operation.d.ts +33 -0
- package/dist/src/data/Operation.js +68 -0
- package/dist/src/data/Operation.js.map +1 -0
- package/dist/src/data/SolidityData.d.ts +8 -0
- package/dist/src/data/SolidityData.js +72 -0
- package/dist/src/data/SolidityData.js.map +1 -0
- package/dist/src/data/Token.d.ts +26 -0
- package/dist/src/data/Token.js +122 -0
- package/dist/src/data/Token.js.map +1 -0
- package/dist/src/data/index.d.ts +6 -0
- package/dist/src/data/index.js +23 -0
- package/dist/src/data/index.js.map +1 -0
- package/dist/src/data/types.d.ts +112 -0
- package/dist/src/data/types.js +25 -0
- package/dist/src/data/types.js.map +1 -0
- package/dist/src/errors/BaseError.d.ts +9 -0
- package/dist/src/errors/BaseError.js +23 -0
- package/dist/src/errors/BaseError.js.map +1 -0
- package/dist/src/errors/ClientError.d.ts +22 -0
- package/dist/src/errors/ClientError.js +75 -0
- package/dist/src/errors/ClientError.js.map +1 -0
- package/dist/src/errors/ServerError.d.ts +7 -0
- package/dist/src/errors/ServerError.js +18 -0
- package/dist/src/errors/ServerError.js.map +1 -0
- package/dist/src/errors/index.d.ts +4 -0
- package/dist/src/errors/index.js +21 -0
- package/dist/src/errors/index.js.map +1 -0
- package/dist/src/errors/types.d.ts +54 -0
- package/dist/src/errors/types.js +45 -0
- package/dist/src/errors/types.js.map +1 -0
- package/dist/src/sponsors/GaslessSponsor.d.ts +19 -0
- package/dist/src/sponsors/GaslessSponsor.js +91 -0
- package/dist/src/sponsors/GaslessSponsor.js.map +1 -0
- package/dist/src/sponsors/Sponsor.d.ts +31 -0
- package/dist/src/sponsors/Sponsor.js +94 -0
- package/dist/src/sponsors/Sponsor.js.map +1 -0
- package/dist/src/sponsors/TokenSponsor.d.ts +40 -0
- package/dist/src/sponsors/TokenSponsor.js +271 -0
- package/dist/src/sponsors/TokenSponsor.js.map +1 -0
- package/dist/src/sponsors/index.d.ts +3 -0
- package/dist/src/sponsors/index.js +20 -0
- package/dist/src/sponsors/index.js.map +1 -0
- package/dist/src/sponsors/types.d.ts +9 -0
- package/dist/src/sponsors/types.js +10 -0
- package/dist/src/sponsors/types.js.map +1 -0
- package/dist/src/utils/ApiUtils.d.ts +19 -0
- package/dist/src/utils/ApiUtils.js +97 -0
- package/dist/src/utils/ApiUtils.js.map +1 -0
- package/dist/src/utils/AuthUtils.d.ts +4 -0
- package/dist/src/utils/AuthUtils.js +54 -0
- package/dist/src/utils/AuthUtils.js.map +1 -0
- package/dist/src/utils/ChainUtils.d.ts +12 -0
- package/dist/src/utils/ChainUtils.js +89 -0
- package/dist/src/utils/ChainUtils.js.map +1 -0
- package/dist/src/utils/MerkleUtils.d.ts +18 -0
- package/dist/src/utils/MerkleUtils.js +96 -0
- package/dist/src/utils/MerkleUtils.js.map +1 -0
- package/dist/src/utils/PaymasterUtils.d.ts +3 -0
- package/dist/src/utils/PaymasterUtils.js +17 -0
- package/dist/src/utils/PaymasterUtils.js.map +1 -0
- package/dist/src/utils/SwapUtils.d.ts +35 -0
- package/dist/src/utils/SwapUtils.js +193 -0
- package/dist/src/utils/SwapUtils.js.map +1 -0
- package/dist/src/utils/TypeUtils.d.ts +1 -0
- package/dist/src/utils/TypeUtils.js +13 -0
- package/dist/src/utils/TypeUtils.js.map +1 -0
- package/dist/src/utils/UserOpUtils.d.ts +12 -0
- package/dist/src/utils/UserOpUtils.js +166 -0
- package/dist/src/utils/UserOpUtils.js.map +1 -0
- package/dist/src/utils/ViemUtils.d.ts +9 -0
- package/dist/src/utils/ViemUtils.js +30 -0
- package/dist/src/utils/ViemUtils.js.map +1 -0
- package/dist/src/utils/WalletUtils.d.ts +11 -0
- package/dist/src/utils/WalletUtils.js +61 -0
- package/dist/src/utils/WalletUtils.js.map +1 -0
- package/dist/src/utils/index.d.ts +7 -0
- package/dist/src/utils/index.js +24 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/viem/ContractInterface.d.ts +19 -0
- package/dist/src/viem/ContractInterface.js +88 -0
- package/dist/src/viem/ContractInterface.js.map +1 -0
- package/dist/src/viem/Converter.d.ts +1770 -0
- package/dist/src/viem/Converter.js +50 -0
- package/dist/src/viem/Converter.js.map +1 -0
- package/dist/src/viem/index.d.ts +2 -0
- package/dist/src/viem/index.js +19 -0
- package/dist/src/viem/index.js.map +1 -0
- package/dist/src/wallet/FunWallet.d.ts +185 -0
- package/dist/src/wallet/FunWallet.js +720 -0
- package/dist/src/wallet/FunWallet.js.map +1 -0
- package/dist/src/wallet/index.d.ts +2 -0
- package/dist/src/wallet/index.js +19 -0
- package/dist/src/wallet/index.js.map +1 -0
- package/dist/src/wallet/types.d.ts +13 -0
- package/dist/src/wallet/types.js +3 -0
- package/dist/src/wallet/types.js.map +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getGasStation = exports.getPermitHash = exports.getWalletPermitNonce = exports.randomBytes = exports.isContract = exports.fundWallet = exports.isAddress = void 0;
|
|
4
|
+
const viem_1 = require("viem");
|
|
5
|
+
const ApiUtils_1 = require("./ApiUtils");
|
|
6
|
+
const common_1 = require("../common");
|
|
7
|
+
const data_1 = require("../data");
|
|
8
|
+
const isAddress = (address) => {
|
|
9
|
+
try {
|
|
10
|
+
const [decodedAddr] = (0, viem_1.decodeAbiParameters)([{ type: "address" }], (0, viem_1.pad)(address, { size: 32 }));
|
|
11
|
+
return (0, viem_1.isAddress)(decodedAddr);
|
|
12
|
+
}
|
|
13
|
+
catch (err) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
exports.isAddress = isAddress;
|
|
18
|
+
const fundWallet = async (auth, wallet, value, txOptions = globalThis.globalEnvOption) => {
|
|
19
|
+
const chain = await data_1.Chain.getChain({ chainIdentifier: txOptions.chain });
|
|
20
|
+
const chainId = await chain.getChainId();
|
|
21
|
+
const to = await wallet.getAddress();
|
|
22
|
+
let txData;
|
|
23
|
+
if (common_1.gasSpecificChain[chainId]) {
|
|
24
|
+
let maxPriorityFee, maxFee;
|
|
25
|
+
try {
|
|
26
|
+
const { standard: { maxPriorityFee: maxPriorityFee1, maxFee: maxFee1 } } = await (0, exports.getGasStation)(common_1.gasSpecificChain[chainId].gasStationUrl);
|
|
27
|
+
maxPriorityFee = maxPriorityFee1;
|
|
28
|
+
maxFee = maxFee1;
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
maxPriorityFee = BigInt(common_1.gasSpecificChain[chainId].backupPriorityFee);
|
|
32
|
+
maxFee = BigInt(common_1.gasSpecificChain[chainId].backupFee);
|
|
33
|
+
}
|
|
34
|
+
txData = {
|
|
35
|
+
to,
|
|
36
|
+
data: "0x",
|
|
37
|
+
value: (0, viem_1.parseEther)(`${value}`),
|
|
38
|
+
maxFeePerGas: BigInt(Math.floor(maxPriorityFee * 1e9)),
|
|
39
|
+
maxPriorityFeePerGas: BigInt(Math.floor(maxFee * 1e9))
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
txData = { to, data: "0x", value: (0, viem_1.parseEther)(`${value}`) };
|
|
44
|
+
}
|
|
45
|
+
const receipt = await auth.sendTx({ ...txData });
|
|
46
|
+
return await receipt;
|
|
47
|
+
};
|
|
48
|
+
exports.fundWallet = fundWallet;
|
|
49
|
+
const isContract = async (address, client) => {
|
|
50
|
+
try {
|
|
51
|
+
const code = await client.getBytecode({ address });
|
|
52
|
+
return !!code;
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
exports.isContract = isContract;
|
|
59
|
+
const randomBytes = (length) => {
|
|
60
|
+
const bytes = new Uint8Array(length);
|
|
61
|
+
for (let i = 0; i < length; i++) {
|
|
62
|
+
bytes[i] = Math.floor(Math.random() * 256);
|
|
63
|
+
}
|
|
64
|
+
return (0, viem_1.toHex)(bytes);
|
|
65
|
+
};
|
|
66
|
+
exports.randomBytes = randomBytes;
|
|
67
|
+
const getWalletPermitNonce = async (walletAddr, chain, nonceKey = 0) => {
|
|
68
|
+
try {
|
|
69
|
+
return await common_1.WALLET_CONTRACT_INTERFACE.readFromChain(walletAddr, "getNonce", [nonceKey], chain);
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
exports.getWalletPermitNonce = getWalletPermitNonce;
|
|
76
|
+
const getPermitHash = (token, to, amount, nonce, walletAddr, chainId) => {
|
|
77
|
+
const salt = (0, viem_1.keccak256)((0, viem_1.toBytes)("Create3Deployer.deployers()"));
|
|
78
|
+
const EIP712_DOMAIN = (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([{ type: "string" }], ["EIP712Domain(string name,string version,uint256 chainId,address verifyingContract,bytes32 salt)"]));
|
|
79
|
+
const PERMIT_TYPEHASH = "PermitTransferStruct(address token, address to, uint256 amount, uint256 nonce)";
|
|
80
|
+
const DOMAIN_SEPARATOR = (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([{ type: "bytes32" }, { type: "bytes32" }, { type: "bytes32" }, { type: "uint256" }, { type: "address" }, { type: "bytes32" }], [EIP712_DOMAIN, salt, (0, viem_1.keccak256)((0, viem_1.toBytes)("1")), chainId, walletAddr, salt]));
|
|
81
|
+
const PERMIT_HASH = (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([{ type: "string" }, { type: "address" }, { type: "address" }, { type: "uint256" }, { type: "uint256" }], [PERMIT_TYPEHASH, token, to, amount, nonce]));
|
|
82
|
+
return (0, viem_1.keccak256)((0, viem_1.concat)([DOMAIN_SEPARATOR, PERMIT_HASH]));
|
|
83
|
+
};
|
|
84
|
+
exports.getPermitHash = getPermitHash;
|
|
85
|
+
const getGasStation = async (gasStationUrl) => {
|
|
86
|
+
return await (0, ApiUtils_1.sendRequest)(gasStationUrl, "GET", "");
|
|
87
|
+
};
|
|
88
|
+
exports.getGasStation = getGasStation;
|
|
89
|
+
//# sourceMappingURL=ChainUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChainUtils.js","sourceRoot":"","sources":["../../../src/utils/ChainUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Hex } from "viem";
|
|
2
|
+
export declare const createMerkleHashes: (list: Hex[]) => any[];
|
|
3
|
+
export declare const getLeft: (i: number) => number;
|
|
4
|
+
export declare const getRight: (i: number) => number;
|
|
5
|
+
export declare const getParent: (index: number) => number;
|
|
6
|
+
export declare const getSibling: (index: number) => number;
|
|
7
|
+
export declare const getHash: (list: Hex[], i: number) => Hex;
|
|
8
|
+
export declare const getHashPair: (left: Hex, right: Hex) => `0x${string}`;
|
|
9
|
+
export declare const arrayCopy: (arr: any[], copy: any[], start: number) => void;
|
|
10
|
+
export declare const getPathForItem: (list: Hex[], item: Hex) => `0x${string}`[];
|
|
11
|
+
export declare const verifyPath: (root: Hex, item: Hex, path: Hex[]) => boolean;
|
|
12
|
+
export declare class MerkleTree {
|
|
13
|
+
tree: Hex[];
|
|
14
|
+
constructor(list: Hex[]);
|
|
15
|
+
getPathForItem(item: Hex): `0x${string}`[];
|
|
16
|
+
verifyPath(item: Hex, path: Hex[]): boolean;
|
|
17
|
+
getRoot(): `0x${string}`;
|
|
18
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MerkleTree = exports.verifyPath = exports.getPathForItem = exports.arrayCopy = exports.getHashPair = exports.getHash = exports.getSibling = exports.getParent = exports.getRight = exports.getLeft = exports.createMerkleHashes = void 0;
|
|
4
|
+
const viem_1 = require("viem");
|
|
5
|
+
// Copied from contracts repo
|
|
6
|
+
const createMerkleHashes = (list) => {
|
|
7
|
+
list = list.map((data) => (0, viem_1.keccak256)(data));
|
|
8
|
+
const treeSize = 2 ** Math.ceil(Math.log2(list.length)) * 2;
|
|
9
|
+
const buffer = new Array(treeSize).fill("0x");
|
|
10
|
+
(0, exports.arrayCopy)(buffer, list, treeSize / 2);
|
|
11
|
+
for (let i = treeSize / 2 - list.length; i > 0; i--) {
|
|
12
|
+
buffer[buffer.length - i] = list[list.length - 1];
|
|
13
|
+
}
|
|
14
|
+
for (let i = 1; i < buffer.length; i++) {
|
|
15
|
+
buffer[i] = (0, exports.getHash)(buffer, i);
|
|
16
|
+
}
|
|
17
|
+
return buffer;
|
|
18
|
+
};
|
|
19
|
+
exports.createMerkleHashes = createMerkleHashes;
|
|
20
|
+
const getLeft = (i) => i * 2;
|
|
21
|
+
exports.getLeft = getLeft;
|
|
22
|
+
const getRight = (i) => i * 2 + 1;
|
|
23
|
+
exports.getRight = getRight;
|
|
24
|
+
const getParent = (index) => Math.floor(index / 2);
|
|
25
|
+
exports.getParent = getParent;
|
|
26
|
+
const getSibling = (index) => {
|
|
27
|
+
const parent = (0, exports.getParent)(index);
|
|
28
|
+
if (index % 2 === 0) {
|
|
29
|
+
return (0, exports.getRight)(parent);
|
|
30
|
+
}
|
|
31
|
+
return (0, exports.getLeft)(parent);
|
|
32
|
+
};
|
|
33
|
+
exports.getSibling = getSibling;
|
|
34
|
+
const getHash = (list, i) => {
|
|
35
|
+
if (list[i] === "0x") {
|
|
36
|
+
if ((0, exports.getRight)(i) < list.length) {
|
|
37
|
+
const left = (0, exports.getHash)(list, (0, exports.getLeft)(i));
|
|
38
|
+
const right = (0, exports.getHash)(list, (0, exports.getRight)(i));
|
|
39
|
+
return (0, exports.getHashPair)(left, right);
|
|
40
|
+
}
|
|
41
|
+
throw new Error("Invalid tree");
|
|
42
|
+
}
|
|
43
|
+
return list[i];
|
|
44
|
+
};
|
|
45
|
+
exports.getHash = getHash;
|
|
46
|
+
const getHashPair = (left, right) => {
|
|
47
|
+
if (BigInt(left) < BigInt(right)) {
|
|
48
|
+
return (0, viem_1.keccak256)((0, viem_1.concat)([left, right]));
|
|
49
|
+
}
|
|
50
|
+
return (0, viem_1.keccak256)((0, viem_1.concat)([right, left]));
|
|
51
|
+
};
|
|
52
|
+
exports.getHashPair = getHashPair;
|
|
53
|
+
const arrayCopy = (arr, copy, start) => {
|
|
54
|
+
for (let i = 0; i < copy.length; i++) {
|
|
55
|
+
arr[i + start] = copy[i];
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
exports.arrayCopy = arrayCopy;
|
|
59
|
+
const getPathForItem = (list, item) => {
|
|
60
|
+
let index = list.indexOf((0, viem_1.keccak256)(item));
|
|
61
|
+
if (index === -1) {
|
|
62
|
+
throw new Error("Item not found");
|
|
63
|
+
}
|
|
64
|
+
const path = [];
|
|
65
|
+
while (index > 1) {
|
|
66
|
+
const sibling = (0, exports.getSibling)(index);
|
|
67
|
+
path.push(list[sibling]);
|
|
68
|
+
index = (0, exports.getParent)(index);
|
|
69
|
+
}
|
|
70
|
+
return path;
|
|
71
|
+
};
|
|
72
|
+
exports.getPathForItem = getPathForItem;
|
|
73
|
+
const verifyPath = (root, item, path) => {
|
|
74
|
+
let hash = (0, viem_1.keccak256)(item);
|
|
75
|
+
for (let i = 0; i < path.length; i++) {
|
|
76
|
+
hash = (0, exports.getHashPair)(hash, path[i]);
|
|
77
|
+
}
|
|
78
|
+
return hash === root;
|
|
79
|
+
};
|
|
80
|
+
exports.verifyPath = verifyPath;
|
|
81
|
+
class MerkleTree {
|
|
82
|
+
constructor(list) {
|
|
83
|
+
this.tree = (0, exports.createMerkleHashes)(list);
|
|
84
|
+
}
|
|
85
|
+
getPathForItem(item) {
|
|
86
|
+
return (0, exports.getPathForItem)(this.tree, item);
|
|
87
|
+
}
|
|
88
|
+
verifyPath(item, path) {
|
|
89
|
+
return (0, exports.verifyPath)(this.getRoot(), item, path);
|
|
90
|
+
}
|
|
91
|
+
getRoot() {
|
|
92
|
+
return this.tree[1];
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.MerkleTree = MerkleTree;
|
|
96
|
+
//# sourceMappingURL=MerkleUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MerkleUtils.js","sourceRoot":"","sources":["../../../src/utils/MerkleUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPaymasterType = void 0;
|
|
4
|
+
const types_1 = require("../sponsors/types");
|
|
5
|
+
const getPaymasterType = (txOptions) => {
|
|
6
|
+
if (txOptions.gasSponsor?.sponsorAddress && txOptions.gasSponsor?.token) {
|
|
7
|
+
return types_1.PaymasterType.TokenSponsor;
|
|
8
|
+
}
|
|
9
|
+
else if (txOptions.gasSponsor?.sponsorAddress) {
|
|
10
|
+
return types_1.PaymasterType.GaslessSponsor;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
throw Error("Invalid paymaster type");
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
exports.getPaymasterType = getPaymasterType;
|
|
17
|
+
//# sourceMappingURL=PaymasterUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaymasterUtils.js","sourceRoot":"","sources":["../../../src/utils/PaymasterUtils.ts"],"names":[],"mappings":";;;AACA,6CAAiD;AAE1C,MAAM,gBAAgB,GAAG,CAAC,SAAoB,EAAE,EAAE;IACrD,IAAI,SAAS,CAAC,UAAU,EAAE,cAAc,IAAI,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE;QACrE,OAAO,qBAAa,CAAC,YAAY,CAAA;KACpC;SAAM,IAAI,SAAS,CAAC,UAAU,EAAE,cAAc,EAAE;QAC7C,OAAO,qBAAa,CAAC,cAAc,CAAA;KACtC;SAAM;QACH,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAA;KACxC;AACL,CAAC,CAAA;AARY,QAAA,gBAAgB,oBAQ5B"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Address, PublicClient } from "viem";
|
|
2
|
+
import { UniSwapPoolFeeOptions } from "../actions";
|
|
3
|
+
import { EnvOption } from "../config";
|
|
4
|
+
export declare function fromReadableAmount(amount: number, decimals: number): bigint;
|
|
5
|
+
type SwapParamsUtils = {
|
|
6
|
+
tokenInAddress: Address;
|
|
7
|
+
tokenOutAddress: Address;
|
|
8
|
+
amountIn: number;
|
|
9
|
+
recipient: Address;
|
|
10
|
+
percentDecimal: number;
|
|
11
|
+
slippage: number;
|
|
12
|
+
poolFee: UniSwapPoolFeeOptions;
|
|
13
|
+
};
|
|
14
|
+
export type UniswapV3Addrs = {
|
|
15
|
+
univ3quoter: Address;
|
|
16
|
+
univ3factory: Address;
|
|
17
|
+
univ3router: Address;
|
|
18
|
+
};
|
|
19
|
+
export type UniswapV2Addrs = {
|
|
20
|
+
factory: Address;
|
|
21
|
+
router: Address;
|
|
22
|
+
};
|
|
23
|
+
export declare function swapExec(client: PublicClient, uniswapAddrs: UniswapV3Addrs, swapParams: SwapParamsUtils, chainId: number): Promise<{
|
|
24
|
+
amount: string;
|
|
25
|
+
data: string;
|
|
26
|
+
to: string;
|
|
27
|
+
value: string;
|
|
28
|
+
}>;
|
|
29
|
+
export declare function swapExecV2(client: PublicClient, uniswapAddrs: UniswapV2Addrs, swapParams: SwapParamsUtils, chainId: number): Promise<{
|
|
30
|
+
data: any;
|
|
31
|
+
to: any;
|
|
32
|
+
amount: string;
|
|
33
|
+
}>;
|
|
34
|
+
export declare function oneInchAPIRequest(methodName: string, queryParams: any, options?: EnvOption): Promise<string>;
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.oneInchAPIRequest = exports.swapExecV2 = exports.swapExec = exports.fromReadableAmount = void 0;
|
|
4
|
+
const sdk_1 = require("@uniswap/sdk");
|
|
5
|
+
const sdk_core_1 = require("@uniswap/sdk-core");
|
|
6
|
+
const v3_sdk_1 = require("@uniswap/v3-sdk");
|
|
7
|
+
const viem_1 = require("viem");
|
|
8
|
+
const apis_1 = require("../apis");
|
|
9
|
+
const common_1 = require("../common");
|
|
10
|
+
const data_1 = require("../data");
|
|
11
|
+
const apiBaseUrl = "https://api.1inch.io/v5.0/";
|
|
12
|
+
function fromReadableAmount(amount, decimals) {
|
|
13
|
+
return (0, viem_1.parseUnits)(`${amount}`, decimals);
|
|
14
|
+
}
|
|
15
|
+
exports.fromReadableAmount = fromReadableAmount;
|
|
16
|
+
class SwapToken {
|
|
17
|
+
constructor(client, version, quoterContractAddr, poolFactoryContractAddr, v2router, v2Factory) {
|
|
18
|
+
this.client = client;
|
|
19
|
+
this.version = version;
|
|
20
|
+
if (version === 3) {
|
|
21
|
+
if (quoterContractAddr !== undefined && poolFactoryContractAddr !== undefined) {
|
|
22
|
+
this.quoterContractAddr = quoterContractAddr;
|
|
23
|
+
this.poolFactoryContractAddr = poolFactoryContractAddr;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
throw new Error("quoterContractAddr and poolFactoryContractAddr must be provided");
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
else if (version === 2) {
|
|
30
|
+
if (v2router !== undefined && v2Factory !== undefined) {
|
|
31
|
+
this.v2Factory = v2Factory;
|
|
32
|
+
this.v2router = v2router;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
throw new Error("v2quoter and v2Factory must be provided");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
throw new Error("Invalid version");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async getOutputQuote(route, token0, amountIn) {
|
|
43
|
+
const { calldata } = await v3_sdk_1.SwapQuoter.quoteCallParameters(route, sdk_core_1.CurrencyAmount.fromRawAmount(token0, fromReadableAmount(amountIn, token0.decimals).toString()), sdk_core_1.TradeType.EXACT_INPUT, {
|
|
44
|
+
useQuoterV2: true
|
|
45
|
+
});
|
|
46
|
+
const quoteCallReturnData = await this.client.call({
|
|
47
|
+
to: this.quoterContractAddr,
|
|
48
|
+
data: calldata
|
|
49
|
+
});
|
|
50
|
+
if (!quoteCallReturnData.data) {
|
|
51
|
+
throw new Error("No data returned from quote call");
|
|
52
|
+
}
|
|
53
|
+
return (0, viem_1.decodeAbiParameters)([{ name: "return", type: "uint256" }], quoteCallReturnData.data)[0];
|
|
54
|
+
}
|
|
55
|
+
async getPoolInfo(tokenIn, tokenOut, poolFee) {
|
|
56
|
+
const currentPoolAddress = (0, v3_sdk_1.computePoolAddress)({
|
|
57
|
+
factoryAddress: this.poolFactoryContractAddr,
|
|
58
|
+
tokenA: tokenIn,
|
|
59
|
+
tokenB: tokenOut,
|
|
60
|
+
fee: poolFee
|
|
61
|
+
});
|
|
62
|
+
const [token0, token1, fee, tickSpacing, liquidity, slot0] = await common_1.POOL_CONTRACT_INTERFACE.batchReadFromChain(currentPoolAddress, this.client, [
|
|
63
|
+
{
|
|
64
|
+
functionName: "token0"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
functionName: "token1"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
functionName: "fee"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
functionName: "tickSpacing"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
functionName: "liquidity"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
functionName: "slot0"
|
|
80
|
+
}
|
|
81
|
+
]);
|
|
82
|
+
return {
|
|
83
|
+
token0,
|
|
84
|
+
token1,
|
|
85
|
+
fee,
|
|
86
|
+
tickSpacing,
|
|
87
|
+
liquidity,
|
|
88
|
+
sqrtPriceX96: slot0[0],
|
|
89
|
+
tick: slot0[1]
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
async getTokenDecimals(tokenAddr) {
|
|
93
|
+
return await common_1.ERC20_CONTRACT_INTERFACE.readFromChain(tokenAddr, "decimals", [], this.client);
|
|
94
|
+
}
|
|
95
|
+
async createTrade(amountIn, tokenIn, tokenOut, poolFee) {
|
|
96
|
+
const poolInfo = await this.getPoolInfo(tokenIn, tokenOut, poolFee);
|
|
97
|
+
const pool = new v3_sdk_1.Pool(tokenIn, tokenOut, poolFee, poolInfo.sqrtPriceX96.toString(), poolInfo.liquidity.toString(), poolInfo.tick);
|
|
98
|
+
const swapRoute = new v3_sdk_1.Route([pool], tokenIn, tokenOut);
|
|
99
|
+
const amountOut = await this.getOutputQuote(swapRoute, tokenIn, amountIn);
|
|
100
|
+
const tokenInAmount = fromReadableAmount(amountIn, tokenIn.decimals).toString();
|
|
101
|
+
const uncheckedTrade = v3_sdk_1.Trade.createUncheckedTrade({
|
|
102
|
+
route: swapRoute,
|
|
103
|
+
inputAmount: sdk_core_1.CurrencyAmount.fromRawAmount(tokenIn, tokenInAmount),
|
|
104
|
+
outputAmount: sdk_core_1.CurrencyAmount.fromRawAmount(tokenOut, sdk_1.JSBI.BigInt(amountOut.toString())),
|
|
105
|
+
tradeType: sdk_core_1.TradeType.EXACT_INPUT
|
|
106
|
+
});
|
|
107
|
+
return { uncheckedTrade, tokenInAmount };
|
|
108
|
+
}
|
|
109
|
+
async createTradeV2(amountIn, tokenIn, tokenOut, poolFee) {
|
|
110
|
+
const poolInfo = await this.getPoolInfo(tokenIn, tokenOut, poolFee);
|
|
111
|
+
const pool = new v3_sdk_1.Pool(tokenIn, tokenOut, poolFee, poolInfo.sqrtPriceX96.toString(), poolInfo.liquidity.toString(), poolInfo.tick);
|
|
112
|
+
const swapRoute = new v3_sdk_1.Route([pool], tokenIn, tokenOut);
|
|
113
|
+
const amountOut = await this.getOutputQuote(swapRoute, tokenIn, amountIn);
|
|
114
|
+
const tokenInAmount = fromReadableAmount(amountIn, tokenIn.decimals).toString();
|
|
115
|
+
const uncheckedTrade = v3_sdk_1.Trade.createUncheckedTrade({
|
|
116
|
+
route: swapRoute,
|
|
117
|
+
inputAmount: sdk_core_1.CurrencyAmount.fromRawAmount(tokenIn, tokenInAmount),
|
|
118
|
+
outputAmount: sdk_core_1.CurrencyAmount.fromRawAmount(tokenOut, sdk_1.JSBI.BigInt(amountOut.toString())),
|
|
119
|
+
tradeType: sdk_core_1.TradeType.EXACT_INPUT
|
|
120
|
+
});
|
|
121
|
+
return { uncheckedTrade, tokenInAmount };
|
|
122
|
+
}
|
|
123
|
+
executeTrade(trade, routerAddr, walletAddress, slippage = 5000, percentDec = 10000) {
|
|
124
|
+
const options = {
|
|
125
|
+
slippageTolerance: new sdk_core_1.Percent(slippage, percentDec),
|
|
126
|
+
deadline: Date.now() + 1800,
|
|
127
|
+
recipient: walletAddress
|
|
128
|
+
};
|
|
129
|
+
const { calldata, value } = v3_sdk_1.SwapRouter.swapCallParameters(trade, options);
|
|
130
|
+
return {
|
|
131
|
+
data: calldata,
|
|
132
|
+
to: routerAddr,
|
|
133
|
+
value: value
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const fees = {
|
|
138
|
+
lowest: v3_sdk_1.FeeAmount.LOWEST,
|
|
139
|
+
low: v3_sdk_1.FeeAmount.LOW,
|
|
140
|
+
medium: v3_sdk_1.FeeAmount.MEDIUM,
|
|
141
|
+
high: v3_sdk_1.FeeAmount.HIGH
|
|
142
|
+
};
|
|
143
|
+
async function swapExec(client, uniswapAddrs, swapParams, chainId) {
|
|
144
|
+
const { univ3quoter, univ3factory, univ3router } = uniswapAddrs;
|
|
145
|
+
const { tokenInAddress, tokenOutAddress, amountIn, recipient, percentDecimal, slippage, poolFee } = swapParams;
|
|
146
|
+
const _poolFee = fees[poolFee];
|
|
147
|
+
const swapper = new SwapToken(client, 3, univ3quoter, univ3factory);
|
|
148
|
+
const tokenInDecimal = await swapper.getTokenDecimals(tokenInAddress);
|
|
149
|
+
const tokenOutDecimal = await swapper.getTokenDecimals(tokenOutAddress);
|
|
150
|
+
const tokenIn = new sdk_core_1.Token(chainId, tokenInAddress, tokenInDecimal);
|
|
151
|
+
const tokenOut = new sdk_core_1.Token(chainId, tokenOutAddress, tokenOutDecimal);
|
|
152
|
+
const { uncheckedTrade, tokenInAmount } = await swapper.createTrade(amountIn, tokenIn, tokenOut, _poolFee);
|
|
153
|
+
const data = swapper.executeTrade(uncheckedTrade, univ3router, recipient, slippage, percentDecimal);
|
|
154
|
+
return { ...data, amount: tokenInAmount };
|
|
155
|
+
}
|
|
156
|
+
exports.swapExec = swapExec;
|
|
157
|
+
async function swapExecV2(client, uniswapAddrs, swapParams, chainId) {
|
|
158
|
+
const { router, factory } = uniswapAddrs;
|
|
159
|
+
const { tokenInAddress, tokenOutAddress, amountIn, recipient } = swapParams;
|
|
160
|
+
const swapper = new SwapToken(client, 2, undefined, undefined, router, factory);
|
|
161
|
+
const tokenInDecimal = await swapper.getTokenDecimals(tokenInAddress);
|
|
162
|
+
const wethAddr = await (0, apis_1.getTokenInfo)("weth", chainId.toString());
|
|
163
|
+
let swapTxData;
|
|
164
|
+
if (wethAddr === tokenOutAddress) {
|
|
165
|
+
swapTxData = common_1.UNISWAPV2ROUTER02_INTERFACE.encodeTransactionParams(router, "swapExactTokensForETH", [
|
|
166
|
+
fromReadableAmount(amountIn, tokenInDecimal).toString(),
|
|
167
|
+
0,
|
|
168
|
+
[tokenInAddress, tokenOutAddress],
|
|
169
|
+
recipient,
|
|
170
|
+
Date.now() + 180000 // Long enough to rarely fail
|
|
171
|
+
]);
|
|
172
|
+
return { data: swapTxData.data, to: swapTxData.to, amount: fromReadableAmount(amountIn, tokenInDecimal).toString() };
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
swapTxData = common_1.UNISWAPV2ROUTER02_INTERFACE.encodeTransactionParams(router, "swapExactTokensForTokens", [
|
|
176
|
+
fromReadableAmount(amountIn, tokenInDecimal).toString(),
|
|
177
|
+
0,
|
|
178
|
+
[tokenInAddress, tokenOutAddress],
|
|
179
|
+
recipient,
|
|
180
|
+
Date.now() + 180000 // Long enough to rarely fail
|
|
181
|
+
]);
|
|
182
|
+
return { data: swapTxData.data, to: swapTxData.to, amount: fromReadableAmount(amountIn, tokenInDecimal).toString() };
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
exports.swapExecV2 = swapExecV2;
|
|
186
|
+
const testIds = [36864, 31337];
|
|
187
|
+
async function oneInchAPIRequest(methodName, queryParams, options = globalThis.globalEnvOption) {
|
|
188
|
+
const chain = await data_1.Chain.getChain({ chainIdentifier: options.chain });
|
|
189
|
+
const chainId = testIds.includes(Number(await chain.getChainId())) ? 1 : await chain.getChainId();
|
|
190
|
+
return apiBaseUrl + chainId + methodName + "?" + new URLSearchParams(queryParams).toString();
|
|
191
|
+
}
|
|
192
|
+
exports.oneInchAPIRequest = oneInchAPIRequest;
|
|
193
|
+
//# sourceMappingURL=SwapUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SwapUtils.js","sourceRoot":"","sources":["../../../src/utils/SwapUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isBytes32: (input: string) => boolean;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isBytes32 = void 0;
|
|
4
|
+
const viem_1 = require("viem");
|
|
5
|
+
const common_1 = require("../common");
|
|
6
|
+
const isBytes32 = (input) => {
|
|
7
|
+
if (!(0, viem_1.isHex)(input)) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
return input.length === common_1.BYTES32_LENGTH;
|
|
11
|
+
};
|
|
12
|
+
exports.isBytes32 = isBytes32;
|
|
13
|
+
//# sourceMappingURL=TypeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeUtils.js","sourceRoot":"","sources":["../../../src/utils/TypeUtils.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAC5B,sCAA0C;AAEnC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAW,EAAE;IAChD,IAAI,CAAC,IAAA,YAAK,EAAC,KAAK,CAAC,EAAE;QACf,OAAO,KAAK,CAAA;KACf;IACD,OAAO,KAAK,CAAC,MAAM,KAAK,uBAAc,CAAA;AAC1C,CAAC,CAAA;AALY,QAAA,SAAS,aAKrB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Hex } from "viem";
|
|
2
|
+
import { Chain, UserOperation } from "../data";
|
|
3
|
+
export declare const calcPreVerificationGas: (userOp: UserOperation) => bigint;
|
|
4
|
+
export declare const getPromiseFromOp: (op: UserOperation) => Promise<any>;
|
|
5
|
+
export declare function gasCalculation(txid: string, chain: Chain): Promise<{
|
|
6
|
+
gasUsed: string;
|
|
7
|
+
opFee: string;
|
|
8
|
+
opFeeUSD: string;
|
|
9
|
+
}>;
|
|
10
|
+
export declare const stringify: (object: any) => string;
|
|
11
|
+
export declare const objectify: (op: any) => any;
|
|
12
|
+
export declare function getOpHash(chain: Chain, userOp: UserOperation): Promise<Hex>;
|