@funkit/core 2.0.1 → 2.1.1
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/dist/index.js +11 -27
- package/dist/index.js.map +1 -1
- package/dist/src/abis/ApproveAndExec.json +45 -9
- package/dist/src/abis/ApproveAndSwap.json +141 -1
- package/dist/src/abis/CheckoutPaymaster.json +3358 -1
- package/dist/src/abis/EntryPoint.json +590 -113
- package/dist/src/abis/EstimationPaymaster.json +134 -24
- package/dist/src/abis/FeePercentOracle.json +94 -18
- package/dist/src/abis/FunWallet.json +280 -56
- package/dist/src/abis/FunWalletFactory.json +112 -21
- package/dist/src/abis/GaslessPaymaster.json +279 -50
- package/dist/src/abis/RoleBasedAccessControl.json +2 -1
- package/dist/src/abis/TestNFT.json +71 -15
- package/dist/src/abis/TokenPriceOracle.json +17 -4
- package/dist/src/abis/UserAuthentication.json +147 -32
- package/dist/src/actions/AccessControl.js +39 -48
- package/dist/src/actions/AccessControl.js.map +1 -1
- package/dist/src/actions/BatchActions.js +3 -7
- package/dist/src/actions/BatchActions.js.map +1 -1
- package/dist/src/actions/Bridge.js +16 -20
- package/dist/src/actions/Bridge.js.map +1 -1
- package/dist/src/actions/FirstClassActions.js +74 -77
- package/dist/src/actions/FirstClassActions.js.map +1 -1
- package/dist/src/actions/Group.js +14 -20
- package/dist/src/actions/Group.js.map +1 -1
- package/dist/src/actions/LimitOrder.js +18 -22
- package/dist/src/actions/LimitOrder.js.map +1 -1
- package/dist/src/actions/Stake.js +40 -43
- package/dist/src/actions/Stake.js.map +1 -1
- package/dist/src/actions/Swap.js +40 -46
- package/dist/src/actions/Swap.js.map +1 -1
- package/dist/src/actions/Token.js +41 -53
- package/dist/src/actions/Token.js.map +1 -1
- package/dist/src/actions/index.js +7 -23
- package/dist/src/actions/index.js.map +1 -1
- package/dist/src/actions/types.js +4 -7
- package/dist/src/actions/types.js.map +1 -1
- package/dist/src/apis/AccessControlApis.js +10 -16
- package/dist/src/apis/AccessControlApis.js.map +1 -1
- package/dist/src/apis/BridgeApis.js +14 -20
- package/dist/src/apis/BridgeApis.js.map +1 -1
- package/dist/src/apis/ContractApis.js +4 -7
- package/dist/src/apis/ContractApis.js.map +1 -1
- package/dist/src/apis/GroupApis.js +6 -10
- package/dist/src/apis/GroupApis.js.map +1 -1
- package/dist/src/apis/InfoApis.js +16 -23
- package/dist/src/apis/InfoApis.js.map +1 -1
- package/dist/src/apis/ListenerApis.js +9 -13
- package/dist/src/apis/ListenerApis.js.map +1 -1
- package/dist/src/apis/NFTApis.js +6 -10
- package/dist/src/apis/NFTApis.js.map +1 -1
- package/dist/src/apis/OperationApis.js +26 -40
- package/dist/src/apis/OperationApis.js.map +1 -1
- package/dist/src/apis/PaymasterApis.js +4 -7
- package/dist/src/apis/PaymasterApis.js.map +1 -1
- package/dist/src/apis/SwapApis.js +8 -13
- package/dist/src/apis/SwapApis.js.map +1 -1
- package/dist/src/apis/UserApis.js +20 -29
- package/dist/src/apis/UserApis.js.map +1 -1
- package/dist/src/apis/index.js +8 -24
- package/dist/src/apis/index.js.map +1 -1
- package/dist/src/apis/types.js +1 -2
- package/dist/src/auth/Auth.js +60 -76
- package/dist/src/auth/Auth.js.map +1 -1
- package/dist/src/auth/SessionKeyAuth.js +30 -33
- package/dist/src/auth/SessionKeyAuth.js.map +1 -1
- package/dist/src/auth/index.js +2 -18
- package/dist/src/auth/index.js.map +1 -1
- package/dist/src/auth/types.js +1 -2
- package/dist/src/common/constants.d.ts +141 -3
- package/dist/src/common/constants.js +211 -191
- package/dist/src/common/constants.js.map +1 -1
- package/dist/src/common/index.js +2 -18
- package/dist/src/common/index.js.map +1 -1
- package/dist/src/common/types.js +1 -2
- package/dist/src/config/Config.js +8 -13
- package/dist/src/config/Config.js.map +1 -1
- package/dist/src/config/index.js +2 -18
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/config/types.js +1 -2
- package/dist/src/data/Chain.js +35 -33
- package/dist/src/data/Chain.js.map +1 -1
- package/dist/src/data/NFT.js +28 -31
- package/dist/src/data/NFT.js.map +1 -1
- package/dist/src/data/Operation.js +28 -11
- package/dist/src/data/Operation.js.map +1 -1
- package/dist/src/data/SolidityData.js +23 -30
- package/dist/src/data/SolidityData.js.map +1 -1
- package/dist/src/data/Token.js +21 -23
- package/dist/src/data/Token.js.map +1 -1
- package/dist/src/data/index.js +6 -22
- package/dist/src/data/index.js.map +1 -1
- package/dist/src/data/types.js +6 -9
- package/dist/src/data/types.js.map +1 -1
- package/dist/src/errors/BaseError.js +6 -5
- package/dist/src/errors/BaseError.js.map +1 -1
- package/dist/src/errors/ClientError.js +21 -34
- package/dist/src/errors/ClientError.js.map +1 -1
- package/dist/src/errors/ServerError.js +6 -11
- package/dist/src/errors/ServerError.js.map +1 -1
- package/dist/src/errors/index.js +4 -20
- package/dist/src/errors/index.js.map +1 -1
- package/dist/src/errors/types.js +6 -9
- package/dist/src/errors/types.js.map +1 -1
- package/dist/src/sponsors/CheckoutSponsor.js +10 -14
- package/dist/src/sponsors/CheckoutSponsor.js.map +1 -1
- package/dist/src/sponsors/GaslessSponsor.js +23 -27
- package/dist/src/sponsors/GaslessSponsor.js.map +1 -1
- package/dist/src/sponsors/Sponsor.js +10 -8
- package/dist/src/sponsors/Sponsor.js.map +1 -1
- package/dist/src/sponsors/TokenSponsor.js +79 -82
- package/dist/src/sponsors/TokenSponsor.js.map +1 -1
- package/dist/src/sponsors/index.js +4 -20
- package/dist/src/sponsors/index.js.map +1 -1
- package/dist/src/sponsors/types.js +2 -5
- package/dist/src/sponsors/types.js.map +1 -1
- package/dist/src/utils/ApiUtils.js +30 -38
- package/dist/src/utils/ApiUtils.js.map +1 -1
- package/dist/src/utils/AuthUtils.js +9 -14
- package/dist/src/utils/AuthUtils.js.map +1 -1
- package/dist/src/utils/ChainUtils.js +38 -49
- package/dist/src/utils/ChainUtils.js.map +1 -1
- package/dist/src/utils/CheckoutUtils.js +13 -18
- package/dist/src/utils/CheckoutUtils.js.map +1 -1
- package/dist/src/utils/GroupUtils.js +6 -9
- package/dist/src/utils/GroupUtils.js.map +1 -1
- package/dist/src/utils/MerkleUtils.js +34 -47
- package/dist/src/utils/MerkleUtils.js.map +1 -1
- package/dist/src/utils/PaymasterUtils.js +5 -9
- package/dist/src/utils/PaymasterUtils.js.map +1 -1
- package/dist/src/utils/SwapUtils.js +44 -43
- package/dist/src/utils/SwapUtils.js.map +1 -1
- package/dist/src/utils/TypeUtils.js +5 -9
- package/dist/src/utils/TypeUtils.js.map +1 -1
- package/dist/src/utils/UserOpUtils.js +20 -29
- package/dist/src/utils/UserOpUtils.js.map +1 -1
- package/dist/src/utils/ViemUtils.js +6 -12
- package/dist/src/utils/ViemUtils.js.map +1 -1
- package/dist/src/utils/WalletUtils.js +28 -42
- package/dist/src/utils/WalletUtils.js.map +1 -1
- package/dist/src/utils/index.js +8 -24
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/viem/ContractInterface.js +14 -18
- package/dist/src/viem/ContractInterface.js.map +1 -1
- package/dist/src/viem/Converter.js +15 -20
- package/dist/src/viem/Converter.js.map +1 -1
- package/dist/src/viem/index.js +2 -18
- package/dist/src/viem/index.js.map +1 -1
- package/dist/src/wallet/FunWallet.js +141 -142
- package/dist/src/wallet/FunWallet.js.map +1 -1
- package/dist/src/wallet/index.js +2 -18
- package/dist/src/wallet/index.js.map +1 -1
- package/dist/src/wallet/types.js +1 -2
- package/package.json +4 -2
|
@@ -1,99 +1,86 @@
|
|
|
1
|
-
|
|
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");
|
|
1
|
+
import { concat, keccak256, padHex } from 'viem';
|
|
5
2
|
// Copied from contracts repo
|
|
6
|
-
const createMerkleHashes = (list) => {
|
|
7
|
-
list = list.map((data) =>
|
|
3
|
+
export const createMerkleHashes = (list) => {
|
|
4
|
+
list = list.map((data) => keccak256(data));
|
|
8
5
|
const treeSize = 2 ** Math.ceil(Math.log2(list.length)) * 2;
|
|
9
6
|
const buffer = new Array(treeSize).fill('0x');
|
|
10
|
-
|
|
7
|
+
arrayCopy(buffer, list, treeSize / 2);
|
|
11
8
|
for (let i = treeSize / 2 - list.length; i > 0; i--) {
|
|
12
9
|
buffer[buffer.length - i] = list[list.length - 1];
|
|
13
10
|
}
|
|
14
11
|
for (let i = 1; i < buffer.length; i++) {
|
|
15
|
-
buffer[i] =
|
|
12
|
+
buffer[i] = getHash(buffer, i);
|
|
16
13
|
}
|
|
17
14
|
return buffer;
|
|
18
15
|
};
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
const getParent = (index) => Math.floor(index / 2);
|
|
25
|
-
exports.getParent = getParent;
|
|
26
|
-
const getSibling = (index) => {
|
|
27
|
-
const parent = (0, exports.getParent)(index);
|
|
16
|
+
export const getLeft = (i) => i * 2;
|
|
17
|
+
export const getRight = (i) => i * 2 + 1;
|
|
18
|
+
export const getParent = (index) => Math.floor(index / 2);
|
|
19
|
+
export const getSibling = (index) => {
|
|
20
|
+
const parent = getParent(index);
|
|
28
21
|
if (index % 2 === 0) {
|
|
29
|
-
return
|
|
22
|
+
return getRight(parent);
|
|
30
23
|
}
|
|
31
|
-
return
|
|
24
|
+
return getLeft(parent);
|
|
32
25
|
};
|
|
33
|
-
|
|
34
|
-
const getHash = (list, i) => {
|
|
26
|
+
export const getHash = (list, i) => {
|
|
35
27
|
if (list[i] === '0x') {
|
|
36
|
-
if (
|
|
37
|
-
const left =
|
|
38
|
-
const right =
|
|
39
|
-
return
|
|
28
|
+
if (getRight(i) < list.length) {
|
|
29
|
+
const left = getHash(list, getLeft(i));
|
|
30
|
+
const right = getHash(list, getRight(i));
|
|
31
|
+
return getHashPair(left, right);
|
|
40
32
|
}
|
|
41
33
|
throw new Error('Invalid tree');
|
|
42
34
|
}
|
|
43
35
|
return list[i];
|
|
44
36
|
};
|
|
45
|
-
|
|
46
|
-
const getHashPair = (left, right) => {
|
|
37
|
+
export const getHashPair = (left, right) => {
|
|
47
38
|
if (BigInt(left) < BigInt(right)) {
|
|
48
|
-
return
|
|
39
|
+
return keccak256(concat([left, right]));
|
|
49
40
|
}
|
|
50
|
-
return
|
|
41
|
+
return keccak256(concat([right, left]));
|
|
51
42
|
};
|
|
52
|
-
|
|
53
|
-
const arrayCopy = (arr, copy, start) => {
|
|
43
|
+
export const arrayCopy = (arr, copy, start) => {
|
|
54
44
|
for (let i = 0; i < copy.length; i++) {
|
|
55
45
|
arr[i + start] = copy[i];
|
|
56
46
|
}
|
|
57
47
|
};
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
let index = list.indexOf((0, viem_1.keccak256)(item));
|
|
48
|
+
export const getPathForItem = (list, item) => {
|
|
49
|
+
let index = list.indexOf(keccak256(item));
|
|
61
50
|
if (index === -1) {
|
|
62
51
|
throw new Error('Item not found');
|
|
63
52
|
}
|
|
64
53
|
const path = [];
|
|
65
54
|
while (index > 1) {
|
|
66
|
-
const sibling =
|
|
55
|
+
const sibling = getSibling(index);
|
|
67
56
|
path.push(list[sibling]);
|
|
68
|
-
index =
|
|
57
|
+
index = getParent(index);
|
|
69
58
|
}
|
|
70
59
|
return path;
|
|
71
60
|
};
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
let hash = (0, viem_1.keccak256)(item);
|
|
61
|
+
export const verifyPath = (root, item, path) => {
|
|
62
|
+
let hash = keccak256(item);
|
|
75
63
|
for (let i = 0; i < path.length; i++) {
|
|
76
|
-
hash =
|
|
64
|
+
hash = getHashPair(hash, path[i]);
|
|
77
65
|
}
|
|
78
66
|
return hash === root;
|
|
79
67
|
};
|
|
80
|
-
|
|
81
|
-
|
|
68
|
+
export class MerkleTree {
|
|
69
|
+
tree;
|
|
82
70
|
constructor(list) {
|
|
83
|
-
this.tree =
|
|
71
|
+
this.tree = createMerkleHashes(list);
|
|
84
72
|
}
|
|
85
73
|
getPathForItem(item) {
|
|
86
|
-
return
|
|
74
|
+
return getPathForItem(this.tree, item);
|
|
87
75
|
}
|
|
88
76
|
verifyPath(item, path) {
|
|
89
|
-
return
|
|
77
|
+
return verifyPath(this.getRootHash(), item, path);
|
|
90
78
|
}
|
|
91
79
|
getRootHash() {
|
|
92
80
|
if (this.tree.length === 0) {
|
|
93
|
-
return
|
|
81
|
+
return padHex('0x1', { size: 32 });
|
|
94
82
|
}
|
|
95
83
|
return this.tree[1];
|
|
96
84
|
}
|
|
97
85
|
}
|
|
98
|
-
exports.MerkleTree = MerkleTree;
|
|
99
86
|
//# sourceMappingURL=MerkleUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MerkleUtils.js","sourceRoot":"","sources":["../../../src/utils/MerkleUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MerkleUtils.js","sourceRoot":"","sources":["../../../src/utils/MerkleUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.getPaymasterType = void 0;
|
|
4
|
-
const types_1 = require("../sponsors/types");
|
|
5
|
-
const getPaymasterType = (txOptions) => {
|
|
1
|
+
import { PaymasterType } from '../sponsors/types';
|
|
2
|
+
export const getPaymasterType = (txOptions) => {
|
|
6
3
|
if (txOptions.gasSponsor?.useCheckoutSponsor) {
|
|
7
|
-
return
|
|
4
|
+
return PaymasterType.CheckoutSponsor;
|
|
8
5
|
}
|
|
9
6
|
else if (txOptions.gasSponsor?.sponsorAddress &&
|
|
10
7
|
txOptions.gasSponsor?.token) {
|
|
11
|
-
return
|
|
8
|
+
return PaymasterType.TokenSponsor;
|
|
12
9
|
}
|
|
13
10
|
else if (txOptions.gasSponsor?.sponsorAddress) {
|
|
14
|
-
return
|
|
11
|
+
return PaymasterType.GaslessSponsor;
|
|
15
12
|
}
|
|
16
13
|
else {
|
|
17
14
|
throw Error('Invalid paymaster type');
|
|
18
15
|
}
|
|
19
16
|
};
|
|
20
|
-
exports.getPaymasterType = getPaymasterType;
|
|
21
17
|
//# sourceMappingURL=PaymasterUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaymasterUtils.js","sourceRoot":"","sources":["../../../src/utils/PaymasterUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PaymasterUtils.js","sourceRoot":"","sources":["../../../src/utils/PaymasterUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAoB,EAAE,EAAE;IACvD,IAAI,SAAS,CAAC,UAAU,EAAE,kBAAkB,EAAE,CAAC;QAC7C,OAAO,aAAa,CAAC,eAAe,CAAA;IACtC,CAAC;SAAM,IACL,SAAS,CAAC,UAAU,EAAE,cAAc;QACpC,SAAS,CAAC,UAAU,EAAE,KAAK,EAC3B,CAAC;QACD,OAAO,aAAa,CAAC,YAAY,CAAA;IACnC,CAAC;SAAM,IAAI,SAAS,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC;QAChD,OAAO,aAAa,CAAC,cAAc,CAAA;IACrC,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAA;IACvC,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const viem_1 = require("viem");
|
|
10
|
-
const apis_1 = require("../apis");
|
|
11
|
-
const common_1 = require("../common");
|
|
12
|
-
function fromReadableAmount(amount, decimals) {
|
|
13
|
-
return (0, viem_1.parseUnits)(amount.toFixed(20), decimals);
|
|
1
|
+
import { JSBI } from '@uniswap/sdk';
|
|
2
|
+
import { CurrencyAmount, Percent, Token, TradeType, } from '@uniswap/sdk-core';
|
|
3
|
+
import { computePoolAddress, FeeAmount, Pool, Route, SwapQuoter, SwapRouter, Trade, } from '@uniswap/v3-sdk';
|
|
4
|
+
import { decodeAbiParameters, parseUnits, } from 'viem';
|
|
5
|
+
import { getTokenInfo } from '../apis';
|
|
6
|
+
import { ERC20_CONTRACT_INTERFACE, POOL_CONTRACT_INTERFACE, UNISWAPV2ROUTER02_INTERFACE, } from '../common';
|
|
7
|
+
export function fromReadableAmount(amount, decimals) {
|
|
8
|
+
return parseUnits(amount.toFixed(20), decimals);
|
|
14
9
|
}
|
|
15
10
|
class SwapToken {
|
|
11
|
+
client;
|
|
12
|
+
version;
|
|
13
|
+
quoterContractAddr;
|
|
14
|
+
poolFactoryContractAddr;
|
|
15
|
+
v2router;
|
|
16
|
+
v2Factory;
|
|
16
17
|
constructor(client, version, quoterContractAddr, poolFactoryContractAddr, v2router, v2Factory) {
|
|
17
18
|
this.client = client;
|
|
18
19
|
this.version = version;
|
|
@@ -40,7 +41,7 @@ class SwapToken {
|
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
43
|
async getOutputQuote(route, token0, amountIn) {
|
|
43
|
-
const { calldata } = await
|
|
44
|
+
const { calldata } = await SwapQuoter.quoteCallParameters(route, CurrencyAmount.fromRawAmount(token0, fromReadableAmount(amountIn, token0.decimals).toString()), TradeType.EXACT_INPUT, {
|
|
44
45
|
useQuoterV2: true,
|
|
45
46
|
});
|
|
46
47
|
const quoteCallReturnData = await this.client.call({
|
|
@@ -50,16 +51,16 @@ class SwapToken {
|
|
|
50
51
|
if (!quoteCallReturnData.data) {
|
|
51
52
|
throw new Error('No data returned from quote call');
|
|
52
53
|
}
|
|
53
|
-
return
|
|
54
|
+
return decodeAbiParameters([{ name: 'return', type: 'uint256' }], quoteCallReturnData.data)[0];
|
|
54
55
|
}
|
|
55
56
|
async getPoolInfo(tokenIn, tokenOut, poolFee) {
|
|
56
|
-
const currentPoolAddress =
|
|
57
|
+
const currentPoolAddress = computePoolAddress({
|
|
57
58
|
factoryAddress: this.poolFactoryContractAddr,
|
|
58
59
|
tokenA: tokenIn,
|
|
59
60
|
tokenB: tokenOut,
|
|
60
61
|
fee: poolFee,
|
|
61
62
|
});
|
|
62
|
-
const [token0, token1, fee, tickSpacing, liquidity, slot0] = await
|
|
63
|
+
const [token0, token1, fee, tickSpacing, liquidity, slot0] = await POOL_CONTRACT_INTERFACE.batchReadFromChain(currentPoolAddress, this.client, [
|
|
63
64
|
{
|
|
64
65
|
functionName: 'token0',
|
|
65
66
|
},
|
|
@@ -90,43 +91,43 @@ class SwapToken {
|
|
|
90
91
|
};
|
|
91
92
|
}
|
|
92
93
|
async getTokenDecimals(tokenAddr) {
|
|
93
|
-
return await
|
|
94
|
+
return await ERC20_CONTRACT_INTERFACE.readFromChain(tokenAddr, 'decimals', [], this.client);
|
|
94
95
|
}
|
|
95
96
|
async createTrade(amountIn, tokenIn, tokenOut, poolFee) {
|
|
96
97
|
const poolInfo = await this.getPoolInfo(tokenIn, tokenOut, poolFee);
|
|
97
|
-
const pool = new
|
|
98
|
-
const swapRoute = new
|
|
98
|
+
const pool = new Pool(tokenIn, tokenOut, poolFee, poolInfo.sqrtPriceX96.toString(), poolInfo.liquidity.toString(), poolInfo.tick);
|
|
99
|
+
const swapRoute = new Route([pool], tokenIn, tokenOut);
|
|
99
100
|
const amountOut = await this.getOutputQuote(swapRoute, tokenIn, amountIn);
|
|
100
101
|
const tokenInAmount = fromReadableAmount(amountIn, tokenIn.decimals).toString();
|
|
101
|
-
const uncheckedTrade =
|
|
102
|
+
const uncheckedTrade = Trade.createUncheckedTrade({
|
|
102
103
|
route: swapRoute,
|
|
103
|
-
inputAmount:
|
|
104
|
-
outputAmount:
|
|
105
|
-
tradeType:
|
|
104
|
+
inputAmount: CurrencyAmount.fromRawAmount(tokenIn, tokenInAmount),
|
|
105
|
+
outputAmount: CurrencyAmount.fromRawAmount(tokenOut, JSBI.BigInt(amountOut.toString())),
|
|
106
|
+
tradeType: TradeType.EXACT_INPUT,
|
|
106
107
|
});
|
|
107
108
|
return { uncheckedTrade, tokenInAmount };
|
|
108
109
|
}
|
|
109
110
|
async createTradeV2(amountIn, tokenIn, tokenOut, poolFee) {
|
|
110
111
|
const poolInfo = await this.getPoolInfo(tokenIn, tokenOut, poolFee);
|
|
111
|
-
const pool = new
|
|
112
|
-
const swapRoute = new
|
|
112
|
+
const pool = new Pool(tokenIn, tokenOut, poolFee, poolInfo.sqrtPriceX96.toString(), poolInfo.liquidity.toString(), poolInfo.tick);
|
|
113
|
+
const swapRoute = new Route([pool], tokenIn, tokenOut);
|
|
113
114
|
const amountOut = await this.getOutputQuote(swapRoute, tokenIn, amountIn);
|
|
114
115
|
const tokenInAmount = fromReadableAmount(amountIn, tokenIn.decimals).toString();
|
|
115
|
-
const uncheckedTrade =
|
|
116
|
+
const uncheckedTrade = Trade.createUncheckedTrade({
|
|
116
117
|
route: swapRoute,
|
|
117
|
-
inputAmount:
|
|
118
|
-
outputAmount:
|
|
119
|
-
tradeType:
|
|
118
|
+
inputAmount: CurrencyAmount.fromRawAmount(tokenIn, tokenInAmount),
|
|
119
|
+
outputAmount: CurrencyAmount.fromRawAmount(tokenOut, JSBI.BigInt(amountOut.toString())),
|
|
120
|
+
tradeType: TradeType.EXACT_INPUT,
|
|
120
121
|
});
|
|
121
122
|
return { uncheckedTrade, tokenInAmount };
|
|
122
123
|
}
|
|
123
124
|
executeTrade(trade, routerAddr, walletAddress, slippage = 5000, percentDec = 10000) {
|
|
124
125
|
const options = {
|
|
125
|
-
slippageTolerance: new
|
|
126
|
+
slippageTolerance: new Percent(slippage, percentDec), // 50 bips, or 0.50%
|
|
126
127
|
deadline: Date.now() + 1800, // 20 minutes from the current Unix time
|
|
127
128
|
recipient: walletAddress,
|
|
128
129
|
};
|
|
129
|
-
const { calldata, value } =
|
|
130
|
+
const { calldata, value } = SwapRouter.swapCallParameters(trade, options);
|
|
130
131
|
return {
|
|
131
132
|
data: calldata,
|
|
132
133
|
to: routerAddr,
|
|
@@ -135,33 +136,33 @@ class SwapToken {
|
|
|
135
136
|
}
|
|
136
137
|
}
|
|
137
138
|
const fees = {
|
|
138
|
-
lowest:
|
|
139
|
-
low:
|
|
140
|
-
medium:
|
|
141
|
-
high:
|
|
139
|
+
lowest: FeeAmount.LOWEST,
|
|
140
|
+
low: FeeAmount.LOW,
|
|
141
|
+
medium: FeeAmount.MEDIUM,
|
|
142
|
+
high: FeeAmount.HIGH,
|
|
142
143
|
};
|
|
143
|
-
async function swapExec(client, uniswapAddrs, swapParams, chainId) {
|
|
144
|
+
export async function swapExec(client, uniswapAddrs, swapParams, chainId) {
|
|
144
145
|
const { univ3quoter, univ3factory, univ3router } = uniswapAddrs;
|
|
145
146
|
const { tokenInAddress, tokenOutAddress, amountIn, recipient, percentDecimal, slippage, poolFee, } = swapParams;
|
|
146
147
|
const _poolFee = fees[poolFee];
|
|
147
148
|
const swapper = new SwapToken(client, 3, univ3quoter, univ3factory);
|
|
148
149
|
const tokenInDecimal = await swapper.getTokenDecimals(tokenInAddress);
|
|
149
150
|
const tokenOutDecimal = await swapper.getTokenDecimals(tokenOutAddress);
|
|
150
|
-
const tokenIn = new
|
|
151
|
-
const tokenOut = new
|
|
151
|
+
const tokenIn = new Token(chainId, tokenInAddress, tokenInDecimal);
|
|
152
|
+
const tokenOut = new Token(chainId, tokenOutAddress, tokenOutDecimal);
|
|
152
153
|
const { uncheckedTrade, tokenInAmount } = await swapper.createTrade(amountIn, tokenIn, tokenOut, _poolFee);
|
|
153
154
|
const data = swapper.executeTrade(uncheckedTrade, univ3router, recipient, slippage, percentDecimal);
|
|
154
155
|
return { ...data, amount: tokenInAmount };
|
|
155
156
|
}
|
|
156
|
-
async function swapExecV2(client, uniswapAddrs, swapParams, chainId) {
|
|
157
|
+
export async function swapExecV2(client, uniswapAddrs, swapParams, chainId) {
|
|
157
158
|
const { router, factory } = uniswapAddrs;
|
|
158
159
|
const { tokenInAddress, tokenOutAddress, amountIn, recipient } = swapParams;
|
|
159
160
|
const swapper = new SwapToken(client, 2, undefined, undefined, router, factory);
|
|
160
161
|
const tokenInDecimal = await swapper.getTokenDecimals(tokenInAddress);
|
|
161
|
-
const wethAddr = await
|
|
162
|
+
const wethAddr = await getTokenInfo('weth', chainId.toString());
|
|
162
163
|
let swapTxData;
|
|
163
164
|
if (wethAddr === tokenOutAddress) {
|
|
164
|
-
swapTxData =
|
|
165
|
+
swapTxData = UNISWAPV2ROUTER02_INTERFACE.encodeTransactionParams(router, 'swapExactTokensForETH', [
|
|
165
166
|
fromReadableAmount(amountIn, tokenInDecimal).toString(),
|
|
166
167
|
0,
|
|
167
168
|
[tokenInAddress, tokenOutAddress],
|
|
@@ -175,7 +176,7 @@ async function swapExecV2(client, uniswapAddrs, swapParams, chainId) {
|
|
|
175
176
|
};
|
|
176
177
|
}
|
|
177
178
|
else {
|
|
178
|
-
swapTxData =
|
|
179
|
+
swapTxData = UNISWAPV2ROUTER02_INTERFACE.encodeTransactionParams(router, 'swapExactTokensForTokens', [
|
|
179
180
|
fromReadableAmount(amountIn, tokenInDecimal).toString(),
|
|
180
181
|
0,
|
|
181
182
|
[tokenInAddress, tokenOutAddress],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwapUtils.js","sourceRoot":"","sources":["../../../src/utils/SwapUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SwapUtils.js","sourceRoot":"","sources":["../../../src/utils/SwapUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const common_1 = require("../common");
|
|
6
|
-
const isBytes32 = (input) => {
|
|
7
|
-
if (!(0, viem_1.isHex)(input)) {
|
|
1
|
+
import { isHex } from 'viem';
|
|
2
|
+
import { BYTES32_LENGTH } from '../common';
|
|
3
|
+
export const isBytes32 = (input) => {
|
|
4
|
+
if (!isHex(input)) {
|
|
8
5
|
return false;
|
|
9
6
|
}
|
|
10
|
-
return input.length ===
|
|
7
|
+
return input.length === BYTES32_LENGTH;
|
|
11
8
|
};
|
|
12
|
-
exports.isBytes32 = isBytes32;
|
|
13
9
|
//# sourceMappingURL=TypeUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeUtils.js","sourceRoot":"","sources":["../../../src/utils/TypeUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TypeUtils.js","sourceRoot":"","sources":["../../../src/utils/TypeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AAE5B,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE1C,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAW,EAAE;IAClD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QAClB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,KAAK,cAAc,CAAA;AACxC,CAAC,CAAA"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exports.getOpHash = getOpHash;
|
|
6
|
-
const viem_1 = require("viem");
|
|
7
|
-
const common_1 = require("../common");
|
|
8
|
-
const ApiUtils_1 = require("./ApiUtils");
|
|
9
|
-
const calcPreVerificationGas = (userOp) => {
|
|
1
|
+
import { encodeAbiParameters, formatUnits, keccak256, toBytes, toHex, } from 'viem';
|
|
2
|
+
import { ENTRYPOINT_CONTRACT_INTERFACE } from '../common';
|
|
3
|
+
import { sendRequest } from './ApiUtils';
|
|
4
|
+
export const calcPreVerificationGas = (userOp) => {
|
|
10
5
|
const ov = DefaultGasOverheads;
|
|
11
6
|
const p = Object.assign({
|
|
12
7
|
preVerificationGas: 28000,
|
|
13
|
-
signature:
|
|
8
|
+
signature: toHex(Buffer.alloc(ov.sigSize, 1)),
|
|
14
9
|
}, userOp);
|
|
15
|
-
const packed =
|
|
10
|
+
const packed = toBytes(packUserOp(p, false));
|
|
16
11
|
const callDataCost = packed
|
|
17
12
|
.map((x) => (x === 0 ? ov.zeroByte : ov.nonZeroByte))
|
|
18
13
|
.reduce((sum, x) => sum + x);
|
|
@@ -22,17 +17,16 @@ const calcPreVerificationGas = (userOp) => {
|
|
|
22
17
|
ov.perUserOpWord * packed.length);
|
|
23
18
|
return BigInt(ret);
|
|
24
19
|
};
|
|
25
|
-
exports.calcPreVerificationGas = calcPreVerificationGas;
|
|
26
20
|
function encode(typevalues, forSignature) {
|
|
27
21
|
const types = typevalues.map((typevalue) => typevalue.type === 'bytes' && forSignature ? 'bytes32' : typevalue.type);
|
|
28
22
|
const values = typevalues.map((typevalue) => typevalue.type === 'bytes' && forSignature
|
|
29
|
-
?
|
|
23
|
+
? keccak256(typevalue.val)
|
|
30
24
|
: typevalue.val);
|
|
31
|
-
return
|
|
25
|
+
return encodeAbiParameters(types, values);
|
|
32
26
|
}
|
|
33
27
|
function packUserOp(op, forSignature = true) {
|
|
34
28
|
if (forSignature) {
|
|
35
|
-
let encoded =
|
|
29
|
+
let encoded = encodeAbiParameters([userOpTypeSig], [{ ...op, signature: '0x' }]);
|
|
36
30
|
encoded = ('0x' + encoded.slice(66, encoded.length - 64));
|
|
37
31
|
return encoded;
|
|
38
32
|
}
|
|
@@ -42,15 +36,14 @@ function packUserOp(op, forSignature = true) {
|
|
|
42
36
|
}));
|
|
43
37
|
return encode(typevalues, forSignature);
|
|
44
38
|
}
|
|
45
|
-
const getPromiseFromOp = async (op) => {
|
|
39
|
+
export const getPromiseFromOp = async (op) => {
|
|
46
40
|
const out = {};
|
|
47
41
|
await Promise.all(Object.keys(op).map(async (key) => {
|
|
48
42
|
out[key] = await op[key];
|
|
49
43
|
}));
|
|
50
44
|
return out;
|
|
51
45
|
};
|
|
52
|
-
|
|
53
|
-
async function gasCalculation(txid, chain) {
|
|
46
|
+
export async function gasCalculation(txid, chain) {
|
|
54
47
|
if (!txid || txid === '0x')
|
|
55
48
|
return { gasUsed: '-1', opFee: '-1', opFeeUSD: '-1' };
|
|
56
49
|
const provider = await chain.getClient();
|
|
@@ -66,23 +59,21 @@ async function gasCalculation(txid, chain) {
|
|
|
66
59
|
const opFeeUSD = opFee * BigInt(chainPrice);
|
|
67
60
|
return {
|
|
68
61
|
gasUsed: gasUsed.toString(),
|
|
69
|
-
opFee:
|
|
70
|
-
opFeeUSD:
|
|
62
|
+
opFee: formatUnits(opFee, 18).toString(),
|
|
63
|
+
opFeeUSD: formatUnits(opFeeUSD, 20).toString(),
|
|
71
64
|
};
|
|
72
65
|
}
|
|
73
66
|
const PRICE_URL = 'https://min-api.cryptocompare.com/data/price';
|
|
74
67
|
async function getPriceData(chainCurrency) {
|
|
75
|
-
const data = await
|
|
68
|
+
const data = await sendRequest(`${PRICE_URL}?fsym=${chainCurrency}&tsyms=USD`, 'GET', '', {});
|
|
76
69
|
return data.USD;
|
|
77
70
|
}
|
|
78
|
-
const stringify = (object) => {
|
|
79
|
-
return JSON.stringify(object, (_, value) => (typeof value === 'bigint' ?
|
|
71
|
+
export const stringify = (object) => {
|
|
72
|
+
return JSON.stringify(object, (_, value) => (typeof value === 'bigint' ? toHex(value) : value));
|
|
80
73
|
};
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
return JSON.parse((0, exports.stringify)(op));
|
|
74
|
+
export const objectify = (op) => {
|
|
75
|
+
return JSON.parse(stringify(op));
|
|
84
76
|
};
|
|
85
|
-
exports.objectify = objectify;
|
|
86
77
|
// Constants
|
|
87
78
|
const DefaultGasOverheads = {
|
|
88
79
|
fixed: 28000,
|
|
@@ -173,8 +164,8 @@ const userOpTypeSig = {
|
|
|
173
164
|
name: 'userOp',
|
|
174
165
|
type: 'tuple',
|
|
175
166
|
};
|
|
176
|
-
async function getOpHash(chain, userOp) {
|
|
167
|
+
export async function getOpHash(chain, userOp) {
|
|
177
168
|
const entryPointAddress = await chain.getAddress('entryPointAddress');
|
|
178
|
-
return await
|
|
169
|
+
return await ENTRYPOINT_CONTRACT_INTERFACE.readFromChain(entryPointAddress, 'getUserOpHash', [userOp], chain);
|
|
179
170
|
}
|
|
180
171
|
//# sourceMappingURL=UserOpUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserOpUtils.js","sourceRoot":"","sources":["../../../src/utils/UserOpUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UserOpUtils.js","sourceRoot":"","sources":["../../../src/utils/UserOpUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,WAAW,EAEX,SAAS,EACT,OAAO,EACP,KAAK,GACN,MAAM,MAAM,CAAA;AAEb,OAAO,EAAE,6BAA6B,EAAE,MAAM,WAAW,CAAA;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAExC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,MAAqB,EAAU,EAAE;IACtE,MAAM,EAAE,GAAG,mBAAmB,CAAA;IAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CACrB;QACE,kBAAkB,EAAE,KAAK;QACzB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;KAC9C,EACD,MAAM,CACP,CAAA;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;IAC5C,MAAM,YAAY,GAAG,MAAM;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;SACpD,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY;QACV,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,UAAU;QACxB,EAAE,CAAC,SAAS;QACZ,EAAE,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CACnC,CAAA;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;AACpB,CAAC,CAAA;AAED,SAAS,MAAM,CAAC,UAAe,EAAE,YAAiB;IAChD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAc,EAAE,EAAE,CAC9C,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CACxE,CAAA;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAc,EAAE,EAAE,CAC/C,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,YAAY;QACxC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC;QAC1B,CAAC,CAAC,SAAS,CAAC,GAAG,CAClB,CAAA;IAED,OAAO,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AAC3C,CAAC;AAED,SAAS,UAAU,CAAC,EAAO,EAAE,YAAY,GAAG,IAAI;IAC9C,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,OAAO,GAAG,mBAAmB,CAC/B,CAAC,aAAoB,CAAC,EACtB,CAAC,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAC7B,CAAA;QACD,OAAO,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAQ,CAAA;QAChE,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;KAChB,CAAC,CAAC,CAAA;IACH,OAAO,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAAiB,EAAE,EAAE;IAC1D,MAAM,GAAG,GAAQ,EAAE,CAAA;IACnB,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QAChC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAO,EAAU,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC,CAAC,CACH,CAAA;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,KAAY;IAC7D,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI;QACxB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;IACvD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,CAAA;IACxC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,yBAAyB,CAAC;QACzD,IAAI,EAAE,IAAW;KAClB,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAA;IACjC,MAAM,QAAQ,GAAG,SAAS,CAAC,iBAAiB,CAAA;IAC5C,MAAM,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAA;IAChC,MAAM,UAAU,GAAG,MAAM,CACvB,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CACjE,CAAA;IACD,aAAa;IACb,2BAA2B;IACzB,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;IAE7C,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;QAC3B,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;QACxC,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;KAC/C,CAAA;AACH,CAAC;AAED,MAAM,SAAS,GAAG,8CAA8C,CAAA;AAEhE,KAAK,UAAU,YAAY,CAAC,aAAqB;IAC/C,MAAM,IAAI,GAAG,MAAM,WAAW,CAC5B,GAAG,SAAS,SAAS,aAAa,YAAY,EAC9C,KAAK,EACL,EAAE,EACF,EAAE,CACH,CAAA;IACD,OAAO,IAAI,CAAC,GAAG,CAAA;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAW,EAAE,EAAE;IACvC,OAAO,IAAI,CAAC,SAAS,CACnB,MAAM,EACN,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CACjE,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAO,EAAO,EAAE;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;AAClC,CAAC,CAAA;AAED,YAAY;AAEZ,MAAM,mBAAmB,GAAG;IAC1B,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,CAAC;IAChB,QAAQ,EAAE,CAAC;IACX,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,CAAC;IACb,OAAO,EAAE,EAAE;CACZ,CAAA;AAED,MAAM,UAAU,GAAG;IACjB,UAAU,EAAE;QACV,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;QAC5D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;QAC3D,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;QAC1D,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE;QAC1D,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;QAClE;YACE,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,SAAS;SAChB;QACD;YACE,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,SAAS;SAChB;QACD,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE;QAClE;YACE,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,SAAS;SAChB;QACD,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,OAAO,EAAE;QAClE,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE;KAC5D;IACD,YAAY,EAAE,sBAAsB;IACpC,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;CACd,CAAA;AAED,MAAM,aAAa,GAAG;IACpB,UAAU,EAAE;QACV;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,QAAQ;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,OAAO;SACd;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,UAAU;SACjB;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,UAAU;SACjB;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,cAAc;SACrB;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,sBAAsB;SAC7B;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,oBAAoB;SAC3B;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,cAAc;SACrB;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,sBAAsB;SAC7B;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,kBAAkB;SACzB;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,WAAW;SAClB;KACF;IACD,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;CACd,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,KAAY,EACZ,MAAqB;IAErB,MAAM,iBAAiB,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAA;IACrE,OAAO,MAAM,6BAA6B,CAAC,aAAa,CACtD,iBAAiB,EACjB,eAAe,EACf,CAAC,MAAM,CAAC,EACR,KAAK,CACN,CAAA;AACH,CAAC"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getSigHash = void 0;
|
|
4
|
-
exports.formatAbiItem = formatAbiItem;
|
|
5
|
-
exports.formatAbiParams = formatAbiParams;
|
|
6
|
-
const viem_1 = require("viem");
|
|
1
|
+
import { getAbiItem, toFunctionSelector } from 'viem';
|
|
7
2
|
// Copied from viem
|
|
8
|
-
function formatAbiItem(abiItem, { includeName = false } = {}) {
|
|
3
|
+
export function formatAbiItem(abiItem, { includeName = false } = {}) {
|
|
9
4
|
if (abiItem.type !== 'function' &&
|
|
10
5
|
abiItem.type !== 'event' &&
|
|
11
6
|
abiItem.type !== 'error')
|
|
12
7
|
throw new Error(`InvalidDefinitionTypeError: ${abiItem.type}`);
|
|
13
8
|
return `${abiItem.name}(${formatAbiParams(abiItem.inputs, { includeName })})`;
|
|
14
9
|
}
|
|
15
|
-
function formatAbiParams(params, { includeName = false } = {}) {
|
|
10
|
+
export function formatAbiParams(params, { includeName = false } = {}) {
|
|
16
11
|
if (!params)
|
|
17
12
|
return '';
|
|
18
13
|
return params
|
|
@@ -25,12 +20,11 @@ function formatAbiParam(param, { includeName }) {
|
|
|
25
20
|
}
|
|
26
21
|
return param.type + (includeName && param.name ? ` ${param.name}` : '');
|
|
27
22
|
}
|
|
28
|
-
const getSigHash = (abi, functionName) => {
|
|
29
|
-
const abiItem =
|
|
23
|
+
export const getSigHash = (abi, functionName) => {
|
|
24
|
+
const abiItem = getAbiItem({ abi, name: functionName });
|
|
30
25
|
if (!abiItem)
|
|
31
26
|
throw new Error('Unable to retrieve abi');
|
|
32
27
|
const definition = formatAbiItem(abiItem);
|
|
33
|
-
return
|
|
28
|
+
return toFunctionSelector(definition);
|
|
34
29
|
};
|
|
35
|
-
exports.getSigHash = getSigHash;
|
|
36
30
|
//# sourceMappingURL=ViemUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViemUtils.js","sourceRoot":"","sources":["../../../src/utils/ViemUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ViemUtils.js","sourceRoot":"","sources":["../../../src/utils/ViemUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,UAAU,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AAE9D,mBAAmB;AACnB,MAAM,UAAU,aAAa,CAC3B,OAAgB,EAChB,EAAE,WAAW,GAAG,KAAK,KAAgC,EAAE;IAEvD,IACE,OAAO,CAAC,IAAI,KAAK,UAAU;QAC3B,OAAO,CAAC,IAAI,KAAK,OAAO;QACxB,OAAO,CAAC,IAAI,KAAK,OAAO;QAExB,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAEhE,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,GAAG,CAAA;AAC/E,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAA2C,EAC3C,EAAE,WAAW,GAAG,KAAK,KAAgC,EAAE;IAEvD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAA;IACtB,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;SACtD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AACnC,CAAC;AAED,SAAS,cAAc,CACrB,KAAmB,EACnB,EAAE,WAAW,EAA4B;IAEzC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,eAAe,CACvB,KAAmD,CAAC,UAAU,EAC/D,EAAE,WAAW,EAAE,CAChB,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAA;IACzC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,GAAG,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AACzE,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAQ,EAAE,YAAoB,EAAE,EAAE;IAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAA;IACvD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IACvD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IACzC,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAA;AACvC,CAAC,CAAA"}
|